単純なUSB HID磁気カードリーダーからデータを追跡する最も簡単な方法は何ですか?
-
29-09-2019 - |
質問
トラック1とトラック2データを磁気カードから取得し、ネットワークを介して待っているサーバーに送信する必要があります。 USB HID磁気カードリーダーからトラックデータを取得する簡単な方法は何ですか?
それが役立つ場合、私はMagtekミニスワイプ磁気ストリップリーダーを持っています(パート番号21040140)
私はOS Agnosticです - Windows、Mac、またはLinuxのソリューションは素晴らしいでしょう。できれば.netはいけませんが、それが最も簡単な方法であれば、私はそれに行くでしょう。
皆さんはどう思いますか?
ありがとう!
解決
私が見たすべてのカードリーダーにはキーボードエミュレータがあるため、カードをスワイプすると、キーボードバッファーを介して文字を送信します。これもそうしているように見えます(ドキュメント: http://www.magtek.com/documentation/public/99875206-16.01.pdf)
14ページでは、スワイプ後に送信されたデータについて説明します。これも、カードリーダー全体でかなり標準です。
TK1 SS] [TK1データ] [ES] [TK2 SS] [TK2データ] [ES] [TK3 SS] [TK3データ] [ES] [CR
したがって、1つのデータが始まります %
で終わります ?
2つのデータを追跡します ;
で終わります ?
ただし、この質問にはクレジットカードがタグ付けされていることに気付いたので、ネットワーク全体で生のカードデータを送信する結果を確実に知っていることを確認する価値があります(内部ネットワークでさえ)。支払いカード業界のデータセキュリティ基準(PCI-DSS)をご覧ください。 https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml
VBソースに付属する特定のリーダー向けのデモプログラムがあります。
http://www.magtek.com/support/software/demo_programs/usb_swipe_insert.asp
他のヒント
このリンクからCABファイルをダウンロードし、「MAGTEK」フォルダーのプロジェクトディレクトリに含める最も簡単な方法。
http://www.magtek.com/support/software/demo_programs/card/usb_hid_swipe_readers/read_parse.asp
タグの後にこのコードをASPXファイルに追加します(CABファイルSRCを変更します)
<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>
上記のコードに従って、テキストボックスに焦点を合わせました。カードをスワイプした後、焦点を合わせたテキストボックスは自動的に完全なクレジットカードデータ文字列を表示します。