Как создать драйвер USB и устройство для извлечения данных (устройство чтения магнитных карт)? [Python, Ruby]

Итак, у меня есть считыватель магнитных карт (общий), который я купил в Интернете (это по-китайски), проблема в том, что у него есть руководство, но оно на китайском языке (хаххаха) Так что я не Я понимаю это ... У меня есть две Linux-машины (одна Ubuntu и одна Fedora), и если вы подключите ее через USB, она включится, и если вы передадите карту (с открытым текстовым редактором), вы получите код / ​​строку, похожую на этот:

1303031110012015¿999999999999999

Очевидно, что где-то есть информация о карте (это карта принадлежности к кинотеатру), и я хочу извлечь информацию (например, имя владельца и другие данные) из этого номера, если я запустил lsusb Я получаю что-то вроде этого:

Reader отключен:

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 04f2:b293 Chicony Electronics Co., Ltd 
Bus 007 Device 003: ID 0cf3:3005 Atheros Communications, Inc. AR3011 Bluetooth

Reader подключен:

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 04f2:b293 Chicony Electronics Co., Ltd 
Bus 007 Device 003: ID 0cf3:3005 Atheros Communications, Inc. AR3011 Bluetooth
Bus 005 Device 005: ID 05fe:1010 Chic Technology Corp. Optical Wireless

И я знаю некоторые Python и Ruby (больше рубиновые, чем python), но я не знаю, с чего начать. .. Было бы здорово если кто-то может указать мне правильное направление .. ¿Можете ли вы? (было бы здорово иметь кроссплатформенный драйвер для Windows, Linux и Mac).

Спасибо.

P.S. Это карт-ридер, который я купил: http://dx.com/p/usb-universal-mintage-stripe-credit-debit-card-bidirectional-track-2-swipe-reader-75-210bpi-25053

2
задан 24 October 2012 в 05:55

1 ответ

Начните с просмотра статьи Википедии о картах магнитных полос , в которой описываются общие схемы размещения данных.

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

Чтобы получить более интересные биты, такие как имена, вы можете попытаться поместить физическую прокладку внутри считывателя , чтобы головка читала через трек 1. Однако это может не сработать, если оборудование знает только как декодировать дорожку 2.

Для программного считывания устройства вы можете использовать стандартный ввод, как и для полноценной клавиатуры. Проект StripeSnoop с открытым исходным кодом давно умер, но, тем не менее, вы можете почерпнуть из него несколько полезных советов. Технология Magstripe не изменилась за долгое время. Hack a Day также имеет несколько хороших ссылок на кредитные карты.

0
ответ дан 24 October 2012 в 05:55

Другие вопросы по тегам:

Похожие вопросы: