Heath's Blog

There is no end, it is just the beginning! - A Game Developer's Notes

Playing with Proxmark

    上周入手一块Proxmark III裸板+官方HF天线。为了防静电,到电子市场去淘了一个尺寸相当的塑料盒子,自己打孔DIY了一个外壳。

image

    官方天线有点坑爹,价格贵不说,电压只有7.8V。Proxmark wiki上有制作HF天线的简单教程,打算自己照着做一根。Hirose接口其实就是Mini USB 4Pin双槽口,这种接口在国内用得较少。因为USB线材的品质、绕线的直径及圈数对天线电压都有影响,所以要提高电压,需使用质量较好的线材,辅以能够方便调整直径和圈数的方法。下面给出我的制作过程:

1)选一根质量较好(芯线较粗)的USB线(也就3元),去其两端后保证1米长;

2)选一端剥出长约2cm的芯线;

3)USB芯线有四股,任选两根剥掉一段,焊接到Mini USB 4Pin公口;

image

4)焊接好后,将工口的金属外壳套上,用电工胶布缠绕稳固;

5)剥去从Mini USB口头部开始6.5cm之后的外皮,去掉屏蔽网和锡箔,剪掉未使用的两个芯线;

6)选取一根芯线保留从Mini USB口头部开始的25cm,另外一根保留至80cm;

7)将两线连接起来(不要焊死),绕成3圈线圈后用尼龙扎带固定(不要扎死);

8)使用hf tune命令tune电压。如果此时电压在7-8V,进行下一步,如果已经达到12+V,那么恭喜你已经一步到位;

9)收缩线圈,减小直径,但保证圈数在3圈,且短线是一圈周长的一半。如果电压有明显提高,剪掉多余的线,直至电压开始回落;

10)得到目标电压后,扎死线圈,焊接好两线接头。

image

    由于Mini USB 4Pin接头是自己焊接的,电压很有可能达不到13V,不过肯定可以达到12V。如果你手上有Hirose接口的线,用以上步骤应该可以调出13V的天线。

SNAGHTML884d38

    最近更新的source code中已经将Darkside attack代码集成进来,测试了一下可以在3分钟以内获得1k卡的一个KEY。对于有些卡工作异常的原因,我从论坛找到的解释是:

To be precise, it all depends on the card. There are older MIFARE Classic cards from NXP where the nonce is better predictable than in the newer once. Furthermore, there are cards manufactured by Infineon, where the MIFARE Classic random numbers are even less random than those from NXP. For a card where a random can be pinned stable on producing the same one over and over, it all just takes around a few seconds. But with just a few "missers" you easily scale up to a few minutes. It all depends on the setup and the cards. But I think it is safe to say that you can get the key from a regular (older) oyster card with a proxmark in around 3 minutes.

Note: If you want to verify, make sure you have a (13v+ antenna) and play around with distance between the card and antenna. It could help if you just put a boring (read thick) book in between。

    另外,这几天做了几个有趣的实验,有些功能还需要DIY一下,比如standalone模式下的simulation、sniffing、外部供电等等。

    在Windows平台build时,mkversion.pl脚本在提取svn版本信息时对回车换行的处理上有问题,会导致构建失败,需要fix一下:

if(open(SVNINFO, "svn info $main_dir|")) {
        
while(<SVNINFO>) {
                
if (/^Last Changed Rev: (.*)/) {
                        
$present = 1;
                        
$svnversion = $1;
                        
## last; # Do not abort here, since SVN tends to complain about a Broken pipe
                }
        }

改为:

if(open(SVNINFO, "svn info $main_dir|")) {
    
while(<SVNINFO>) {
        
if (/^Last Changed Rev: ([^\n\s]*)/) {
            
$present = 1;
            
$svnversion = $1;
            
## last; # Do not abort here, since SVN tends to complain about a Broken pipe
        }
    }

posted on 2012-01-08 16:21 Heath 阅读(3090) 评论(11)  编辑 收藏 引用 所属分类: Wireless Hacking

Feedback

# re: Playing with Proxmark 2012-01-09 23:34 h4k

阻抗,你的线还是不行。而且天线还有一个固化问题,PCB是可调的,需要计算。记住咯  回复  更多评论   

# re: Playing with Proxmark[未登录] 2012-01-10 09:42 Heath

@h4k
这种线调到12V已经够了。想问一下PCB如何调整,是否有文档参考?  回复  更多评论   

# re: Playing with Proxmark 2012-01-10 13:26 h4k

@Heath
不要过于追求电压的高V~这样子不会令你带来完美的结果,反而有可能会让你失望!在HF的电压来说实际上并没有所谓的完美电压或者优秀电压!HF最终看重的是示波器的完美波幅!线的材质、线圈的圆弧、焊接的接口、接口的材质还有造工等等都会出现阻抗,从而减低你自身的电压。

而PCB你看看电容就知道了!用公式计算出结果就是天线的!
PCB天线主要是取决于铜厚、造工以及电容的搭配!官方的天线是经过计算得出平衡值,而其他的就需要靠用户自行进行计算并且进行焊接,可调性以及准确性是高于DIY的版本很多的!

还有一点就是你现在追求的只是恒定电压并且工作电压!工作电压实际上是无法达到12V的!所以要了解清楚究竟天线的电压原理,不要这么快就埋怨官方的不OK喔!

Darkside是在486的时候就已经内嵌的了!用的就是真实的算法漏洞进行的,个人认为有些卡不能够跑出来,一是电压的问题,但是很少的一部分,最主要是随机码的碰撞  回复  更多评论   

# re: Playing with Proxmark[未登录] 2012-01-10 18:42 Heath

@h4k
官方天线用PCB+电容,示波结果自然要好很多。用自制天线测试跑不出结果的卡,用官方天线仍然跑不出来,所以个人认为不是电压问题。另外,用Felica卡测试官方天线时电压会降到3V左右。PCB上的贴片电容也不是看能看出C值的吧。还有就是请不要用那么多的“!”,如果你自认为很牛X,就在你的网站上给出设计靠谱天线的方案,让我这个菜鸟参考一下吧。  回复  更多评论   

# re: Playing with Proxmark 2012-01-11 00:35 h4k

@Heath

用!是我的习惯啊,晕死。你还没有了解PM3的工作原理,所以你会觉得我说的是不对的,自制天线跑不出来的卡实在太多了,就算是Mifare的都有分很多类别,国产的也是跑不出来的,日本的Felica也是不会有啥东西出来了,iD也是,eMoney也是。你是找我买官方Proxmark3的,我网站是多少你应该很清楚,何况我和你也是在研究的一份子,电压问题最主要的问题就是电容,不管你用什么天线,至今都不会有一个公认最好的天线设计方案,就如同ACS的设计,天线只有3V,但是偏偏读的卡比Proxmark3要多,那是为什么呢?  回复  更多评论   

# re: Playing with Proxmark[未登录] 2012-01-11 23:11 Heath

@h4k
本文旨在Playing,理论的东西谁都会说,google一大堆。下面列出我想说明的几点:
1)PM3的原理我仅了解大概,所以在此并没有大谈它的实现原理;
2)6年前做过RFID方面的软件开发,卡的分类自认为还是比较清楚的;
3)本文只是依照http://code.google.com/p/proxmark3/wiki/Antennas根据自己的实践给出一种调整的方法
4)之所以说“官方”(这个板子的设计本来就是开源的,所以‘官方’之说是不准确的)天线不给力,是因为它的测试效果并不比自制天线好,这点我是站在一个用户的角度上来讲的;
5)你的网站上对Proxmark的介绍其实很少,使用手册也是简单翻译了一下,我更倾向于阅读原版论坛和wiki;
6)ACR122U-A2、ACR1222U-C3、SONY RC-S320我都拆解过,这些实际产品的天线设计比PM3好得多;
7)其实PM3也就是个实验电路,或者说是一个玩具,设计上没法跟真正的产品比,兄弟又何必把这东西搞得神圣不可侵犯一样的呢;
8)在此要感谢兄弟组织的团购,比自己直接购买方便很多:)。  回复  更多评论   

# re: Playing with Proxmark 2012-01-12 00:15 h4k

@Heath

不是不可侵犯,我也会骂PM3!只会我觉得你不怎么了解原理而已!如果你看官方的资料或者论坛你应该更加会明白我的意思,可能是你没有看得够仔细!我们的wiki介绍的确少,最起码我们都没有时间去完善,国内的拿来主义使得我们的更新会越来越慢!这个希望兄弟您体谅。

而且兄弟你做过开发,或者你应该知道!有些卡不可以跑,是因为PRING已经不存在了,所以根本就没有办法跑。而ACR122系列实际上是PN532开源版的设计你也应该清楚。PM3本身的设计是基于LF,HF原来是不存在的。作为研究电路的来说,他的天线好不好完全取决于Proxmark3以及天线外在辅助。  回复  更多评论   

# re: Playing with Proxmark[未登录] 2012-01-12 12:53 Heath

@h4k
ACR122确是基于PN532控制器,但“开源版的设计”一说不知你从何处得知。libnfc对它的支持,想必也是参考了ACS的开发文档。  回复  更多评论   

# re: Playing with Proxmark 2012-02-06 11:13 fseraph

博客园的RSS输出终于恢复了,最近玩的东西有点高级哈  回复  更多评论   

# re: Playing with Proxmark 2012-06-20 00:25 test

用国产pm3的飘过。呵呵。就是一玩具,何必执着。  回复  更多评论   

# re: Playing with Proxmark 2012-06-20 00:26 test

绕线那个多绕几圈也没啥问题,把圈圈弄小点,电压也好不错,读卡也不错,没那么严格的  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理