Skip to content

Malaysia MyKad Specification

1. System Overview

  • Standards: ISO/IEC 7816-4, ISO 14443-3A (Contactless/Touch 'n Go)
  • Platform: Multipurpose Smart Card (Government, Driving License, Payment)
  • Encoding: ASCII / Proprietary
  • Protocol: T=0 / T=1

2. Application Identifiers (AID)

MyKad hosts multiple applications.

ApplicationAID (Hex)Description
JPN (Identity)A0 00 00 00 74 4A 50 4E 00 10National Registration Dept (Identity)
JPJ (Driving)A0 00 00 00 74 4A 50 4A 00 10Road Transport Dept (Driving License)
IMM (Passport)A0 00 00 00 74 49 4D 4D 00 10Immigration (Passport Info) - Restricted?

3. APDU Command Reference (JPN App)

Commands appear to use a proprietary flow involving "Set Length" before reading.

CommandINSP1P2DataLeDescription
SELECTA40400[AID]-Select Application
GET RESPC00000-LenGet Response Data
SET LENGTHC10000[Len]-Define length for next read
SELECT INFOA10000[FileID+Offset]-Select internal file/offset
READ INFOB10000-LenRead Data

4. Reading Flow (JPN Identity)

  1. SELECT JPN AID.
  2. GET RESPONSE (00 C0...) to verify.
  3. READ Specific Fields (Chain: Set Length -> Select Info -> Read Info).

4.1 JPN File Structure (Partial)

Based on open-source observations (unofficial).

FieldFile IDOffsetLength
IC Number01 1100 1A13
Name01 1100 E940
Religion01 1101 1111
Gender01 1101 1C1
Address 101 1102 0330
Postcode01 1102 5D5
City01 1102 6225
Photo01 01...4000+

5. Notes

  • Touch 'n Go: The contactless interface (MiFare) is separate and used for transit/toll payments.
  • Access Control: Some fields or applications (like Immigration) may require secure messaging or SAM (Secure Access Module) authentication, not publicly documented. Basic ID info (JPN) has been reverse-engineered.

Released under the MIT License.