ChameleonMini使用教程

来自RadioWar Wiki
跳转至: 导航搜索

安装客户端

ChameleonMini 常见的支持两种跨平台的方式来进行硬件的操控,一种是使用命令行终端软件用命令进行操控,另一种是使用官方自带的一个用 Python 编写的工具实现操控。在 Windows 平台上还有第三方编写的 GUI 客户端软件。

Windows

在 Windows 上使用需要先安装驱动,安装方法参考 Proxmark3 驱动安装,驱动文件在 ChameleonMini 项目文件的 ChameleonMini/Drivers/ 文件夹里(RevE 版本在 RevE/ 文件夹里)。

ChameleonMini GUI 客户端:http://bronken.de/chameleonminigui/

Windows 上也能通过诸如 TeraTerm, PuTTY 之类的支持 COM 串口通信的命令行软件进行操作。这里不重复讲解,可以参考 Linux 部分的使用方法。

Linux

在 Linux 上可以使用 cu, minicom, socat 等客户端对硬件进行控制,这里我们使用 socat 工具。

安装 socat

apt-get install socat

连接 ChameleonMini 到电脑,并通过命令行控制设备。

socat - /dev/ttyACM0,crnl

获取固件版本信息

VERSION?    // 你输入的命令(这里并不会有命令行提示符显示)
101:OK WITH TEXT    // 设备返回的确认信息
Chameleon-Mini 150304 using LUFA 130901 compiled with AVR-GCC 4.8.1    // 设备返回的数据信息

获取配置与设置配置信息

config?                 // 你输入的命令(查看当前配置的卡信息)
101:OK WITH TEXT        // 设备返回的确认信息
MF_UL TRALIGHT          // 设备返回的数据信息
config                  // 你输入的命令(查看所有可配置的卡)
101:OK WITH TEXT        // 设备返回的确认信息
NONE,MF_ULTRALIGHT,MF_CLASSIC_1K,MF_PLUS1K_7B,MF_CLASSIC_4K,ISO14443A_SNIFF    // 设备返回的数据信息
config=MF_CLASSIC_1K    // 你输入的命令(配置当前卡为 Mifare Classic 1K 卡)
100:OK                  // 设备返回的确认信息
config?                 // 你输入的命令(查看当前配置的卡信息)
101:OK WITH TEXT        // 设备返回的确认信息
MF_CLASSIC_1K           // 设备返回的数据信息(当前配置为 Mifare Classic 1K 卡)

设置模拟 Mifare Classic 1K 卡的 UID

uid?                // 你输入的命令(查看当前的 UID)
101:OK WITH TEXT    // 设备返回的确认信息
00000000            // 设备返回的数据信息(当前 UID 为 00000000)
uid=ABCD1234        // 你输入的命令(设置 UID 为 ABCD1234)
100:OK              // 设备返回的确认信息
uid?                // 你输入的命令(查看当前的 UID)
101:OK WITH TEXT    // 设备返回的确认信息
ABCD1234            // 设备返回的数据信息(当前 UID 为 ABCD1234)

ChamTool.py

ChamTool.py 是 ChameleonMini 项目官方自带的一个用 Python 编写的客户端工具,可跨平台使用。

安装 Python 和依赖包

apt-get install python3
cd ChameleonMini/Software/
pip install -r requirements.txt

使用

$ ./chamtool.py -h
usage: chamtool.py [-h] [-v] [-p COMPORT] [-u DUMPFILE] [-d DUMPFILE]
                   [-l LOGFILE] [-i] [-s [{1,2,3,4,5,6,7,8}]] [-U [UID]]
                   [-c [CFGNAME]] [-lb [ACTION]] [-rb [ACTION]]
                   [-gl [FUNCTION]] [-rl [FUNCTION]]

Controls the Chameleon through the command line

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose         output verbose
  -p COMPORT, --port COMPORT
                        specify device's comport

Chameleon commands:
  These arguments can appear multiple times and are executed in the order
  they are given on the command line. Some of these arguments can be used
  with '?' as parameter to get a list of suggestions.

  -u DUMPFILE, --upload DUMPFILE
                        upload a card dump
  -d DUMPFILE, --download DUMPFILE
                        download a card dump
  -l LOGFILE, --log LOGFILE
                        download the device log
  -i, --info            retrieve the version information
  -s [{1,2,3,4,5,6,7,8}], --setting [{1,2,3,4,5,6,7,8}]
                        retrieve or set the current setting
  -U [UID], --uid [UID]
                        retrieve or set the current UID
  -c [CFGNAME], --config [CFGNAME]
                        retrieve or set the current configuration
  -lb [ACTION], --lbutton [ACTION]
                        retrieve or set the current left button action
  -rb [ACTION], --rbutton [ACTION]
                        retrieve or set the current right button action
  -gl [FUNCTION], --gled [FUNCTION]
                        retrieve or set the current green led function
  -rl [FUNCTION], --rled [FUNCTION]
                        retrieve or set the current red led function

读取 RFID 卡

打开终端输入命令

CONFIG=ISO14443A READER    // 你输入的命令
_G@ISO14443A READER_100:OK    // 设备返回的确认信息

IDENTIFY    // 你输入的命令
101:OK WITH TEXT    // 设备返回的确认信息
MIFARE Cڱ__ 1▒ .A.▒s.A@.▒t▒6u/=$A    // 设备返回的数据信息(下同)
ATQA: 0400
UID: ABCD1234
SAK: 08

嗅探 RFID 卡

进行嗅探 RFID 卡你还需要有一个 ACR122U 读卡器和一张符合 ISO14443A 的被嗅探 RFID 卡。

首先将 ACR122U 和 ChameleonMini 连接到电脑,再将 ChameleonMini 放置于 ACR122U 上,被嗅探的卡放在与 ChameleonMini 上。

在终端程序上输入命令

LOGMODE=TERMINAL    // 你输入的命令
100:OKE=TERMINAL    // 设备返回的确认信息

开始嗅探

CONFIG=ISO14443A_SNIFF    // 你输入的命令
100:OK=ISO14443A_SNIFF    // 设备返回的确认信息
...
...                       // 返回类似乱码的嗅探信息(此处省略)
...

停止嗅探

CONFIG=NONE

使用 ChamTool.py 工具嗅探

./chamtool.py -v -p /dev/ttyACM0 -c ISO14443A_SNIFF

模拟 RFID 卡

使用 ChameleonMini 模拟另一张 RFID 卡,需要你先获得那张卡的完整扇区数据再将数据上传到 ChameleonMini 硬件存储内开始模拟,文件格式为 .mfd 的十六进制文件。

获取原始 RFID 的完整扇区数据你可以使用 Proxmark3 或者 ACR122U or PN532 + mfoc 破解获得 RFID 卡所有扇区的 Key 并 Dump 所有扇区的数据。

Dump 下来的数据可能会是 ASCII 的存文本格式或者是与卡内格式一样的十六进制,ChameleonMini 只支持导入十六进制格式的,如果是其他格式数据你先需要将它转换为十六进制的文件。

Proxmark3 客户端内自带转换工具 pm3_eml2mfd.py ,你也可以手动使用 HxD Hex Editor, WinHex 等 十六进制编辑器创建编辑一张卡的数据。

当有了 Dump 文件后你可以使用 SecureCRT 或其他终端连接到 ChameleonMini 串口把文件上传上去。

在终端输入 UPLOAD 命令,打开 传输 > 发送 Xmodem > 找到你要上传的文件。

UPLOAD

上传完成后再在终端设置你的卡片类型,如:CONFIG=MF_CLASSIC_1K 设置卡片为 Mifare Classic 1K 卡

CONFIG=MF_CLASSIC_1K

使用 ChamTool.py 工具上传卡数据文件

./chamtool.py -p /dev/ttyACM0 -u card.mfd

模拟多张 RFID 卡

模拟多张卡需要用到 ChameleonMini 的按钮功能用以切换不同的卡片,并把不同的卡片数据上传上去,按钮功能是可自定义配置,最多支持 8 张卡的存储和切换。

在终端输入 "button" 命令

button    // 查看按钮的配置选项
101:OK WITH TEXT
NONE,UID_RANDOM,UID_LEFT_INCREMENT,UID_RIGHT_INCREMENT,UID_LEFT_DECREMENT,UID_RIGHT_DECREMENT,CYCLE_SETTINGS,STORE_MEM,RECALL_MEM

配置按钮功能为切换卡片

button=CYCLE_SETTINGS    // 开启按钮的卡片切换功能
100:OK
setting?    // 查看当前的卡片编号
101:OK WITH TEXT
1
config?    // 查看当前卡片类型的配置信息
101:OK WITH TEXT
MF_CLASSIC_1K
uid?    // 查看当前的 UID
101:OK WITH TEXT
ABCD1234
setting=2    // 设置卡片编号
100:OK
setting?    // 查看当前的卡片编号
101:OK WITH TEXT
2
config=MF_ULTRALIGHT    // 设置卡片类型
100:OK
config?    // 查看当前卡片类型的配置信息
101:OK WITH TEXT
MF_ULTRALIGHT
uid=AABBCCDDEEFF11    // 设置 UID
100:OK
uid?    // 查看当前的 UID
101:OK WITH TEXT
AABBCCDDEEFF11

按钮的功能配置和说明

按钮配置                  功能说明

NONE                   // 什么都不做
UID_RANDOM             // 生成随机 UID
UID_LEFT_INCREMENT     // 将 UID 的最左十六进制值增加 1
UID_RIGHT_INCREMENT    // 将 UID 的最右边的十六进制值增加 1
UID_LEFT_DECREMENT     // 将 UID 的最左边十六进制值减少 1
UID_RIGHT_DECREMENT    // 将 UID 的最右边的十六进制值减少 1
CYCLE_SETTINGS         // 允许按钮在多张卡之间切换
STORE_MEM              // 存储内存
RECALL_MEM             // 记忆输出(还原存储的内存)

烧录固件

Chameleon Mini 的 MCU 使用的是 Atmel 的 AVR ATxmega 系列的处理器,烧录固件的方法与烧录其他 AVR 单片机固件的方法一样。

可以使用 AVRISP mkII, USBasp 等编程硬件工具加上 Atmel Studio, AVRDUDE 等编程软件客户端,烧录 Bootloader 和固件。

接线针脚,Chameleon-Mini 底部一排未焊接的焊盘是标准的 ATxmega 编程引脚,以有贴片元件的一面为正面,正面 3 个引脚分别是 VCC, NC, GND 正对的背面 3 个分别是 PDI_DATA, NC, PDI_CLK/RST。

升级固件

Chameleon Mini 使用了 USB DFU Bootloader,可直接使用 USB 连接硬件升级固件。(只有烧录了 Bootloader 的才支持,自己制作的裸板需要先烧录 Bootloader。)

Linux 用户升级固件

apt-get install avra avrdude
avrdude -c flip2 -p ATXMega128A4U -B 60 -P usb -U application:w:Chameleon-Mini.hex:i -U eeprom:w:Chameleon-Mini.eep:i

Windows 用户升级固件

1. 下载 dfu-programmer 0.7.2

2. 解压到目录,然后打开文件夹 dfu-prog-usb-1.2.2 ,安装 "atmel_usb_dfu.inf" 驱动程序。(右键单击 > 安装)

3. 将 dfu-programmer.exe 复制到 hex 和 eep 文件的同一目录里。

4. 将 ChameleonFirmwareUpgrade.bat 复制在与 hex 和 eep 文件相同的目录里。

5. 以管理员身份运行 ChameleonFirmwareUpgrade.bat 等待固件升级终止。(成功后 ChameleonMini 的绿色 LED 应该亮起来)