web-dev-qa-db-fra.com

Comment construire un pilote USB et un extracteur de données (lecteur de carte magnétique)? [Python, Ruby]

Donc, j'ai ce lecteur de carte magnétique (générique) que j'ai acheté sur Internet (c'est chinois) le problème est qu'il a un manuel mais il est en chinois (hahhaha) Donc je ne le comprends pas ... J'ai deux machines Linux ( un Ubuntu et un Fedora) et si vous le branchez via USB, il se met sous tension et si vous passez une carte (avec un éditeur de texte ouvert), vous obtenez un code/une chaîne semblable à celui-ci:

1303031110012015¿999999999999999

Il est évident qu’il ya quelque part l’information sur la carte (c’est une carte d’affiliation de cinéma) et ce que je veux faire est d’extraire l’information (comme le nom du propriétaire et d’autres données, par exemple) de ce numéro, si je lance lsusb Je reçois quelque chose comme ceci:

Lecteur débranché:

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

Lecteur branché:

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

Et je connais quelques Python et Ruby (Plus Ruby que python), mais je ne sais pas par où commencer ... Ce serait bien si certains on peut me diriger dans la bonne direction .. ¿Pouvez-vous? (ce serait bien d’avoir un pilote multiplateforme pour Windows, Linux et Mac).

Merci.

P.S. Voici le lecteur de carte que j'ai acheté: http://dx.com/p/usb-universal-magnetic-stripe-credit-debit-card-bidirectional-track-2 -swipe-reader-75-210bpi-2505

2
Jmlevick

Commencez par regarder l'article de Wikipedia sur les cartes à piste magnétique , qui décrit les dispositions de données courantes.

Votre lecteur est conçu pour la piste 2, ce qui signifie qu’il lit une série de chiffres et de caractères spéciaux. À partir de la page du produit, l'appareil apparaît sur votre système sous forme de clavier et entre les caractères qu'il voit. Ainsi, les informations que vous voyez lorsque vous glissez la carte sont exactement les informations stockées sur la piste 2 de la carte. Dans ce cas, cela ressemble à votre numéro d'identification client et rien d'autre.

Pour obtenir des bits plus intéressants tels que des noms, vous pouvez essayez de placer une cale physique dans le lecteur afin que la tête lise sur la piste 1. Toutefois, cela pourrait ne pas fonctionner si le matériel ne sait que décoder une piste 2.

Pour lire le périphérique par programmation, vous pouvez utiliser stdin comme vous le feriez pour un clavier complet. Le projet open-source StripeSnoop est mort depuis longtemps, mais vous pouvez néanmoins en tirer quelques bons conseils. La technologie Magstripe n'a pas changé depuis longtemps. Hack a Day propose également de bons liens sur les cartes de crédit.

4
Steven Bell