mirror of
https://gitlab.os-k.eu/neox/CNIRevelator.git
synced 2023-08-25 14:03:10 +02:00
756 lines
18 KiB
Python
756 lines
18 KiB
Python
"""
|
||
********************************************************************************
|
||
* CNIRevelator *
|
||
* *
|
||
* Desc: MRZ data dictionnary for CNIRevelator analyzer and *
|
||
* functions to analyze these data *
|
||
* *
|
||
* Copyright © 2018-2019 Adrien Bourmault (neox95) *
|
||
* *
|
||
* This file is part of CNIRevelator. *
|
||
* *
|
||
* CNIRevelator 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 3 of the License, or *
|
||
* any later version. *
|
||
* *
|
||
* CNIRevelator 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 CNIRevelator. If not, see <https:*www.gnu.org/licenses/>. *
|
||
********************************************************************************
|
||
"""
|
||
|
||
## SEX CODES
|
||
sexcode = {'M':'Homme', 'F':'Femme', 'X':'Non spécifié'}
|
||
|
||
## COUNTRY CODES
|
||
landcode2 =
|
||
{
|
||
AW: "Aruba",
|
||
AF: "Afghanistan",
|
||
AO: "Angola",
|
||
AI: "Anguilla",
|
||
AL: "Albanie",
|
||
AD: "Andorre",
|
||
AE: "Emirats arabes unis",
|
||
AR: "Argentine",
|
||
AM: "Arménie",
|
||
AS: "Samoa américaines",
|
||
AQ: "Antarctique",
|
||
TF: "Terres australes et antarctiques françaises",
|
||
AG: "Antigua-et-Barbuda",
|
||
AU: "Australie",
|
||
AT: "Autriche",
|
||
AZ: "Azerbaidjan",
|
||
BI: "Burundi",
|
||
BE: "Belgique",
|
||
BJ: "Benin",
|
||
BQ: "Pays-Bas caribéens",
|
||
BF: "Burkina Faso",
|
||
BD: "Bangladesh",
|
||
BG: "Bulgarie",
|
||
BH: "Bahrein",
|
||
BS: "Bahamas",
|
||
BA: "Bosnie-Herzegovine",
|
||
BL: "Saint-Barthélemy",
|
||
BY: "Bielorussie",
|
||
BZ: "Belize",
|
||
BM: "Bermudes",
|
||
BO: "Bolivie",
|
||
BR: "Brésil",
|
||
BB: "Barbade",
|
||
BN: "Brunei",
|
||
BT: "Bhoutan",
|
||
BW: "Botswana",
|
||
CF: "République Centrafricaine",
|
||
CA: "Canada",
|
||
CC: "Îles Cocos",
|
||
CH: "Suisse",
|
||
CL: "Chili",
|
||
CN: "Chine",
|
||
CI: "Côte d'Ivoire",
|
||
CM: "Cameroun",
|
||
CD: "Congo (République démocratique)",
|
||
CG: "Congo (République)",
|
||
CK: "Îles Cook",
|
||
CO: "Colombie",
|
||
KM: "Comores",
|
||
CV: "Cap-Vert",
|
||
CR: "Costa Rica",
|
||
CU: "Cuba",
|
||
CW: "Curaçao",
|
||
CX: "Île Christmas",
|
||
KY: "Caimans",
|
||
CY: "Chypre",
|
||
CZ: "Tchéquie",
|
||
DE: "Allemagne",
|
||
DJ: "Djibouti",
|
||
DM: "Dominique",
|
||
DK: "Danemark",
|
||
DO: "République dominicaine",
|
||
DZ: "Algérie",
|
||
EC: "Equateur",
|
||
EG: "Egypte",
|
||
ER: "Erythrée",
|
||
EH: "Sahara occidental",
|
||
ES: "Espagne",
|
||
EE: "Estonie",
|
||
ET: "Ethiopie",
|
||
FI: "Finlande",
|
||
FJ: "Fidji",
|
||
FK: "Îles Malouines",
|
||
FR: "France",
|
||
FO: "Féroé",
|
||
FM: "Micronésie",
|
||
GA: "Gabon",
|
||
GB: "Royaume-Uni",
|
||
GE: "Géorgie",
|
||
GG: "Guernesey",
|
||
GH: "Ghana",
|
||
GI: "Gibraltar",
|
||
GN: "Guinée",
|
||
GP: "Guadeloupe",
|
||
GM: "Gambie",
|
||
GW: "Guinée-Bissau",
|
||
GQ: "Guinée équatoriale",
|
||
GR: "Grèce",
|
||
GD: "Grenade",
|
||
GL: "Groenland",
|
||
GT: "Guatemala",
|
||
GF: "Guyane",
|
||
GU: "Guam",
|
||
GY: "Guyana",
|
||
HK: "Hong Kong",
|
||
HN: "Honduras",
|
||
HR: "Croatie",
|
||
HT: "Haïti",
|
||
HU: "Hongrie",
|
||
ID: "Indonésie",
|
||
IM: "Île de Man",
|
||
IN: "Inde",
|
||
IO: "Territoire britannique de l'océan Indien",
|
||
IE: "Irlande",
|
||
IR: "Irak",
|
||
IQ: "Iran",
|
||
IS: "Islande",
|
||
IL: "Israël",
|
||
IT: "Italie",
|
||
JM: "Jamaïque",
|
||
JE: "Jersey",
|
||
JO: "Jordanie",
|
||
JP: "Japon",
|
||
KZ: "Kazakhstan",
|
||
KE: "Kenya",
|
||
KG: "Kirghizistan",
|
||
KH: "Cambodge",
|
||
KI: "Kiribati",
|
||
KN: "Saint-Christophe-et-Niévès",
|
||
KR: "Corée du Sud",
|
||
KW: "Koweït",
|
||
LA: "Laos",
|
||
LB: "Liban",
|
||
LR: "Liberia",
|
||
LY: "Libye",
|
||
LC: "Sainte-Lucie",
|
||
LI: "Liechtenstein",
|
||
LK: "Sri Lanka",
|
||
LS: "Lesotho",
|
||
LT: "Lituanie",
|
||
LU: "Luxembourg",
|
||
LV: "Lettonie",
|
||
MO: "Macao",
|
||
MF: "Sint-Maarten",
|
||
MA: "Maroc",
|
||
MC: "Monaco",
|
||
MD: "Moldavie",
|
||
MG: "Madagascar",
|
||
MV: "Maldives",
|
||
MX: "Mexique",
|
||
MH: "Marshall",
|
||
MK: "Macedoine",
|
||
ML: "Mali",
|
||
MT: "Malte",
|
||
MM: "Birmanie",
|
||
ME: "Monténégro",
|
||
MN: "Mongolie",
|
||
MP: "Îles Mariannes du Nord",
|
||
MZ: "Mozambique",
|
||
MR: "Mauritanie",
|
||
MS: "Montserrat",
|
||
MQ: "Martinique",
|
||
MU: "Maurice",
|
||
MW: "Malawi",
|
||
MY: "Malaisie",
|
||
YT: "Mayotte",
|
||
NA: "Namibie",
|
||
NC: "Nouvelle-Calédonie",
|
||
NE: "Niger",
|
||
NF: "Île Norfolk",
|
||
NG: "Nigeria",
|
||
NI: "Nicaragua",
|
||
NU: "Niue",
|
||
NL: "Pays-Bas",
|
||
NO: "Norvège",
|
||
NP: "Nepal",
|
||
NR: "Nauru",
|
||
NZ: "Nouvelle-Zélande",
|
||
OM: "Oman",
|
||
PK: "Pakistan",
|
||
PA: "Panama",
|
||
PN: "Îles Pitcairn",
|
||
PE: "Pérou",
|
||
PH: "Philippines",
|
||
PW: "Palaos",
|
||
PG: "Papouasie-Nouvelle-Guinée",
|
||
PL: "Pologne",
|
||
PR: "Porto Rico",
|
||
KP: "Corée du Nord",
|
||
PT: "Portugal",
|
||
PY: "Paraguay",
|
||
PS: "Palestine",
|
||
PF: "Polynésie française",
|
||
QA: "Qatar",
|
||
RE: "Réunion",
|
||
RO: "Roumanie",
|
||
RU: "Russie",
|
||
RW: "Rwanda",
|
||
SA: "Arabie saoudite",
|
||
SD: "Soudan",
|
||
SN: "Sénégal",
|
||
SG: "Singapour",
|
||
GS: "Georgie du Sud-et-les iles Sandwich du Sud",
|
||
SH: "Sainte-Hélène, Ascension et Tristan da Cunha",
|
||
SJ: "Svalbard et île Jan Mayen",
|
||
SB: "Salomon",
|
||
SL: "Sierra Leone",
|
||
SV: "Salvador",
|
||
SM: "Saint-Marin",
|
||
SO: "Somalie",
|
||
PM: "Saint-Pierre-et-Miquelon",
|
||
RS: "Serbie",
|
||
SS: "Soudan du Sud",
|
||
ST: "Sao Tomé-et-Principe",
|
||
SR: "Suriname",
|
||
SK: "Slovaquie",
|
||
SI: "Slovénie",
|
||
SE: "Suède",
|
||
SZ: "eSwatani",
|
||
SX: "Saint-Martin ",
|
||
SC: "Seychelles",
|
||
SY: "Syrie",
|
||
TC: "Îles Turques-et-Caïques",
|
||
TD: "Tchad",
|
||
TG: "Togo",
|
||
TH: "Thaïlande",
|
||
TJ: "Tadjikistan",
|
||
TK: "Tokelau",
|
||
TM: "Turkmenistan",
|
||
TL: "Timor oriental",
|
||
TO: "Tonga",
|
||
TT: "Trinité-et-Tobago",
|
||
TN: "Tunisie",
|
||
TR: "Turquie",
|
||
TV: "Tuvalu",
|
||
TW: "Taiwan",
|
||
TZ: "Tanzanie",
|
||
UG: "Ouganda",
|
||
UA: "Ukraine",
|
||
UY: "Uruguay",
|
||
US: "Etats-Unis",
|
||
UZ: "Ouzbékistan",
|
||
VA: "Saint-Siège (État de la Cité du Vatican)",
|
||
VC: "Saint-Vincent-et-les-Grenadines",
|
||
VE: "Venezuela",
|
||
VG: "Îles Vierges britanniques",
|
||
VI: "Îles Vierges des États-Unis",
|
||
VN: "Viêt Nam",
|
||
VU: "Vanuatu",
|
||
WF: "Wallis-et-Futuna",
|
||
WS: "Samoa",
|
||
XK: "Kosovo",
|
||
YE: "Yémen",
|
||
ZA: "Afrique du Sud",
|
||
ZM: "Zambie",
|
||
ZW: "Zimbabwe"
|
||
}
|
||
|
||
landcode3 =
|
||
{
|
||
ABW: "Aruba",
|
||
AFG: "Afghanistan",
|
||
AGO: "Angola",
|
||
AIA: "Anguilla",
|
||
ALB: "Albanie",
|
||
AND: "Andorre",
|
||
ARE: "Emirats arabes unis",
|
||
ARG: "Argentine",
|
||
ARM: "Arménie",
|
||
ASM: "Samoa américaines",
|
||
ATA: "Antarctique",
|
||
ATF: "Terres australes et antarctiques françaises",
|
||
ATG: "Antigua-et-Barbuda",
|
||
AUS: "Australie",
|
||
AUT: "Autriche",
|
||
AZE: "Azerbaidjan",
|
||
BDI: "Burundi",
|
||
BEL: "Belgique",
|
||
BEN: "Benin",
|
||
BES: "Pays-Bas caribéens",
|
||
BFA: "Burkina Faso",
|
||
BGD: "Bangladesh",
|
||
BGR: "Bulgarie",
|
||
BHR: "Bahrein",
|
||
BHS: "Bahamas",
|
||
BIH: "Bosnie-Herzegovine",
|
||
BLM: "Saint-Barthélemy",
|
||
BLR: "Bielorussie",
|
||
BLZ: "Belize",
|
||
BMU: "Bermudes",
|
||
BOL: "Bolivie",
|
||
BRA: "Brésil",
|
||
BRB: "Barbade",
|
||
BRN: "Brunei",
|
||
BTN: "Bhoutan",
|
||
BWA: "Botswana",
|
||
CAF: "République Centrafricaine",
|
||
CAN: "Canada",
|
||
CCK: "Îles Cocos",
|
||
CHE: "Suisse",
|
||
CHL: "Chili",
|
||
CHN: "Chine",
|
||
CIV: "Côte d'Ivoire",
|
||
CMR: "Cameroun",
|
||
COD: "Congo (République démocratique)",
|
||
COG: "Congo (République)",
|
||
COK: "Îles Cook",
|
||
COL: "Colombie",
|
||
COM: "Comores",
|
||
CPV: "Cap-Vert",
|
||
CRI: "Costa Rica",
|
||
CUB: "Cuba",
|
||
CUW: "Curaçao",
|
||
CXR: "Île Christmas",
|
||
CYM: "Caimans",
|
||
CYP: "Chypre",
|
||
CZE: "Tchéquie",
|
||
DEU: "Allemagne",
|
||
DJI: "Djibouti",
|
||
DMA: "Dominique",
|
||
DNK: "Danemark",
|
||
DOM: "République dominicaine",
|
||
DZA: "Algérie",
|
||
ECU: "Equateur",
|
||
EGY: "Egypte",
|
||
ERI: "Erythrée",
|
||
ESH: "Sahara occidental",
|
||
ESP: "Espagne",
|
||
EST: "Estonie",
|
||
ETH: "Ethiopie",
|
||
FIN: "Finlande",
|
||
FJI: "Fidji",
|
||
FLK: "Îles Malouines",
|
||
FRA: "France",
|
||
FRO: "Féroé",
|
||
FSM: "Micronésie",
|
||
GAB: "Gabon",
|
||
GBR: "Royaume-Uni",
|
||
GEO: "Géorgie",
|
||
GGY: "Guernesey",
|
||
GHA: "Ghana",
|
||
GIB: "Gibraltar",
|
||
GIN: "Guinée",
|
||
GLP: "Guadeloupe",
|
||
GMB: "Gambie",
|
||
GNB: "Guinée-Bissau",
|
||
GNQ: "Guinée équatoriale",
|
||
GRC: "Grèce",
|
||
GRD: "Grenade",
|
||
GRL: "Groenland",
|
||
GTM: "Guatemala",
|
||
GUF: "Guyane",
|
||
GUM: "Guam",
|
||
GUY: "Guyana",
|
||
HKG: "Hong Kong",
|
||
HND: "Honduras",
|
||
HRV: "Croatie",
|
||
HTI: "Haïti",
|
||
HUN: "Hongrie",
|
||
IDN: "Indonésie",
|
||
IMN: "Île de Man",
|
||
IND: "Inde",
|
||
IOT: "Territoire britannique de l'océan Indien",
|
||
IRL: "Irlande",
|
||
IRN: "Irak",
|
||
IRQ: "Iran",
|
||
ISL: "Islande",
|
||
ISR: "Israël",
|
||
ITA: "Italie",
|
||
JAM: "Jamaïque",
|
||
JEY: "Jersey",
|
||
JOR: "Jordanie",
|
||
JPN: "Japon",
|
||
KAZ: "Kazakhstan",
|
||
KEN: "Kenya",
|
||
KGZ: "Kirghizistan",
|
||
KHM: "Cambodge",
|
||
KIR: "Kiribati",
|
||
KNA: "Saint-Christophe-et-Niévès",
|
||
KOR: "Corée du Sud",
|
||
KWT: "Koweït",
|
||
LAO: "Laos",
|
||
LBN: "Liban",
|
||
LBR: "Liberia",
|
||
LBY: "Libye",
|
||
LCA: "Sainte-Lucie",
|
||
LIE: "Liechtenstein",
|
||
LKA: "Sri Lanka",
|
||
LSO: "Lesotho",
|
||
LTU: "Lituanie",
|
||
LUX: "Luxembourg",
|
||
LVA: "Lettonie",
|
||
MAC: "Macao",
|
||
MAF: "Sint-Maarten",
|
||
MAR: "Maroc",
|
||
MCO: "Monaco",
|
||
MDA: "Moldavie",
|
||
MDG: "Madagascar",
|
||
MDV: "Maldives",
|
||
MEX: "Mexique",
|
||
MHL: "Marshall",
|
||
MKD: "Macedoine",
|
||
MLI: "Mali",
|
||
MLT: "Malte",
|
||
MMR: "Birmanie",
|
||
MNE: "Monténégro",
|
||
MNG: "Mongolie",
|
||
MNP: "Îles Mariannes du Nord",
|
||
MOZ: "Mozambique",
|
||
MRT: "Mauritanie",
|
||
MSR: "Montserrat",
|
||
MTQ: "Martinique",
|
||
MUS: "Maurice",
|
||
MWI: "Malawi",
|
||
MYS: "Malaisie",
|
||
MYT: "Mayotte",
|
||
NAM: "Namibie",
|
||
NCL: "Nouvelle-Calédonie",
|
||
NER: "Niger",
|
||
NFK: "Île Norfolk",
|
||
NGA: "Nigeria",
|
||
NIC: "Nicaragua",
|
||
NIU: "Niue",
|
||
NLD: "Pays-Bas",
|
||
NOR: "Norvège",
|
||
NPL: "Nepal",
|
||
NRU: "Nauru",
|
||
NZL: "Nouvelle-Zélande",
|
||
OMN: "Oman",
|
||
PAK: "Pakistan",
|
||
PAN: "Panama",
|
||
PCN: "Îles Pitcairn",
|
||
PER: "Pérou",
|
||
PHL: "Philippines",
|
||
PLW: "Palaos",
|
||
PNG: "Papouasie-Nouvelle-Guinée",
|
||
POL: "Pologne",
|
||
PRI: "Porto Rico",
|
||
PRK: "Corée du Nord",
|
||
PRT: "Portugal",
|
||
PRY: "Paraguay",
|
||
PSE: "Palestine",
|
||
PYF: "Polynésie française",
|
||
QAT: "Qatar",
|
||
REU: "Réunion",
|
||
ROU: "Roumanie",
|
||
RUS: "Russie",
|
||
RWA: "Rwanda",
|
||
SAU: "Arabie saoudite",
|
||
SDN: "Soudan",
|
||
SEN: "Sénégal",
|
||
SGP: "Singapour",
|
||
SGS: "Georgie du Sud-et-les iles Sandwich du Sud",
|
||
SHN: "Sainte-Hélène, Ascension et Tristan da Cunha",
|
||
SJM: "Svalbard et île Jan Mayen",
|
||
SLB: "Salomon",
|
||
SLE: "Sierra Leone",
|
||
SLV: "Salvador",
|
||
SMR: "Saint-Marin",
|
||
SOM: "Somalie",
|
||
SPM: "Saint-Pierre-et-Miquelon",
|
||
SRB: "Serbie",
|
||
SSD: "Soudan du Sud",
|
||
STP: "Sao Tomé-et-Principe",
|
||
SUR: "Suriname",
|
||
SVK: "Slovaquie",
|
||
SVN: "Slovénie",
|
||
SWE: "Suède",
|
||
SWZ: "eSwatani",
|
||
SXM: "Saint-Martin ",
|
||
SYC: "Seychelles",
|
||
SYR: "Syrie",
|
||
TCA: "Îles Turques-et-Caïques",
|
||
TCD: "Tchad",
|
||
TGO: "Togo",
|
||
THA: "Thaïlande",
|
||
TJK: "Tadjikistan",
|
||
TKL: "Tokelau",
|
||
TKM: "Turkmenistan",
|
||
TLS: "Timor oriental",
|
||
TON: "Tonga",
|
||
TTO: "Trinité-et-Tobago",
|
||
TUN: "Tunisie",
|
||
TUR: "Turquie",
|
||
TUV: "Tuvalu",
|
||
TWN: "Taiwan",
|
||
TZA: "Tanzanie",
|
||
UGA: "Ouganda",
|
||
UKR: "Ukraine",
|
||
URY: "Uruguay",
|
||
USA: "Etats-Unis",
|
||
UZB: "Ouzbékistan",
|
||
VAT: "Saint-Siège (État de la Cité du Vatican)",
|
||
VCT: "Saint-Vincent-et-les-Grenadines",
|
||
VEN: "Venezuela",
|
||
VGB: "Îles Vierges britanniques",
|
||
VIR: "Îles Vierges des États-Unis",
|
||
VNM: "Viêt Nam",
|
||
VUT: "Vanuatu",
|
||
WLF: "Wallis-et-Futuna",
|
||
WSM: "Samoa",
|
||
XKX: "Kosovo",
|
||
YEM: "Yémen",
|
||
ZAF: "Afrique du Sud",
|
||
ZMB: "Zambie",
|
||
ZWE: "Zimbabwe",
|
||
NTZ: "Zone neutre",
|
||
UNO: "Fonctionnaire des Nations Unies",
|
||
UNA: "Fonctionnaire d'une organisation affiliée aux Nations Unies",
|
||
UNK: "Représentant des Nations Unies au Kosovo",
|
||
XXA: "Apatride Convention 1954",
|
||
XXB: "Réfugié Convention 1954",
|
||
XXC: "Réfugié autre",
|
||
XXX: "Résident Légal de Nationalité Inconnue",
|
||
D: "Allemagne",
|
||
EUE: "Union Européenne",
|
||
GBD: "Citoyen Britannique d'Outre-mer (BOTC)",
|
||
GBN: "British National (Overseas)",
|
||
GBO: "British Overseas Citizen",
|
||
GBP: "British Protected Person",
|
||
GBS: "British Subject",
|
||
XBA: "Banque Africaine de Développement",
|
||
XIM: "Banque Africaine d'Export–Import",
|
||
XCC: "Caribbean Community or one of its emissaries",
|
||
XCO: "Common Market for Eastern and Southern Africa",
|
||
XEC: "Economic Community of West African States",
|
||
XPO: "International Criminal Police Organization",
|
||
XOM: "Sovereign Military Order of Malta",
|
||
RKS: "Kosovo",
|
||
WSA: "World Service Authority World Passport"
|
||
}
|
||
|
||
## DOCUMENTS TYPES
|
||
P = [
|
||
"11222333333333333333333333333333333333333333|444444444566677777789AAAAAABCCCCCCCCCCCCCCDE",
|
||
{
|
||
"1": "2|CODE|P*",
|
||
"2": "3|PAYS|AAA",
|
||
"3": "39|NOM|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&",
|
||
"4": "9|NO|*********",
|
||
"5": "1|CTRL|4",
|
||
"6": "3|NAT|AAA",
|
||
"7": "6|BDATE|000000",
|
||
"8": "1|CTRL|7",
|
||
"9": "1|SEX|A",
|
||
"A": "6|EDATE|000000",
|
||
"B": "1|CTRL|A",
|
||
"C": "14|FACULT|**************",
|
||
"D": "1|CTRLF|C",
|
||
"E": "1|CTRL|4578ABCD"
|
||
},
|
||
"Passeport"
|
||
]
|
||
|
||
IP = [
|
||
"112223333333334555555555555555|66666678999999ABBBCCCCCCCCCCCD",
|
||
{
|
||
"1": "2|CODE|IP",
|
||
"2": "3|PAYS|AAA",
|
||
"3": "9|NO|*********",
|
||
"4": "1|CTRL|3",
|
||
"5": "15|FACULT|***************",
|
||
"6": "6|BDATE|000000",
|
||
"7": "1|CTRL|6",
|
||
"8": "1|SEX|A",
|
||
"9": "6|EDATE|000000",
|
||
"A": "1|CTRL|9",
|
||
"B": "3|NAT|AAA",
|
||
"C": "11|FACULT|***********",
|
||
"D": "1|CTRL|345679AC"
|
||
},
|
||
"Carte-passeport"
|
||
]
|
||
|
||
I_ = [
|
||
"112223333333334555555555555555|66666678999999ABBBCCCCCCCCCCCD",
|
||
{
|
||
"1": "2|CODE|I*",
|
||
"2": "3|PAYS|AAA",
|
||
"3": "9|NO|*********",
|
||
"4": "1|CTRL|3",
|
||
"5": "15|FACULT|***************",
|
||
"6": "6|BDATE|000000",
|
||
"7": "1|CTRL|6",
|
||
"8": "1|SEX|A",
|
||
"9": "6|EDATE|000000",
|
||
"A": "1|CTRL|9",
|
||
"B": "3|NAT|AAA",
|
||
"C": "11|FACULT|***********",
|
||
"D": "1|CTRL|345679AC"
|
||
},
|
||
"Titre d'identité/de voyage"
|
||
]
|
||
|
||
AC = [
|
||
"112223333333334EEE555555555555|66666678999999ABBBCCCCCCCCCCCD",
|
||
{
|
||
"1": "2|CODE|AC",
|
||
"2": "3|PAYS|AAA",
|
||
"3": "9|NO|*********",
|
||
"4": "1|CTRL|3",
|
||
"5": "15|FACULT|***************",
|
||
"6": "6|BDATE|000000",
|
||
"7": "1|CTRL|6",
|
||
"8": "1|SEX|A",
|
||
"9": "6|EDATE|000000",
|
||
"A": "1|CTRL|9",
|
||
"B": "3|NAT|AAA",
|
||
"C": "11|FACULT|***********",
|
||
"D": "1|CTRL|345679AC",
|
||
"E": "3|INDIC|AA&"
|
||
},
|
||
"Certificat de membre d'équipage"
|
||
]
|
||
|
||
VA = [
|
||
"11222333333333333333333333333333333333333333|444444444566677777789AAAAAABCCCCCCCCCCCCCCDE",
|
||
{
|
||
"1": "2|CODE|V*",
|
||
"2": "3|PAYS|AAA",
|
||
"3": "39|NOM|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&",
|
||
"4": "9|NO|*********",
|
||
"5": "1|CTRL|4",
|
||
"6": "3|NAT|AAA",
|
||
"7": "6|BDATE|000000",
|
||
"8": "1|CTRL|7",
|
||
"9": "1|SEX|A",
|
||
"A": "6|EDATE|000000",
|
||
"B": "1|CTRL|A",
|
||
"C": "14|FACULT|**************"
|
||
},
|
||
"Visa de type A"
|
||
]
|
||
|
||
VB = [
|
||
"112223333333333333333333333333333333|444444444566677777789AAAAAABCCCCCC",
|
||
{
|
||
"1": "2|CODE|V*",
|
||
"2": "3|PAYS|AAA",
|
||
"3": "31|NOM|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&",
|
||
"4": "9|NO|*********",
|
||
"5": "1|CTRL|4",
|
||
"6": "3|NAT|AAA",
|
||
"7": "6|BDATE|000000",
|
||
"8": "1|CTRL|7",
|
||
"9": "1|SEX|A",
|
||
"A": "6|EDATE|000000",
|
||
"B": "1|CTRL|A",
|
||
"C": "8|FACULT|********"
|
||
},
|
||
"Visa de type B"
|
||
]
|
||
|
||
I__ = [
|
||
"112223333333333333333333333333333333|444444444566677777789AAAAAABCCCCCCCD",
|
||
{
|
||
"1": "2|CODE|I*",
|
||
"2": "3|PAYS|AAA",
|
||
"3": "31|NOM|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&",
|
||
"4": "9|NO|*********",
|
||
"5": "1|CTRL|4",
|
||
"6": "3|NAT|AAA",
|
||
"7": "6|BDATE|000000",
|
||
"8": "1|CTRL|7",
|
||
"9": "1|SEX|A",
|
||
"A": "6|EDATE|000000",
|
||
"B": "1|CTRL|A",
|
||
"C": "7|FACULT|*******",
|
||
"D": "1|CTRL|4578ABC"
|
||
},
|
||
"Pièce d'identité/de voyage"
|
||
]
|
||
|
||
ID = [
|
||
"112223333333333333333333333333444444|555566677777899999999999999AAAAAABCD",
|
||
{
|
||
"1": "2|CODE|ID",
|
||
"2": "3|PAYS|AAA",
|
||
"3": "25|NOM|&&&&&&&&&&&&&&&&&&&&&&&&&",
|
||
"4": "6|NOINT|000***",
|
||
"5": "4|DDATE|0000",
|
||
"6": "3|NOINT2|000",
|
||
"7": "5|NOINT3|00000",
|
||
"8": "1|CTRL|567",
|
||
"9": "14|PRENOM|A",
|
||
"A": "6|BDATE|000000",
|
||
"B": "1|CTRL|A",
|
||
"C": "1|SEX|A",
|
||
"D": "1|CTRL|123456789ABC"
|
||
},
|
||
"Pièce d'identité FR"
|
||
]
|
||
|
||
DL = [
|
||
"112223333333334555555666666667|",
|
||
{
|
||
"1": "2|CODE|D1",
|
||
"2": "3|PAYS|AAA",
|
||
"3": "9|NO|00AA00000",
|
||
"4": "1|CTRL|123",
|
||
"5": "6|EDATE|000000",
|
||
"6": "8|NOM|&&&&&&&&",
|
||
"7": "1|CTRL|123456"
|
||
},
|
||
"Permis de conduire"
|
||
]
|
||
|
||
TYPES = [ID, I__, VB, VA, AC, I_, IP, P, DL]
|
||
|
||
## THE ROOT OF THIS PROJECT !
|
||
def MRZ(code):
|
||
"""
|
||
This function computes a control sum for a range of characters
|
||
"""
|
||
resultat = 0
|
||
i = -1
|
||
facteur = [7, 3, 1]
|
||
for car in code:
|
||
if car == '<' or car == '|':
|
||
valeur = 0
|
||
i += 1
|
||
else:
|
||
if car in '0123456789':
|
||
valeur = int(car)
|
||
i += 1
|
||
else:
|
||
if car in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
|
||
valeur = ord(car) - 55
|
||
i += 1
|
||
else:
|
||
break
|
||
resultat += valeur * facteur[(i % 3)]
|
||
|
||
return resultat % 10 |