Fake 2 Жалоба Опубликовано 9 июля, 2016 Всем привет! Сегодня будем учиться генерировать 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: которую используем по нашему назначению. В конце добавлю, что самое главное разобраться на анализе самого кода и в будущем не будет проблем, можете задавать вопросы, но помните почти вся инфа о доках есть в гугле. Чем смог, тем помог с вами был JOINT. Поделиться сообщением Ссылка на сообщение