2010-10-12 35 views
5

J'ai besoin de récupérer les données des pistes 1 et 2 des cartes magnétiques et de les envoyer sur le réseau à un serveur en attente. Quel est un moyen facile d'obtenir les données de piste à partir d'un lecteur de carte magnétique USB HID?Quel est le moyen le plus simple d'obtenir des données sur un simple lecteur de cartes magnétiques USB HID?

Dans le cas où il aide, j'ai un MagTek Mini Swipe bande magnétique lecteur (pièce n ° 21040140).

Je OS agnostique - une solution pour Windows, Mac ou Linux serait génial. De préférence pas .NET, mais si c'est la façon la plus simple je vais y aller.

Qu'en pensez-vous?

Merci!

Répondre

4

Chaque lecteur de carte que j'ai vu a eu un émulateur de clavier, alors vous faites glisser la carte et elle envoie des caractères à travers le tampon du clavier. On dirait que celui-ci fait aussi que (documentation: http://www.magtek.com/documentation/public/99875206-16.01.pdf)

Page 14 décrit les données envoyées après un coup, ce qui est nouveau, assez standard pour les lecteurs de cartes:
[Tk1 SS] [Data Tk1] [ES] [ TK2 SS] [TK2 données] [ES] [TK3 SS] [TK3 données] [ES] [CR]

Ainsi, votre piste une donnée commence par % et se termine par ?
piste deux données commence par ; et se termine avec ?

J'ai remarqué que la question a été balisée crédit Cependant, il serait utile de s'assurer que vous connaissez les conséquences de l'envoi de données brutes sur un réseau (même un réseau interne). Jetez un oeil à la carte de paiement de l'industrie des normes de sécurité des données (PCI-DSS): https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml


Il existe un programme de démonstration pour ce lecteur spécifique qui vient avec la source VB.
http://www.magtek.com/support/software/demo_programs/usb_swipe_insert.asp

+0

Merci pour votre réponse. Malheureusement, le périphérique spécifique dont je dispose (pièce # 21040140) n'est pas couvert par le document que vous avez lié (voir le tableau "Configurations matérielles" à la page 3). Le document qui couvre cet appareil est http://www.magtek.com/documentation/public/99875191-12.01.pdf – BuyTheBid

+0

En fait, j'ai réalisé que je peux réinitialiser cet appareil en mode KB - il suffit de jouer un peu avec leur application USBMSR Demo disponible sur les pages d'assistance. Néanmoins, une simple solution HID serait bien pour qu'un clavier puisse aussi être utilisé. Merci! – BuyTheBid

+0

@BuyTheBid. Il y a une application de démonstration (avec la source) disponible aussi. J'ai mis à jour la réponse. – PaulG

0

meilleur moyen de télécharger le fichier CAB de ce lien & inclure dans le répertoire du projet dans un dossier « MagTek ».

http://www.magtek.com/support/software/demo_programs/card/usb_hid_swipe_readers/read_parse.asp

Ajoutez ce code dans le fichier ASPX après étiquette (changement cabine fichier src selon)

<object id="USBHID" classid="CLSID:22571E97-956A-4CDD-AF8D-AE9C26597683" codebase="magtek/99510060.CAB#version=1,13,0,2"> 
    </object> 

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
     $(function() { 
$('#txtNameFirst').focus(); // Focus on a textbox is required 
USBHID.PortOpen = true; 
      if (USBHID.PortOpen == false) { 
       $('#<%= lblStatus.ClientID %>').text('Could not open MagTek reader'); 

      } 
      else { 
       $('#<%= lblStatus.ClientID %>').text('Please Swipe a card'); 
      } 
    }); 
$("#txtNameFirst").bind('change', function() { 

var CCData = $("#txtNameFirst").val(); // CCData will contain the complete credit card data in a string. 

alert(CCData); 
$("#txtNameFirst").val(CCData.split('^')[1].split(' ')[0]); 
         $("#txtNameLast").val(CCData.split('^')[1].split(' ')[1]); 
         $("#txtCCNo").val(CCData.split('^')[0].substring(2, 18)); 
         //alert(' Split1: ' + CCData.split('^')[1] + ' Split2: ' + CCData.split('^')[2]); 
         //alert('parsing good!'); 
         $("#txtExpiDt_RoutingNo").val(CCData.split('^')[2].substring(2, 4) + '/' + CCData.split('^')[2].substring(0, 2)); 
}); 
    </script> 

Conformément au code ci-dessus, j'ai ajouté l'accent sur une zone de texte. Après avoir balayé les boîtes de texte centrées sur la carte, la chaîne de données complète de la carte de crédit s'affiche automatiquement.