RFIDler:一款定义RFID的读、写、仿真器的开源软件

  很多类似于 RFID这样的技术看起来都很神秘,实际上他是依赖于很多物理学原理的,比如 ” 电磁感应原理 ” 。是的,这些现象产生的各种信号足以令人发狂,看完这些模拟模拟信号后,我忽然发现二进制信息多么干净美丽。

  

 

  所以我一直在找一个工具,可以把这些模拟世界转化成友好的数据,RFID就是主要的对象。近些年来,越来越多RFID/NFC产品出现了,可能在你的口袋里就有好几个这样的东西——比如,你的车钥匙、门的钥匙、信用卡等等。当然,他们都有各自的RFID阅读器可以读取他们的信息,但是我关心的是,有没有一个RFID阅读器可以读取所有RFID上的信息,并且这个阅读器还很小且很便宜。

  凭心而论,似乎有很多阅读器都可以达到我的要求,你可以买个很简单的RFID USB阅读器,大概也只需要10-15英镑。但是之后你就会发现,这些便宜的阅读器几乎都只能阅读一个标准下的RFID,你需要很多个这样的RFID阅读器才行。也有像Proxmark3这样的可以阅读所有RFID的,但是价格不菲呀。当然PM3确实是值得一看的,它被称为“RFID界的瑞士军刀”。它能够阅读很多版本的信号,无论是高频还是低频,稍后我们也将用它来举个例子。

  RFID标签

  所以,在开始前,我们不禁要发问,RFID标签是用来做什么的呢?

  基本上他有两个作用:

  1. 基本上所有RFID标签都是唯一的,都可以用来特定的标识自身

  2. 一些标签具有数据存储功能

  围绕着这两个基本的作用,可以展开很多——标签是盲目的展现ID或者DATA内容吗?或者换一句话说,在构建他们的时候是否有做一些安全措施?这些存储的都是些简要的信息,因此如果你想写入更长更多的信息,标签是否有空间可以写入?在这篇文章中,我的目的是讨论一些模拟世界中一些基础的通信过程,并且尽可能的把它们显示出来。

  RFID&感应现象

  这些技术基本都是依赖于 ” 感应现象 ” 。简单来说就是RFID/NFC都是依赖于你去激励一个线圈,同时让另一个线圈靠近它,第二个线圈就会通过感应从第一个线圈获取到部分能量,即两个线圈很神奇的发生了耦合(或者说是电磁感应)。同时,第二个线圈很有可能将会影响到第一个线圈的电压,例如靠近第一个线圈,第一个线圈的电压就下降了,我们称这种现象为“阻尼现象”。这就是RFID的工作原理,总结来说就是:线圈间相互的沟通是通过发送能量(从阅读器发出),或者引起了另一个线圈的能量变化(从RFID标签)来进行的。

  在本文中,为了能得到更多的细节我们将会使用最简单的方式标记RFID标签——直接通过一个ID来识别,同时我们要先构建以下环境:阅读器通过反复激励线圈给线圈供能。作为一个标准的低频系统,它的频率将会是每秒125000次,也就是125KHz,这些被称为 ” 载波信号 ” 。RFID标签线圈被放在一定区域内的时候,将会从产生一些能量,变成电感耦合线圈并且进入激活状态。如果阅读器想要发送一个 ” 唤醒(或者其他) ” 命令,可以通过开关把载波信号的电源关闭很短的一段时间。就算标签失去了电源,它依然可以依赖储存的能量继续工作一段时间,我们可以很容易的通过改变载波信号之间的缺口长短就可以代表0和1两种信号,基于这一特点,阅读器就能发送二进制信息了。

  换一句话说,他们是通过幅移键控(ASK)来承载信息的,调整信号的振幅来代表不同的数据。更精确的一种方式是开关键控(OOK)。从阅读器发送给标签的信息被设计成ON和OFF两种载波,返回的信号响应的为阻尼和非阻尼两种。

  信号分析

  说了这么些个,大家好像一脸懵逼的样子,事实上我翻译的也有点懵逼了=。= 为了更容易理解,接下来我们用图来说明。下图是一个在示波器下观察到的125KHz的载波:

  

 

  接下来是阅读器给标签发送的一个信号: