从简单的USB HID磁卡读卡器获取跟踪数据的最简单方法是什么?

时间:2010-10-12 18:09:21

标签: usb credit-card hid smartcard-reader

我需要从磁卡上获取Track 1和Track 2数据,并通过网络将它们发送到等待的服务器。从USB HID磁卡读卡器获取轨道数据的简便方法是什么?

如果它有帮助,我有一台MAGTEK迷你刷磁条读卡器(部件号21040140)

我与操作系统无关 - Windows,Mac或Linux的解决方案会很棒。最好不要使用.NET,但如果这是我最简单的方法。

你们都在想什么?

谢谢!

2 个答案:

答案 0 :(得分:4)

我见过的每个读卡器都有一个键盘模拟器,所以你刷卡并通过键盘缓冲区发送字符。看起来这个人也这样做(文档:http://www.magtek.com/documentation/public/99875206-16.01.pdf

第14页描述了刷卡后发送的数据,这在读卡器中也是相当标准的:
[Tk1 SS] [Tk1数据] [ES] [Tk2 SS] [Tk2数据] [ES] [Tk3 SS] [Tk3数据] [ES] [CR]

因此,您的跟踪一个数据以%开头,以?结束 跟踪两个数据以;开头,以?

结尾

我注意到这个问题虽然被标记为信用卡,但是值得确保您了解通过网络(甚至是内部网络)发送原始卡数据的后果。请查看支付卡行业数据安全标准(PCI-DSS):https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml


VB源代码附带的特定阅读器有一个演示程序 http://www.magtek.com/support/software/demo_programs/usb_swipe_insert.asp

答案 1 :(得分:0)

从此链接下载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>

根据上面的代码,我将重点放在文本框上。刷卡后,聚焦文本框会自动显示完整的信用卡数据字符串。