Friend
Professional
- Messages
- 2,653
- Reaction score
- 842
- Points
- 113
Всем привет!
Сегодня будем учиться генерировать MRZ строку в паспорте.
Вся генерация будет проводиться на сайте http://www.highprogrammer.com/cgi-bin/uniqueid
Для примера возьмём страну AU (Австралию).

Начало генерации проводим с анализа MRZ строки в паспорте всё тут же http://www.highprogrammer.com/cgi-bin/uniqueid
Для это переписываем наши 2 строки строго заглавными буквами и вставляем в соответствующие поля.
И жмём кнопку Submit
Если при переписки MRZ кода вы не ошиблись, то на выходе получим расшифровку.
Что мы видим Тип документа, подтип-документа, ФИО, Доб, Дата действия, Номер паспорта, Персональный номер, Национальность, и 5 степеней проверки.
Анализируем наши данные ФИО,ДОБ,Дата действия нам известны так сказать в народе
Но откуда берется номер паспорта и персональный номер мы не знаем, зачастую номер паспорта просто рандомные числа.
Но персональный номер на моей практике имеет свой алгоритм генерации который зависит от пола,возраста и других параметров, можно почитать тут http://en.wikipedia.org/wiki/Nationa...ication_number
так же персональный номер ещё может называться CPR https://monopoly.ms/topic/246-polezn...-informatciya/ можете найти инфу тут.
В нашем моменте с Австралией нету не каких алгоритмов так что может работать рандомно только по шаблону оригинала, в данном случаи это Personal Number: 45275880M как мы видим межу двоеточием и четвёркой есть пробел, а в строке MRZ мы видим символ "<" который стоит перед нашей четверкой, значит нам нужно поставить этот знак перед генерацией дабы не нарушить заданный алгоритм,так же присутствуем буква M которая повторно обозначает пол, вот такая фишка в AU паспорте.
Также хочу отметить я дал скан с невалидным MRZ кодом специально, чтобы вы заметили что вовремя анализа на чеке нам выдало Final Check digit: Invalid (Is 0, should be 4), что означает в финальная цифра не верна должна быть 4 а не 0.
Финальные цифры стоят после каждого значимого участка это нижняя строка вот она мы её разберем M2414547<7AFG6006093M2003027<45275880M<<<<10
1. M2414547 - Это номер паспорта M241454 в конце ставиться цифра получаемая при генерации по алгоритму это (7).
2. 7AFG6006093 - Данная строка содержит национальность и дату рождения финальная цифра (3).
3. 2003027 - Дата окончания действия документа финальная цифра (7).
4. И финальный цифры генерации 10.
Чтобы не допустить таких ошибок делаем после каждой генерации, анализ MRZ.
Приступим к генерации, идём по ссылке http://www.highprogrammer.com/cgi-bin/uniqueid/mrzp
Распишу всё по пунктам.
1. Sub-type: Этот пункт встречается очень редко, пока видел только в Норвегии в паспорте, так что оставляем его пустым если при анализе он был пуст.
2. Given name(s): Имя
3. Surname(s): Фамилия
Date of birth: Дата рождения
5. Year: Год
6. Month: Месяц
7. Day: День
8. Sex: Пол
9. Issuer: Страна владельца документа.
Passport expiration: Дата окончания действия паспорта.
10. Year: Год
11. Month: Месяц
12. Day: День
13. Passport number: Номер паспорта
14. Personal number: Персональный номер
15. Nationality: Национальность
Ввели данные жмем Submit и на выходи получим Machine Readable Zone: которую используем по нашему назначению.
В конце добавлю, что самое главное разобраться на анализе самого кода и в будущем не будет проблем, можете задавать вопросы, но помните почти вся инфа о доках есть в гугле.
Чем смог, тем помог.
Сегодня будем учиться генерировать MRZ строку в паспорте.
Вся генерация будет проводиться на сайте http://www.highprogrammer.com/cgi-bin/uniqueid
Для примера возьмём страну AU (Австралию).

Начало генерации проводим с анализа MRZ строки в паспорте всё тут же http://www.highprogrammer.com/cgi-bin/uniqueid
Для это переписываем наши 2 строки строго заглавными буквами и вставляем в соответствующие поля.
И жмём кнопку Submit

Если при переписки MRZ кода вы не ошиблись, то на выходе получим расшифровку.

Что мы видим Тип документа, подтип-документа, ФИО, Доб, Дата действия, Номер паспорта, Персональный номер, Национальность, и 5 степеней проверки.
Анализируем наши данные ФИО,ДОБ,Дата действия нам известны так сказать в народе

Но откуда берется номер паспорта и персональный номер мы не знаем, зачастую номер паспорта просто рандомные числа.
Но персональный номер на моей практике имеет свой алгоритм генерации который зависит от пола,возраста и других параметров, можно почитать тут http://en.wikipedia.org/wiki/Nationa...ication_number
так же персональный номер ещё может называться CPR https://monopoly.ms/topic/246-polezn...-informatciya/ можете найти инфу тут.
В нашем моменте с Австралией нету не каких алгоритмов так что может работать рандомно только по шаблону оригинала, в данном случаи это Personal Number: 45275880M как мы видим межу двоеточием и четвёркой есть пробел, а в строке MRZ мы видим символ "<" который стоит перед нашей четверкой, значит нам нужно поставить этот знак перед генерацией дабы не нарушить заданный алгоритм,так же присутствуем буква M которая повторно обозначает пол, вот такая фишка в AU паспорте.
Также хочу отметить я дал скан с невалидным MRZ кодом специально, чтобы вы заметили что вовремя анализа на чеке нам выдало Final Check digit: Invalid (Is 0, should be 4), что означает в финальная цифра не верна должна быть 4 а не 0.
Финальные цифры стоят после каждого значимого участка это нижняя строка вот она мы её разберем M2414547<7AFG6006093M2003027<45275880M<<<<10
1. M2414547 - Это номер паспорта M241454 в конце ставиться цифра получаемая при генерации по алгоритму это (7).
2. 7AFG6006093 - Данная строка содержит национальность и дату рождения финальная цифра (3).
3. 2003027 - Дата окончания действия документа финальная цифра (7).
4. И финальный цифры генерации 10.
Чтобы не допустить таких ошибок делаем после каждой генерации, анализ MRZ.
Приступим к генерации, идём по ссылке http://www.highprogrammer.com/cgi-bin/uniqueid/mrzp
Распишу всё по пунктам.
1. Sub-type: Этот пункт встречается очень редко, пока видел только в Норвегии в паспорте, так что оставляем его пустым если при анализе он был пуст.
2. Given name(s): Имя
3. Surname(s): Фамилия
Date of birth: Дата рождения
5. Year: Год
6. Month: Месяц
7. Day: День
8. Sex: Пол
9. Issuer: Страна владельца документа.
Passport expiration: Дата окончания действия паспорта.
10. Year: Год
11. Month: Месяц
12. Day: День
13. Passport number: Номер паспорта
14. Personal number: Персональный номер
15. Nationality: Национальность
Ввели данные жмем Submit и на выходи получим Machine Readable Zone: которую используем по нашему назначению.

В конце добавлю, что самое главное разобраться на анализе самого кода и в будущем не будет проблем, можете задавать вопросы, но помните почти вся инфа о доках есть в гугле.
Чем смог, тем помог.