前言
貌似都是无线电方面的
利用gqrx和rtl_433分析433MHz遥控门铃信号
无线遥控门铃通常工作在 ISM 频段,比如 315Mhz, 433Mhz 和868/915Mhz
在信号调制方面则以 OOK/ASK/FSK 为主,这几种调制方案应用非常广泛,如无线基站,遥控钥匙和胎压系统 TPMS 都有它们的身影
在无线钥匙领域 OOK 的简单性是其它调制方案所不及的,仅需要将载波信号发送到功放和天线,即可表现 “1” 或不发射任何信号即代表 “0”
工具
Gqrx:开源的图形化软件定义无线电(SDR)接收器,支持频谱显示、信号调谐、解调和录制等功能
sudo apt update
sudo apt install gqrx-sdr
rtl_433:专门用于解码来自 433 MHz 无线频段的各种设备信号,如无线温度计、气压计、门窗传感器等,支持多种信号解码方式,包括但不限于协议分析、频谱分析、调制解调等,广泛应用于物联网设备的信号破解和无线电通信的实验研究
目的
解析信号文件,播放信号并查看信号的频谱图
尝试解读经典 433MHz 的无线门铃中的信号信息
步骤
在 gqrx 软件中播放并查看信号的频谱图
设置设备类型为other
Device String 参数:
file=/home/kali/桌面/rev_lab/cap433_200ksps.cf32,freq=433920000000,rate=200000
Input rate 设置为 200000 (对应 200ksps 采样率)
点击播放按钮,即可查看录制信号文件的频谱以及播放信号
利用 rtl_443 工具解析信号
rtl_433 -r cap433_200ksps.cf32 -A
在浏览器中打开链接,可以具体分析信号:
利用Universal Radio Hacker分析2.4G遥控车信号
遥控车小车的遥控器常工作在 2.4 GHz 频段,许多无线设备(如 Wi-Fi、蓝牙、无线鼠标等)也使用 2.4 GHz 频段
工具
Universal Radio Hacker(简称 URH)是一个开源的软件工具,专门用于无线电信号的分析、解码和破解。它允许用户通过软件定义无线电(SDR)硬件(如 RTL-SDR、HackRF)捕捉和分析无线电信号,支持从低频到高频范围的信号捕获。URH 提供了图形化界面,能够进行详细的信号分析,帮助用户识别各种无线协议,包括调频(FM)、幅度调制(AM)、调频调制(FSK)、ASK、OOK 等多种调制方式。它还允许用户以可视化的方式查看信号波形、频谱图和水晶图,从而更好地理解信号特性
URH 具有强大的信号分析功能,不仅可以录制和播放信号,还支持信号的解调和分析,自动化的协议解析功能,帮助用户快速破解和理解无线协议。此外,URH 还允许用户在发现信号之后对其进行解码、重放,并根据需要修改协议参数进行实验
目的
- 解读并分析 2.4GHz 遥控车的信号
- 尝试分析信号协议的格式
步骤
打开并分析信号
点击Autodetect parameters按钮,可以直接自动分析信号的基本参数以及调制信息
信号中的这些部分是环境中的噪声干扰,可以用鼠标滑动选中后直接按键盘上的 Delete 按钮删除
微调Noise部分,使得粉红色区域能覆盖掉所有的底噪
Modulation 选择 FSK ,此时再次点击 Autodetect parameters 按钮,即可分析2.4G遥控器的信号内容:
尝试分析协议格式
点击 Analysis 菜单,选择 Analyze Protocol 即会自动执行针对协议的分析
观察分析的结果,可以发现二进制串多为以下格式:
00110011 00110010 110011 00 01111111 110110 11 010110011 0011001 10101010 011011 00
猜测对应的是操控小车的操作
利用GNU Radio Compaion和qsstv解调卫星传输的图像
SSTV技术本身比较简单,它使用模拟信号将图像“编码”并通过无线电波传输。传输过程中的图像会被分割成多条扫描线,每一条扫描线通过无线电信号发送,并被地面接收站解码为完整的图像。这种方式不需要复杂的数字数据连接,适合在无线电频段上使用,尤其是像太空站这种远离地面的场景
工具
GNU Radio Companion (GRC) 是一个开源的软件开发环境,专为信号处理而设计,特别是在无线通信和无线电频谱分析方面。它提供了一个图形化界面,允许用户通过“块”来构建无线电系统,而无需编写复杂的代码。这些“块”是不同的信号处理模块,如滤波器、调制解调器、放大器等,可以被用户拖放到工作区,并通过连接来组成信号处理链。GNU Radio Companion广泛用于软件定义无线电(SDR)应用中,支持实时信号处理,可以用于教育、研究和实际的通信系统设计。
sudo apt install gnuradio
QSSTV 是一款专门用于接收和发送 SSTV(慢扫描电视)信号的软件,通常用于业余无线电通信。它能够通过电脑与无线电设备的连接,解码 ISS 等发射的 SSTV 信号,并将其转化为图像文件。QSSTV支持多种常见的 SSTV 模式,如 Robot 36 和 Martin 1 等,并能将接收到的图像显示出来。它也是无线电爱好者和业余无线电操作员常用的工具之一,能够与标准的SSTV发射器和接收器兼容,适用于爱好者捕捉和分享来自太空的图像
目的
- 解调模拟的卫星信号文件
- 解码SSTV信号,并尝试提取其中的图像
步骤
利用GNU Radio对信号源文件进行FM解调
源文件名
fm-complex64-sample_rate-48khz-dec_ratio-3_1
中已经包含了一些和信号有关的信息- fm:调制类型
- complex64:信号数据类型
- sample_rate-48khz:采样率
- dec_ratio-3_1:抽取率(原始信号与实际有效信号之比,这里是 3:1)
打开GNU Radio,新建一个项目文件,双击 samp_rate 选项卡,将值改为 48000:
点击搜索按钮,输入 File Source,双击搜索到的 File Souce 选项卡
将出现的模块拖到最左边,双击,在 File 一栏中输入信号文件的路径,Repeat 改为 No
继续搜索:Rational Resampler,拖动到File模块的右边
拖动 File 的 Out,与 Rational Resampler 的 In 相连
用同样的方法查找并添加 NBFM Receive 模块,并连接流程图
双击 NBFM Receive 模块,填写参数:
需要注意的是,Audio Rate 是降采样后的频率,Quadrature Rate 才是信号的原始频率,由于抽取率是3:1,因此音频的频率是48/3=16kHz
用同样的方法添加 Wav File Sink 模块,并连接
双击编辑参数,File 一栏填写需要保存的文件路径,Sample Rate 一栏改为 int(samp_rate/3) 或者 16000
保存后,点击右上角的运行按钮,来运行流程图
几秒钟后,在对应的文件夹中就出现了 wav 文件
利用 Audacity 查看并转换解调的信号文件
打开 Audacity,并在 File -> Open 导入刚刚的 wav 文件
点击 File -> Export Audio,Export to Computer
利用 qsstv 将信号中的音频转换成图片
Options -> Configuration
Sound 选项卡中的 Sound Input 改为 From File,点击OK保存
在 Receive 选项卡中,点击播放按钮,选择刚刚 Audacity 导出的 wav 文件
即会自动对刚刚的 wav 文件中的音频进行 SSTV 解码
此图片在 ISCTF2024 中亦有记载
可以看到这里面是被拆了的二维码点阵,缺了一角是定位点
直接去 QRazybox 手动修复:https://merri.cx/qrazybox/
注意尺寸是29*29
得到flag:
ISCTF{Th3_ROmaNtic_Of_Rad1o}
分析低功耗蓝牙设备的BLE数据包获取智能设备BLE通信密钥
IOT 中,低功耗蓝牙协议(BLE)广泛应用于智能设备之间的通信,如智能手表、智能家居设备、无线耳机等
BLE(Bluetooth Low Energy)协议采用主从架构,通常由一个“主设备”和多个“从设备”组成,支持多种操作模式以确保高效和低能耗通信,协议的常见操作:
- 广播(Advertising):BLE设备通过广播数据包来通知周围的设备其存在,这些广播数据包不需要与其他设备建立连接,因此被称为无连接广播。广播数据包可以包含设备的基本信息、服务UUID(服务标识符)、制造商信息等。广播操作通常用于发现设备、获取设备信息或启动配对过程
- 广告包结构:广告包(Advertising Packet)通常包含一个设备地址、广播数据、广告间隔等信息。广告间隔是指BLE设备发送广告数据包的频率
- 扫描(Scanning):BLE设备可以通过扫描来接收其他设备的广播数据包。扫描分为主动扫描和被动扫描两种方式。主动扫描时,设备会主动向广播设备发送扫描请求,从而获取更多的信息;而被动扫描时,设备仅接收广播数据包。
- 连接(Connection):连接是BLE设备间进行通信的基础。一旦BLE设备通过广播发现了目标设备并完成了配对或配对后建立了连接,设备就可以交换数据。BLE连接通过连接请求(Connection Request)和连接响应(Connection Response)过程来完成。
- 连接过程通常包括设备地址交换、协商连接参数(如连接间隔、数据包大小等)等步骤
- 连接完成后,设备通过数据包交换进行通信
- 数据传输(Data Exchange):在BLE连接中,数据传输是通过数据包进行的。数据包包含了通信双方交换的数据内容、特征值(Characteristics)等信息。BLE支持通过GATT(Generic Attribute Profile)协议来进行数据传输,GATT定义了通信中的服务(Services)、特征(Characteristics)和描述符(Descriptors)。
- 读取和写入操作:设备可以通过GATT进行属性读取(Read)或写入(Write)操作,这些操作可以应用于设备的各种传感器数据、配置信息等
- 配对与加密(Pairing and Encryption):BLE协议支持设备配对和加密操作,以提高通信安全性。配对过程中,设备交换配对信息,如加密密钥或确认码。BLE支持多种安全模式,如 Just Works、Passkey Entry 和 Out of Band,以及加密机制来保护数据安全。
- 加密数据:通过交换加密密钥,BLE通信中的数据流可以被加密,以防止恶意监听和数据篡改。
- 断开连接(Disconnection):在BLE设备完成数据交换后,可以通过发送断开连接的命令(Disconnection Request)来中止连接。设备之间的连接通常是短暂的,设计上是为了降低能耗
前置条件
通过逆向该设备的 app 可知,app 与设备的交互使用了 session_key 作为每次连接后的AES会话密钥,这个密钥在每次连接配对时交换产生,在每次断联后被废弃,下次重新生成
session_key 生成规则:
app与设备建立连接,交换设备型号版本等必要信息。
app订阅智能设备UUID为
bd4ac6100b4511e38ffd0800200c9a66
的Indication。由 app 先生成 8 byte 的随机数A,由控制字符
01000000 +[8 byte随机数A]+[4 byte其他字符]
组成一个指令,由固定密钥2eacd8f48c2dfe15325f25ad8fc8eb96
加密后,加上 2 Byte 的CRC内容(有效数据为前 16 byte),Write 给目标设备 UUID 为bd4ac6100b4511e38ffd0800200c9a66
的服务。智能设备收到上述指令后,生成 8 byte 的随机数B,由控制字符
02000000 +[8 byte随机数B]+[4byte其他字符]
组合指令,由固定密钥2eacd8f48c2dfe15325f25ad8fc8eb96
加密后,加上 2 Byte 的其他数据(有效数据为前 16 byte),通过 Indicate 订阅返还给app。app与智能设备完成密钥交换,令
session_key=A+B
,即为本次通信使⽤的 AES 密钥,本次会话后续所有通信均由 session_key 进行加密后再传输。
步骤
用 Wireshark 分析无线电嗅探设备捕获的数据包
有显示通信来源、目的地、BLE数据包类型,例如 ADV_IND 是 BLE 协议中最常见的广播类型,主要用于设备的可发现广播
这种数据包用于通知附近的设备它的存在,常见于设备希望让其他设备发现并连接到它时。例如,当⼀个 BLE 设备启动并希望被其他设备发现时,它会发送 ADV_IND 类型的广播包。
展开 Bluetooth Attribute Protocol 选项树,可以看到详细的应用层信息。例如92号数据包是交换设备名称等变量
最终找到216号数据包,逆向app后已知的交换随机数密钥的 Service UUID:
bd4ac6100b4511e38ffd0800200c9a66
解密并还原 session_key
key 用的是前面逆向得到的 2eacd8f48c2dfe15325f25ad8fc8eb96
iv 用0填充
CBC/NoPadding 模式
得到 A 为 c2f4c40274acbc32
在220号数据包拿到另一个UUID
同样解密得到 B 为 616b507c0e066eee
那么得到 session_key = A + B = c2f4c40274acbc32616b507c0e066eee
继续找到⼀个后续的交互数据包,尝试用这个 session_key 解密
说明 c2f4c40274acbc32616b507c0e066eee 就是加密后续 BLE 数据包的有效 session_key