ubuntu搭建nfc测试环境(libnfc+mfoc)

系统:ubuntu18.04
libnfc官网:libnfc
libnfc github: libnfc github
硬件:pn532、ch341usb转串口模块

1.安装git

sudo apt install git

2.安装依赖库

sudo apt-get install libusb-dev libpcsclite-dev libusb-0.1-4 libpcsclite1 libccid pcscd

3.插上usb转串口模块,检查驱动有没有安装过,终端运行:

lsmod | grep usbserial  

若有

usbserial              45056  1 ch341

这样的,说明系统支持usb转串口。终端运行:

dmesg | grep ttyUSB0

如果出现以下连接成功的信息,则说明系统已识别该设备了。

usb 3-4.3: ch341-uart converter now attached to ttyUSB0

驱动已安装好。如果没有,需安装usb转串口驱动。终端运行:

sudo apt-get install minicom

安装好后,终端运行:

sudo minicom -s

这时会弹出配置界面,使用方向键选择 Serial port setup ,按Enter键,进入设置环境。
输入a或者A,选择串口设备,在这里我使用的是USB转串口,将/dev/tty8修改为/dev/ttyUSB0。
配置完串口设备后,按Enter键。输入E可以配置波特率,pn532按默认配置即可,不用改波特率 115200 8N1 (波特率:115200,数据位:8,奇偶校验位:N 无,停止位:1)。
输入F,配置硬件流控,选择NO,再继续配置软件流控,也选择NO。都配置完后,按下Enter键返回上一界面,选择save setup as dfl(即将其保存位默认配置),再选择Exit,关闭minicom。
再次输入命令 sudo minicom,使刚才的配置生效,可以看到串口输出信息,串口配置完成。

4.在etc下新建nfc文件夹,放配置文件(这一步解决后面会遇到的执行nfc-list时出现No NFC device found的问题)

sudo mkdir /etc/nfc && sudo mkdir /etc/nfc/devices.d/
sudo vim /etc/nfc/devices.d/pn532_via_uart2usb.conf

pn532_via_uart2usb.conf文件里添加以下配置语句:

# Typical configuration file for PN532 board (ie. microbuilder.eu / Adafruit) device 
name = "Adafruit PN532 board via UART" 
connstring = pn532_uart:/dev/ttyUSB0 
allow_intrusive_scan = true 
log_level = 3

5.选择一个libnfc要安装的目录,在该目录下终端运行:

git clone https://github.com/nfc-tools/libnfc.git

然后libnfc会下载到该目录的libnfc文件夹下。

6.终端运行:

cd libnfc
sudo autoreconf -vis
 ./configure --prefix=/usr --with-drivers=pn532_uart --sysconfdir=/etc

可能会遇到的错误:
1.'doxygen is mandatory.'
安装doxygen:
选择一个doxygen要安装的目录,在该目录下终端运行:

git clone https://github.com/doxygen/doxygen.git
cd doxygen
mkdir build
cd build
cmake -G "Unix Makefiles" ..
make

没有cmke的再安装一下cmake:

sudo apt install cmake

make完后,终端运行:

sudo make install

以安装doxygen。
2.'PKG_CHECK_MODULES ERROR'

./configure: line 14085: syntax error near unexpected token `libusb,'
./configure: line 14085: 'PKG_CHECK_MODULES(libusb,libusb,HAVE_LIBUSB=1,HAVE_LIBUSB=0)' 

论坛上说安装pkg-config,安装了后可以解决。实测安装了后这个问题还在,由于支持的库已经确认安装好了,我的做法是直接vim打开configure文件,找到对应行的位置,注释掉。一共有3处PKG_CHECK_MODULES。(vim 冒号加行数+回车即跳转到该行,加#号注释)。注释完后configure可以执行完毕。最后可以看到:

Selected drivers:
acr122_pcsc...... no
acr122_usb....... no
acr122s.......... no
arygon........... no
pn53x_usb........ no
pn532_uart....... yes
pn532_spi....... no
pn532_i2c........ no

7.在libnfc文件夹下终端运行:

make

8.安装libnfc:

sudo make install

9.验证安装是否成功:

将PN532接上usb转串口模块,usb转串口模块插入PC USB接口,然后进入如下目录:
libnfc/utils,运行程序:

sudo ./nfc-list

出现以下信息表示安装成功:

NFC device: Adafruit PN532 board via UART opened

下面就可以把卡放在PN532上去使用libnfc了。
libnfc常用指令:

nfc-list:
Lists the first target present of each founded device

nfc-mfclassic:
Usage: nfc-mfclassic r|w a|b <dump.mfd> [<keys.mfd>]
  r|w           - Perform read from (r) or write to (w) card
  a|b           - Use A or B keys for action
  <dump.mfd>    - MiFare Dump (MFD) used to write (card to MFD) or (MFD to card)
  <keys.mfd>    - MiFare Dump (MFD) that contain the keys (optional)
Or: nfc-mfclassic x <dump.mfd> <payload.bin>
  x             - Extract payload (data blocks) from MFD
  <dump.mfd>    - MiFare Dump (MFD) that contains wanted payload
  <payload.bin> - Binary file where payload will be extracted

10.安装mfoc

选择一个mfoc要安装的目录,在该目录下终端运行:

git clone https://github.com/nfc-tools/mfoc

克隆好后,打开文件夹:

cd mfoc/
autoreconf -vis
./configure
make
sudo make install

即可安装完成,测试是否安装好:

cd src/
mfoc -h

输出:

Usage: mfoc [-h] [-k key] [-f file] ... [-P probnum] [-T tolerance] [-O output]

  h     print this help and exit
  k     try the specified key in addition to the default keys
  f     parses a file of keys to add in addition to the default keys 
  P     number of probes per sector, instead of default of 20
  T     nonce tolerance half-range, instead of default of 20
        (i.e., 40 for the total range, in both directions)
  O     file in which the card contents will be written (REQUIRED)
  D     file in which partial card info will be written in case PRNG is not vulnerable

Example: mfoc -O mycard.mfd
Example: mfoc -k ffffeeeedddd -O mycard.mfd
Example: mfoc -f keys.txt -O mycard.mfd
Example: mfoc -P 50 -T 30 -O mycard.mfd

This is mfoc version 0.10.7.
For more information, run: 'man mfoc'.

安装完毕。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容