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