분류 전체보기
-
침입 감지 시스템 (IDS) - 타임스탬프 보완application 2025. 1. 5. 22:12
시작하기 전에 침입 감지 시스템 (IDS: Intrusion Detection System) :: hsl's tsmaster 사용기에서 실제로 감지된 침입 건수가 내 예상보다 많았다. 원인을 찾다가 아래의 생각이 났다. TSMaster의 Rx 이벤트가 발생할 때 ts(timestamp)를 메시지 수신 시각으로 삼았다.하드웨어에서 메시지를 수신한 시각과 이벤트가 발생한 시각 사이에 차이가 있다면? 그리고 그 차이가 일정하지 않다면?하드웨어가 메시지 수신 시각을 메시지 데이터에 추가하지 않았을까? TSMaster의 메시지는 RawCAN 클래스이다. RawCAN 클래스의 정의에서 time_us (timestamp in microseconds) 를 찾았다. 참고로 RawCAN 클래스는 아래 코드와 같다.cl..
-
IDS 오감지/ 민감 감지에 관한 고찰tip 2025. 1. 4. 23:26
IDS 오감지/ 민감 감지에 관한 고찰IDS 미니프로그램이 잘 작동한다.0x300번대 메시지들은 침입이 아닌데도 주기 기반 침입 감지가 발생한다.혹시 0x300번대에 메시지들이 다른 번호대 메시지들 보다 많나? 그래서 전송 지연이 연쇄 작용을 일으키나? 하는 의문이 생겼다. import pandas as pdfrom pathlib import Pathimport pickleimport plotly.express as pximport plotly.graph_objects as go# 메시지별 d_ts 통계값을 저장한 xlsx 파일을 읽는다.xlsx_d_ts_distribution = Path.cwd() / 'd_ts_distribution.xlsx'df = pd.read_excel(xlsx_d_ts_dis..
-
침입 판정 기준값 데이터 준비tip 2025. 1. 4. 18:01
침입 감지를 판정할 d_ts의 기준값을 준비한다.¶침입이 있다면 메시지 전송 간격인 d_ts (= timestamp의 diff라는 의미로 d_ts)가 줄어들게 된다.칩입이 없을 때 d_ts의 최소값을 d_ts_min이라고 하자.침입 판정 기준을 d_ts_intrusion_detection_threshold라고 하자.d_ts가 d_ts_min 보다 작아으면 침입으로 감지로 의심할 수 있다.d_ts_min을 구하는데 사용된 데이터가 충분히 많다고 할 수 없다.내가 사용한 데이터는 3분 30초 길이로 너무 짧다.내가 했던 주행도 매우 평범하여 제어기에 연산 하중이 매우 작았을 것이다. 그래서 전송 주기에 영향이 거의 없었을 것이다.데이터가 충분하지 않아 너무 민감하게 침입을 감지할 가능성이 있다.메시지별 d_..
-
CAN 메시지 전송 주기 분포 분석카테고리 없음 2025. 1. 4. 14:59
메시지 전송 주기 분포 분석m_id 별로 메시지 전송 주기의 분포를 확인한다.import pandas as pdfrom pathlib import Pathimport plotly.express as pximport plotly.graph_objects as go# data 디렉토리에 있는 모든 .asc 파일들dir_data = Path('.').absolute()/'asc_per_id'ascs = list(dir_data.glob('*.asc'))print(f'{len(ascs) = :,}')# for asc in ascs:# print(asc.name)len(ascs) = 59한 asc를 대상으로 방법을 개발한다.def read_asc_to_df(asc): ''' .asc 파일을 읽어..
-
asc 파일을 pandas 데이터프레임으로 변환하기tip 2025. 1. 4. 14:02
asc to dataframe¶메시지 전송 주기를 분석하기 위해 수치 데이터 처리에 편리한 pandas를 사용할 것이다.m_id별로 분리된 asc 파일을 읽어서 pandas 데이터프레임을 만든다.데이터 길이 (dlc: data length code)가 일정하지 않다. 어떻게 처리할까?In [16]:import pandas as pdfrom pathlib import PathIn [17]:# data 디렉토리에 있는 모든 .asc 파일의 이름을 출력한다.dir_data = Path('.').absolute()/'asc_per_id'ascs = list(dir_data.glob('*.asc'))print(f'{len(ascs) = :,}')for asc in ascs: print(asc.name)len..
-
asc 파일을 m_id별로 분리하기tip 2025. 1. 4. 13:24
asc 파일을 CAN 메시지 아이디별로 분리 저장한다.¶차에서 받은 CAN 트레이스에는 여러 메시지 아이디(m_id)들의 메시지들이 있다.m_id별 분석을 위해서 m_id별로 asc 파일을 만들어 메시지들을 저장한다.In [1]:from pathlib import Pathimport pandas as pdIn [2]:# 아래 asc 파일을 대상으로 한다.path_to_data_asc = Path(r'C:\Users\haese\OneDrive\01_Projects\1_picode\05_tosun\30_기술\00_교육_자료\CySec\IDS\20240725_venue2024_07_26_09_17_29.asc')# 현재 디렉토리 아래에 asc_per_id 디렉토리를 만든다. dir_output = Path('..
-
침입 감지 시스템 (IDS: Intrusion Detection System)application 2025. 1. 4. 13:18
시작하기 전에사이버 보안은 매우 중요한 주제다. "자동차" 사이버 보안은 사생활, 재산, 안전, 생명에 직접적인 위협이 될 수 있다. 자동차가 무선 통신으로 연결되는 네트워크가 증가할 때마다 더 많고 더 다양한 보안 위협에 노출된다. 차량 내외부의 시스템들 사이에 통신을 통한 협조 제어가 증가할수록 사고 피해의 심각성이 커질 위험이 증가할 개연성이 있다. 통신에 대한 적절한 보안이 필요하다. 통신 보안은 침입 감지부터 시작한다고 말해도 무방할 것이다. TSMaster로 CAN 통신 침입 감지 기능을 만들어본다. [참고] 최신 차량들에는 침입 감지 시스템(IDS: Intrusion Detection System)이 장착되어 있다. 개요IDS 구상트레이스 분석IDS 미니프로그램 코딩침입 판정 기준값 데..
-
Symbol Mapping: 시스템 변수를 CAN 신호로 전송하기simulation 2025. 1. 3. 15:36
시작하기 전에 이전 블로그에서 Symbol Mapping 기능들 중에 CAN 신호들을 이용해서 계산한 결과를 시스템 변수에 넣는 방법을 설명하였다. (Symbol Mapping: CAN 신호로 계산한 결과를 시스템 변수에 넣기 :: hsl's tsmaster 사용기) RBS(Remaining Bus Simulation)를 하다보면 내가 계산한 결과를 CAN으로 전송해야 할 경우가 있다. Symbol Mapping 기능으로 시스템 변수를 CAN으로 전송하는 방법을 설명한다. 개요CAN 신호들로 실시간 연산하기 - 미니프로그램으로 yaw_rate_ws 계산 :: hsl's tsmaster 사용기에서 만든 yaw_rate_ws 신호를 CAN으로 전송한다. 시스템 변수를 전송할 CAN 메시지와 신호 만들기시..
-
mdf 데이터 파일을 읽어서 그래프 그리기tip 2025. 1. 1. 18:23
시작하기 전에 CAN은 메시지 단위의 통신을 한다. CAN 메시지들은 blf 파일에는 메시지 단위로 차곡차곡 저장된다. 아래 그림처럼. 이를 메시지 기반 파일 형식이라고 부르겠다. (위 그림에서 하이라이트 되어있는 첫 줄의 "3A 04 91 ..." 처럼) 바이너리로 저장된 데이터에서 신호를 추출해야 한다. 추출에 필요한 정보는 dbc 파일에 정의되어 있다. (dbc 파일이 무엇인지를 CAN 트레이스 보기 - 바퀴 속도 :: hsl's tsmaster 사용기의 '트레이스 창'에서 부분에서 설명하였다.)dbc 파일이 없으면 신호를 보고 싶은 사람에게 blf 파일은 쓸모가 없다.blf 파일와 짝이 맞지 않는 dbc 파일을 적용하는 경우, 신호를 엉뚱하게 추출하게 된다. 추출하지 못하는 상황보다 더 나쁜 ..
-
PC간 데이터 전송 - 소켓 통신analysis 2024. 12. 31. 09:59
시작하기 전에 실시간으로 FFT 하기 - 미니프로그램과 ai :: hsl's tsmaster 사용기 에서 TSMaster의 FFT 계산 결과를 소켓 통신으로 동일 PC의 FFT Visualizer 프로그램으로 전달하는 방법을 설명했다. 소켓 통신으로 서로 다른 PC의 프로그램 사이에 통신이 가능한지 확인해보았다. 개요클라이언트(TSMaster 미니프로그램)쪽 코드 수정 서버(FFT Visualizer)쪽 코드 수정실행 결과 클라이언트(TSMaster 미니프로그램)쪽 코드 수정FFT 계산 결과를 보내는 쪽인 TSMaster 미니프로그램이 클라이언트이다. FFT 계산 결과를 그래프로 표시하는 FFT Visualizer가 서버이다. 소켓 통신을 연결할 때, ip 주소에 FFT Visualizer가 동..