Перехват обмена бесконтактных карт на RTL-SDR (RTL2832)

Всё что связано с аппаратурой и антеннами
Ответить
  • Автор
  • Сообщение
Не в сети
Аватара пользователя
Сообщения: 73
Зарегистрирован: 15 дек 2013 15:54

Перехват обмена бесконтактных карт на RTL-SDR (RTL2832)

Сообщение EU6SM »

Этот пост в контексте форума приводится для того, чтобы показать, что реальная работа RTL2832 вполне возможна и в КВ диапазоне. В инете хватает дурковатых поделок, которые показывают, что можно принять АМ на КВ от пятидесятикиловаттной китайской станции, или принимать полукратные частоты круговой сэмплирования, но это всё делается на уровне поделок с количеством костылей, достойным областной больницы. В текущем посте показана работа RTL2832 в качестве приёмника сложного широкополосного проблемного сигнала; сигнала, требующего не только хороших входных динамических параметров, но и высоких переходных характеристик, т.к. при приёме требуется высокая разрешающая способность, чтобы определить пропадание 4х тактов несущей на частоте 13.56МГц. Возможно, кому-то пригодится идея дешёвого построения качественного КВ тракта. Ах, да: не стоит приплетать сюда УКВ "способности" донглов :-):

Оригинал поста находится здесь. Там же картинки в высоком разрешении.

Иногда необходимо знать какими данными обмениваются ридер и карта. Это могут быть банальные причины, типа отладки программно-аппаратного обеспечения ридера, проверки отношения мощностей передачи-приёма; это могут быть и не очень банальные причины, типа трассировки обмена Mifare Classic или попытки на лету внести сбойный бит в AES-ключ Mifare Plus, чтобы выковырять криптобазу из испорченной карты…
Предлагаемый вариант сниффера был сделан из «плавников и рыбьих хвостов» — на базе RTL-SDR (RTL2832), донгла стоимостью 4$. Результат трассировки эфира запечатлён на скриншоте: неплохо, неправда ли?
Изображение

А приёмник, который всё это поймал, выглядел так
Изображение

Основная проблема построения приёмника в том, что требуется большой динамический диапазон и высокая разрешающая способность: мощная несущая ридера забивает слабый, практически никакой, сигнал карты. Если рассматривать приёмник с точки зрения реализации приёмника в самом ридере, то в данном случае проблема решается довольно просто: ридер точно знает, когда надо принимать сигнал, а поскольку ридер ещё и сам генерирует несущую, то включение в нужный момент фазового детектора решает проблему построения дешёвого приёмника, т.к. при приёме сигнала меряется искажение фазы эфирного сигнала относительно своего же опорного генератора.
У стороннего приёмника возможность «опираться» на что-либо отсутствует в принципе: в поле ридера, которое легко ловится на расстоянии полкилометра, приходится искать искажения, сделанные замыканием-размыканием 5ти витков катушки карты. Чудесная задача, учитывая ещё и то, что катушка на карте сделана методом напыления алюминия на лавсан — хорошо, хоть не краской витки нарисовали :)

Вобщем, задача построения сниффера Mifare не просто интересна как прикладная задача, а интересна как инженерная головоломка.

Основная задача приёмника на базе RTL-SDR — принять широкополосный сигнал на частоте 13.56МГц. Несмотря на то, что сам донгл принимает сигналы только от 40МГц и выше, существуют доработки, которые позволяют принимать сигналы КВ(HF) диапазона в режиме прямого преобразования: direct sampling mode. «Допиливать» RTL-донгл можно самому, а можно взять уже «допиленный». Наиболее простым и дешёвым показался вариант китайского радиолюбителя BA5SBA, тем более, что его поделки массово и «низадорого» продаются на Али :-):

Внутренности RTL-SDR на базе RTL2832 с доработкой от BA5SBA для приёма КВ-диапазона в режиме прямого преобразования
Изображение

Внутри девайс от BA5SBA представляет собой доработку типовой платы RTL2832 для приёма сигналов КВ(HF) диапазона. Если интересно провести доработку RTL2832 самому, в интернете хватает ссылок по этой теме, вот парочка для примера: Активный direct sampling и RTL-SDR direct sampling mode.

Для трассировки обмена ридера с картой необходимо сделать антенну, которая представляет собой кольцо диаметром около 60мм из 12 витков одножильного провода от LAN-кабеля длиной чуть более 1м. Провод перевязан изолентой, чтобы витки не распускались. Выводы полученной катушки припаяны к концу отрезка антенного кабеля, который подсоединяется к HF-входу SDR-приёмника.
Изображение

Основной проблемой при приёме является огромная разница между уровнем излучения ридера и уровнем ответа карты, и для решения этой проблемы пришлось пойти на хитрость: придание антенне ярко выраженных частотных свойств. Для этого к выводам антенны припаян конденатор 1nF, который вместе с индуктивностью антенны (~22мкГн) и входным сопротивлением приёмника ослабляют уровень несущей 13.560МГц. При этом уровень сигнала карты всё-равно остаётся достаточно низким, поэтому для увеличения входной амплитуды, программе управления донглом необходимо включать внутреннее АРУ для выбранного АЦП (RTL AGC).

Для перехвата обмена, антенну следует располагать между ридером и картой вплотную к карте. Программу записи логов следует запустить до начала обмена, логи начнут записываться при появлении сигнала. При приёме за один раз записываются 3 файла: askNNNNN.wav, firNNNNN.wav и ookNNNNN.wav. В файл askNNNNN записывается огибающая, полученная в результате обработки IQ-модов AM-демодулятором. Файл firNNNNN.wav содержит сигнал после обработки цифровым фильтром. Файл ookNNNNN.wav содержит сигнал, соответствующий ON-OFF состояниям передатчика и приёмника.

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

Для визуального просмотра полученных сигналов удобно воспользоваться программой audacity; обычно одновременно открывают два файла: firNNNNN.wav и ookNNNNN.wav.

Изображение

Далее, увеличивая-уменьшая масштаб, можно выбрать интересующую часть сигнала. Качество съёма сигнала такое, что даже без специальных навыков сигнал очень легко декодируется вручную. Просматривая ответы карты можно не просто оценить время ответов карты на запросы ридера, как, например, делает proxmark, а узнать точное время реакции карты на команду, точное время прохождения заданного бита, оценить амплитуду заряда внутреннего конденсатора карты, переходные процессы и т.п. Т.е. «смысл» в сниффере на RTL2832 есть.

Запрос ридера REQA и ответ карты на него ATQA в увеличенном масштабе
Изображение

Программа для записи протокола обмена между ридером и картой называется rtlcard, версию для Windows можно скачать здесь. rtlcard поддерживает следующие опции командной строки:

f — устанавливает центральную частоту приём в Гц, по умолчанию 13560000
g — можно набрать -g ON или -g OFF; включает/выключает внутреннее АРУ для RT2832; по умолчанию АРУ RTL2832 включено
m — можно набрать -m I или -m Q; активирует вход I или Q для чтения сэмплов в режиме прямого преобразования; по умолчанию активирован вход Q

Сэмпл реального обмена ридера с картой, снятый с помощью rtlcard можно скачать здесь.
Ответить