ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Grand Theft Auto
    개인공부/드림핵 2024. 12. 22. 00:51

    이번 문제의 경우 자동차의 CAN과 통신해서 얻은 파일을 통해 어떤 자동차인지 알아내는 문제이다.

     

    [문제 풀이]

    1. 문제 파일 분석

    문제 파일을 다운로드 받아 제공되는 파일을 열어볼 경우 아래와 같은 내용을 확인 가능하다.

     

     

    여기서 can0은 CAN 통신을 의미하고 7E0, 7E8의 경우 통신 인터페이스를 의미한다.

     

    문제에서는 참고자료로 UDS 프로토콜에 대한 내용을 제공하고 있다.

     

    UDS란

    - 통합 진단 서비스

    - 표준 정의되어 있다(ISO-14229)

     

    1. Reqeust Format

     

    SID(서비스 식별자) : 

    - 1바이트의 길이의 16진수 코드

    - 0x00부터 0x3E까지의 값을 가질 수 있음

    - 서버(ECU)가 클라이언트/테스터가 요청한 서비스를 이해하는데 사용되며 필수 필드

     

    SubFn(서브 기능) :

    - 서버에게 주어진 서비스에 대해 요청된 서브 기능이 무엇인지 알려줌

    - 1바이트 길이

     

    DID(데이터 식별자) :

    - 클라언트와 서버는 기본 형식으로 숫자만을 사용하여 통신

    - 테스터가 읽는 모든 데이터 요소에는 해당 데이터 요소의 데이터 식별자로 알려진 번호가 할당되어야 함

     

    Data Req(데이터 요청 필드) :

    - 특정 메세지의 데이터 식별자와 관련된 메타데이터를 포함

     

    2. Positive Response Message

     

    PR SID(Positive Response SID)

    - 요청메세지에서의 SID와 동일

    - 0x40에서 0x7E 범위를 가짐

    - PR SID는 항상 SID에 0x40을 더함으로서 결정됨

     

    DID(Data Identifier)

    - DID는 요청한 데이터의 식별자로 2바이트임

     

    3. Negative Reponse Message

     

    NR-SID(Negative Response-SID)

    - 1바이트 크기로 사전에 정의된 값 0x7E를 가짐

    - 서비스를 수행할 수 없는 부정적인 의미

     

    SID RQ(Service Identifier Request)

    - 수행 할 수 없는 서비스의 ID를 나타냄

     

    NRC(Negative Response Code)

    - 요청된 서비를 수행하지 않은 이유를 표시

     

    여기서 DID의 값을 표로 정리하면 아래와 같다.

     

    DID 값 (16진수) 설명 설명 세부 사항
    F190 VIN (Vehicle Identification Number) 17자리 차량 식별 번호(VIN)
    F1A0 Supported Diagnostic Modes ECU가 지원하는 진단 모드 목록
    F1C0 ECU Reset (Software Version) ECU의 소프트웨어 버전 정보
    F1D0 ECU Serial Number ECU의 고유 시리얼 번호
    F1E0 Hardware Number ECU의 하드웨어 번호
    F1F0 Application Software Identification ECU 애플리케이션 소프트웨어 식별자
    F200 Odometer Value 차량 주행 거리 (Odometer 값)
    F210 Engine Coolant Temperature 엔진 냉각수 온도
    F220 Fuel Tank Level 연료 탱크 잔여량
    F230 Engine RPM 엔진 회전수 (RPM)
    F240 Tire Pressure 타이어 압력 (개별 타이어 압력 값)
    F250 Battery Voltage 차량 배터리 전압
    F260 Engine Oil Temperature 엔진 오일 온도
    F270 Ambient Temperature 외기 온도
    F280 Brake Fluid Level 브레이크 액체 잔여량
    F290 Engine Load 엔진 부하
    F2A0 Engine Oil Pressure 엔진 오일 압력

     

    문제에서 확인 할 수 있는 HEX 값 F1 90은 VIN을 의미한다.

     

    해당 DID를 처음 요청한 7E0 인터페이스를 요청자로 추정 가능하다.

     

    그렇기에 해당 요청에 대한 응답을 반환할 7E8 인터페이스의 응답값들을 Cyberchef와 같은 인코딩/디코딩 프로그램을 이용해 디코딩 해본다.

     

    디코딩 결과는 아래와 같다.

     

     

    VIN 값은 숫자만을 가지기에 특수문자를 제외 할 시 다음과 같은 VIN 값이 완성된다.

     

     

    해당 값을 VIN 조회 사이트를 통해 조회 시 아래와 같은 결과를 확인 가능하다.

     

     

    확인한 정보를 토대로 FLAG 형식대로 조합 후 답을 제출하면 문제를 해결 할 수 있다.

    '개인공부 > 드림핵' 카테고리의 다른 글

    Replace Trick!  (0) 2024.12.25
    abcdefg-who  (0) 2024.12.23
    session  (0) 2024.12.21
    Find The Lost Flag  (0) 2024.12.21
    Carve Party  (0) 2024.12.09
Designed by Tistory.