NFC: Работа с библиотекой.

Моя библиотека состоит из трех классов

NFC- родительский класс (NXP чипы должны поддерживаться от 532), который позволяет

- соединяться со считывателем

- показывать тип считывателя

- отправлять прямые команды на чип

- будить чип (эта функция необходима, т.к. после подачи питания чип "спит")


PN532

- включить антенну

- посмотреть карту без авторизации, определить её тип (Mifare только прописан)

- упрощенное считывание (возвращает все что нужно для дальнейшего использования)

- считывание блоков памяти Mifare Ultralight

- авторизация Mifare Ultralight C

- записать на вашу карту Mifare Ultralight C новый ключ.

- записать в память, mifare ultralight / ultralight C

- авторизация блока Mifare Classic

- запись блоков Mifare Classic



tryports

определяет на каком порту болтается ваш считыватель.

Ниже я приведу пример использования кода и объясню построчно чего происходит.

NFC: Работа с библиотекой. NFC, Библиотека, Работа с картами, Длиннопост

в python со знака #  -далее идет комментарий, так что строки начнающиеся с #- пропускаем.

2 - открываем соединение по COM2 (я знаю что там находится мой считыватель), он подключен через преобразователь интерфейсов moxa (ОС win определяет его как com2).

строка r.wakeup() - будит наш считыватель

следующая строка показывает информацию о считывателе (картинка ниже). Как мы видим, действительно внутренняя схема 32 версия 01, ревью 06. Далее идет в таблице идет поддержка стандартов.

После того, как чип определился и вывел инфу о себе - мы включаем антенну (turnOnRF ())

и тащим информацию о карте.

Считыватель будет ожидать карту и программа не сдвинется с места пока вы её не приложите.

Ну вот мы приложили карту, и появилась последняя табличка, в ней, показаны все доступные данные которые можно прочитать без авторизации, так же показан тип карты в моём случае это mifare ultralght C.

Последняя строка  - прошла ли авторизация (по умолчанию вы сначала должны авторизоваться перед записью) - 0 прошла авторизация 2 - не прошла 1 - что-то пошло не так. (коды в hex)

По умолчанию пароль на всех картах IEMKAERB!NACUOYF он же (если немного крутануть то получится BREAKMEIFYOUCAN!)

После записи карты старый пароль ещё будет действовать (я не стал команда setMifareUltralightCKey), вам надо отвести карту от считывателя. После "вытаскивания картриджа" пароль и настройки будут применены на карте.

NFC: Работа с библиотекой. NFC, Библиотека, Работа с картами, Длиннопост
Клонируем карты

Начинающий разработчик, используя Mifare Classic не переписывает пароли в карте по всем блокам, оставляя лазейку для взлома. Зная хотя бы один из паролей на любом блоке можно скопировать карту и сделать её точный клон при помощи MifareZero.

Если вам известно, что какой то блок авторизации остался "заводским", то можно попытаться хакнуть карту и вытащить все данные при помощи MFCUK.

Даже если вам не известны пароли, то вы сможете получить ключ авторизации используя сниффер.

Зачем NFC хакать?

Не делайте то, что я напишу, это уголовно-наказуемое преступление. Я не несу ответственности за вас! У вас как бы своя голова должна быть.

Хакают карты - для получения разовых допусков (постоянных допусков) на предприятия, в учреждения и так далее. Сейчас набирают обороты платежные системы по NFC. Так что человек вооруженный считывателем может снять с вашего телефона (некоторые личности убирают подтверждение о переводе, мол, медленно), карты, денежные средства.

Я понимаю, для моих "уроков" это маловато, но все же я не хотел бы стать предпосылкой к вашей криминальной карьере.

По поводу моей библиотеки - вы вправе копировать, распространять, модифицировать её как вам угодно, при условии, что вы оставите ссылку в исходниках на оригинальную библиотеку. Код распространяется под лицензией GNU.

ссылка на библиотеку.

https://github.com/X286/nfc_py

предыдущие посты:

http://pikabu.ru/story/nfc_blizhe_k_telu_4989630 - второй

http://pikabu.ru/story/nfc_prostyim_yazyikom_4986958 - первый

Всем спасибо за внимание. Задавайте вопросы.

Вы смотрите срез комментариев. Показать все
Автор поста оценил этот комментарий

Привет. Респект за проект! Я тоже взялся за проект связанный с NFC. В общем, вот хотел немного порасспрашивать... Мне нужно написать ПО для работы с ридером и картами, но я скорее в процессе обучения. Можешь, пожалуйста, немного подсказать? Думаю взять на алике ридер ACR1251-A1, но точно уверен, что без готовой библиотеки пока не обойдусь... Вот libnfc, например, будет с ним работать? Нужно что-то под виндовс. Или есть ещё какие-то варианты? Буду прям очень благодарен за информацию :)

раскрыть ветку (6)
DELETED
Автор поста оценил этот комментарий
Acr обладает мозгами, т.е. Команды на ридер будут отличаться от библиотеки которую выложил я. Под этот считыватель корректно работает pcsc или как то так библиотека под Linux. У меня первый ридер был этой фирмы 122 или типа того, и меня не устроил он, ввиду 2 причин. 1 я не имел понятия о работе считываетя и для винды нужны были драйвера, которые были без цифровой подписи, 2 мифар ключи а и б писались в ОЗУ и ПЗУ память ридер, что уменьшало количество вариантов паролей при эксплуатации. Далее был считыватель isc или как то так, обычная чёрная флешка ридер, под него я компилировал libnfc заминка была в малой антенне, что, влекло за собой очень скромные пол сантиметра считывания и плохую встраивомость в скуд старого типа, это было год назад библиотека вела себя не достаточно корректно, устраивала регулярные отвал ридера во время экспериментов со чтением и записью карт. Т.е. Циклический опрос карты, показывал плачевные результаты, мы посоветовались и решили сделать свой ридер, под который была написана данная библиотека т.е она работает напрямую с чипом pn 532. Я думаю, isc и ada fruit будут корректно с ней работать но говорить об управлении считывателем скажем электрозамком не приходится, я не тестировал и не могу вас обнадежить. Прошу прощения за ошибки и т9 пишу с телефона.
раскрыть ветку (2)
Автор поста оценил этот комментарий

Да я вот занимался робототехникой, думал, что вариант — собрать свой ридер на ардуино, запрогать, но у меня сейчас более прикладная задача... Казалось, что всё будет чуть проще. Вроде бы технология распространённая, но приходится каждый раз заново изобретать велосипед. Я пытался подобрать универсальный ридер для всех стандартов NFC и реализовывать считывание и сохранение информации на карту, ну как бы пропускной режим с отметкой времени и хранением базы данных в компьютере. Но что-то уже даже и не знаю... Ладно, спасибо за ответ :)

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий
Из Универсального а-ля стенд разработчика https://www.adafruit.com/product/789
Дорого богато, информация полно. Для реализации в жизни дорого.
DELETED
Автор поста оценил этот комментарий
Остались исходники

ссылка на работу ACR https://github.com/X286/ACS1281U (бибилиотека для ACR когда брал ридер в зеленограде, ошибочка была у продавца. ) так название пошло поехало. Но тебе не особо же важно да?

раскрыть ветку (2)
Автор поста оценил этот комментарий
Мне важно, спасибо!
раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Уважаемый, там косячек с чипом и/или прошивкой контроллера ведущего (самой схемой ридера я не разбирался - потому что я ленивый), ты не сможешь валового прочитать карты там по моему лимит в пол сек. стоит. т.е. 1 карта в полсекунды. Быстрее - UID получишь не полный. Я как бы (недавно пытался прописать с авторизацией и перезаписью данных 100 карт через этот ридер) читайте/пишите карты не спешно. А может и в моём коде , кто знает, было то давно. Спасибо за понимание.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку