The result of tag: (2 results)

基于树莓派实现的便携式NFC破解工具

by LauCyun Aug 27,2018 21:28:59 23,218 views

前段时间从某宝上入手了一个NFC读卡器,通过一些可视化的工具实验了一番,但是效果不太满意。正好前几天在HACKADAY看到一玩意儿,如图1所示:


图1 NFC中继攻击

突然勾起了我的兴趣,谷歌了下相关资料,找到2篇北邮的论文:

本文主要介绍如何利用树莓派打造成一个便携式的NFC工具。

0x0 准备

思路是利用树莓派2B作为介质,通过ACR122U型号的NFC读卡器,读取(libnfc)或破解(mfoc)IC卡。

硬件:

  • 树莓派2B
  • 龙杰ACR122U读卡器


图2 树莓派2B和ACR122U

软件:

0x1 烧写系统

先将SD卡插入到电脑上,查看当前已挂载的卷,判断SD卡是否被读取,如图3所示:


图3 磁盘信息

可以通过相关属性判断,从而得知当前disk2s1就是我们SD卡的分区在系统里对应的文件,如果你的SD卡有多个分区,那么可能还会有disk2s2disk2s3

在烧写系统之前,先执行命令diskutil unmount /dev/disk2s1将SD卡的disk2s1分区卸载,然后执行命令sudo dd bs=8m if=Desktop/nfc/2018-06-27-raspbian-stretch-lite.img of=/dev/disk2进行系统的烧写。

说明:
sudo dd bs=8m if=xxxx of=yyyy

  • “xxxx”代表镜像的名称
  • “yyyy”代表要烧写的sd卡

稍等几分钟,如果出现如图4所示的信息,则表明系统烧写成功了。


图4 树莓派的系统烧写过程

最后,就是执行命令diskutil unmountDisk /dev/disk2卸载SD卡。

0x2 配置

1 开启SSH服务

将刷好系统的SD卡在电脑上打开,进入SD卡根目录并创建一个名为ssh的文件或目录,如图5所示:

图5 创建ssh文件或目录

创建完成后,即可将SD卡从电脑上弹出,然后把SD卡插入树莓派中即可上电开机。

2 更换软件源

用USB转TTL串口线连接电脑,而另一端连接到树莓派GPIO上,其接线如图6所示:


图5 USB转TTL串口接线图

红线(VCC)接排针外面一排,靠近显示灯一端的第一针
黑线(GND)接排针外面一排,靠近显示灯一端的第三针
白线(TXD)接排针外面一排,靠近显示灯一端的第四针
绿线(RTX)接排针外面一排,靠近显示灯一端的第五针

如果电脑是Windows系统,请参考笔记本通过USB转TTL来登陆树莓派 raspberry;如果是macOS系统,请参考Mac OS X上使用USB转串口线连接树莓派

通过USB转TTL线连接上树莓派后,输入用户名是pi,密码是raspberry即可登录树莓派。

接下来,设置树莓派的软件源,将/etc/apt/sources.list文件中默认的源地址http://raspbian.raspberrypi.org/替换为http://mirrors.ustc.edu.cn/raspbian/即可。

raspbian 2018-04-19之后的镜像默认源已经更改,用如下命令替换:

sudo sed -i 's|raspbian.raspberrypi.org|mirrors.ustc.edu.cn/raspbian|g' /etc/apt/sources.list

旧版的系统可以用以下命令替换:

sudo sed -i 's|mirrordirector.raspbian.org|mirrors.ustc.edu.cn/raspbian|g' /etc/apt/sources.list
sudo sed -i 's|archive.raspbian.org|mirrors.ustc.edu.cn/raspbian|g' /etc/apt/sources.list

编辑镜像站后,使用sudo apt-get update命令更新软件源列表,同时检查您的编辑是否正确。

3 安装ACR122U驱动

https://www.acs.com.hk/en/products/3/acr122u-usb-nfc-reader/下载ACR122U最新版本的驱动文件,如下:

sudo wget https://www.acs.com.hk/download-driver-unified/9184/ACS-Unified-Driver-Lnx-Mac-115-P.zip

下载完成后,先解压,然后编译安装:

# 解压
$ sudo unzip ACS-Unified-Driver-Lnx-Mac-115-P.zip Archive:  ACS-Unified-Driver-Lnx-Mac-115-P.zip
   creating: ACS-Unified-Driver-Lnx-Mac-115-P/
  inflating: ACS-Unified-Driver-Lnx-Mac-115-P/acsccid-1.1.5.tar.bz2  
  inflating: ACS-Unified-Driver-Lnx-Mac-115-P/INSTALL  
  inflating: ACS-Unified-Driver-Lnx-Mac-115-P/README  
$ ls -al
total 468
drwxrwsr-x  3 root staff   4096 Aug 24 05:14 .
drwxrwsr-x 10 root staff   4096 Jun 27 00:03 ..
drwxr-sr-x  2 root staff   4096 Nov  2  2017 ACS-Unified-Driver-Lnx-Mac-115-P
-rw-r--r--  1 root staff 465600 Aug 24 05:11 ACS-Unified-Driver-Lnx-Mac-115-P.zip
$ cd ACS-Unified-Driver-Lnx-Mac-115-P/
$ sudo tar -jxvf acsccid-1.1.5.tar.bz2 
# 安装
$ cd acsccid-1.1.5/
$ sudo ./configure
$ sudo make
$ sudo make install

如果安装过程中出现以下错误:

4 安装libnfc

libnfc是NFC的一个基础SDK库,其官方介绍如下:

libnfc is the first libre low level NFC SDK and Programmers API released under the GNU Lesser General Public License. 
It provides complete transparency and royalty-free use for everyone. 

由于libnfc依赖libusb、libpcsclite,所以需要安装编译环境:

sudo apt-get install -y make gcc libusb-dev libpcsclite-dev

下载libnfc-1.7.1.tar.bz2、解压、编译安装:

# 下载
$ sudo wget https://github.com/nfc-tools/libnfc/releases/download/libnfc-1.7.1/libnfc-1.7.1.tar.bz2
# 解压
$ sudo tar -jxvf libnfc-1.7.1.tar.bz2
# 安装
$ cd libnfc-1.7.1/
$ sudo ./configure --with-drivers=acr122_usb --prefix=/usr --sysconfdir=/etc
$ sudo make
$ sudo make install

5 安装mfoc

先安装mfoc编译环境:

sudo apt-get install autoconf checkinstall

然后从https://github.com/nfc-tools/mfoc/releases下载最新版安装文件、然后解压、编译安装:

# 下载
$ sudo wget https://github.com/nfc-tools/mfoc/archive/mfoc-0.10.7.tar.gz
# 解压
$ sudo tar -zxvf mfoc-0.10.7.tar.gz
$ cd mfoc-mfoc-0.10.7/
# 编译
$ sudo autoreconf -vis
$ sudo ./configure
$ sudo make
# 安装
$ sudo checkinstall -D -y --install
$ sudo make install

6 禁用pn533内核模块

需要禁用掉pn533的内核模块,不然树莓派是识别不了ACR122U,详细可参考ACR122U NFC USB reader on a Raspberry Pi

/etc/modprobe.d/fbdev-blacklist.conf中添加如下内容:

blacklist nfc
blacklist pn533
blacklist pn533_usb

然后,将ACR122U连接到树莓派,查看一下是否识别,如图6所示:


图6 读取到的NFC设备

0x3 破解演示

随便找了一张卡,然后把卡放到ACR122U上,如图7所示:


图7 待破解的超市卡

执行如下命令开始破解,破解完成之后保存的文件名为test.mfd

sudo mfoc -P 50 -T 30 -O test.mfd

从图8得知,扇区3被加密了:


图8 扇区3已加密

如果对M1卡结构不熟悉的朋友,可以先了解其结构如图9所示:


图9 M1卡结构

大约等了10分钟左右,破解完成!


图10 破解成功

查看一下test.mfd,卡中数据全部都能看到,推荐使用mfdread.py进行可视化查看,如图11所示:

图11 可视化查看卡中数据

如上图11所示,扇区3中的数据为30313030303037393630****,破解得到0100007960**,正好跟卡号一致,所以此卡里存储的数据为卡号。

到这里,如果把卡中的卡号改成他人的卡号,你懂的winkwinkwink

 0x4 参考

...

Tags Read More


Compile Raspberry Pi Kernel

by LauCyun May 28,2017 09:52:24 12,758 views

使用官方给的镜像搭建好了树莓派的开发环境,可以说已经可以上手应用了,但是如果官方提供的内核有些功能不能满足我们的需要或者需要对内核进行部分裁剪,那么就需要对树莓派的内核进行裁剪,本篇将讲解如何自己编译最新的 Linux Kernel 给你的 Raspberry Pi 使用。
1. 下载编译工具、Kernel源文件、固件 Firmware

下载地址:https://github.com/raspberrypi

上面列出了树莓派所有的开源软件:

  • firmware:树莓派的交叉编译好的二进制内核、模块、库、bootloader
  • linux:内核源码
  • tools:编译内核和其他源码所需的工具——交叉编译器等

我们只需要以上三个文件即可,下面的源码可以了解一下:

  • documentation:树莓派离线帮助文档,教你如何使用、部署树莓派(树莓派官方使用教程)
  • userland:arm 端用户空间的一些应用库的源码——vc 视频硬浮点、EGL、mmal、openVG 等
  • hats:Hardware Attached on Top,树莓派 B+ 型板子的扩展板资料
  • maynard:一个 gtk 写成的桌面环境
  • scratch:一个简易、可视化编程环境
  • noobs:一个树莓派镜像管理工具,他可以让你在一个树莓派上部署多个镜像
  • weston:一个应用程序
  • target_fs:树莓派最小文件系统,使用 busybox 制作
  • quake3:雷神之锤 3 有线开发源码 firmwareb

下载源码:

$ mkdir raspeberrypi_src
$ cd raspberrypi_src
$ git clone git://github.com/raspberrypi/firmware.git
$ git clone git://github.com/raspberrypi/linux.git
$ git clone git://github.com/raspberrypi/tools.git

会得到三个文件夹:firmware、linux、tools

图1 编译工具、Kernel源文件、固件 Firmware

 

2. 编译、提取内核及其模块

2.1 获得内核配置文件

在运行的树莓派中运行

$ ls /proc/

可看到一个叫 config.gz 的文件,他是当前的树莓派配置选项记录文件,我们将他拷出,放入我们的内核源码目录树下。

$ cp /proc/config /home/pi

我们这里使用前面交过的 samba 拷出并拷入内核源码目录下,不熟悉的人可参考前面文章。

在 linux 内核源码下执行

$ zcat config.gz > .config

2.2 配置、编译内核

修改内核源码 makefile ARCH 类型和编译器路径$vi Makefile +195,找到以上类似代码,改为如图所示。

查看、修改配置选项$make menuconfig,可出现以下界面。

如果不做修改,直接选中 exit 即可(注意使用键盘操作)。

编译内核镜像$makearch/arm/boot目录下可以看到一个叫zImage的文件,就是我们新的内核,但是树莓派需要另外一种格式的镜像,需要进行处理一下,执行以下命令

$ cd tools/mkimage

$./imagetool-uncompressed.py ../../linux/arch/arm/boot/zImage

即可在当前文件夹下看到一个叫kernel.img的文件,就是我们需要的新内核了。

提取 modules 上一步其实不但编译出来了内核的源码,一些模块文件也编译出来了,这里我们提取一下,

$ cd raspberrypi_src
$ mkdir modules
$ cd linux
$ make modules_install INSTALL_MOD_PATH=../modules

即可在 modules 得到我们需要的模块文件。

...

Tags Read More