2
从原始WAV提取二进制磁条卡数据
我面临着一个棘手的挑战:从iPhone磁条卡读取器中提取二进制数据。卡上的磁化强度如下所示: 资源 这是当您刷卡时iPhone收到的.WAV(不要将希望寄予太大希望,这是奖励会员卡;))。顺便说一下,这是以不同的速度刷了三下。这是我正在使用的滑动的原始SInt16转储。 似乎有人在这里做过, 但是我捕获的实际数据并不是特别容易处理。 读数以不确定的“ 0”开始(并结束)-请注意,只有在收集到2个ZEROS之后,该波才会重复,这表示NS后跟SN: (请注意,三行中的每一行都代表我要刷一张不同的卡;此图像中的底部卡已使用了15年,因此磁场在某些地方明显退化严重,在这张照片中看不到) 这将允许算法确定时钟滴答。 磁场在每个时钟滴答处反转。 同样对于二进制1,磁场恰好在刻度线的中间反转: 该序列始终以1101 + 0(奇偶校验位)开始标记开始。您可以在上图中的所有三个读数中进行选择。我在问题顶部链接的cosmodro文章中更清楚地表明了这一点。 这是一个磁性衰减的示例(在底下的卡片读取中进一步记录): 我试图找出一种明智的方法来将该波形转换为其相应的二进制序列。 我已经找到了一份详细介绍的PDF,但是我无法弄清楚他们使用的算法。 该PDF包含一个有趣的图像: 如果我可以按照该图提取红线和蓝线,则可以使用其中之一来提取数据,但是我无法弄清楚构造背后的逻辑。 所以这是我的问题:如何提取二进制序列? PS。请注意,滑动速度不会保持恒定。因此,一旦确定了时钟,就需要将时钟从一个滴答声一直调整到下一个滴答声。 PPS。自相关会捕捉成对的滴答声吗?(看到滴答声会交替显示NS SN ...) 编辑(12年6月):在这方面我需要很多帮助,但是最后我完成了坚实的阅读器(http://www.magstripedecoder.com/)。感谢大家的帮助!我建议IRC的efnet频道上的#musicdsp给那些有足够的心力去迎接挑战,掌握数学的人-这真的很难!