---
title: Analyzing various EMV & smartcards
date: 2025-09-17T00:00:00.000Z
---

### 1. Analyzing VISA payment flow


### 2. Transit and Offline Data Authentication


### 3. About domestic cards

| DESC          | AID            | Comments           |
| ------------- | -------------- | ------------------ |
| VISA          | A0000000031010 |                    |
| MASTERCARD    | A0000000041010 |                    |
| KOREACREDIT   | D4100000011010 | BC Card?           |
| KOREACREDIT   | D4100000012010 | LOCAL(V)           |
| KOREA(?)      | D4100000013010 | LOCAL(M)           |
|               | D4100000014010 | Appears on EMV QR  |

Domestic AIDs can be found on domesic-only cards, and cobranded cards only shows corresponding global AID.

Example: **KB Domestic-only card**

```
6F | File Control Information (FCI) Template
    	84 | Dedicated File (DF) Name
    		[7] D4 10 00 00 01 20 10
    A5 | File Control Information (FCI) Proprietary Template
        50 | Application Label : "KOREACREDIT"
        87 | Application Priority Indicator : 01
        5F2D | Language Preference : "koen"
        9F11 | Issuer Code Table Index : 01
        9F12 | Application Preferred Name : "KMC_CHECK"
        BF0C | File Control Information (FCI) Issuer Discretionary Data
            9F6E | Third Party Data
                Country: Korea, Republic of
                Unique Identifier: Proprietary Data not used
                Device Type: 00 - Card
                Proprietary Data: Not used
```

### 4. Miscellaneous Informations

### 1) Student ID

Seoul National University's Student ID is in AID `D410000005494401`.

== Authentication Flow ==
```
1. SELECT
-> 00 A4 04 00 08 D4 10 00 00 05 49 44 01
<- [61 2E]

2. GET RESPONSE 
-> 00 C0 00 00 2E
<- [90 00] 6F 2C 84 08 D4 10 00 00 05 49 44 01 A5 20 50 14 53 54 55 44 45 4E 54 20 49 44 20 20 20 20 20 20 20 20 20 20 BF 0C 07 01 00 00 00 00 00 00

6F |
    84   | "D410000005494401"
    A5 |
        50   | "STUDENTID"
        BF0C | "01000000000000"

3. GET CHALLENGE
-> 00 84 00 00 10
<- [90 00] [ 16 byte RAND ]

4. CREATE SESSION
-> 90 8A 00 81 14 [ 16 byte RAND ] [ 4 byte MAC  ]
<- [90 00]

5. EXTERNAL AUTH
-> 00 82 00 82 04 [ 4 byte MAC ]
<- [90 00]

6. READ RECORD
-> 00 B2 01 0C C8
<- [90 00] ...

01 |
    02   | UNIV CODE (SNU:"0345")
    03   | TYPE ("1")
    04   | ID NUMBER
    05   | ISSUE NO
    06   | NAME (EUC-KR)
    07   | ID NUMBER
    08   | 000000000000000000000000000000000000000000000000
    09   | PADDING
```

Crypto algrithm is likely to be SEED. 

As suspected, reading personal information requires SAM and Key. I dont have access to SAM, so I can't extract information from random ID card.

But since they doesn't do mutual authentication, I possibly can emulate any student ID if I know correct card issue number. I made an PoC app to emulate any card as HCE, and I confirmed that it works on almost all reader.

Although some reader may use pre-registered MIFARE UID for identification.

### 2) payOn

payOn is domestic contactless protocol that's only used on credit based fare system and few merchants.

It uses MIFARE Classic 1k that's already compromised long time ago, so its considered unsafe.

I managed to crack full memory in about 3 mins, and I "confirmed" it works just fine as real card.

== payOn Memory structure? ==
```
Log: [YY MM DD HH MM SS] FFFF [MERCHANT CODE?] [AMOUNT IN WON] [CTR] [PADDING?] [CKSUM]

```