Les opinions exprimées dans ce document et ce code sont celles de l'auteur et ne reflètent pas la politique ou la position officielle de l'armée de l'air des États-Unis, de l'armée américaine, du ministère américain de la Défense ou du gouvernement américain. Ce matériel est déclaré des travaux du gouvernement américain et n'est pas soumis à la protection du droit d'auteur aux États-Unis. L'approbation de la divulgation publique de ce code a été approuvée par la 88th Air Base Wing Affairs Public le 08 mars 2019 en vertu du numéro 88ABW-2019-0910. La divulgation non classifiée de la dissertation a été approuvée le 03 janvier 2019 en vertu du numéro 88ABW-2019-0024.
Ce projet abrite des scripts Python et R destinés à faciliter l'ingénierie inverse automatisée des charges utiles du réseau de zone de contrôleur observées à partir des véhicules de tourisme. Ce code a été initialement développé par le Dr Brent Stone à l'Air Force Institute of Technology à la poursuite d'un docteur en philosophie en informatique. Veuillez consulter la thèse incluse intitulée "Activation de la détection d'audit et d'intrusion pour les réseaux de zone de contrôleur propriétaire" pour plus de détails sur les méthodes utilisées. Veuillez ouvrir un problème pour me faire savoir si vous trouvez des fautes de frappe, une mauvaise grammaire, vos images protégées par le droit d'auteur que vous souhaitez supprimer ou d'autres problèmes!
Merci spécial à Dave Blundell, co-auteur du manuel du pirate de voiture, et de la communauté des garages ouverts pour des conseils techniques et en tant que caisse de résonance.
Ces scripts ne fonctionneront pas immédiatement lors du clonage de ce dépôt. J'espère que ces conseils vous feront gagner du temps et de la frustration en disant "Pourquoi ces choses ne fonctionneront-elles pas!?!?!" Veuillez poser des questions en publiant dans le groupe Google Garages Open. Ces scripts ont été développés et testés à l'aide de Python 3.6. Veuillez vous assurer d'avoir les packages Numpy, Pandas et Scikit-Learn disponibles pour votre interprète Python.
Les fichiers sont organisés avec un exemple d'échantillonnage de données peuvent et trois dossiers. Chaque dossier est un ensemble autonome de classes Python interdépendantes ou des scripts R pour examiner les données du format dans le format illustré dans l'exemple LoggerProgram0.log. Différents formats de fichiers peuvent être utilisés en ajustant Preprocessor.py en conséquence.
Dossier 1: pipeline
Dossier 2: pipeline_multi-file
Il s'agit de la mise en œuvre la plus complète et la plus robuste des concepts présentés dans la thèse; Cependant, le code est également plus compliqué pour permettre le traitement automatisé de nombreux échantillons de données CAN en même temps. Si vous n'êtes pas déjà très à l'aise avec Python et Pandas, assurez-vous de comprendre comment les scripts dans le dossier du pipeline fonctionnent avant d'essayer de passer par cette version élargie du code.
Ce dossier comprend les mêmes classes à partir de pipeline . Cependant, certains bogues ont été corrigés ici mais pas dans les classes enregistrées en pipeline . Si une âme généreuse veut transplanter les correctifs dans le pipeline , je fusionnerai volontiers la fourche.
Assurez-vous de lire les commentaires sur la structure du dossier attendu!
Dossier 3: R SCRIPTS
Les scripts R nécessitent le package RedM. Recherchez des commandes_list.txt pour une série séquentielle de commandes R. Pour plus d'informations sur EDM, consultez la page d'accueil du laboratoire Sugihara de l'UC San Diego: https://deeeco.ucsd.edu/.
Les dossiers "ville" et "à domicile" comprennent des fichiers .csv de régime moteur, de pression de freinage et de séries chronologiques de vitesse du véhicule pendant différentes conditions de conduite. Chaque dossier comprend un fichier "commandes_list _ ####. Txt" pour les commandes ROP-P-casson R pour analyser ces données à l'aide du package Redm.
Les fichiers .rda et la sortie graphique .pdf sont des exemples de sortie à l'aide des commandes R et des données .csv fournies.
[Mise à jour d'avril 2020] Will Freeman a ajouté la prise en charge des arguments de ligne de commande et du prétraitement du format de journal Cantils. L'utilisation est:
EXEMPLE UTILISATION AVEC CAN-UTILS LOG FORMAT Python main.py -c inputfile.log
python main.py --can-utils inputfile.log
Exemple d'utilisation avec le format d'origine Python main.py originalformat.log
Exemple d'utilisation avec ./loggerprogram0.log python main.py
Entrée : les données du format peuvent être présentées dans loggerprogram0.log
Sortie : Cette série de scripts produit un tableau de sortie en fonction des variables globales définies dans main.py. Cette sortie peut inclure les éléments suivants:
Entrée : les données du format peuvent être démontrées dans loggerProgram0.log.
Entrée : fichiers .csv en texte ordinaire contenant des données de séries chronologiques telles que celles incluses dans ce dossier.
Sortir :