CANBUSスピードコンバータ
この Python スクリプトは、Tshark からエクスポートされた値で構成されるテキスト ファイルを使用します。このエクスポートされた列は、5 バイトの 16 進値である各 CANBUS ペイロードで厳密に構成されています。 (10 文字) このプログラムは、CANBUS 16 進数値を KPH または MPH に変換します。
これは、CanID589.pcap からこの情報を抽出するために使用したコマンドです。CanID589.pcap 自体は、特に速度を表す CANBUS ID 589 の Wireshark からエクスポートされた分析です。他に 32 の異なるタイプの CANBUS ID がありますが、現時点ではそれらの値を気にする必要はありません。
┌──(kali㉿Z3r0)-[/media/sf_Shared_Kali/NCL Doc/scanningrecon] └─$ tshark -r CanID589.pcap -T fields -e data.data > Data_speed.txt
(-r) は既存の pcap ファイルを読み取りますが、(-T フィールド) は Tshark に特定のフィールド (完全なパケットの詳細、概要、生データではなく) を出力するよう指示します。これは、すべてのパケット データをダンプするのではなく、必要な情報のみを抽出して出力をカスタマイズする方法です。 -e オプションは、パケットから抽出するフィールドを指定するために使用されます。この場合、data.data は各パケットのデータ バイトを表します。 「data.data」は、16 進数形式の CANBUS フレームの実際のコンテンツ (ペイロード) を指します。正しいデータがテキスト ファイルにエクスポートされるまで、さまざまな値を試す必要がありました。
ここに、CAN プロトコルに関連するさまざまなフィールドのリストを示します。
- can.id: CAN 識別子フィールド (CAN ID)
- can.dlc: データ長コード (存在するデータバイト数)
- can.data: ペイロード データ
- can.errorframe: CAN エラー フレーム
- data.data: 生のバイトデータ (これはこのスクリプトが使用しているものです)
これはパケットごとに個別に実行することもできますが、352 個の異なる Can.ID = "589" (速度) パケットを反復処理しました
def format_hex_value(hex_value): # Tshark exported specific packets to column data.data unformatted. return ' '.join(hex_value[i:i+2] for i in range(0, len(hex_value), 2)) def calculate_speed_from_hex_value(hex_value): # 5 byte check if len(hex_value) < 10: raise ValueError("Hex value must have at least 10 characters for 5 bytes") # Extract the relevant bytes from payload (the last two bytes) high_byte = int(hex_value[-4:-2], 16) low_byte = int(hex_value[-2:], 16) speed = (high_byte << 8) + low_byte # Example: 00 00 00 04 e1 - (04 << 8) + e1 = 1024 + 225 = 1249 # Convert speed from centi-KPH to KPH then to MPH speed_kph = speed / 100.0 # Assuming the value is in centi-KPH speed_mph = speed_kph * 0.621371 # Convert KPH to MPH return speed_mph def main(): speeds = [] with open('data_speed.txt', 'r') as file: for line in file: hex_value = line.strip() if hex_value: formatted_hex_value = format_hex_value(hex_value) print(f"Formatted Hex Value: {formatted_hex_value}") try: # Calculate speed and store it in the speeds list speed_mph = calculate_speed_from_hex_value(hex_value) speeds.append(speed_mph) print(f"Calculated Speed: {speed_mph:.2f} MPH") except ValueError as e: print(f"Error processing value '{hex_value}': {e}") speeds.sort() #Sort lowest to highest print("\nFinal Sorted Speeds (MPH):") for speed in speeds: print(f"{speed:.2f} MPH") if __name__ == "__main__": main()
ご質問、コメント、追加、建設的な批判などございましたら、お気軽にご連絡ください。ありがとうございます
以上がCANBUSスピードコンバータの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

Investing.comの反クラウリング戦略を理解する多くの人々は、Investing.com(https://cn.investing.com/news/latest-news)からのニュースデータをクロールしようとします。
