この文書とコードで表明されている見解は著者の見解であり、米国空軍、米国陸軍、米国国防総省、または米国政府の公式政策または地位を反映していません。この資料は米国政府の仕事と宣言されており、米国では著作権保護の対象ではありません。このコードの公開開示の承認は、2019年3月8日に第8888888ABW-2019-0910に基づいて第88航空基地の広報によって承認されました。論文の未分類の開示は、2019年1月3日に事件番号88ABW-2019-0024に基づいて承認されました。
このプロジェクトには、乗用車から観察されたコントローラーエリアネットワーク(CAN)ペイロードの自動リバースエンジニアリングを促進することを目的としたPythonおよびRスクリプトがあります。このコードはもともと、コンピューターサイエンスの哲学博士号を追求する空軍工科大学のブレントストーン博士によって開発されました。使用されている方法の詳細については、「独自のコントローラーエリアネットワークの監査と侵入検知の有効化と侵入検知」というタイトルの論文を参照してください。タイプミス、悪い文法、削除したい著作権で保護された画像、またはその他の問題を見つけた場合、問題を開いてください!
車のハッカーハンドブックの共著者であるデイブ・ブランデルと、技術的なアドバイスとサウンディングボードとしてのサービスを提供してくれたオープンガレージコミュニティに感謝します。
これらのスクリプトは、このリポジトリをクローニングするときにすぐには実行されません。うまくいけば、これらのヒントが「なぜこれらのことが機能しないのか!?!?!」という時間と欲求不満を節約することで、 Open Garages Google Groupに投稿して質問してください。これらのスクリプトは、Python 3.6を使用して開発およびテストされました。 Pythonインタープリターが利用できるNumpy、Pandas、およびScikit-Learnパッケージがあることを確認してください。
ファイルには、データサンプルと3つのフォルダーの例が編成されています。各フォルダーは、相互依存のPythonクラスのセットまたはRoggerProgram0.logの例に示されている形式の缶データを調べるためのRスクリプトのセットです。それに応じてPreprocessor.pyを調整することで、さまざまなファイル形式を使用できます。
フォルダー1:パイプライン
フォルダー2: pipeline_multi-file
これは、論文で提示された概念の最も完全で堅牢な実装です。ただし、このコードは、一度に多くのCANデータサンプルの自動処理を可能にするために、より複雑です。 PythonとPandasにまだあまり快適でない場合は、この拡張されたバージョンのコードを実行しようとする前に、パイプラインフォルダーのスクリプトがどのように機能するかを確認してください。
このフォルダーには、パイプラインから同じクラスが含まれています。ただし、ここではいくつかのバグが修正されましたが、パイプラインで保存されたクラスでは修正されませんでした。寛大な魂が修正をパイプラインに戻したい場合、私は喜んでフォークを融合させます。
予想されるフォルダー構造に関するコメントを必ずお読みください!
フォルダー3: Rスクリプト
RスクリプトにはREDMパッケージが必要です。一連のRコマンドのシーケンシャルシリーズのcommands_list.txtを探します。 EDMの詳細については、UC San DiegoのSugihara Lab Homepage:https://deepeco.ucsd.edu/を参照してください。
フォルダー「City」と「Home」には、さまざまな運転条件中のエンジンRPM、ブレーキ圧力、および車両速度時系列の.CSVファイルが含まれます。各フォルダーには、redmパッケージを使用してこのデータを分析するためのコピーパステrコマンドの「commands_list _ ####。txt」ファイルが含まれています。
.RDAファイルと.pdfグラフィカル出力は、Rコマンドを使用した出力の例であり、.CSVデータを提供します。
[2020年4月の更新] Freemanは、コマンドライン引数とCan-Utilsログ形式の前処理のサポートを追加しました。使用法は次のとおりです。
can -utilsでの使用ログフォーマットpython main.py -c inputfile.log
python main.py - can-utils inputfile.log
例オリジナルフォーマットPython main.py originalformat.logで使用します
例で使用します。./loggerprogram0.logpython main.py
入力:loggerprogram0.logで実証された形式のデータは
出力:この一連のスクリプトは、 main.pyで定義されたグローバル変数に応じて、一連の出力を生成します。この出力には、次のものが含まれる場合があります。
入力:loggerprogram0.logで実証された形式のデータを使用できます。
入力:このフォルダーに含まれるような時系列データを含むPlain-Text .CSVファイル。
出力: