Die in diesem Dokument und in diesem Kodex geäußerten Ansichten sind die des Autors und spiegeln nicht die offizielle Politik oder Position der US -amerikanischen Luftwaffe, der US -Armee der Vereinigten Staaten, des US -Verteidigungsministeriums oder der Regierung der Vereinigten Staaten wider. Dieses Material wird als Arbeit der US -Regierung erklärt und unterliegt in den Vereinigten Staaten nicht dem Urheberrechtsschutz. Die Genehmigung für die öffentliche Offenlegung dieses Kodex wurde am 08. März 2019 unter Fallnummer 88ABW-2019 von den 88. Luftwaffenflügel-öffentliche Angelegenheiten genehmigt. Die nicht klassifizierte Offenlegung der Dissertation wurde am 03. Januar 2019 unter der Fallnummer 88ABW-2019-0024 genehmigt.
Dieses Projekt beherbergt Python- und R -Skripte, mit denen die automatisierte Reverse Engineering of Controller Area Network (CAN) von Passagierfahrzeugen beobachtet wurden. Dieser Kodex wurde ursprünglich von Dr. Brent Stone vom Air Force Institute of Technology entwickelt, um einen Doktor der Philosophie in der Informatik zu verfolgen. Weitere Informationen zu den verwendeten Methoden finden Sie in der mitgelieferten Dissertation mit dem Titel "Aktivierung der Prüfungs- und Intrusion -Erkennung für proprietäre Controller Area -Netzwerke". Bitte öffnen Sie ein Problem, in dem ich wissen kann, ob Sie Tippfehler, schlechte Grammatik, Ihre urheberrechtlich geschützten Bilder finden, die Sie entfernt werden möchten, oder andere Probleme!
Besonderer Dank geht an Dave Blundell, Co-Autor des Handbuchs des Car Hackers, und der Open Garages Community für technische Ratschläge und als Resonanzboden.
Diese Skripte werden beim Klonen dieses Repo nicht sofort ausgeführt. Hoffentlich sparen diese Tipps Zeit und Frustration, die sagen: "Warum funktionieren diese Dinge nicht!?!?!" Bitte stellen Sie Fragen, indem Sie in den Open Garagen Google Group veröffentlichen. Diese Skripte wurden mit Python 3.6 entwickelt und getestet. Bitte stellen Sie sicher, dass Sie die Python-Dolmetscher von Numpy, Pandas und Scikit-Learn zur Verfügung haben.
Die Dateien werden mit einem Beispiel für Dose -Daten und drei Ordnern organisiert. Jeder Ordner ist ein in sich geschlossener Satz voneinander abhängigen Python-Klassen oder R-Skripten zur Untersuchung von Can-Daten im Format im Beispiel loggerProgram0.log. Verschiedene Dateiformate können verwendet werden, indem der Präprozessor eingestellt wird. Py entsprechend.
Ordner 1: Pipeline
Ordner 2: Pipeline_Multi-File
Dies ist die vollständigste und robusteste Implementierung der in der Dissertation vorgestellten Konzepte. Der Code ist jedoch auch komplizierter, um die automatisierte Verarbeitung vieler CAN -Datenproben gleichzeitig zu ermöglichen. Wenn Sie sich mit Python und Pandas nicht bereits sehr wohl nicht wohlfühlen, stellen Sie sicher, dass Sie verstehen, wie die Skripte im Pipeline -Ordner funktionieren, bevor Sie versuchen, diese erweiterte Version des Codes zu durchlaufen.
Dieser Ordner enthält dieselben Klassen aus der Pipeline . Hier wurden jedoch einige Fehler behoben, aber nicht in den in der Pipeline gespeicherten Klassen. Wenn eine großzügige Seele die Fixes in Pipeline zurückverpflanzen will, werde ich die Gabel gerne verschmelzen.
Stellen Sie sicher, dass Sie die Kommentare zur erwarteten Ordnerstruktur lesen!
Ordner 3: R -Skripte
Die R -Skripte erfordern das Redm -Paket. Suchen Sie nach commands_list.txt für eine sequentielle Reihe von R -Befehlen. Weitere Informationen zu EDM finden Sie in der Sugihara -Labor -Homepage von UC San Diego: https://deepeco.ucsd.edu/.
Die Ordner "City" und "Home" enthalten .csv -Dateien mit Motordrehzahl, Bremsdruck und Fahrzeuggeschwindigkeitszeitreihen unter verschiedenen Fahrbedingungen. Jeder Ordner enthält eine Datei "commands_list _ ####.
.RDA -Dateien und .pdf Grafische Ausgabe sind Beispiele für die Ausgabe, die mit den Befehlen r und zur Verfügung gestellt werden. CSV -Daten.
[April 2020 Update] Will Freeman fügte Unterstützung für Befehlszeilenargumente und Can-Utils-Protokollformat-Vorverarbeitungen hinzu. Verwendung ist:
Beispiel Verwendung mit Can -Utils -Protokollformat Python main.py -c InputFile.log
python main.py--can-utils InputFile.log
Beispiel Verwendung mit Originalformat Python main.py OriginalFormat.log
Beispiel Verwendung mit ./LoggerProgram0.log Python main.py
Eingabe : CAN -Daten im Format, das in loggerProgram0.log gezeigt wurde
Ausgabe : Diese Reihe von Skripten erzeugt abhängig von den in Main.py definierten globalen Variablen eine Ausgabearray. Diese Ausgabe kann Folgendes enthalten:
Eingabe : CAN -Daten im Format, das in loggerProgram0.log gezeigt wurde.
Eingabe : Plain-Text .csv-Dateien, die Zeitreihendaten enthalten, wie z. B. in diesem Ordner enthalten.
Ausgabe :