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

从简单的USB HID磁卡读卡器中获取磁道数据的最简单方法是什么?,usb,credit-card,hid,smartcard-reader,Usb,Credit Card,Hid,Smartcard Reader,我需要从磁卡上获取磁道1和磁道2的数据,并通过网络将它们发送到等待的服务器。从USB HID磁卡读卡器获取磁道数据的简单方法是什么 如果有帮助,我有一个MAGTEK Mini-Swipe磁条阅读器(零件号21040140) 我是操作系统不可知论者——一个适用于Windows、Mac或Linux的解决方案会很棒。最好不要使用.NET,但如果这是最简单的方法,我会选择它 你们都怎么想 谢谢 我见过的每一个读卡器都有一个键盘模拟器,所以你刷卡,它就会通过键盘缓冲区发送字符。看起来这个也可以(文档:)

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

如果有帮助,我有一个MAGTEK Mini-Swipe磁条阅读器(零件号21040140)

我是操作系统不可知论者——一个适用于Windows、Mac或Linux的解决方案会很棒。最好不要使用.NET,但如果这是最简单的方法,我会选择它

你们都怎么想


谢谢

我见过的每一个读卡器都有一个键盘模拟器,所以你刷卡,它就会通过键盘缓冲区发送字符。看起来这个也可以(文档:)

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

因此,第一轨数据以
%
开始,以
结束
第二轨数据以
开头并以

我注意到这个问题被标记为信用卡,因此有必要确保您知道通过网络(甚至是内部网络)发送原始卡数据的后果。请看一下支付卡行业数据安全标准(PCI-DSS):


VB源代码附带了一个特定阅读器的演示程序。

从该链接下载Cab文件的最简单方法&将其包含在“magtek”文件夹的项目目录中

在标记后的aspx文件中添加此代码(根据更改cab文件src)


$(函数(){
$('#txtNameFirst').focus();//需要关注文本框
USBHID.PortOpen=true;
如果(USBHID.PortOpen==false){
$('#').text('无法打开MagTek reader');
}
否则{
$(“#”).text('请刷卡');
}
});
$(“#txtNameFirst”).bind('change',function(){
var CCData=$(“#txtNameFirst”).val();//CCData将以字符串形式包含完整的信用卡数据。
警报(CCData);
$(“#txtNameFirst”).val(CCData.split('^')[1].split(''[0]);
$(“#txtNameLast”).val(CCData.split('^')[1]。split(''[1]);
$(“#txtcno”).val(CCData.split('^')[0]。子字符串(2,18));
//警报('Split1:'+CCData.split('^')[1]+'Split2:'+CCData.split('^')[2]);
//警报(“解析良好!”);
$(“#txtExpiDt_RoutingNo”).val(CCData.split('^')[2]。子字符串(2,4)+'/'+CCData.split('^')[2]。子字符串(0,2));
});

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

感谢您的回复。不幸的是,我拥有的特定设备——第21040140部分——没有包含在您链接的文档中(请查看第3页的“硬件配置”表)。介绍该设备的文档实际上是,我已经意识到我可以将该设备重置为KB模式——只需使用支持页面上提供的USBMSR演示应用程序进行一点操作。尽管如此,一个简单的HID解决方案还是不错的,这样就可以使用键盘了。谢谢@买单。还有一个演示应用程序(带源代码)可用。我更新了答案。仅供参考,我有21040102,该型号不支持键盘模拟器模式。@BrianKnoblauch,我有相同的型号,并且能够在键盘模拟模式下工作。
   <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>