2017-10-31 5 views
-2

SIM 카드와 LTE 모듈 간의 IO 회선을 스니핑하고 있습니다. 많은 양의 데이터를 기록하지만 명령과 응답에 대한 한 줄만 있기 때문에 사이에 경계가없는 16 진수 데이터로드가 발생합니다. 그 16 진수 덤프를 취할 수있는 도구가 있고 그것을 명령과 응답으로 구문 분석하고 명령의 유형이 무엇인지, 명령이 무엇인지 알려주는 도구가 있습니까?SIM CARD APDU 구문 분석 도구

+0

당신이 좋은 덤프에서 어떤 통찰력을 기대합니까? Global Plattform 사양 및 ISO 7816-3, T = 0 프로토콜 섹션을 건너 뛰는 데 도움이된다고 상상할 수 없습니다. 대부분의 데이터는 지루하고 나머지는 암호화되거나 어떤 식 으로든 무작위로 추측됩니다. – guidot

+0

그게 문제입니다. 그냥 덤프 일 뿐이야. 그래서 의미있는 명령과 응답 쌍으로 구문 분석 할 수있는 도구가 있는지 궁금합니다. 그렇지 않으면 나는 덤프를 거쳐 수동으로 파싱해야 할 것이고 이것은 오랜 시간이 걸릴 것이다. –

답변

1

나는 15 년 이상 전에 쓴 프로그램에 대한 내 기록을 파고 github에 공유했습니다.

유선에서 캡처 된 T = 0 통신을 분석하며 기본 APDU 인식 (SIM 만, USIM 없음)의 종류가 있습니다.

유용 할 수도 있습니다.

행운을 빈다.

추신 : 비슷한 기능을 제공하는 simtrace project이 있습니다.


예 입력 :

FF FF 3F 2F 00 80 69 AF 02 04 02 31 00 00 00 0E 
83 3E 9F 16 A0 A4 00 00 02 A4 3F 00 9F 16 A0 A4 
00 00 02 A4 2F E2 9F 0F A0 B0 00 00 0A B0 FF FF 
FF FF FF FF FF FF FF FF 90 00 A0 A4 00 00 02 A4 
7F 20 9F 16 A0 A4 00 00 02 A4 6F AE 9F 0F A0 B0 
00 00 01 B0 02 90 00 A0 A4 00 00 02 A4 6F 05 9F 
0F A0 C0 00 00 0F C0 85 0D 00 07 6F 05 04 00 01 
FF FF 03 02 00 00 90 00 A0 B0 00 00 05 B0 01 00 
03 02 04 90 00 A0 A4 00 00 02 A4 7F 20 9F 16 A0 
C0 00 00 16 C0 85 14 00 04 7F 20 02 00 00 FB FF 
03 09 99 00 12 04 00 83 8A 80 8A 90 00 A0 A4 00 
00 02 A4 6F 07 9F 0F A0 C0 00 00 0F C0 85 0D 00 
09 6F 07 04 00 1B FF 1B 03 02 00 00 90 00 A0 A4 
00 00 02 A4 3F 00 9F 16 A0 A4 00 00 02 A4 2F E2 
9F 0F A0 A4 00 00 02 A4 7F 20 9F 16 A0 A4 00 00 
02 A4 6F 31 9F 0F A0 B0 00 00 01 B0 FF 90 00 A0 
A4 00 00 02 A4 6F 16 94 04 A0 A4 00 00 02 A4 6F 
AD 9F 0F A0 C0 00 00 0F C0 85 0D 00 03 6F AD 04 
00 0B FF FF 03 02 00 00 90 00 A0 B0 00 00 03 B0 
00 FF FF 90 00 A0 A4 00 00 02 A4 6F 38 9F 0F A0 
C0 00 00 0F C0 85 0D 00 04 6F 38 04 00 1B FF FF 
03 02 00 00 90 00 A0 B0 00 00 04 B0 FF 3F FF 0F 
90 00 A0 A4 00 00 02 A4 6F 07 9F 0F 

예 출력 :

---============----------------------------------------------------------------- 
Garbage: FF FF 

---============----------------------------------------------------------------- 
ATR: 3F 2F 00 80 69 AF 02 04 02 31 00 00 00 0E 83 3E 9F 16 

(*) ATR analyze 
     Initial character TS=3F 
       Inverse convention 
     Format character T0=2F 
       TB1 global interface character(s) defined 
       15 historical characters present 
     Global interface character TB1=00 
     Historical characters: 80 69 AF 02 04 02 31 00 00 00 0E 83 3E 9F 16 

---============----------------------------------------------------------------- 
ME: A0 A4 00 00 02 - (SELECT command) 
SIM: A4 - (Ins echo) 

(Processing command SELECT) 

ME: 3F 00 - (File 3F00) 

SIM: 9F 16 - (SIM has response data with length 16) 

---============----------------------------------------------------------------- 
ME: A0 A4 00 00 02 - (SELECT command) 
SIM: A4 - (Ins echo) 

(Processing command SELECT) 

ME: 2F E2 - (File 2FE2) 

SIM: 9F 0F - (SIM has response data with length 0F) 

---============----------------------------------------------------------------- 
ME: A0 B0 00 00 0A - (READ BINARY command) 
SIM: B0 - (Ins echo) 

(Processing command READ BINARY) 

SIM: FF FF FF FF FF FF FF FF FF FF - (Data of file 2FE2 at offset 0000) 

SIM: 90 00 - (Normal ending of the command) 

---============----------------------------------------------------------------- 
ME: A0 A4 00 00 02 - (SELECT command) 
SIM: A4 - (Ins echo) 

(Processing command SELECT) 

ME: 7F 20 - (File 7F20) 

SIM: 9F 16 - (SIM has response data with length 16) 

---============----------------------------------------------------------------- 
ME: A0 A4 00 00 02 - (SELECT command) 
SIM: A4 - (Ins echo) 

(Processing command SELECT) 

ME: 6F AE - (File 6FAE) 

SIM: 9F 0F - (SIM has response data with length 0F) 

---============----------------------------------------------------------------- 
ME: A0 B0 00 00 01 - (READ BINARY command) 
SIM: B0 - (Ins echo) 

(Processing command READ BINARY) 

SIM: 02 - (Data of file 6FAE at offset 0000) 

SIM: 90 00 - (Normal ending of the command) 

---============----------------------------------------------------------------- 
ME: A0 A4 00 00 02 - (SELECT command) 
SIM: A4 - (Ins echo) 

(Processing command SELECT) 

ME: 6F 05 - (File 6F05) 

SIM: 9F 0F - (SIM has response data with length 0F) 

---============----------------------------------------------------------------- 
ME: A0 C0 00 00 0F - (GET RESPONSE command) 
SIM: C0 - (Ins echo) 

(Processing command GET RESPONSE) 

SIM: 85 0D 00 07 6F 05 04 00 01 FF FF 03 02 00 00 - (SELECT response data) 

SIM: 90 00 - (Normal ending of the command) 

---============----------------------------------------------------------------- 
ME: A0 B0 00 00 05 - (READ BINARY command) 
SIM: B0 - (Ins echo) 

(Processing command READ BINARY) 

SIM: 01 00 03 02 04 - (Data of file 6F05 at offset 0000) 

SIM: 90 00 - (Normal ending of the command) 

---============----------------------------------------------------------------- 
ME: A0 A4 00 00 02 - (SELECT command) 
SIM: A4 - (Ins echo) 

(Processing command SELECT) 

ME: 7F 20 - (File 7F20) 

SIM: 9F 16 - (SIM has response data with length 16) 

---============----------------------------------------------------------------- 
ME: A0 C0 00 00 16 - (GET RESPONSE command) 
SIM: C0 - (Ins echo) 

(Processing command GET RESPONSE) 

SIM: 85 14 00 04 7F 20 02 00 00 FB FF 03 09 99 00 12 04 00 83 8A 80 8A - (SELECT response data) 

SIM: 90 00 - (Normal ending of the command) 

---============----------------------------------------------------------------- 
ME: A0 A4 00 00 02 - (SELECT command) 
SIM: A4 - (Ins echo) 

(Processing command SELECT) 

ME: 6F 07 - (File 6F07) 

SIM: 9F 0F - (SIM has response data with length 0F) 

---============----------------------------------------------------------------- 
ME: A0 C0 00 00 0F - (GET RESPONSE command) 
SIM: C0 - (Ins echo) 

(Processing command GET RESPONSE) 

SIM: 85 0D 00 09 6F 07 04 00 1B FF 1B 03 02 00 00 - (SELECT response data) 

SIM: 90 00 - (Normal ending of the command) 

---============----------------------------------------------------------------- 
ME: A0 A4 00 00 02 - (SELECT command) 
SIM: A4 - (Ins echo) 

(Processing command SELECT) 

ME: 3F 00 - (File 3F00) 

SIM: 9F 16 - (SIM has response data with length 16) 

---============----------------------------------------------------------------- 
ME: A0 A4 00 00 02 - (SELECT command) 
SIM: A4 - (Ins echo) 

(Processing command SELECT) 

ME: 2F E2 - (File 2FE2) 

SIM: 9F 0F - (SIM has response data with length 0F) 

---============----------------------------------------------------------------- 
ME: A0 A4 00 00 02 - (SELECT command) 
SIM: A4 - (Ins echo) 

(Processing command SELECT) 

ME: 7F 20 - (File 7F20) 

SIM: 9F 16 - (SIM has response data with length 16) 

---============----------------------------------------------------------------- 
ME: A0 A4 00 00 02 - (SELECT command) 
SIM: A4 - (Ins echo) 

(Processing command SELECT) 

ME: 6F 31 - (File 6F31) 

SIM: 9F 0F - (SIM has response data with length 0F) 

---============----------------------------------------------------------------- 
ME: A0 B0 00 00 01 - (READ BINARY command) 
SIM: B0 - (Ins echo) 

(Processing command READ BINARY) 

SIM: FF - (Data of file 6F31 at offset 0000) 

SIM: 90 00 - (Normal ending of the command) 

---============----------------------------------------------------------------- 
ME: A0 A4 00 00 02 - (SELECT command) 
SIM: A4 - (Ins echo) 

(Processing command SELECT) 

ME: 6F 16 - (File 6F16) 

SIM: 94 04 - (File ID not found/Pattern not found) 

---============----------------------------------------------------------------- 
ME: A0 A4 00 00 02 - (SELECT command) 
SIM: A4 - (Ins echo) 

(Processing command SELECT) 

ME: 6F AD - (File 6FAD) 

SIM: 9F 0F - (SIM has response data with length 0F) 

---============----------------------------------------------------------------- 
ME: A0 C0 00 00 0F - (GET RESPONSE command) 
SIM: C0 - (Ins echo) 

(Processing command GET RESPONSE) 

SIM: 85 0D 00 03 6F AD 04 00 0B FF FF 03 02 00 00 - (SELECT response data) 

SIM: 90 00 - (Normal ending of the command) 

---============----------------------------------------------------------------- 
ME: A0 B0 00 00 03 - (READ BINARY command) 
SIM: B0 - (Ins echo) 

(Processing command READ BINARY) 

SIM: 00 FF FF - (Data of file 6FAD at offset 0000) 

SIM: 90 00 - (Normal ending of the command) 

---============----------------------------------------------------------------- 
ME: A0 A4 00 00 02 - (SELECT command) 
SIM: A4 - (Ins echo) 

(Processing command SELECT) 

ME: 6F 38 - (File 6F38) 

SIM: 9F 0F - (SIM has response data with length 0F) 

---============----------------------------------------------------------------- 
ME: A0 C0 00 00 0F - (GET RESPONSE command) 
SIM: C0 - (Ins echo) 

(Processing command GET RESPONSE) 

SIM: 85 0D 00 04 6F 38 04 00 1B FF FF 03 02 00 00 - (SELECT response data) 

SIM: 90 00 - (Normal ending of the command) 

---============----------------------------------------------------------------- 
ME: A0 B0 00 00 04 - (READ BINARY command) 
SIM: B0 - (Ins echo) 

(Processing command READ BINARY) 

SIM: FF 3F FF 0F - (Data of file 6F38 at offset 0000) 

SIM: 90 00 - (Normal ending of the command) 

---============----------------------------------------------------------------- 
ME: A0 A4 00 00 02 - (SELECT command) 
SIM: A4 - (Ins echo) 

(Processing command SELECT) 

ME: 6F 07 - (File 6F07) 

SIM: 9F 0F - (SIM has response data with length 0F) 
1

우리는 카드 ATR 및 APDU 명령/알려져 지침에 대한 응답을 분석하는 온라인 툴을 구현했습니다. 샘플에 대한

:

는 트레이스 데이터 입력 레벨 1에있을 수 있습니다 형식으로, T = 0, T = 1 패킷에 대한 INS echos와 프로토콜 수준입니다. 또는 A의 의사 추적 로그 PDU 명령과 응답.

관련 사양의 데이터 분석기가있는 파서. 죄송합니다. 아직 정의 된 SIM 툴킷이 없습니다.

SIM 카드의 APDU 트레이스 (반향 INS 바이트 없음) 아래.

몇 가지 가능한 세부 정보를 볼 수 ISO 7816 APDU parser tool으로 구문 분석을 시도 :

# FF FF 
? 3F 2F 00 80 69 AF 02 04 02 31 00 00 00 0E 83 3E 9F 16 

# Ins Echo removed from card responses 

> A0 A4 00 00 02 3F 00 
< 9F 16 

> A0 A4 00 00 02 2F E2 
< 9F 0F 

> A0 B0 00 00 0A FF FF FF FF FF FF FF FF FF FF 
< 90 00 

> A0 A4 00 00 02 7F 20 
< 9F 16 

> A0 A4 00 00 02 6F AE 
< 9F 0F 

> A0 B0 00 00 01 
< 02 90 00 

> A0 A4 00 00 02 6F 05 
< 9F 0F 

> A0 C0 00 00 0F 
< 85 0D 00 07 6F 05 04 00 01 FF FF 03 02 00 00 
< 90 00 

> A0 B0 00 00 05 
< 01 00 03 02 04 90 00 

> A0 A4 00 00 02 7F 20 
< 9F 16 

> A0 C0 00 00 16 
> 85 14 00 04 7F 20 02 00 00 FB FF 03 09 99 00 12 04 00 83 8A 80 8A 90 00 

> A0 A4 00 00 02 6F 07 
< 9F 0F 

> A0 C0 00 00 0F 
< 85 0D 00 09 6F 07 04 00 1B FF 1B 03 02 00 00 90 00 

> A0 A4 00 00 02 3F 00 
< 9F 16 

> A0 A4 00 00 02 2F E2 
< 9F 0F 

> A0 A4 00 00 02 7F 20 
< 9F 16 

> A0 A4 00 00 02 6F 31 
< 9F 0F 

> A0 B0 00 00 01 
< FF 90 00 

> A0 A4 00 00 02 6F 16 
< 94 04 

> A0 A4 00 00 02 6F AD 
< 9F 0F 

> A0 C0 00 00 0F 
< 85 0D 00 03 6F AD 04 00 0B FF FF 03 02 00 00 90 00 

> A0 B0 00 00 03 
< 00 FF FF 90 00 

> A0 A4 00 00 02 6F 38 
< 9F 0F 

> A0 C0 00 00 0F 
< 85 0D 00 04 6F 38 04 00 1B FF FF 03 02 00 00 90 00 

> A0 B0 00 00 04 
< FF 3F FF 0F 90 00 

> A0 A4 00 00 02 6F 07 
< 9F 0F