이 문서와 코드에 표현 된 견해는 저자의 견해이며 미국 공군, 미 육군, 미국 국방부 또는 미국 정부의 공식 정책 또는 직책을 반영하지 않습니다. 이 자료는 미국 정부의 작업으로 선언되었으며 미국의 저작권 보호 대상이되지 않습니다. 이 코드의 공개 승인은 2019 년 3 월 8 일 사례 번호 88ABW-2019-0910에 따라 88 번째 항공 기지 윙 홍보에 의해 승인되었습니다. 논문의 분류되지 않은 공개는 2019 년 1 월 3 일 사례 번호 88ABW-2019-0024에 따라 승인되었습니다.
이 프로젝트에는 여객 차량에서 관찰 된 컨트롤러 영역 네트워크 (CAN) 페이로드의 자동 리버스 엔지니어링을 용이하게하기위한 Python 및 R 스크립트가 있습니다. 이 코드는 원래 컴퓨터 과학 철학 박사를 추구하기 위해 공군 기술 연구소의 Brent Stone 박사가 개발했습니다. 사용 된 방법에 대한 자세한 내용은 "독점 컨트롤러 영역 네트워크에 대한 감사 및 침입 탐지 활성화"라는 제목의 논문을 참조하십시오. 오타, 잘못된 문법, 제거하려는 저작권이있는 이미지 또는 기타 문제가있는 경우 알려주는 문제를 열어주십시오!
자동차 해커 핸드북의 공동 저자 인 Dave Blundell과 기술 조언과 사운드 보드 역할을하는 Open Garages 커뮤니티에 특별한 감사를드립니다.
이 스크립트는이 repo를 복제 할 때 즉시 실행되지 않습니다. 바라건대이 팁은 "왜 이런 일이 작동하지 않는다!?!?!"라는 시간과 좌절을 절약 할 수 있기를 바랍니다. 오픈 차고 Google Group에 게시하여 질문을하십시오. 이 스크립트는 Python 3.6을 사용하여 개발 및 테스트되었습니다. Python 통역사가 Numpy, Pandas 및 Scikit-Learn 패키지를 사용할 수 있는지 확인하십시오.
파일은 예제로 데이터 샘플과 3 개의 폴더로 구성됩니다. 각 폴더는 예제 LoggerProgram0.log에 표시된 형식의 CAN 데이터를 검사하기위한 자체 포함 된 상호 의존적 인 Python 클래스 또는 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 홈페이지 : https://deepeco.ucsd.edu/를 참조하십시오.
폴더 "City"및 "Home"에는 다양한 주행 조건에서 엔진 RPM의 .CSV 파일, 브레이크 압력 및 차량 속도 시계열이 포함됩니다. 각 폴더에는 redm 패키지를 사용 하여이 데이터를 분석하기 위해 Copy-Paste 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.log python main.py와 함께 사용합니다
입력 : LoggerProgram0.log에서 시연 된 형식의 데이터가 가능합니다.
출력 :이 일련의 스크립트는 main.py 에 정의 된 글로벌 변수에 따라 출력 배열을 생성합니다. 이 출력은 다음을 포함 할 수 있습니다.
입력 : LoggerProgram0.log에 표시된 형식의 데이터가 가능합니다.
입력 :이 폴더에 포함 된 것과 같은 시계열 데이터가 포함 된 일반 텍스트 .CSV 파일.
출력 :