Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SAE J1939シミュレーション環境構築

Avatar for okzkey okzkey
July 25, 2025

SAE J1939シミュレーション環境構築

概要
本資料は、cartagaitai CTF/車セキ/IoT勉強会 #1(connpass開催)で発表した「SAE J1939 シミュレーション環境構築」に関する技術資料です。
産業用・商用車両で広く採用されているSAE J1939プロトコルの基礎から歴史、特徴、準拠規格までを体系的に解説。さらに、実際に構築したシミュレーション環境の課題、使用したハードウェア、構築手順、動作検証、関連ツールも紹介し、実務や開発に役立つ内容としています。
また参考として、SAE J1939関連のCTF(Capture The Flag)問題事例も説明し、BuckeyeCTF 2022およびDEF CON 27 CHV CTFの概要を簡単に取り上げています。

ターゲット
- 車載ネットワーク・通信プロトコルに関心のあるエンジニア
- 組み込み・セキュリティエンジニア
- IoT技術者および研究者

関連リンク
- イベント案内(connpass): https://connpass.com/event/362029/

Avatar for okzkey

okzkey

July 25, 2025
Tweet

Other Decks in Technology

Transcript

  1. 1 whoami ◆ okzkey ◆ 鹿児島出身 / 猫飼っている / 走るのとサッカーが好き

    ◆ 業務内容 ◆ 前職は某メーカーでIVI(In-Vehicle Infotainment)の開発/評価 3年目あたりからセキュリティ部署へ異動して、色々セキュリティ業務 ◆ 現在、都内で車載系のセキュリティ診断/コンサル ◆ CTF活動 ◆ ほぼなし (前職でAutomotive CTF 2024 Season2に軽く参加したのみ) 岡崎 大暉 / 鹿児島 / 福岡 / パナソニッ ク / Panasonic / NRI / NDIAS / 野 村総合研究所 / 牟礼岡 / 吉田南 / 松 陽 / 九州大学 / Daiki okazaki / katagaitai / NRIセキュアテクノロジーズ
  2. 2 Workshop Contents 1. SAE J1939プロトコル概要 • CANの基礎 • SAE

    J1939の基礎 • SAE J1939の歴史 • SAE J1939の誕生 • SAE J1939の特徴 • SAE J1939の準拠 2. SAE J1939シミュレーション環境構築 • SAE J1939に動作検証における課題 • 購入機材 • SAE J1939シミュレーション環境構築 • 機能チェック • SAE J1939関連ツール 3. SAE J1939関連のCTF • BuckeyeCTF 2022: Misc • DEF CON 27 CHV CTF: Heavy Truck
  3. 4 CANの基礎 ◆ CAN(Controller Area Network)は、1983年にBosch社にて開発が開始された有線通信規格 ◆ バス型(ライン型)で、通信方式はブロードキャスト通信 ◆ 最大1Mbpsのデータ転送速度で、短時間での応答、適切なエラー検出、迅速なエラー回復、およびエ

    ラー修復が特徴 ◆ メッセージフレームあたり最大8バイトをサポート ◆ 他のプロトコル(CAN FDなど)と区別するために、クラシックCANと呼ばれる。 SAE J1939プロトコル概要 ECU ECU Gateway IVI Meter HUD CAN CAN 出典: "車載ネットワークの新しい通信パラダイム," Vector, [オンライン]. 利用可能: https://www.vector.com/jp/ja/know-how/vj- columns/vj-software-testing/vj-columns220414/#. [最終更新日: 2022年4月14日、アクセス日: 2025年7月14日]
  4. 5 SAE J1939の基礎 ◆ SAE J1939は自動車技術者協会(SAE)が開発した標準規格で、重機車両のECU間通信として広く 使われている。 SAE J1939プロトコル概要 出典:

    W. Voss, "SAE J1939 Message Format and Proper Interpretation of PGNs," JCOM1939 Monitor Pro. [Online]. Available: https://jcom1939.com/. [Accessed: July. 14, 2025] プロトコルの特徴 • トラック、バス、農業機械などの車両ネットワークの通信を定義 • CANを物理層として使用する上位層プロトコル • 転送速度は、標準250 Kbit/秒(場合により500 Kbit/秒) • ピアツーピア通信とブロードキャスト通信をサポート • 最大1,785バイトのメッセージ長をサポート (TP利用時) • PGN(パラメーターグループ番号=事前定義された車両パラメー ター)のセットを定義
  5. 6 SAE J1939の歴史 ◆ SAE J1939は1990年代前半にプロジェクトが発足し、1998年度に初版が発行された。 SAE J1939プロトコル概要 時期 内容

    1980年度 商標者向けの電子制御・通信標準化の必要性が高まる 1990年代前半 SAE(米国自動車技術者協会)がJ1939プロジェクトを開始 1998年度 SAE J1939の初版が発行される 2000年度 農業機械や建設機械など他分野にもJ1939が拡大 2002年度 J1939ベースのFleet Management System 標準1.0が発行 2006年度 船舶用NMEA 2000やISO 11992(トラック・トレーラー間通信)などの派生規格が登場 2010年度 セーフティクリティカル通信(J1939-76)など新たな拡張が進む 2015年度 J1939 Digital Annexで200以上のメッセージチェックサムやカウンターの規定が追加 2020年度 セーフティクリティカル通信やサイバーセキュリティ対応など、J1939の拡張・改訂が継続
  6. 7 SAE J1939の誕生 ◆ なぜ、SAE J1939が誕生したのか? 1. メーカー間の相互運用性と標準化されたメッセージ体系の実現 ⇒商用車や大型車両などの複雑なシステムで、異なるメーカーの機器同士が確実に通信できるよう、標準化されたメッセージ定義とオープンな規格が 必要だったため

    2. 大容量データ伝送や高度なネットワーク管理の必要性 ⇒複数ECU間での動的アドレス管理や、8byteを超える大容量データ伝送、バスアクセス制御など、従来のCANだけでは対応できない高度なネット ワーク管理機能が求められたため SAE J1939プロトコル概要 項目 J1939 CAN メッセージ定義 PGNによって、業界共通のメッセージ内容・構造が標準化。 PGNごとに信号の意味やスケーリングまで規定 メッセージIDの意味やデータ構造はアプリケーションごとに任意。業 界統一の標準定義は存在しない ID構造 29ビット拡張IDを使用し、ID内にPGNやアドレス、優先度を体 系的に割り当てることで、標準化と相互運用性を実現 29ビット拡張IDは利用可能だが、IDの使い方や割り当ては自 由。標準化された使い方はない 規格の公開性 SAEによる公開規格(仕様書で通信内容や手順が詳細に標準 化されており、異なるメーカー間でも相互運用可能) CAN自体は国際標準だが、上位層の通信内容や手順は規定 していない 大容量データ送信 トランスポートプロトコルをJ1939仕様で標準化。BAMやCMDT 方式で最大1,785バイトの大容量データ送受信が可能 1フレーム最大8バイト。大容量データ送信は標準仕様外。ISO- TPなどの上位プロトコルを導入しない限り非対応 アドレス管理 アドレスクレイミング機能を標準装備。ECUがネットワーク参加 時に自動でアドレスを取得・競合解決 アドレス管理の仕組みは標準で存在しない ネットワークマネジメント アドレス管理、ノード監視、バスアクセス制御など、J1939独自の ネットワークマネジメント機能を標準化 標準CANにはネットワークマネジメント機能なし。必要な場合は 上位プロトコルで実装 ① ②
  7. 8 SAE J1939の特徴 | ①PGN ◆ PGN(Parameter Group Number/パラメーターグループ番号)とは、CAN通信上でやり取りされる メッセージ(パラメーターグループ)を識別するための一意の番号

    ◆ PGNは18ビットの値で、メッセージごとに割り当て ◆ それぞれのPGNは、どのようなデータが含まれているか(例:エンジン温度、エンジン回転数、車輪速度など)を示す ◆ PGNによって、メッセージの内容や用途、送信先(ブロードキャスト/ピアツーピア)などが区別 SAE J1939プロトコル概要 S O F 29 Bit CAN ID R T R 6 Bit Control Field 0...8 byte Data Field 16 Bit CRC Field 2 Bit ACK 7 Bit End of Frame 3 Bit Priority 18 Bit PGN 8 Bit Source Address 1 Bit Reserved 1 Bit Data Page 8 Bit PDU Format 8 Bit PDU Specific データ構造 例: PGN 65262 (0xFEEE) - エンジン温度 – 転送レート: 1s – Data Length: 8 bytes – Priority: 6 バイト位置 パラメータ名 SPN番号 Byte 1 エンジン冷却液温度 SPN 110 Byte 2 燃料温度 SPN 174 Byte 3, 4 エンジンオイル温度 SPN 175 Byte 5, 6 ターボチャージャーオイル温度 SPN 176 Byte 7 エンジンインタークーラー温度 SPN 52 Byte 8 サーモスタット開度 SPN 1134 PGN 65262の例
  8. 9 SAE J1939の特徴 | ②SPN ◆ SPN(Suspect Parameter Number)は、各パラメータを一意に識別するための番号 ◆

    19ビット幅の値で、エンジン回転数や車速、油温など、各パラメータごとにSAEによって割り当てられている ◆ 「エンジン温度」や「車輪速度」など、1つのPGN内に複数のSPNが含まれる ◆ SPNにはスケーリング値やオフセット、単位などの情報も定義されており、受信側はこれらを用いて生データを物理値に変換 ◆ 障害発生時に「どのパラメータで異常が発生したか」を特定するためにもSPNが使われている SAE J1939プロトコル概要 項目名 例 データ長 1バイト データ型 整数(測定値) スケーリング値 1°C/ビット オフセット -40°C 範囲 -40°C~210°C 参照PGN PGN 65262など PGN 65262の例 例: PGN 65262 (0xFEEE) - エンジン温度 – 転送レート: 1s – Data Length: 8 bytes – Priority: 6 バイト位置 パラメータ名 SPN番号 Byte 1 エンジン冷却液温度 SPN 110 Byte 2 燃料温度 SPN 174 Byte 3, 4 エンジンオイル温度 SPN 175 Byte 5, 6 ターボチャージャーオイル温度 SPN 176 Byte 7 エンジンインタークーラー温度 SPN 52 Byte 8 サーモスタット開度 SPN 1134 SPN 110の例 出展: のっぴー, "車の水温計のマークの見方とは?!," のっぴードライブログ, [オンライン]. 利用可能: https://noppy611224.com/car- watertemperaturegauge-pointofview/. [最終更新日: 2022年10月 22日、アクセス日: 2025年7月17日]
  9. 10 SAE J1939の特徴 | ③メッセージ方式 ◆ SAE J1939では、2種類のメッセージが許可されている。 ◆ ピアツーピア:送信元と受信先のアドレスが含まれるメッセージIDを使用します。ノードアドレスは常に8ビット長

    ◆ ブロードキャスト:すべてのノードに配信され、各ノードがそのメッセージを利用するかどうかを判断 (クラシックCANと同じ) ◆ PGNの範囲によって定義されている。 SAE J1939プロトコル概要 PGN範囲 PGN数 メッセージ種別 用途 0x0000~ 0xEEFF 239 ピアツーピア SAEによる標準定義 0xEF00~ 0xEFFF 1 ピアツーピア プロプライエタリ (独自定義) 0xF000~ 0xFEFF 3840 ブロードキャスト SAEによる標準定義 0xFF00~ 0xFFFF 256 ブロードキャスト プロプライエタリ (独自定義) ECU A ECU B ECU C ECU D ECU A ECU B ECU C ECU D PGN範囲における定義 ブロードキャストメッセージ ピアツーピアメッセージ
  10. 11 SAE J1939の特徴 | ④マルチパケット通信 (1/2) ◆ SAE J1939では、最大1,785バイトを複数のCANメッセージに分割して送受信する仕組みが標準としてある。 ◆

    SAE J1939/21※のサブ規格にて仕様が定められている ◆ トランスポートプロトコルを使ってデータを分割し、複数のフレームで送信 ◆ 分割されたパケットを正しい順序で再構成し、元の大きなデータとして復元 ◆ Data FieldのByte1がシーケンス番号を示す SAE J1939プロトコル概要 ※: "SAE Standard J1939/21: Data Link Layer," SAE International. (2022) SOF 29 Bit CAN ID RTR 6 Bit Control Field 0...8 byte Data Field 16 Bit CRC Field 2 Bit ACK 7 Bit End of Frame Byte 1 Sequence Number Byte 2 Data ––– Byte 8 Data Byte 1 Sequence Number =1 Byte 2 - 8 Data Byte 1 Sequence Number =2 Byte 2 - 8 Data ––– Byte 1 Sequence Number =n Byte 2 - 4 Data Bytes 5 - 8 Data = FF Data Filedの詳細(Byte 1がシーケンス番号) マルチパケット通信の例 CAN Frame #1 CAN Frame #2 CAN Frame #n (Last Frame)
  11. 12 SAE J1939の特徴 | ④マルチパケット通信 (2/2) ◆ 通信方式に応じて、以下の2種類のトランスポートプロトコルが用いられる。 SAE J1939プロトコル概要

    プロトコル名 BAM (Broadcast Announce Message) CMDT (Connection Mode Data Transfer, RTS/CTS) 通信方式 ブロードキャスト ピアツーピア 主な用途・ 特徴 送信側が全ノードに一斉送信。フロー制御なし。受信側は受信できなかった 場合通知不可 送信側と受信側が1対1で通信。フロー制御(RTS/CTS)あり。エラー時は中 断可能 シーケンス 図 送信側 受信側 送信側 受信側 50 to 200 msec 50 to 200 msec 50 to 200 msec T1 = 750 msec T1 = 750 msec T1 = 750 msec
  12. 13 SAE J1939の特徴 | ⑤アドレスクレーム (1/2) ◆ アドレスクレーム:ネットワーク上で各ECUが自分のアドレスを宣言し、他のECUと重複しないように調整する機能 ◆ 各ECUが0~253の範囲で一意のアドレスを持つ必要がある

    (254がヌルアドレス、255がグローバルアドレス) ◆ ECUがネットワークに接続すると、まず「アドレスクレームメッセージ(PGN 0xEE00)」を送信し、「自分はこのアドレスを使いたい」と宣言 ◆ メッセージには希望するアドレスと64ビットのDevice NAME(デバイス固有の識別情報)が含まれる ◆ もし同じアドレスを希望するECUが複数あった場合、Device NAMEの優先順位(数値が小さい方が優先)でどちらがそのアドレスを使うか決定 ◆ Device NAME: ◆ ネットワーク内のECUを唯一無二に識別するために、64ビットのNAMEを定義 ◆ 一部パラメーターはSAEによって割り当てられ、残りはアプリケーションの製造元/開発者によって設定 SAE J1939プロトコル概要 項目名 サイズ 意味・説明 備考・範囲 Arbitrary Address Capable 1 bit ECU/CAがアドレス交渉(アドレスクレーム)できるかどうか(1=可、0=不可) 一部ECUは1つのアドレスのみ、他は範囲対応 Industry Group 3 bit 業界グループ (例:オンハイウェイ機器、農業機器など) (SAEが割当) 各業界に対応したコード Vehicle System Instance 4 bit 車両システムインスタンス番号 (同種ネットワーク複数接続時の識別用) 例:列車で複数車両接続時など Vehicle System 7 bit 車両システム種別 (Industry Groupに紐づく。例:Common業界の「トラクター」「など) (SAEが割当) – Reserved 1 bit 予約領域(常に0) – Function 8 bit 機能コード (128-255はIndustry Groupごとに割当、0-127は他パラメータと非関連) (SAEが割当) 0~127:未割当、128~255:業界別割 当 Function instance 5 bit 同じ機能を持つECUの中でのインスタンス番号。0が最初、1が2番目… – ECU Instance 3 bit 同種ECUが複数ある場合のインスタンス番号 – Manufacturer Code 11 bit メーカーコード (SAEが割当) ユニットごとに一意 Identity Number 21 bit 個体識別番号 (メーカーが割当。シリアル番号のようなもの) –
  13. 14 SAE J1939の特徴 | ⑤アドレスクレーム (2/2) ◆ アドレスクレームの手順 ◆ アドレス情報の取得や診断などの補助メッセージ

    ◆ Request for Address Claimed(PGN 59904):ネットワーク上のアドレス状況を知りたい場合は、「Request for Address Claimed」 メッセージを送信し、各ECUが自分のアドレスとNAMEを返す ◆ Address Cannot Claim:アドレス取得に失敗した場合は、「Address Cannot Claim」メッセージで通知 (上図の例だとECU Cから送信) ◆ Commanded Address (PGN 65240):診断ツールなどから特定のアドレスをECUに割り当てる場合に使用 SAE J1939プロトコル概要 1. アドレスクレームの開始 2. アドレス競合の検出 (競合あり) 3. アドレスの確定 (競合なし) ECU C ECU A ECU B Address Claimed メッセージ(PGN 60928) ※希望するアドレスを含む (例:129) 各ECUは事前に優先アドレスを持つ ※メーカごとに衝突しないように設計 アドレス128 アドレス129 アドレス無 129 129 ECU C ECU A ECU B アドレス128 アドレス129 アドレス無 129 ECU C ECU A ECU B アドレス128 アドレス129 アドレス130 130 130 Address Claimed メッセージ(PGN 60928) ※競合したアドレスを含む (例:129) 競合時は、NAMEの値で優先順位を決定し合う 優先順位が低い方はアドレスを放棄し、別のアドレスを再クレーム 競合がなければ、どのECUからも応答 はなく、アドレスはそのまま確定 Address Claimed メッセージ(PGN 60928) ※希望するアドレスを含む (例:130)
  14. 15 SAE J1939の準拠 ◆ SAE J1939の「準拠」には明確な公式テストや認証制度がなく、 各デバイスやソフトウェアの準拠レベルはメーカーごとに異なる。 ◆ 市場には「J1939準拠」と称する製品が多いが、どこまで規格をサポートしているかは明確でない場合がほとんど ◆

    J1939デバイスの基本要件: ◆ ハードウェアはJ1939/1x(物理層)とJ1939/21(データリンク層・トランスポートプロトコル)に準拠が必須 ◆ ソフトウェア/ファームウェアはJ1939/81(アドレスクレームプロセス)に準拠が必須 ◆ ネットワーク管理やノード管理に関する仕様はJ1939-8xシリーズでまとめられている ◆ ネットワーク上でアドレスが重複した場合の自動解決(アドレスクレーム)は実装必須 ◆ J1939の規格集が膨大で、複数のサブ規格がある SAE J1939プロトコル概要 レイヤ 規格名 7. アプリケーション層 J1939/7x 6. プレゼンテーション層 J1939/6x 5. セッション層 J1939/5x 4. トランスポート層 J1939/4x 3. ネットワーク層 J1939/3x 2. データリンク層 J1939/2x 1. 物理層 J1939/1x
  15. 17 SAE J1939に動作検証における課題 (1/2) ◆ SAE J1939に動作検証における課題: →建機・農機系ECUは入手困難(市販車と違い、流通量・情報ともに少なく、高価) SAE J1939シミュレーション環境構築

    検索結果 (キーワード “ECU”) ※2025年7月時点 検索結果 (キーワード “建機 ECU”) ※2025年7月時点 非常に高価 8件のみ 1万件以上 比較的 安価
  16. 18 SAE J1939に動作検証における課題 (2/2) ◆ Arduino+CAN Shieldを用いて、SAE J1939通信環境を構築 →市販のECUや車両機器が手に入りにくい場合でも、 “簡単に“かつ”安価に”ECUノードやシミュレーション環境を構築可能

    ◆ 以下の本やサイトを参考にした SAE J1939シミュレーション環境構築 W. Voss, "SAE J1939 Message Format and Proper Interpretation of PGNs," JCOM1939 Monitor Pro. [Online]. Available: https://jcom1939.com/. [Accessed: July. 14, 2025] W. Voss, 『SAE J1939 ECU Programming & Vehicle Bus Simulation with Arduino (English Edition)』, Copperhill Media Corporation. (2015)
  17. 19 購入機材 ◆ 追加で購入した機材と金額は以下 (2025年6月時点) SAE J1939シミュレーション環境構築 ECUや周辺機材購入より、圧倒的安い↑ Amazon商品名 用途

    画像 金額 ELEGOO Arduino用のMega2560 スタータキット最終版 初心者向け、チュートリアル付、 MEGA 2560ボード, LCD1602 (※1) CAN通信やJ1939プロトコル処理させる。 自宅にジャンパ線やブレッドボードがなかったため スタータキットセットを購入 ¥ 6,908 ELEGOO Arduino用 MEGA2560 R3ボード mega2560 MEGA16U2 + USB ケーブル (青) (※2) CAN通信やJ1939プロトコル処理させる。 本体+ケーブルのみ ¥ 2,990 2PCS MCP2515 Can Bus Shield (※3) CAN通信機能を追加する拡張基板。 CANバスと物理的に接続するために必要。 2台いるらしいので2個セット購入 ¥ 3,091 Total: ¥ 12,989 ※1: "ELEGOO Arduino用のMega2560スタータキット最終版 初心者向け、チュートリアル付、MEGA 2560ボード, LCD1602," Amazon, [オンライン]. 利用可能: https://www.amazon.co.jp/dp/B06Y5SM5D6. [アクセス日: 2025年7月14日] ※2: "ELEGOO Arduino用 MEGA2560 R3ボード mega2560 MEGA16U2 + USB ケーブル (青)," Amazon, [オンライン]. 利用可能: https://www.amazon.co.jp/dp/B06ZZ259PM. [アクセス日: 2025年7月14日] ※3: "2PCS MCP2515 Can Bus Shield," Amazon, [オンライン]. 利用可能: https://www.amazon.co.jp/dp/B0DRPMPS47. [アクセス日: 2025年7月14日]
  18. 20 SAE J1939シミュレーション環境構築 | Arduino Mega 2560 ◆ プロトコルの処理をさせるためのArduinoを購入 ◆

    Arduino Unoは安価だがRAM容量が少なく正常に動作しない可能性があるため、Arduino Mega 2560を購入した ※実際はArduino Unoは使用していないため比較検証はできていない SAE J1939シミュレーション環境構築 項目 Arduino Uno Arduino Mega 2560 SRAM 2KB 8KB フラッシュメモリ 32KB 256KB EEPROM 1KB 4KB 基板サイズ 68.6 x 53.4 mm 101.52 x 53.3 mm マイコンチップ ATmega328P ATmega2560 デジタル 入出力ピン数 14本 54本 アナログ 入力ピン数 6本 16本 価格 安価 やや高価 こちらを購入 Arduino Uno vs Mega 2560 Arduino Mega 2560 出展: "ELEGOO Arduino用 MEGA2560 R3ボード mega2560 MEGA16U2 + USB ケーブル (青)," Amazon, [オンライン]. 利 用可能: https://www.amazon.co.jp/dp/B06ZZ259PM. [アクセス日: 2025年7月14日] ATMEGA2560 電源ジャック Type-Bポート
  19. 21 SAE J1939シミュレーション環境構築 | CAN Bus Shield ◆ マイコンにCAN通信機能を追加するために、 拡張基板のMCP2515

    Can Bus Shieldを購入 ◆ SPI通信でArduinoのCPUに送信するモジュール。CANトランシーバ/CANコントローラの機能を備えている SAE J1939シミュレーション環境構築 MCP2515 Can Bus Shield 項目 内容 対応プロトコル CAN V2.0B 最大通信速度 1 Mb/s コントローラIC MCP2515 (SPIインターフェース) トランシーバIC MCP2551 SPI速度 最大10 MHz データフレーム 標準(11bit)・拡張(29bit)データ&リモートフレーム コネクタ DB9コネクタ(OBD-II接続対応)、CAN_H/CAN_L端子台 ターミネータ抵抗 120Ω(基板上で切替可能) LEDインジケータ PWR(電源)、TX(送信時点滅)、RX(受信時点滅)、INT(割り込み) 対応Arduino UNO (ATmega328)、Mega (ATmega1280/2560)、Leonardo (ATmega32U4)など 電源供給 OBD-IIインターフェース経由(DB9)またはArduinoから供給 MCP2515 Can Bus Shieldのスペック 出展: "2PCS MCP2515 Can Bus Shield," Amazon, [オンライン]. 利用可能: https://www.amazon.co.jp/dp/B0DRPMPS47. [アクセス日: 2025年7月14日] DB9 I/F CANトランシーバ CANコントローラ
  20. 22 SAE J1939シミュレーション環境構築 | ArduinoとCAN Bus Shieldの接続 (1/4) ◆ ArduinoとCAN

    Bus Shieldの接続を行う ◆ CAN Bus Shieldには、CANコントローラ(MCP2515)とCANトランシーバ(MCP2551)の2つが搭載 ◆ CANトランシーバ:デジタル信号と物理信号の変換を担当 ◆ CANコントローラ:CANデータの送受信や通信管理を担当 SAE J1939シミュレーション環境構築 マイコン Arduino Mega 2560 CAN Bus Shield CAN コントローラ CAN トランシーバ J1939 メッセージ 0,1信号 CAN High 電圧 CAN Low 電圧 ArduinoとCAN Bus Shieldの接続 SPI
  21. 23 SAE J1939シミュレーション環境構築 | ArduinoとCAN Bus Shieldの接続 (2/4) ◆ とりあえず参考文献に従い、Arduino

    Mega 2560にCAN Bus Shieldをそのまま上から差し込んだ。 ◆ その状態でサンプルコードを書き込み、J1939の受信テストを進めたが、通信できなかった。 SAE J1939シミュレーション環境構築 Can Bus Shieldを上から装着(イメージ) CAN Bus Shield Arduino 参考: 岡本 一車, "ArduinoでクルマのCAN情報を受信する方法," クルマ志考, [オンライン]. 利用可能: https://kurumashikou.com/gets660can_via_arduino-and-canbus-shield/. [公開: 2022年9月25日、最終更新日: 2025年1月14日、アクセス日: 2025年7月17日]
  22. 24 SAE J1939シミュレーション環境構築 | ArduinoとCAN Bus Shieldの接続 (3/4) ◆ 原因は「SPIピン配置の違い」

    ◆ 多くのShieldはUnoのピン配置に合わせて設計されているため、Mega 2560でそのまま重ねるだけではSPI通信不可 ◆ SPIでは、SCK/MOSI/MISO/CSが必要な信号のためそれぞれピン位置を確認 SAE J1939シミュレーション環境構築 ピン設置確認 (左:Arduino Mega 2560、 右:MCP2515 CAN Bus Shield) 3.3V 5V GND RST GND Vin GND D13 D12 AREF D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1/TX D0/RX SCK MISO MOSI CS* CS GND 3.3V 5V GND RST Vin GND JTAG通信 ICSP D23 D50 D51 D53 MISO MOSI CS* GND 5V D52 SCK GND SPI SPI
  23. 25 SAE J1939シミュレーション環境構築 | ArduinoとCAN Bus Shieldの接続 (4/4) ◆ ピン配置を確認し、ジャンパ線で繋ぎなおして疎通確認を続行

    SAE J1939シミュレーション環境構築 環境構築図 接続図イメージ # タイプ Arduino CAN Shield 1 5V – – 2 GND – – 3 SCK D13 D52 4 MISO D12 D51 5 MOSI D11 D50 6 CS D10 D10 GND 5V SCK MISO MOSI CS
  24. 27 SAE J1939シミュレーション環境構築 | PCとArduino/CAN Bus Shieldの接続 (1/2) ◆ 書き込み完了させ、DB9

    gender changer(DB9メス-DBメス)(※1)と、PCAN-USB(※2)を接続 ◆ これらの機材は元々所有していたため追加での購入なし ◆ PCに接続し、Ubuntu画面にて送受信を試みたが、確認できず。 ⇒CAN-BUS Shield側のコネクタのピン配列と、PCAN-USB側のコネクタのピン配列が異なる SAE J1939シミュレーション環境構築 コネクタピン配列 DB9変換器とPCAN-USBを接続 PCAN-USB コネクタピン配置 CAN Bus Shield コネクタピン配置 6: GND 7: CAN_H 2: CAN_L 9: V+ 3: CAN_H 5: CAN_L 2: GND 9: V+ ※1: "KAUMO DB9メス - DB9メス 小型コネクター (MINI GENDER CHANGER)," Amazon, [オンライン]. 利用可能: https://www.amazon.co.jp/dp/B07X7K7J2H. [アクセス日: 2025年7月14日] ※2: "CAN USB FDアダプター(GC-CAN-USB-FD)," Amazon, [オンライン]. 利用可能: https://www.amazon.co.jp/dp/B078VQ37YY. [アクセス日: 2025年7月14日] 固定ネジは外す
  25. 28 SAE J1939シミュレーション環境構築 | PCとArduino/CAN Bus Shieldの接続 (2/2) ◆ PCAN-USB側のコネクタのピン配列に嵌合させるメス-オスコネクタ(※)をはんだ付けして作成し、接続。

    ノイズ対策として、CANの配線をねじってツイストペアにし、CAN Bus Shieldのピン配列に合わせて接続。 SAE J1939シミュレーション環境構築 環境構築図 ケーブル pin2にCAN_H pin7にCAN_Lをはんだ付け ※: "KAUMO DB9メス - DB9メス 小型コネクター (MINI GENDER CHANGER)," Amazon, [オンライン]. 利用可能: https://www.amazon.co.jp/dp/B07X7K7J2H. [アクセス日: 2025年7月14日] pin3にCAN_H pin5にCAN_Lを接続
  26. 30 SAE J1939シミュレーション環境構築 | 機能チェック ◆ can-utils内にJ1939関連のコマンドがいくつかあるので、それで動作検証や機能チェックが簡単に可能 SAE J1939シミュレーション環境構築 マルチパケット通信の確認

    (testj1939/j1939spyでの受信) testj1939での受信 Arduino Mega 2560 CAN Bus Shield (SA:80) PC (SA:40) SPI ← 0x0123 0x0f00...→ PCからの送信 – SA: 40 – PGN: 0x2300 – Data: 0x0123 PC受信 – SA: 80 – PGN: 0xEC00 ピアツーピア送信 BAM (Broadcast Announce Message) CMDT (Connection Mode Data Transfer, RTS/CTS) Arduino Mega 2560 CAN Bus Shield (SA:80) PC (SA:33) SPI ← BAM(20byte) CMDT(15Byte)→
  27. 31 SAE J1939シミュレーション環境構築 | SAE J1939関連ツール ◆ SAE J1939で使用できそうなツールは以下のとおり。 SAE

    J1939シミュレーション環境構築 ツール名 主な機能 対応OS 備考 参考 can-utils CAN/J1939フレーム送受信・モニタ・ログ・解析 Linux CTFや実車解析で定番。初心者にも比較的扱い やすい。無料。J1939専用のコマンドもあり ※1 JCOM1939 Monitor J1939受信・モニタ・解析・シミュレーション Windows 専用ハードウェア必要。GUIで操作しやすい。初心 者にも比較的扱いやすい。 ※2 SavvyCAN CAN/J1939フレームのキャプチャ・解析・リプレイ・可視化 Windows, Linux, Mac GUI、オープンソース、様々なCANインターフェース 対応 ※3 PCAN-View CAN/J1939モニタ・送受信・ログ・解析 Windows Peak社ハード必要、無料 ※4 CANtrace CAN/J1939モニタ・デコード・プロット・ログ Windows GUI、Kvaser/Vector/Peak等対応 ※5 CANalyzer.J1939 J1939受信・プロトコル解析・拡張解析機能 Windows 専用ハードウェア必要。業務向け。GUIで操作しや すいが高価。CTF向きではない。 ※6 pretty_J1939 J1939ログを整形表示する用途のツール Linux 与えられたCANログを整形させたい場合 ※7 TruckCape J1939ログを整形表示する用途のツール Linux 与えられたCANログを整形させたい場合 ※8 Online Converter J1939ログのPGNを確認するWeb上のツール Windows, Linux, Mac 与えられたCANログのPGNを知りたい場合 ※9 ※1: linux-can, "can-utils: Linux-CAN / SocketCAN user space applications," GitHub. [Online]. Available: https://github.com/linux-can/can-utils. [Accessed: July. 14, 2025] ※2: collin80, "collin80/SavvyCAN: QT based cross platform canbus tool," GitHub. [Online]. Available: https://github.com/collin80/SavvyCAN. [Accessed: July. 14, 2025] ※3: "PCAN-View," PEAK-System. [Online]. Available: https://www.peak-system.com/PCAN-View.242.0.html. [Accessed: July. 14, 2025] ※4: "CANtrace - CAN bus Analyzer software," TK Engineering Oy. [Online]. Available: https://tke.fi/product/cantrace-can-bus-analyzer/. [Accessed: July. 14, 2025] ※5: "CANalyzer .J1939," Vector. [Online]. Available: https://cdn.vector.com/cms/content/products/canalyzer/_J1939/Docs/CANalyzer_J1939_ProductInformation_EN.pdf. [Accessed: July. 14, 2025] ※6: nmfta-repo, "pretty_j1939: python libs and scripts for pretty-printing J1939 logs," GitHub. [Online]. Available: https://github.com/nmfta-repo/pretty_j1939. [Accessed: July. 16, 2025] ※7: SystemsCyber, "TruckCapeProjects: Projects teaching the basics of using the TruckDuck with Python," GitHub. [Online]. Available: https://github.com/SystemsCyber/TruckCapeProjects. [Accessed: July. 16, 2025] ※8: LittleBlondeDevil, "TruckDevil: Useful in interacting with trucks that use J1939," GitHub. [Online]. Available: https://github.com/LittleBlondeDevil/TruckDevil. [Accessed: July. 17, 2025] ※9: "J1939 PGN vs. 29-Bit CAN ID - Online Converter [+ PGN List]," CSS Electronics. [Online]. Available: https://www.csselectronics.com/pages/j1939-pgn-conversion-tool. [Accessed: July. 17, 2025]
  28. 33 CTF ◆ CTF(Capture The Flag)は、情報セキュリティの知識や技術を使って隠された「Flag(答え)」を 見つけ出し、得点を競うハッキングコンテスト。 ◆ 参加者は様々なセキュリティ課題を解決し、制限時間内の合計点数を競う。 ◆

    個人またはチームで参加でき、実践的なサイバーセキュリティ力を養う場として利用されている。 SAE J1939関連のCTF 出典: Lion, "【CTF】初心者向け常設CTFサイト," Lionのブログ, [オンライン]. 利用可能: https://lion-rion.hatenablog.com/entry/2023/12/03/144624. [アクセス日: 2025年7月14日]
  29. 34 BuckeyeCTF ◆ BuckeyeCTFとは、オハイオ州立大学(Ohio State University, OSU)のサイバーセキュリティクラブが 主催するオンラインのハッキングコンテスト(Capture The Flag,

    CTF)のこと ◆ 自動車特有の問題は少ないが、稀に出ているらしい。 SAE J1939関連のCTF 出典:"BuckeyeCTF 2024," [Online]. Available: https://ctf.osucyber.club/. [Accessed: July. 17, 2025]
  30. 35 BuckeyeCTF 2022: Misc - Devil (1/9) ◆ 2022年のMiscについて紹介 ◆

    問題 (Devli) ◆ 問題文のヒントから「大型トラックは特殊なネットワークプロトコル」=「SAE J1939」であることがわかる SAE J1939関連のCTF Heavy trucks are best driven quickly. What is the high resolution maximum speed this truck can be driven? parts of this challenge were derived from: https://www.engr.colostate.edu/~jdaily/J1939/candata.html Hint: Heavy tracks use a special type of network protocol nc pwn.chall.pwnoh.io 13381 --- 訳: 大型トラックは速く走らせるのが最適です。このトラックが「High-Res Max Speed」で運転できる最高速度はいくつですか?このチャレンジの一部 は以下のサイトから引用されています:https://www.engr.colostate.edu/~jdaily/J1939/candata.html ヒント:大型トラックは特殊なネットワークプロトコルを使用しています。
  31. 36 BuckeyeCTF 2022: Misc - Devil (2/9) ◆ https://www.engr.colostate.edu/~jdaily/J1939/candata.html にアクセスすると以下のよう

    なページが表示され、CANを基盤とするプロトコルであることがわかる。 SAE J1939関連のCTF
  32. 37 BuckeyeCTF 2022: Misc - Devil (3/9) ◆ サーバにアクセスすると、75秒分のCANバス通信が出力される。 SAE

    J1939関連のCTF kali@kali:~$ nc pwn.chall.pwnoh.io 13381 (0.001935720443725586) can1 18F11031#0000FFFFFFFFFFFF (0.0038793087005615234) can1 18F11031#0000FFFFFFFFFFFF (0.005795001983642578) can1 18FEF200#00000000AAA08FAFF (0.007314373016357422) can1 18F11031#0000FFFFFFFFFFFF (0.009622399888321877) can1 18F11031#0000FFFFFFFFFFFF (0.01154875553100586) can1 18F11031#0000FFFFFFFFFFFF (0.013478755950927734) can1 18F11031#0000FFFFFFFFFFFF (0.015476465225219727) can1 18F11031#0000FFFFFFFFFFFF (0.01740574836730957) can1 18F11031#0000FFFFFFFFFFFF (0.0193321681213379) can1 18F11031#0000FFFFFFFFFFFF (0.021251678466796875) can1 18F11031#0000FFFFFFFFFFFF (0.023175954818725586) can1 18F11031#0000FFFFFFFFFFFF (0.025098085403442383) can1 18F11031#0000FFFFFFFFFFFF (0.02702093162551891) can1 18F11031#0000FFFFFFFFFFFF (0.0289425392150879) can1 18FEF131#F7FFF7F3C0CFFFF0 (0.030862454414367676) can1 18FEF031#FFFFFFFFFFFFCCCCF (0.03278970718383789) can1 18FEC31#FF32FFFFFFFF00FF (0.03487813171386719) can1 18FEAE31#FFF0401FFFFFFFFF (0.03672194480895996) can1 18F4831#0000FFFFFFFF0FFF (0.03864550993347137) can1 18FD831#FFFFFFFFFFFFFFFF (0.04056018352508545) can1 18FD831#FFFFFFFFFFFFFFFF (0.0424686670303346) can1 18FE200#00000000AAAAAAAA (0.04484236240386963) can1 18FEF231#FFFFFFFFFFFFFFF (0.0482478141784668) can1 18FEA131#F0802FFFFFFFFFFF (0.0501713752746582) can1 18FEC131#5FF21005FFFFFFFF (中略) High-res max speed: 出力されたCANログより • SA(Source address)は、0x31と0x00 • PGNが0xF110, 0xFEF1などがある • PDU Formatが0xF0以上のためブロードキャスト通信 出力の最後に、サーバーは、このデータが取得されたトラックの 「High-Res Max Speed」が何かを尋ねてくる。
  33. 38 BuckeyeCTF 2022: Misc - Devil (4/9) ◆ 問題文の「the high

    resolution maximum speed」から、対応するSPNを知りたい。 ◆ 「SAE J1939 Digital Annex(J1939-DA)」を購入してSPN一覧を確認できるらしいが、$370かかる ◆ Google検索するも見つからないため、CANログを解析して発見する SAE J1939関連のCTF
  34. 39 BuckeyeCTF 2022: Misc - Devil (5/9) ◆ pretty_j1939(※)というツールでCANデータを整形する。(事前にcloneが必要) SAE

    J1939関連のCTF kali@kali:~/tmp/pretty_j1939$ python3 pretty_j1939.py –format –candata ../can1.txt (0.0019354820251464844) can1 18FEF200#00000000AA08FAFF ; { “PGN”: “Unknown(65266)”, “DA”: “All(255)”, “SA”: “Unknown( 0)” } (0.00392913818359375) can1 18F11031#0000FFFFFFFFFFFF ; { “PGN”: “Unknown(61712)”, "DA": "All(255)", "SA": "Unknown( 49)" } (0.00587153434753418) can1 18F11031#0000FFFFFFFFFFFF ; { "PGN": "Unknown(61712)", "DA": "All(255)", "SA": "Unknown( 49)" } (0.00781559944152832) can1 18F11031#0000FFFFFFFFFFFF ; { "PGN": "Unknown(61712)", "DA": "All(255)", "SA": "Unknown( 49)" } • しかし、結果は「Unknown」 • ツール自体は無料だが、J1939のデータベースが有料らしく、別途$270かかるらしい ※: nmfta-repo, "pretty_j1939: python libs and scripts for pretty-printing J1939 logs," GitHub. [Online]. Available: https://github.com/nmfta-repo/pretty_j1939. [Accessed: July. 16, 2025]
  35. 40 BuckeyeCTF 2022: Misc - Devil (6/9) ◆ 他のツールを探したところTruckDevil(※)というツールを発見 ◆

    こちらにはJ1939データベースが搭載されている ◆ そういえば、問題名も「Devil」だった ◆ GitHub内に「spn_list.json」があり、確認したところ”High Resolution”を見つけた SAE J1939関連のCTF ※: LittleBlondeDevil, "TruckDevil: Useful in interacting with trucks that use J1939," GitHub. [Online]. Available: https://github.com/LittleBlondeDevil/TruckDevil. [Accessed: July. 17, 2025]
  36. 41 BuckeyeCTF 2022: Misc - Devil (7/9) ◆ TruckDevilは、CANログ解析ではなく、動作中のCAN I/Fと繋いでリアルタイムで解析するツール

    ◆ Arduinoで構築したシミュレーション環境を用いる!(can-utilsでもできると思うが) ◆ 取得したCANログを送信するように、Arduinoのコードを変更すればよい ◆ TruckDevilをクローンしてインストールすると、以下のようなコマンドラインが立ち上がるので、各設定を行う SAE J1939関連のCTF CAN I/F登録 読み取りモジュールを開始 ロギングをON ファイル名の指定 詳細出力をON
  37. 42 BuckeyeCTF 2022: Misc - Devil (8/9) ◆ 以下のような環境で確認 ◆

    すべてブロードキャスト通信のためPCで受信可能 ◆ 仮想CANI/Fでcanreplayでも確認可能 SAE J1939関連のCTF Arduino Mega 2560 CAN Bus Shield PC SPI J1939形式で送信→ Truck Devil
  38. 43 BuckeyeCTF 2022: Misc - Devil (9/9) ◆ 保存されたログを確認したところ、104.61 km/hの値を確認

    ◆ 値をサーバに送信するとflagが得られる SAE J1939関連のCTF (0.0424686670303346) can1 18FE200#00000000AAAAAAAA (0.04484236240386963) can1 18FEF231#FFFFFFFFFFFFFFF (0.0482478141784668) can1 18FEA131#F0802FFFFFFFFFFF (0.0501713752746582) can1 18FEC131#5FF21005FFFFFFFF High-res max speed: 104.61 Don’t drive too fast: buckeye{vr0000m_vr0000m_vr000000m} flag: buckeye{vr0000m_vr0000m_vr000000m}
  39. 44 DEF CON CHV CTF ◆ DEF CONとは、毎年8月ごろにアメリカLasVegasで開催される世界最大級のハッカーカンファレンス ◆ CHV(Car

    Hacking Village)は、その中でも自動車セキュリティ特化型のCTF。実際の車や仮想環境 のECU・車載ネットワークを対象に、解析・侵入・リバースエンジニアリングなど多様な問題が出題される。 SAE J1939関連のCTF
  40. 45 DEF CON 27 CHV CTF: Heavy Truck – ECM

    ◆ 2019年のHeavy Truckについて紹介 ◆ 主にエンジンECU、Diagツールを利用して解いていく ◆ (ただし情報が少なく、当時のログもないためほぼ問題の紹介程度) ◆ 問題 (ECM) ◆ Source Addressをただ答えるだけ SAE J1939関連のCTF What is the source address of the engine control module? --- 訳: エンジン制御モジュールのSource Addressは? (1689585062.123456) can0 0CF00400 [8] 11 22 33 44 55 66 77 88 (1689585062.223789) can0 18FEF100 [8] AA BB CC DD EE FF 00 11 (1689585062.526789) can0 18FEF200 [8] 10 20 30 40 50 60 70 80 (1689585062.627891) can0 0CF00300 [8] 09 08 07 06 05 04 03 02 (1689585062.728954) can0 0CF00400 [8] 21 43 65 87 A9 CB ED 0F (1689585063.031009) can0 0CF00300 [8] FF EE DD CC BB AA 99 88 S O F 29 Bit CAN ID R T R 6 Bit Control Field 0...8 byte Data Field ・・・ 3 Bit Priority 18 Bit PGN 8 Bit Source Address flag: 00 出典: "エンジン制御モジュール、クイックスタート ECM ECU 制御コンピュータモジュール 2731536591," Amazon, [オンライン]. 利用可能: https://www.amazon.co.jp/dp/B0C7RCC5Z. [アクセス日: 2025年7月17日] 出典: "Kvaser J1939-13 Type II to Dsub9 Adapter Cable 2.5 m," Kvaser. [Online]. Available: https://kvaser.com/product/kvaser-j1939-13-type-ii-to-dsub9-adapter-cable-2-5-m/. [Accessed: July. 17, 2025]
  41. 46 DEF CON 27 CHV CTF: Heavy Truck – Diag

    1 ◆ 問題 (Diag 1) ◆ DiagコネクタにDiagツールを接続して、Source Addressを確認するだけ SAE J1939関連のCTF What is the source address of the diagnostic tool? --- 訳: 診断ツールのSource Addressは? 出典: "Kvaser J1939-13 Type II to Dsub9 Adapter Cable 2.5 m," Kvaser. [Online]. Available: https://kvaser.com/product/kvaser-j1939-13-type-ii-to-dsub9-adapter-cable-2-5-m/. [Accessed: July. 17, 2025] can0:f1,18da0000 00 !7 [8] 10010000 00000000 can0:00,18daf100 f1 !7 [8] 50010000 00000000 can0:f1,18da0000 00 !7 [8] 3e000000 00000000 can0:00,18daf100 f1 !7 [8] 7e000000 00000000 can0:f1,18da0000 00 !7 [8] 11010000 00000000 can0:00,18daf100 f1 !7 [8] 51010000 00000000 can0:f1,18da0000 00 !7 [8] 22f19000 00000000 can0:00,18daf100 f1 !7 [8] 62f19012 34567890 can0:f1,18da0000 00 !7 [8] 27010000 00000000 flag: F1
  42. 47 DEF CON 27 CHV CTF: Heavy Truck – Diag

    2 (1/2) ◆ 問題 (Diag 2) ◆ プロトコルを答えるだけ ◆ CAN IDをOnline Converterというツールに入力してみる ◆ ISO 15765-2(ISO-TP):診断用途向けCANトランスポート層(KWP2000/UDS等のメッセージ多重化手段) ◆ ただし、「ISO 15765-2」ではFlagは通らない。 ◆ ISO-TPが基本UDSやKWP2000のマルチフレーム通信で使用されているので、CANログを再度確認してみる。 SAE J1939関連のCTF What diagnostic protocol is used for communications between diagnostic link and the ECM? --- 訳: 診断リンクとECM間の通信に使用される診断プロトコルは何ですか?
  43. 48 DEF CON 27 CHV CTF: Heavy Truck – Diag

    2 (2/2) ◆ CANログの確認 SAE J1939関連のCTF can0:f1,18da0000 00 !7 [8] 10010000 00000000 can0:00,18daf100 f1 !7 [8] 50010000 00000000 can0:f1,18da0000 00 !7 [8] 3e000000 00000000 can0:00,18daf100 f1 !7 [8] 7e000000 00000000 can0:f1,18da0000 00 !7 [8] 11010000 00000000 can0:00,18daf100 f1 !7 [8] 51010000 00000000 can0:f1,18da0000 00 !7 [8] 22f19000 00000000 can0:00,18daf100 f1 !7 [8] 62f19012 34567890 can0:f1,18da0000 00 !7 [8] 27010000 00000000 can0:00,18daf100 f1 !7 [8] 67011122 33445566 can0:f1,18da0000 00 !7 [8] 2702aabb ccdd eeff can0:00,18daf100 f1 !7 [8] 67029000 00000000 can0:f1,18da0000 00 !7 [8] 22f19300 00000000 can0:00,18daf100 f1 !7 [8] 101462f1 93998877 can0:00,18daf100 f1 !7 [8] 21665544 33221100 can0:00,18daf100 f1 !7 [8] 22aabbcc ddeeff00 can0:f1,18da0000 00 !7 [8] 19020100 00000000 can0:00,18daf100 f1 !7 [8] 59020101 34abcdef can0:f1,18da0000 00 !7 [8] 14000000 00000000 can0:00,18daf100 f1 !7 [8] 54000000 00000000 can0:f1,18da0000 00 !7 [8] 22f19400 00000000 can0:00,18daf100 f1 !7 [8] 101362f1 94deadbe PGN=0xda00(55808) 0x3eや0x11に対する応答が0x7eや0x51 ⇒UDS通信のポジティブレスポンス 0x27でSecurityAccess要求している ReadDataByIdentifier要求で、応答がマルチフレーム通信 flag: UDS ◆ Flagは単にUDSだった
  44. 49 Summary 1. SAE J1939プロトコル概要 • CANの基礎 • SAE J1939の基礎

    • SAE J1939の歴史 • SAE J1939の誕生 • SAE J1939の特徴 • SAE J1939の準拠 2. SAE J1939シミュレーション環境構築 • SAE J1939に動作検証における課題 • 購入機材 • SAE J1939シミュレーション環境構築 • 機能チェック • SAE J1939関連ツール 3. SAE J1939関連のCTF • BuckeyeCTF 2022: Misc • DEF CON 27 CHV CTF: Heavy Truck
  45. 50 参考文献 (1/3) 1. W. Voss, 『SAE J1939 ECU Programming

    & Vehicle Bus Simulation with Arduino (English Edition)』, Copperhill Media Corporation. (2015) 2. W. Voss, "SAE J1939 Message Format and Proper Interpretation of PGNs," JCOM1939 Monitor Pro. [Online]. Available: https://jcom1939.com/. [Accessed: July. 14, 2025] 3. Genspark, "J1939プロトコル入門," [オンライン]. 利用可能: https://www.genspark.ai/spark/j1939%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB%E5%85%A5%E9%96%80/eca2d884-360e-4b98-ad83-4c43fc51ec91. [最終更新日: 2025 年2月10日、アクセス日: 2025年7月17日] 4. "車載ネットワークの新しい通信パラダイム," Vector, [オンライン]. 利用可能: https://www.vector.com/jp/ja/know-how/vj-columns/vj-software-testing/vj-columns220414/#. [最終更新日: 2022年4月14日、アクセス日: 2025年7月14日] 5. "はじめてのJ1939," [オンライン]. 利用可能: https://cdn.vector.com/cms/content/know-how/VJ/PDF/For_Beginners_J1939.pdf. [アクセス日: 2025年7月14日] 6. "SAE J1939 Standards Collection," SAE J1939 Standards Collection on the Web. [Online]. Available: https://www.sae.org/standards/development/ground-vehicle/sae-j1939-standards-collection-on- the-web. [Accessed: July. 14, 2025] 7. "SAE J1939/71: Vehicle Application Layer," SAE International. (2020) 8. のっぴー, "車の水温計のマークの見方とは?!," のっぴードライブログ, [オンライン]. 利用可能: https://noppy611224.com/car-watertemperaturegauge-pointofview/. [最終更新日: 2022年10月22日、アクセス日: 2025年7月17 日] 9. "SAE Standard J1939/21: Data Link Layer," SAE International. (2022) 10. "ELEGOO Arduino用のMega2560スタータキット最終版 初心者向け、チュートリアル付、MEGA 2560ボード, LCD1602," Amazon, [オンライン]. 利用可能: https://www.amazon.co.jp/dp/B06Y5SM5D6. [アクセス日: 2025年7 月14日] 11. "ELEGOO Arduino用 MEGA2560 R3ボード mega2560 MEGA16U2 + USB ケーブル (青)," Amazon, [オンライン]. 利用可能: https://www.amazon.co.jp/dp/B06ZZ259PM. [アクセス日: 2025年7月14日] 12. "2PCS MCP2515 Can Bus Shield," Amazon, [オンライン]. 利用可能: https://www.amazon.co.jp/dp/B0DRPMPS47. [アクセス日: 2025年7月14日] 13. 岡本 一車, "ArduinoでクルマのCAN情報を受信する方法," クルマ志考, [オンライン]. 利用可能: https://kurumashikou.com/gets660can_via_arduino-and-canbus-shield/. [公開: 2022年9月25日、最終更新日: 2025年1月 14日、アクセス日: 2025年7月17日] 14. J. Huang, "CAN-BUS Shield V1.2," Seeed Studio Wiki. [Online]. Available: https://wiki.seeedstudio.com/CAN-BUS_Shield_V1.2/. [Last updated: February. 16, 2023; Accessed: July. 14, 2025] 15. "Arduino Mega 2560 R3," UNIPOS, [オンライン]. 利用可能: https://www.unipos.net/products/arduino-mega-2560-r3/. [アクセス日: 2025年7月14日] 16. "Pinout-Mega2560rev3_latest," ARDUINO, 17. "KAUMO DB9メス - DB9メス 小型コネクター (MINI GENDER CHANGER)," Amazon, [オンライン]. 利用可能: https://www.amazon.co.jp/dp/B07X7K7J2H. [アクセス日: 2025年7月14日] 18. "CAN USB FDアダプター(GC-CAN-USB-FD)," Amazon, [オンライン]. 利用可能: https://www.amazon.co.jp/dp/B078VQ37YY. [アクセス日: 2025年7月14日] 19. "高速CANのピン配列," National Instruments, [オンライン]. 利用可能: https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000019YIGSA2&l=ja-JP. [最終更新日: 2025年5月12日、アクセス日: 2025年7月 17日] 20. "KAUMO DB9オス - DB9メス 小型コネクター (MINI GENDER CHANGER)," Amazon, [オンライン]. 利用可能: https://www.amazon.co.jp/dp/B018AFC1YY. [アクセス日: 2025年7月14日]
  46. 51 参考文献 (2/3) 21. linux-can, "can-utils: Linux-CAN / SocketCAN user

    space applications," GitHub. [Online]. Available: https://github.com/linux-can/can-utils. [Accessed: July. 14, 2025] 22. CaringCaribou, "caringcaribou: A friendly car security exploration tool for the CAN bus," GitHub. [Online]. Available: https://github.com/caringcaribou/caringcaribou. [Accessed: July. 14, 2025] 23. collin80, "collin80/SavvyCAN: QT based cross platform canbus tool," GitHub. [Online]. Available: https://github.com/collin80/SavvyCAN. [Accessed: July. 14, 2025] 24. "PCAN-View," PEAK-System. [Online]. Available: https://www.peak-system.com/PCAN-View.242.0.html. [Accessed: July. 14, 2025] 25. "CANtrace - CAN bus Analyzer software," TK Engineering Oy. [Online]. Available: https://tke.fi/product/cantrace-can-bus-analyzer/. [Accessed: July. 14, 2025] 26. "CANalyzer .J1939," Vector. [Online]. Available: https://cdn.vector.com/cms/content/products/canalyzer/_J1939/Docs/CANalyzer_J1939_ProductInformation_EN.pdf. [Accessed: July. 14, 2025] 27. "j1939spy - manual page for j1939spy 2020.11.0-1," Ubuntu Manpage. [Online]. Available: https://manpages.ubuntu.com/manpages/lunar/man1/j1939spy.1.html. [Accessed: July. 14, 2025] 28. "j1939acd - manual page for j1939acd 2020.11.0-1," Ubuntu Manpage. [Online]. Available: https://manpages.ubuntu.com/manpages/jammy/en/man1/j1939acd.1.html. [Accessed: July. 14, 2025] 29. Khonsu, "CTF/2022-BuckeyeCTF," GitHub. [Online]. Available: https://github.com/Khonsu-CTF/2022-BuckeyeCTF. [Accessed: July. 16, 2025] 30. "SAE J1939がCAN FDに対応(J1939-17/J1939-22準拠)," Vector, [オンライン]. 利用可能: https://www.vector.com/jp/ja/know-how/protocols/sae-j1939-can-fd-know-how/#. [アクセス日: 2025年7月14日] 31. よっちん, "BuckeyeCTF 2022 Writeup," よっちんのブログ, [オンライン]. 利用可能: https://yocchin.hatenablog.com/entry/2022/11/11/090200. [アクセス日: 2025年7月16日] 32. Khonsu, "BuckeyeCTF 2022 / Devil / Writeup," CTFtime.org. [Online]. Available: https://ctftime.org/writeup/38112. [Accessed: July. 16, 2025] 33. "BuckeyeCTF 2024," [Online]. Available: https://ctf.osucyber.club/. [Accessed: July. 17, 2025] 34. "Car Hacking Village," [Online]. Available: https://www.carhackingvillage.com/. [Accessed: July. 14, 2025] 35. "CTF(Capture The Flag)," NRIセキュア, [オンライン]. 利用可能: https://www.nri-secure.co.jp/glossary/ctf. [アクセス日: 2025年7月14日] 36. 中島明日香, "[JRFWS]Dec2011-DEFCON," [オンライン]. 利用可能: https://trustedcomputinggroup.org/wp-content/uploads/JRF/[JRFWS]Dec2011-DEFCON.pdf. [アクセス日: 2025年7月14日] 37. Lion, "【CTF】初心者向け常設CTFサイト," Lionのブログ, [オンライン]. 利用可能: https://lion-rion.hatenablog.com/entry/2023/12/03/144624. [アクセス日: 2025年7月14日] 38. "Heavy Vehicle CAN Data," [Online]. Available: https://www.engr.colostate.edu/~jdaily/J1939/candata.html. [Accessed: July. 16, 2025] 39. nmfta-repo, "pretty_j1939: python libs and scripts for pretty-printing J1939 logs," GitHub. [Online]. Available: https://github.com/nmfta-repo/pretty_j1939. [Accessed: July. 16, 2025] 40. Nisala, "devil," [Online]. Available: https://squ1rrel.dev/buckeye-devil. [Accessed: July. 16, 2025]
  47. 52 参考文献 (3/3) 41. SystemsCyber, "TruckCapeProjects: Projects teaching the basics

    of using the TruckDuck with Python," GitHub. [Online]. Available: https://github.com/SystemsCyber/TruckCapeProjects. [Accessed: July. 16, 2025] 42. LittleBlondeDevil, "TruckDevil: Useful in interacting with trucks that use J1939," GitHub. [Online]. Available: https://github.com/LittleBlondeDevil/TruckDevil. [Accessed: July. 17, 2025] 43. "J1939DA_201311: J1939 Digital Annex," SAE International. [Online]. Available: https://www.sae.org/standards/content/j1939da_201311/. [Accessed: July. 16, 2025] 44. "Green Type 2 J1939 オスから16ピン OBD2 メスケーブル 16ピンから9ピン J1939 アダプターケーブル," Amazon, [オンライン]. 利用可能: https://amzn.asia/d/2gkWWMP. [アクセス日: 2025年7月16日] 45. IBS Japan, "01408-4 Kvaser J1939-13 Type II to Dsub9 Adapter Cable 2.5 m ," IBS Japan, [オンライン]. 利用可能: https://www.ibsjapan.co.jp/products/detail/19527. [アクセス日: 2025年7月17日] 46. "エンジン制御モジュール、クイックスタート ECM ECU 制御コンピュータモジュール 2731536591," Amazon, [オンライン]. 利用可能: https://www.amazon.co.jp/dp/B0C7RCC5Z. [アクセス日: 2025年7月17日] 47. "Kvaser J1939-13 Type II to Dsub9 Adapter Cable 2.5 m," Kvaser. [Online]. Available: https://kvaser.com/product/kvaser-j1939-13-type-ii-to-dsub9-adapter-cable-2-5-m/. [Accessed: July. 17, 2025] 48. "J1939 PGN vs. 29-Bit CAN ID - Online Converter [+ PGN List]," CSS Electronics. [Online]. Available: https://www.csselectronics.com/pages/j1939-pgn-conversion-tool. [Accessed: July. 17, 2025] 49. "UDS Explained - A Simple Intro (Unified Diagnostic Services)," CSS Electronics. [Online]. Available: https://www.csselectronics.com/pages/uds-protocol-tutorial-unified-diagnostic-services. [Accessed: July. 17, 2025] 50. R. Chatterjee, C. Green, and J. Daily, "Exploiting Diagnostic Protocol Vulnerabilities on Embedded Networks in Commercial Vehicles," in Proceedings of the Symposium on Vehicle Security & Privacy (VehicleSec), NDSS, San Diego, CA, USA. (Feb. 2024)