aboutsummaryrefslogtreecommitdiffstats
path: root/card/FS.py
diff options
context:
space:
mode:
Diffstat (limited to 'card/FS.py')
-rw-r--r--card/FS.py303
1 files changed, 303 insertions, 0 deletions
diff --git a/card/FS.py b/card/FS.py
new file mode 100644
index 0000000..2d51e2b
--- /dev/null
+++ b/card/FS.py
@@ -0,0 +1,303 @@
+"""
+card: Library adapted to request (U)SIM cards and other types of telco cards.
+Copyright (C) 2010 Benoit Michau
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+"""
+
+#################################
+# 3GPP SIM and USIM File-System #
+# see TS 51.11 for SIM #
+# see TS 31.102 for USIM #
+#################################
+
+# (U)SIM file-system dictionnaries
+# (absolut_file_address) : 'file_name'
+
+SIM_FS = {
+(0x3F, 0x00) : 'MF',
+(0x2F, 0xE2) : 'EF_ICCID',
+(0x2F, 0x05) : 'EF_ELP',
+(0x7F, 0x23) : 'DF_FP-CTS',
+(0x7F, 0x22) : 'DF_IS-41',
+(0x7F, 0x10) : 'DF_TELECOM',
+(0x7F, 0x10, 0x6F, 0x3A) : 'EF_ADN',
+(0x7F, 0x10, 0x6F, 0x3B) : 'EF_FDN',
+(0x7F, 0x10, 0x6F, 0x3C) : 'EF_SMS',
+(0x7F, 0x10, 0x6F, 0x3D) : 'EF_CCP',
+(0x7F, 0x10, 0x6F, 0x40) : 'EF_MSISDN',
+(0x7F, 0x10, 0x6F, 0x42) : 'EF_SMSP',
+(0x7F, 0x10, 0x6F, 0x43) : 'EF_SMSS',
+(0x7F, 0x10, 0x6F, 0x44) : 'EF_LND',
+(0x7F, 0x10, 0x6F, 0x47) : 'EF_SMSR',
+(0x7F, 0x10, 0x6F, 0x49) : 'EF_SDN',
+(0x7F, 0x10, 0x6F, 0x4A) : 'EF_EXT1',
+(0x7F, 0x10, 0x6F, 0x4B) : 'EF_EXT2',
+(0x7F, 0x10, 0x6F, 0x4C) : 'EF_EXT3',
+(0x7F, 0x10, 0x6F, 0x4D) : 'EF_BDN',
+(0x7F, 0x10, 0x6F, 0x4E) : 'EF_EXT4',
+(0x7F, 0x10, 0x6F, 0x58) : 'EF_CMI',
+(0x7F, 0x10, 0x6F, 0x4F) : 'EF_ECCP',
+(0x7F, 0x10, 0x5F, 0x50) : 'DF_GRAPHICS',
+(0x7F, 0x10, 0x5F, 0x50, 0x4F, 0x20) : 'EF_IMG',
+(0x7F, 0x20) : 'DF_GSM',
+(0x7F, 0x20, 0x5F, 0x3C) : 'DF_MExE',
+(0x7F, 0x20, 0x5F, 0x3C, 0x4F, 0x40) : 'EF_MExE-ST',
+(0x7F, 0x20, 0x5F, 0x3C, 0x4F, 0x41) : 'EF_ORPK',
+(0x7F, 0x20, 0x5F, 0x3C, 0x4F, 0x42) : 'EF_ARPK',
+(0x7F, 0x20, 0x5F, 0x3C, 0x4F, 0x43) : 'EF_TPRPK',
+(0x7F, 0x20, 0x5F, 0x30) : 'DF_IRIDIUM',
+(0x7F, 0x20, 0x5F, 0x31) : 'DF_GLOBST',
+(0x7F, 0x20, 0x5F, 0x32) : 'DF_ICO',
+(0x7F, 0x20, 0x5F, 0x33) : 'DF_ACeS',
+(0x7F, 0x20, 0x5F, 0x40) : 'DF_EIA/TIA-553',
+(0x7F, 0x20, 0x5F, 0x60) : 'DF_CTS',
+(0x7F, 0x20, 0x5F, 0x70) : 'DF_SoLSA',
+(0x7F, 0x20, 0x5F, 0x70, 0x4F, 0x30) : 'EF_SAI',
+(0x7F, 0x20, 0x5F, 0x70, 0x4F, 0x31) : 'EF_SLL',
+(0x7F, 0x20, 0x6F, 0x05) : 'EF_LP',
+(0x7F, 0x20, 0x6F, 0x07) : 'EF_IMSI',
+(0x7F, 0x20, 0x6F, 0x20) : 'EF_Kc',
+(0x7F, 0x20, 0x6F, 0x2C) : 'EF_DCK',
+(0x7F, 0x20, 0x6F, 0x30) : 'EF_PLMNsel',
+(0x7F, 0x20, 0x6F, 0x31) : 'EF_HPPLMN',
+(0x7F, 0x20, 0x6F, 0x32) : 'EF_CNL',
+(0x7F, 0x20, 0x6F, 0x37) : 'EF_ACMmax',
+(0x7F, 0x20, 0x6F, 0x38) : 'EF_SST',
+(0x7F, 0x20, 0x6F, 0x39) : 'EF_ACM',
+(0x7F, 0x20, 0x6F, 0x3E) : 'EF_GID1',
+(0x7F, 0x20, 0x6F, 0x3F) : 'EF_GID2',
+(0x7F, 0x20, 0x6F, 0x41) : 'EF_PUCT',
+(0x7F, 0x20, 0x6F, 0x45) : 'EF_CBMI',
+(0x7F, 0x20, 0x6F, 0x46) : 'EF_SPN',
+(0x7F, 0x20, 0x6F, 0x48) : 'EF_CBMID',
+(0x7F, 0x20, 0x6F, 0x74) : 'EF_BCCH',
+(0x7F, 0x20, 0x6F, 0x78) : 'EF_ACC',
+(0x7F, 0x20, 0x6F, 0x7B) : 'EF_FPLMN',
+(0x7F, 0x20, 0x6F, 0x7E) : 'EF_LOCI',
+(0x7F, 0x20, 0x6F, 0xAD) : 'EF_AD',
+(0x7F, 0x20, 0x6F, 0xAE) : 'EF_PHASE',
+(0x7F, 0x20, 0x6F, 0xB1) : 'EF_VGCS',
+(0x7F, 0x20, 0x6F, 0xB2) : 'EF_VGCSS',
+(0x7F, 0x20, 0x6F, 0xB3) : 'EF_VBS',
+(0x7F, 0x20, 0x6F, 0xB4) : 'EF_VBSS',
+(0x7F, 0x20, 0x6F, 0xB5) : 'EF_eMLPP',
+(0x7F, 0x20, 0x6F, 0xB6) : 'EF_AAeM',
+(0x7F, 0x20, 0x6F, 0xB7) : 'EF_ECC',
+(0x7F, 0x20, 0x6F, 0x50) : 'EF_CBMIR',
+(0x7F, 0x20, 0x6F, 0x51) : 'EF_NIA',
+(0x7F, 0x20, 0x6F, 0x52) : 'EF_KcGPRS',
+(0x7F, 0x20, 0x6F, 0x53) : 'EF_LOCIGPRS',
+(0x7F, 0x20, 0x6F, 0x54) : 'EF_SUME',
+(0x7F, 0x20, 0x6F, 0x60) : 'EF_PLMNwAcT',
+(0x7F, 0x20, 0x6F, 0x61) : 'EF_OPLMNwAcT',
+(0x7F, 0x20, 0x6F, 0x62) : 'EF_HPLMNAcT',
+(0x7F, 0x20, 0x6F, 0x63) : 'EF_CPBCCH',
+(0x7F, 0x20, 0x6F, 0x64) : 'EF_INVSCAN',
+(0x7F, 0x20, 0x6F, 0xC5) : 'EF_PNN',
+(0x7F, 0x20, 0x6F, 0xC6) : 'EF_OPL',
+(0x7F, 0x20, 0x6F, 0xC7) : 'EF_MBDN',
+(0x7F, 0x20, 0x6F, 0xC8) : 'EF_EXT6',
+(0x7F, 0x20, 0x6F, 0xC9) : 'EF_MBI',
+(0x7F, 0x20, 0x6F, 0xCA) : 'EF_MWIS',
+(0x7F, 0x20, 0x6F, 0xCB) : 'EF_CFIS',
+(0x7F, 0x20, 0x6F, 0xCC) : 'EF_EXT7',
+(0x7F, 0x20, 0x6F, 0xCD) : 'EF_SPDI',
+(0x7F, 0x20, 0x6F, 0xCE) : 'EF_MMSN',
+(0x7F, 0x20, 0x6F, 0xCF) : 'EF_EXT8',
+(0x7F, 0x20, 0x6F, 0xD0) : 'EF_MMSICP',
+(0x7F, 0x20, 0x6F, 0xD1) : 'EF_MMSUP',
+(0x7F, 0x20, 0x6F, 0xD2) : 'EF_MMSUCP',
+}
+
+USIM_FS = {
+(0x3F, 0x00) : 'MF',
+(0x2F, 0x00) : 'EF_DIR',
+(0x2F, 0x05) : 'EF_PL',
+(0x2F, 0x06) : 'EF_ARR',
+(0x2F, 0xE2) : 'EF_ICCID',
+(0x7F, 0x20) : 'DF_GSM',
+(0x7F, 0x10) : 'DF_TELECOM',
+(0x7F, 0x10, 0x6F, 0x06) : 'EF_ARR',
+(0x7F, 0x10, 0x6F, 0x3A) : 'EF_ADN',
+(0x7F, 0x10, 0x6F, 0x3B) : 'EF_FDN',
+(0x7F, 0x10, 0x6F, 0x3C) : 'EF_SMS',
+(0x7F, 0x10, 0x6F, 0x4F) : 'EF_ECCP',
+(0x7F, 0x10, 0x6F, 0x40) : 'EF_MSISDN',
+(0x7F, 0x10, 0x6F, 0x42) : 'EF_SMSP',
+(0x7F, 0x10, 0x6F, 0x43) : 'EF_SMSS',
+(0x7F, 0x10, 0x6F, 0x44) : 'EF_LND',
+(0x7F, 0x10, 0x6F, 0x47) : 'EF_SMSR',
+(0x7F, 0x10, 0x6F, 0x49) : 'EF_SDN',
+(0x7F, 0x10, 0x6F, 0x4A) : 'EF_EXT1',
+(0x7F, 0x10, 0x6F, 0x4B) : 'EF_EXT2',
+(0x7F, 0x10, 0x6F, 0x4C) : 'EF_EXT3',
+(0x7F, 0x10, 0x6F, 0x4D) : 'EF_BDN',
+(0x7F, 0x10, 0x6F, 0x4E) : 'EF_EXT4',
+(0x7F, 0x10, 0x6F, 0x54) : 'EF_SUME',
+(0x7F, 0x10, 0x5F, 0x50) : 'DF_GRAPHICS',
+(0x7F, 0x10, 0x5F, 0x50, 0x4F, 0x20) : 'EF_IMG',
+#(0x7F, 0x10, 0x5F, 0x50, 0x4F, 0xXX) : 'EF_IIDFn',
+(0x5F, 0x3A) : 'DF_PHONEBOOK',
+(0x5F, 0x3A, 0x4F, 0x30) : 'EF_PBR',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_IAP',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_ADN',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_EXT1',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_PBC',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_GRP',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_AAS',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_GAS',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_ANR',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_SNE',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_CCP1',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_UID',
+(0x5F, 0x3A, 0x4F, 0x22) : 'EF_PSC',
+(0x5F, 0x3A, 0x4F, 0x23) : 'EF_CC',
+(0x5F, 0x3A, 0x4F, 0x24) : 'EF_PUID',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_EMAIL',
+(0x5F, 0x3B) : 'DF_MULTIMEDIA',
+(0x5F, 0x3B, 0x4F, 0x47) : 'EF_MML',
+(0x5F, 0x3B, 0x4F, 0x48) : 'EF_MMDF',
+}
+
+
+USIM_app_FS = {
+(0x5F, 0x40) : 'DF_WLAN',
+(0x5F, 0x40, 0x4F, 0x41) : 'EF_Pseudo',
+(0x5F, 0x40, 0x4F, 0x42) : 'EF_UPLMNWLAN',
+(0x5F, 0x40, 0x4F, 0x43) : 'EF_0PLMNWLAN',
+(0x5F, 0x40, 0x4F, 0x44) : 'EF_USSIDL',
+(0x5F, 0x40, 0x4F, 0x45) : 'EF_OSSIDL',
+(0x5F, 0x40, 0x4F, 0x46) : 'EF_WRI',
+(0x5F, 0x70) : 'DF_SoLSA',
+(0x5F, 0x70, 0x4F, 0x30) : 'EF_SAI',
+(0x5F, 0x70, 0x4F, 0x31) : 'EF_SLL',
+(0x5F, 0x3C) : 'DF_MExE',
+(0x5F, 0x3C, 0x4F, 0x40) : 'EF_MExE-ST',
+(0x5F, 0x3C, 0x4F, 0x41) : 'EF_ORPK',
+(0x5F, 0x3C, 0x4F, 0x42) : 'EF_ARPK',
+(0x5F, 0x3C, 0x4F, 0x43) : 'EF_TPRK',
+#(0x5F, 0x3C, 0x4F, 0xXX) : 'EF_TKCDF',
+(0x5F, 0x3B) : 'DF_GSM-ACCESS',
+(0x5F, 0x3B, 0x4F, 0x20) : 'EF_Kc',
+(0x5F, 0x3B, 0x4F, 0x52) : 'EF_KcGPRS',
+(0x5F, 0x3B, 0x4F, 0x63) : 'EF_CPBCCH',
+(0x5F, 0x3B, 0x4F, 0x64) : 'EF_invSCAN',
+(0x5F, 0x3A) : 'DF_PHONEBOOK',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_UID',
+(0x5F, 0x3A, 0x4F, 0x22) : 'EF_PSC',
+(0x5F, 0x3A, 0x4F, 0x23) : 'EF_CC',
+(0x5F, 0x3A, 0x4F, 0x24) : 'EF_PUID',
+(0x5F, 0x3A, 0x4F, 0x30) : 'EF_PBR',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_CCP1',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_IAP',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_ADN',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_EXT1',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_PBC',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_GRP',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_AAS',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_GAS',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_ANR',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_SNE',
+#(0x5F, 0x3A, 0x4F, 0xXX) : 'EF_EMAIL',
+(0x6F, 0x05) : 'EF_LI',
+(0x6F, 0x06) : 'EF_ARR',
+(0x6F, 0x07) : 'EF_IMSI',
+(0x6F, 0x08) : 'EF_Keys',
+(0x6F, 0x09) : 'EF_KeysPS',
+(0x6F, 0x2C) : 'EF_DCK',
+(0x6F, 0x31) : 'EF_HPPLMN',
+(0x6F, 0x32) : 'EF_CNL',
+(0x6F, 0x37) : 'EF_ACMmax',
+(0x6F, 0x38) : 'EF_UST',
+(0x6F, 0x39) : 'EF_ACM',
+(0x6F, 0x3B) : 'EF_FDN',
+(0x6F, 0x3C) : 'EF_SMS',
+(0x6F, 0x3E) : 'EF_GID1',
+(0x6F, 0x3F) : 'EF_GID2',
+(0x6F, 0x40) : 'EF_MSISDN',
+(0x6F, 0x41) : 'EF_PUCT',
+(0x6F, 0x42) : 'EF_SMSP',
+(0x6F, 0x43) : 'EF_SMSS',
+(0x6F, 0x45) : 'EF_CBMI',
+(0x6F, 0x46) : 'EF_SPN',
+(0x6F, 0x47) : 'EF_SMSR',
+(0x6F, 0x48) : 'EF_CBMID',
+(0x6F, 0x49) : 'EF_SDN',
+(0x6F, 0x4B) : 'EF_EXT2',
+(0x6F, 0x4C) : 'EF_EXT3',
+(0x6F, 0x4D) : 'EF_BDN',
+(0x6F, 0x4E) : 'EF_EXT5',
+(0x6F, 0x50) : 'EF_CBMIR',
+(0x6F, 0x55) : 'EF_EXT4',
+(0x6F, 0x56) : 'EF_EST',
+(0x6F, 0x57) : 'EF_ACL',
+(0x6F, 0x58) : 'EF_CMI',
+(0x6F, 0x5B) : 'EF_START-HFN',
+(0x6F, 0x5C) : 'EF_THRESHOLD',
+(0x6F, 0x60) : 'EF_PLMNwAcT',
+(0x6F, 0x61) : 'EF_OPLMNwAcT',
+(0x6F, 0x62) : 'EF_HPLMNwAcT',
+(0x6F, 0xD9) : 'EF_EHPLMN',
+(0x6F, 0x73) : 'EF_PSLOCI',
+(0x6F, 0x78) : 'EF_ACC',
+(0x6F, 0x7B) : 'EF_FPLMN',
+(0x6F, 0x7E) : 'EF_LOCI',
+(0x6F, 0x80) : 'EF_ICI',
+(0x6F, 0x81) : 'EF_OCI',
+(0x6F, 0x82) : 'EF_ICT',
+(0x6F, 0x83) : 'EF_OCT',
+(0x6F, 0xAD) : 'EF_AD',
+(0x6F, 0xB5) : 'EF_eMLPP',
+(0x6F, 0xB6) : 'EF_AAeM',
+(0x6F, 0xB7) : 'EF_ECC',
+(0x6F, 0xC3) : 'EF_Hiddenkey',
+(0x6F, 0xC4) : 'EF_NETPAR',
+(0x6F, 0xC5) : 'EF_PNN',
+(0x6F, 0xC6) : 'EF_OPL',
+(0x6F, 0xC7) : 'EF_MBDN',
+(0x6F, 0xC8) : 'EF_EXT6',
+(0x6F, 0xC9) : 'EF_MBI',
+(0x6F, 0xCA) : 'EF_MWIS',
+(0x6F, 0xCB) : 'EF_CFIS',
+(0x6F, 0xCC) : 'EF_EXT7',
+(0x6F, 0xCD) : 'EF_SPDI',
+(0x6F, 0xCE) : 'EF_MMSN',
+(0x6F, 0xCF) : 'EF_EXT8',
+(0x6F, 0xD0) : 'EF_MMSICP',
+(0x6F, 0xD1) : 'EF_MMSUP',
+(0x6F, 0xD2) : 'EF_MMSUCP',
+(0x6F, 0xD3) : 'EF_NIA',
+(0x6F, 0x4F) : 'EF_CCP2',
+(0x6F, 0xB1) : 'EF_VGCS',
+(0x6F, 0xB2) : 'EF_VGCSS',
+(0x6F, 0xB3) : 'EF_VBS',
+(0x6F, 0xB4) : 'EF_VBSS',
+(0x6F, 0xD4) : 'EF_VGCSCA',
+(0x6F, 0xD5) : 'EF_VBSCA',
+(0x6F, 0xD6) : 'EF_GBAP',
+(0x6F, 0xD7) : 'EF_MSK',
+(0x6F, 0xD8) : 'EF_MUK',
+(0x6F, 0xDA) : 'EF_GBANL',
+(0x6F, 0xDB) : 'EF_EHPLMNPI',
+(0x6F, 0xDC) : 'EF_LRPLMNSI',
+(0x6F, 0xDD) : 'EF_NAFKCA',
+(0x6F, 0xDE) : 'EF_SPNI',
+(0x6F, 0xDF) : 'EF_PNNI',
+}
+
+EMV_AID = {
+(160, 0, 0, 0, 3, 16, 16) : 'VISA credit / debit',
+} \ No newline at end of file