So Tired !_! 逆水行舟, 不进则退!

22Mar/16

如何利用NFC伪造一张门禁卡

Posted by Nick Xu

0×00 前言

我租住的杭州一个老小区一年前出现了所谓的“出租房杀人事件”,事件过后民警叔叔们给小区的每个单元都装上了门禁,所有住户都需要在物业处登记,物业的工作人员会让你提供身份证或者公交卡用来注册,注册之后就可以刷卡进门了。

但由于某些原因,我并不想去登记注册一张门禁卡,正好手头有一部nexus5,众所周知nexus5是有nfc功能的,我便想能不能用nexus5的nfc功能伪造一张门禁卡呢? 一番尝试之后,就有了下文的方法。 (从来没接触过无线安全,对Proxmark3,acr122u 等设备也是一窍不通,各位大牛见笑了)

0×01分析

由于身份证,公交卡等很多卡都可以用来当门禁卡,那基本上有九成把握这个门禁只是简单读取卡的id,并不会去解密里面的内容,只要简单模拟一个相同id的卡就可以刷开门禁。

0×02“采样”

我们下载一款名为“TagInfo”的android应用,用它来读取一下现在可以刷开门禁的卡信息。(跟同楼的妹子借的)

如下图:

卡的id为:D2:69:76:5B

接着我们找另一台nexus5看一下手机原来的id,扫描出来这台nexus5的id是在不停变化的,如下图:

原来出于安全考虑,android手机的id是一个4个字节长度的随机id,每次连接都会变化,并且都以 “0×80”开头。

android官方并没有提供任何的api可以指定修改nfc的id,但是我们可以用直接修改配置文件的方式来实现,前提当然是手机必须root过了。

0×03Just Do IT

1、到手机的 /etc/ 目录找一个文件名为libnfc-brcm-20791b05.conf,默认情况下,文件中NFA_DM_START_UP_CFG 的配置项是这样的值:

1
{45:CB:01:01:A5:01:01:CA:17:00:00:00:00:06:00:00:00:00:0F:00:00:00:00:E0:67:35:00:14:01:00:00:10:B5:03:01:02:FF:80:01:01:C9:03:03:0F:AB:5B:01:00:B2:04:E8:03:00:00:CF:02:02:08:B1:06:00:20:00:00:00:12:C2:02:00:C8}

2、通过修改这个值就可以改变id。把该文件下载到电脑上,先在最后面增加一个0×33作为标志位,接着接上要指定的id长度,在当前的情况下就是0×04,最后在后面接上要制定的id:“0xD2,0×69,0×76,0x5B”,接着改变最首的数字,加上我们总共增加的字符串长度,这里我们需要加上6,所以最后配置项变成:

1
{4B:CB:01:01:A5:01:01:CA:17:00:00:00:00:06:00:00:00:00:0F:00:00:00:00:E0:67:35:00:14:01:00:00:10:B5:03:01:02:FF:80:01:01:C9:03:03:0F:AB:5B:01:00:B2:04:E8:03:00:00:CF:02:02:08:B1:06:00:20:00:00:00:12:C2:02:00:C8:33:04:D2:69:76:5B}

3、采用adb的方式覆盖系统中原来的文件,然后重启

adb root
adb remount
adb push libnfc-brcm-20791b05.conf /etc/
adb reboot

重启之后我们发现,这台nexus5的id已经被改成了我们想要的。

 

 

拿着修改好的nexus5去试试看?记得必须在唤醒屏幕的情况下nfc才有效。

Tagged as: , Comments Off
22Mar/16

Mac OS X 下部分Android手机无法连接adb问题之解决方案

Posted by Nick Xu

打开终端,在任意当前路经下都可以直接执行adb命令,通过USB线将Android手机和Mac PC连接后,adb devices,没有相应设备的列表。下面是解决办法:
1. 打开终端,输入:system_profiler SPUSBDataType,查看Mac系统所有USB设备信息,找到相应的厂商Vender ID。
查到相应连有Android手机设备的usb hub,找到相应的厂商Vender ID,比如,我的测试机K-Touch T619天语手机就无法连接adb,查到的相应信息片段如下:
  1. -----------------
  2.  Spreadtrum phone:
  3.               Product ID: 0x5d04
  4.               Vendor ID: 0x1782
  5.               ...
  6.        Serial Number: T619
  7.        ...
  8. -----------------

2. 终端进入/Users/user/.android,应该有一个adb_usb.ini文件,如果没有就创建,然后将上面的Vender ID “0x1782”单独一行加入到该文件,然后退出。

  1. # ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT.
  2. # USE 'android update adb' TO GENERATE.
  3. 1 USB VENDOR ID PER LINE.
  4. 0x1782

3. 重启adb server进程。

终端依次执行下面命令:
  1. adb kill-server
  2. adb start-server

然后通过adb devices命令就可以查看到以相应设备Serial Number为名字的设备。如:

  1. -MacBook-Pro:.android user$ adb devices
  2. List of devices attached
  3. emulator-5554   device
  4. T619    device

PS:

1. 有时 adb devices不能显示连接设备,需要拔掉数据线,多插几次,并且退出终端,然后重新打开,再输入命令就能发现连接的设备,再无法连接请重启电脑,等待系统初始化环境设置。
需要注意的是并不是所有的android机器都能解决,比如有的手机有供应商ID,缺少产品ID,依然无法识别,这种奇葩形的就只能找其它方法了。
2. Windows(XP、7)下面也可以同样的方法解决。但是前提也是已经指定了adb环境变量并且安装了相应Android手机设备的adb usb驱动,判断有没有装通过将手机和Windows连接,设备管理器里面没有发现显示有问号的设备就说明装了,有就说明没有安装。然后在C:\Users\username\.android目录下面也有一个adb_usb.ini文件,像前面那样别起一行添加相应设备的Vender ID,重启adb server进程即可。
3. 如果发现无法启动ADB SERVER, 运行下面这行查看具体原因:
adb nodaemon server
Tagged as: , , Comments Off
   
site
site