目录

  1. 1. 前言
  2. 2. 利用gqrx和rtl_433分析433MHz遥控门铃信号
    1. 2.1. 工具
    2. 2.2. 目的
    3. 2.3. 步骤
  3. 3. 利用Universal Radio Hacker分析2.4G遥控车信号
    1. 3.1. 工具
    2. 3.2. 目的
    3. 3.3. 步骤
  4. 4. 利用GNU Radio Compaion和qsstv解调卫星传输的图像
    1. 4.1. 工具
    2. 4.2. 目的
    3. 4.3. 步骤
  5. 5. 分析低功耗蓝牙设备的BLE数据包获取智能设备BLE通信密钥
    1. 5.1. 前置条件
    2. 5.2. 步骤

LOADING

第一次加载文章图片可能会花费较长时间

要不挂个梯子试试?(x

加载过慢请开启缓存 浏览器默认开启

频谱分析

2024/11/26 杂项
  |     |   总文章阅读量:

前言

貌似都是无线电方面的


利用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 的无线门铃中的信号信息

步骤

  1. 在 gqrx 软件中播放并查看信号的频谱图

    设置设备类型为other

    Device String 参数:

    file=/home/kali/桌面/rev_lab/cap433_200ksps.cf32,freq=433920000000,rate=200000

    Input rate 设置为 200000 (对应 200ksps 采样率)

    image-20241127174748076

    点击播放按钮,即可查看录制信号文件的频谱以及播放信号

    image-20241127174853730

  2. 利用 rtl_443 工具解析信号

    rtl_433 -r cap433_200ksps.cf32 -A

    image-20241127212031531

    在浏览器中打开链接,可以具体分析信号:

    image-20241127212201727


利用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 遥控车的信号
  • 尝试分析信号协议的格式

步骤

  1. 打开并分析信号

    点击Autodetect parameters按钮,可以直接自动分析信号的基本参数以及调制信息

    image-20241202144206946

    信号中的这些部分是环境中的噪声干扰,可以用鼠标滑动选中后直接按键盘上的 Delete 按钮删除

    image-20241202144415182

    微调Noise部分,使得粉红色区域能覆盖掉所有的底噪

    image-20241202144745965

    Modulation 选择 FSK ,此时再次点击 Autodetect parameters 按钮,即可分析2.4G遥控器的信号内容:

    image-20241202144900553

  2. 尝试分析协议格式

    点击 Analysis 菜单,选择 Analyze Protocol 即会自动执行针对协议的分析

    image-20241202145247170

    观察分析的结果,可以发现二进制串多为以下格式:

    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信号,并尝试提取其中的图像

步骤

  1. 利用GNU Radio对信号源文件进行FM解调

    源文件名 fm-complex64-sample_rate-48khz-dec_ratio-3_1 中已经包含了一些和信号有关的信息

    • fm:调制类型
    • complex64:信号数据类型
    • sample_rate-48khz:采样率
    • dec_ratio-3_1:抽取率(原始信号与实际有效信号之比,这里是 3:1)
  2. 打开GNU Radio,新建一个项目文件,双击 samp_rate 选项卡,将值改为 48000:

    image-20241202195538819

    点击搜索按钮,输入 File Source,双击搜索到的 File Souce 选项卡

    将出现的模块拖到最左边,双击,在 File 一栏中输入信号文件的路径,Repeat 改为 No

    image-20241202195724016

    继续搜索:Rational Resampler,拖动到File模块的右边

    拖动 File 的 Out,与 Rational Resampler 的 In 相连

    image-20241202195904525

    用同样的方法查找并添加 NBFM Receive 模块,并连接流程图

    双击 NBFM Receive 模块,填写参数:

    image-20241202200026828

    需要注意的是,Audio Rate 是降采样后的频率,Quadrature Rate 才是信号的原始频率,由于抽取率是3:1,因此音频的频率是48/3=16kHz

    用同样的方法添加 Wav File Sink 模块,并连接

    双击编辑参数,File 一栏填写需要保存的文件路径,Sample Rate 一栏改为 int(samp_rate/3) 或者 16000

    image-20241202200339633

    保存后,点击右上角的运行按钮,来运行流程图

    几秒钟后,在对应的文件夹中就出现了 wav 文件

    image-20241202200557649

  3. 利用 Audacity 查看并转换解调的信号文件

    打开 Audacity,并在 File -> Open 导入刚刚的 wav 文件

    点击 File -> Export Audio,Export to Computer

    image-20241202202426601

  4. 利用 qsstv 将信号中的音频转换成图片

    Options -> Configuration

    Sound 选项卡中的 Sound Input 改为 From File,点击OK保存

    image-20241202202656527

    在 Receive 选项卡中,点击播放按钮,选择刚刚 Audacity 导出的 wav 文件

    image-20241202202722020

    即会自动对刚刚的 wav 文件中的音频进行 SSTV 解码

  5. 此图片在 ISCTF2024 中亦有记载

    可以看到这里面是被拆了的二维码点阵,缺了一角是定位点

    直接去 QRazybox 手动修复:https://merri.cx/qrazybox/

    注意尺寸是29*29

    image-20241202210730691

    image-20241202210827890

    得到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 生成规则:

  1. app与设备建立连接,交换设备型号版本等必要信息。

  2. app订阅智能设备UUID为 bd4ac6100b4511e38ffd0800200c9a66 的Indication。

  3. 由 app 先生成 8 byte 的随机数A,由控制字符 01000000 +[8 byte随机数A]+[4 byte其他字符] 组成一个指令,由固定密钥 2eacd8f48c2dfe15325f25ad8fc8eb96 加密后,加上 2 Byte 的CRC内容(有效数据为前 16 byte),Write 给目标设备 UUID 为bd4ac6100b4511e38ffd0800200c9a66 的服务。

  4. 智能设备收到上述指令后,生成 8 byte 的随机数B,由控制字符 02000000 +[8 byte随机数B]+[4byte其他字符] 组合指令,由固定密钥 2eacd8f48c2dfe15325f25ad8fc8eb96 加密后,加上 2 Byte 的其他数据(有效数据为前 16 byte),通过 Indicate 订阅返还给app。

  5. app与智能设备完成密钥交换,令 session_key=A+B ,即为本次通信使⽤的 AES 密钥,本次会话后续所有通信均由 session_key 进行加密后再传输。

步骤

  1. 用 Wireshark 分析无线电嗅探设备捕获的数据包

    image-20241202212132680

    有显示通信来源、目的地、BLE数据包类型,例如 ADV_IND 是 BLE 协议中最常见的广播类型,主要用于设备的可发现广播

    这种数据包用于通知附近的设备它的存在,常见于设备希望让其他设备发现并连接到它时。例如,当⼀个 BLE 设备启动并希望被其他设备发现时,它会发送 ADV_IND 类型的广播包。

    image-20241202213408567

    展开 Bluetooth Attribute Protocol 选项树,可以看到详细的应用层信息。例如92号数据包是交换设备名称等变量

    image-20241202213621082

    最终找到216号数据包,逆向app后已知的交换随机数密钥的 Service UUID:bd4ac6100b4511e38ffd0800200c9a66

    image-20241202213743333

  2. 解密并还原 session_key

    key 用的是前面逆向得到的 2eacd8f48c2dfe15325f25ad8fc8eb96

    iv 用0填充

    CBC/NoPadding 模式

    image-20241202214653482

    image-20241202214712162

    得到 A 为 c2f4c40274acbc32

    在220号数据包拿到另一个UUID

    image-20241202214325525

    同样解密得到 B 为 616b507c0e066eee

    那么得到 session_key = A + B = c2f4c40274acbc32616b507c0e066eee

    继续找到⼀个后续的交互数据包,尝试用这个 session_key 解密

    image-20241202214844605

    image-20241202214831498

    image-20241202214925813

    说明 c2f4c40274acbc32616b507c0e066eee 就是加密后续 BLE 数据包的有效 session_key