楼主所在的某电子科技类大学,从宿舍楼到实验楼到图书馆办公楼,全部都有门禁,前两天突然在某安软件市场看到一个可以模拟门禁卡的软件,然而可能是我的手机系统太6了,竟然模拟不了,无奈自己动手,从根本上解决问题:

先来看 freebuf 的两篇文章:

RFID Hacking:看我如何突破门禁潜入 FreeBuf 大本营
如何利用 Nexus 5 伪造一张门禁卡

貌似并不难:使用带有 NFC 功能的手机模拟门禁卡的 ID 号,

部分门禁卡的读卡器只读取卡的 ID 值。

手机 NFC 卡的信息可以通过配置文件进行修改。

前提是你的手机已经获取 root 权限。

基本步骤在前两个帖子里面都已给出,这里只介绍一下我的实施过程,本人手机nexus 6p,系统6.0.1

开搞:

first

最先做的事情当然是要找一张有效的卡片,获取它的ID信息。在手机上下载 NFC 软件来读取卡片信息,一般来说用上文提到的NFC门禁卡模拟器:NFC Emulator就可以获取 ID 号了,但是这个信息不全面,我们还需要通过NFC Tools软件来知道我们卡片的NFC Tag type,如图:

射频标签的通信标准是标签芯片设计的依据,

目前国际上与RFID相关的通信标准主要有:

  • ISO/IEC 18000标准(包括7个部分,涉及125KHz, 13.56MHz, 433MHz, 860-960MHz, 2.45GHz等频段),
  • ISO11785(低频),
  • ISO/IEC 14443标准(13.56MHz),
  • ISO/IEC 15693标准(13.56MHz),
  • EPC标准(包括Class0, Class1和GEN2等三种协议,涉及HF和UHF两种频段),
  • DSRC标准(欧洲ETC标准,含5.8GHz)。

可以看到,我的卡片的频率标准是13.56MHz,而我手机配置文件给出的频率标准是19.2MHz,需要修改手机的配置文件。

其中有一行 Serial number,一共四个字节,就是卡的 ID 号,在其它 NFC 读取软件上也许叫 ID,总之就是卡的标识。

second

接下来需要对手机进行操作了,使用re管理器(或者es管理器)进入手机根目录,挂载为读写,依次进入system/etc,找到libnfc-nxp.conf这个文件,建议先对该文件备份。

打开libnfc-nxp.conf,可以看到这样一段:

###############################################################################
# System clock frequency selection configuration for PLL
# CLK_FREQ_13MHZ - 0x01
# CLK_FREQ_19_2MHZ - 0x02
# CLK_FREQ_24MHZ - 0x03
# CLK_FREQ_26MHZ - 0x04
# CLK_FREQ_38_4MHZ - 0x05
# CLK_FREQ_52MHZ - 0x06
NXP_SYS_CLK_FREQ_SEL=0x02

这里对我们手机NFC的频率进行了配置,需要改成上文中提到的13.56MHz,也就是

NXP_SYS_CLK_FREQ_SEL=0x01

不同手机的配置参数可能不一样,具体请自行斟酌。

再往下我们能看到这样一段:

###############################################################################
# Core configuration settings
# It includes
# 18 - Poll Mode NFC-F: PF_BIT_RATE
# 21 - Poll Mode ISO-DEP: PI_BIT_RATE
# 28 - Poll Mode NFC-DEP: PN_NFC_DEP_SPEED
# 30 - Lis. Mode NFC-A: LA_BIT_FRAME_SDD
# 31 - Lis. Mode NFC-A: LA_PLATFORM_CONFIG
# 33 - Lis. Mode NFC-A: LA_NFCID1
# 50 - Lis. Mode NFC-F: LF_PROTOCOL_TYPE
# 54 - Lis. Mode NFC-F: LF_CON_BITR_F
# 5B - Lis. Mode ISO-DEP: LI_BIT_RATE
# 60 - Lis. Mode NFC-DEP: LN_WT
# 80 - Other Param.: RF_FIELD_INFO
# 81 - Other Param.: RF_NFCEE_ACTION
# 82 - Other Param.: NFCDEP_OP
NXP_CORE_CONF={20, 02, 2B, 0D,
18, 01, 01,
21, 01, 00,
28, 01, 00,
30, 01, 08,
31, 01, 03,
33, 04, 01, 02, 03, 04,
50, 01, 02,
54, 01, 06,
5B, 01, 00,
60, 01, 0E,
80, 01, 01,
81, 01, 01,
82, 01, 0E
}

从注释可以看出,33代表了 ID 信息,找到33所在的行,04很明显是4个字节的信息长度,之后的01, 02, 03, 04就是你手机对外呈现的 ID 号了,综合前人的帖子可以看出,这里的 ID 号基本都是01, 02, 03, 04,应该不存在不同手机不一样的情况,所以直接找到这四个数据,改成第一步我们读到的我们的卡片的 ID 号,然后保存,退出,重启手机。

last

为了验证是否修改成功,我们需要另外一部支持 NFC 的手机,也装上上面的 NFC Tools 。把自己的手机当作 NFC 卡,用另一个手机来读取其标识号。

如果读到的 ID 号跟我们卡片的ID号一样,那么就收工了,我要拿着卡片出去装逼了~~~

append

经过实际测试,图书馆和主楼的门禁可以进入,老科技楼刷卡之后有反应,但是不能成功识别,宿舍楼压根儿一点反应都没有。

经过反复试验和网上搜索,最后结论:

如果门禁系统只读取卡片的ID号的话,那么上述方法是可行的,但是如果它还校验了卡片的其他信息,那么我们的 DIY 还得继续深入

最新文章

  1. AO安装需要Microsoft Visual Studio 2013?
  2. linux shell 读取for循环中出现难处理的数据之单引号错误实例
  3. 谈一次php无限极分类的案例
  4. [webgrid] – header - (How to Add custom html to Header in WebGrid)
  5. iOS应用支持IPV6
  6. 【Android】 PopupWindow使用小结
  7. linux cat 命令详解--转
  8. Hack--兼容性测试
  9. Unity-资源
  10. 我的第一个QML Button的实现
  11. VC++ 编译过程
  12. 转:Jmeter 用户思考时间(User think time),定时器,和代理服务器(proxy server)
  13. Postmessage运用-往飞信添加信息
  14. SpringBoot 中常用注解@PathVaribale/@RequestParam/@GetMapping介绍
  15. 解析xml,返回第一级元素键值对。如果第一级元素有子节点,则此节点的值是子节点的xml数据。
  16. frame的用法
  17. android升级gradle到3.4.1
  18. 《CSAPP》地址翻译
  19. 【python-dict】dict的使用及实现原理
  20. 【题解】Luogu P5072 [Ynoi2015]盼君勿忘

热门文章

  1. NeHe OpenGL教程 第四十一课:体积雾气
  2. EasyUI-draggable
  3. 斑马打印机网卡ZebraNet配置(有线)
  4. jquery源码
  5. 在ubuntu下安装phpmyadmin 出现404错误
  6. javascript最新深度克隆对象方法
  7. js中表单提交后按钮变灰色的功能
  8. js替换字符串中全部“-”
  9. 微信红包签名算法 C#代码实现
  10. 利用python yielding创建协程将异步编程同步化