QCSuper是一种基于高通(Qualcomm)手机和调制解调器(俗称“猫”)通信的工具,可以捕获原始的2G/3G/4G无线电帧等数据内容。它允许你使用已root的安卓手机,usbdongle加密狗或其他格式的现有捕获数据包生成PCAP文件。

安装完成后,你可以将已root的手机插入USB,并执行以下命令来使用它:

./qcsuper.py --adb --wireshark-live

它使用的是高通Diag协议,也称为QCDM或DM(诊断监控),以与手机的基带进行通信。

如果你想要支持或报告你设备的工作情况,又或是想加入Diag协议的开发研究,那么你可以加入我们的IRC(Freenode的#qcsuper)或是打开Github issue。

安装

QCSuper已在Ubuntu 16.04,18.04和Windows 7上进行了测试开发。它依赖于一些Python模块。

想要使用它,你的手机必须root或通过USB暴露diag服务端口。为了检查手机的兼容性,请在GSMArena等网站上查找手机的型号,并检查它是否配有高通处理器。

想要打开QCSuper生成的PCAP文件,对于2G/3G帧你可以使用Wireshark 2.x的任何版本。但对于4G帧,你则需要至少Wireshark 2.5.x以上的版本(对于4G帧中解密的单个NAS消息则需要2.6.x以上))。Ubuntu目前已为所有版本提供了其最新版。

Ubuntu 和 Debian 安装

打开终端并键入以下内容:PHP大马

# Download QCSuper
git clone git@github.com:P1sec/QCSuper.git qcsuper
cd qcsuper# Install dependencies
sudo apt install python3-pip wireshark
sudo pip3 install --upgrade pyserial crcmod https://github.com/P1sec/pycrate/archive/master.zip

Windows 安装

在Windows上,你需要根据你的手机型号下载并安装手机的USB驱动。没有通用的方法,在Google上搜索你手机的型号 +“USB驱动(USB driver)”或“ADB驱动(ADB driver)”以获取相关的说明。

然后,你需要确保你的设备可以使用adb进行访问。你可以在此处找到有关如何下载和设置adb的教程。adb shell命令必须正常工作才能继续。

然后,按照以下链接进行操作:

安装Python 3.6或更高版本(请确保已将其包含到PATH中,并勾选install it for all users(系统用户下所有用户可启动)并安装pip)

安装Wireshark 2.6或更高版本

下载并提取QCSuper

安装所需Python模块,请打开命令提示符并键入:

pip3 install --upgrade pyserial crcmod https://github.com/P1sec/pycrate/archive/master.zip

仍在命令提示符下,使用cd命令移动到包含QCSuper的目录。然后你可以执行命令(启动命令应为qcsupper.py,而不是/qcsupper.py)。

支持的协议

QSuper支持捕获少量的移动无线协议。这些协议在GSMTAP Header之后,标准报头(被封装到UDP/IP中)允许识别协议,GSMTAP报文被放在PCAP文件中,该文件可以使用Wireshark进行分析。

2G/3G/4G协议可分为几个“layers(层)”:layer 1数字无线电调制和多路复用,layer 2处理诸如分片和ACK等问题,layer 3是信令或用户数据。

QCSuper允许在第3层捕获,因为它是使用Wireshark进行分析最实用和有价值的,并且是Diag协议本身所提供的(这里有一些有趣的信息)。

2G(GSM):第3层及以上(RR/…)

2.5G(GPRS和EDGE):第2层及以上(MAC-RLC/…)用于数据确认

3G(UMTS):第3层及以上(RRC/…)

此外,它还支持在单独的GSMTAP帧中重组SIB(系统信息块,向所有用户广播的数据),因为Wireshark目前无法自行完成:flag –reassemble-sibs

4G(LTE):第3层及以上(RRC/…)

此外,它还支持将解密的NAS消息放入其他帧中:flag –decrypt-nas

默认情况下,你设备发送的IP流量不包括在内,你只能看到信令帧。你可以使用–include-ip-traffic选项包含你生成的IP流量(在2G/3G/4G中,IP几乎不属于数据流量的第3层,其头部可能被压缩(ROHC),并且可能包含一个很小的PPP报头)。

你发送的数据流量使用与信令流量不同的信道,此信道通过信令流量建立;因此,QCSuper应向你显示与此信道相关的所有详细信息。

使用

使用QCSuper,你需要指定一个输入(例如:–adb(Android手机),–usb-modem)和一个或多个模块(–wireshark-live用于打开Wireshark,–pcap-dump用于写入流量到PCAP文件,–info获取有关设备的一般信息…)。

示例:天天好彩

# Open Wireshark directly, using a rooted Android phone as an input
./qcsuper.py --adb --wireshark-live# Same, but dump to a PCAP file instead of opening Wireshark directly
./qcsuper.py --adb --pcap-dump /tmp/my_pcap.pcap# Same, but using an USB modem exposing a Diag serial port
sudo ./qcsuper.py --usb-modem /dev/ttyHS2 --wireshark-live

以下是QCSuper当前所有可用选项:

usage: qcsuper.py [-h] [--cli] [-v](--adb | --usb-modem TTY_DEV | --dlf-read DLF_FILE | --json-geo-read JSON_FILE)[--info] [--pcap-dump PCAP_FILE] [--wireshark-live][--memory-dump OUTPUT_DIR] [--dlf-dump DLF_FILE][--json-geo-dump JSON_FILE] [--decoded-sibs-dump][--reassemble-sibs] [--decrypt-nas] [--include-ip-traffic][--start MEMORY_START] [--stop MEMORY_STOP]A tool for communicating with the Qualcomm DIAG protocol (also called QCDM or
DM).optional arguments:-h, --help            show this help message and exit--cli                 Use a command prompt, allowing for interactivecompletion of commands.-v, --verbose         Add output for each received or sent Diag packet.Input mode:Choose an one least input mode for DIAG data.--adb                 Use a rooted Android phone with USB debugging enabledas input (requires adb).--usb-modem TTY_DEV   Use an USB modem exposing a DIAG pseudo-serial portthrough USB.--dlf-read DLF_FILE   Read a DLF file generated by QCSuper or QXDM, enablinginteroperability with vendor software.--json-geo-read JSON_FILERead a JSON file generated using --json-geo-dump.Modules:Modules writing to a file will append when it already exists, and considerit Gzipped if their name contains ".gz".--info                Read generic information about the baseband device.--pcap-dump PCAP_FILEGenerate a PCAP file containing GSMTAP frames for2G/3G/4G, to be loaded using Wireshark.--wireshark-live      Same as --pcap-dump, but directly spawn a Wiresharkinstance.--memory-dump OUTPUT_DIRDump the memory of the device (may not or partiallywork with recent devices).--dlf-dump DLF_FILE   Generate a DLF file to be loaded using QCSuper orQXDM, with network protocols logging.--json-geo-dump JSON_FILEGenerate a JSON file containing both raw log framesand GPS coordinates, for further reprocessing. To beused in combination with --adb.--decoded-sibs-dump   Print decoded SIBs to stdout (experimental, requirespycrate).PCAP generation options:To be used along with --pcap-dump or --wireshark-live.--reassemble-sibs     Include reassembled UMTS SIBs as supplementary frames,also embedded fragmented in RRC frames.--decrypt-nas         Include unencrypted LTE NAS as supplementary frames,also embedded ciphered in RRC frames.--include-ip-traffic  Include unframed IP traffic from the UE.Memory dumping options:To be used along with --memory-dump.--start MEMORY_START  Offset at which to start to dump memory (hex number),by default 00000000.--stop MEMORY_STOP    Offset at which to stop to dump memory (hex number),by default ffffffff.

指定 – 支持来自stdin或stdout的管道数据输送(可能无法检测到gzip压缩的内容)。

使用(USB猫)

你可以将QCSuper与USB猫一起使用–usb-modem <device>选项暴露Diag端口,其中<device>是Linux上伪串行设备(如/dev/ttyUSB0,/dev/ttyHS2和其他可能的设备)或Windows上的COM端口(例如COM3)的名称。

注意,在大多数设置中,你需要以root用户身份运行QCSuper才能使用此模式,尤其是处理串口干扰问题。

如果你不清楚/dev下哪些设备暴露了Diag端口,你可能需要对其中的设备进行逐一的尝试。你可以尝试通过停止ModemManager守护进程(sudo systemctl stop ModemManager)并使用以下命令来自动检测:sudo ModemManager –debug 2>&1 | grep -i ‘port is QCDM-capable’ 然后使用Ctrl-C。

注意,如果你的设备不能与ModemManager一起使用,那么它很可能没有进行完全的设置,并且也不能与QCSuper一起使用。一些可能的问题是

你没有为设备应用正确的模式切换(mode switching)命令。

如果你购买的设备之前有来自不同运营商的SIM卡,则你的设备可能会被锁定。你可能必须使用前一个运营商的解锁代码并将其提交给设备:sudo mmcli -i 0 –pin=<your_unlock_code>

如果默认情况下,基于高通的USB设备未暴露Diag端口,则可能需要通过AT端口键入以下命令来启用Diag端口:

AT$QCDMG

注意,只有一个客户端可以同时与Diag端口通信。这适用于两个QCSuper实例,或QCSuper和ModemManager实例。

如果你系统上的ModemManager处于活动状态,QCSuper将尝试动态添加udev规则以防止它访问Diag端口并重启其守护进程。它将在关闭时禁用此规则。

支持的设备

QCSuper已在以下设备成功测试:

Sony Xperia Z (Phone) – 4G – root启用adb后开箱即用

ZTE MF823 (USB Modem) – 4G – 可能需要将设备模式切换到CDC-WDM,将设备设置为工厂模式,然后执行上述AT命令

ZTE MF667 (USB Modem) – 3G, 2011 – 应该开箱即用(可能需要模式切换)

Option Icon 225 (USB Modem) – 3G, 2008

Novatel Ovation MC998D(USB猫)

ZTE WCDMA Technologies MSM MF110/MF627/MF636(USB猫)

然而,它的目标是与基于高通芯片组的最广泛的设备兼容,用于捕获部分。

不要犹豫和吝啬,请通过我们IRC频道报告你的设备是否成功运行,或打开Github issue。

使用 Diag 协议的相关工具

以下是一些同样使用Diag协议,用于不同目的的工具:

ModemManager

SnoopSnitch

MobileInsight

qcombbdbg

OpenPST

SCAT

QCSuper:在高通手机猫上捕获无线2G/3G/4G数据包相关推荐

  1. 在高通手机猫上捕获无线2G/3G/4G数据包的工具QCSuper

    QCSuper是一种基于高通(Qualcomm)手机和调制解调器(俗称"猫")通信的工具,可以捕获原始的2G/3G/4G无线电帧等数据内容.它允许你使用已root的安卓手机,usb ...

  2. 听见丨HTC发布新款Vive Pro,采用高分辨率OLED屏并内置耳机 高通在CES上发布新芯片,可将蓝牙耳机续航延长3倍

    HTC发布新款Vive Pro,采用高分辨率OLED屏并内置耳机 HTC在今年CES举办的一次发布会上更新了旗下虚拟现实头盔Vive产品线,发布了Vive Pro.和过去的产品一样,Vive Pro需 ...

  3. 刷机后IMIE丢失怎么办 高通手机IMEI备份恢复教程

    不少爱刷机的同学肯定都遇到过IMEI丢失的情况,IMEI究竟是个什么玩意?又有什么用呢?简单的来说是移动设备国际身份码的缩写,手机丢失IMEI就意味着手机无法搜索注册SIM卡,这也就是说你只能通过恢复 ...

  4. 高通手机基带镜像解压混合基带制作教程(A850K工程机混合基带解决通话黑屏)

    之前答应了几位机友要发布教程,后来因为一直忙拖到了现在...... 一.取得基带 1-1.泛泰手机的话可以从官方卡刷包中取得 在fotamodem\NON-HLOS.bin,解压出来,扩展名改为img ...

  5. 高通手机基带镜像解压¥混合基带制作方法。(解决手机距离感应器失效)

     一.取得基带 1-1.泛泰手机的话可以从官方卡刷包中取得 在fotamodem\NON-HLOS.bin,解压出来,扩展名改为img 1-2.也可以从当前手机中备份. 在twrp下,连接手机数据 ...

  6. 高通手机手动切换diag口

    高通手机找不到diag口: 1.adb root 2.手动切diag口: setprop sys.usb.config diag,adb

  7. 高通SDM450 Android9上调试RS485接口温湿度传感器调试介绍

    高通SDM450 Android9上调试RS485接口温湿度传感器调试介绍 1.初步确认硬件电路工作正常 2.确认主控端串口可以正常工作 3.调试主控串口经过RS485连接电脑可以正常收发 4.单独调 ...

  8. 联发科(MTK)、高通(Qualcomm)2G/3G/4G/5G模块定制与开发服务

    新移科技拥有多年联发科(MTK),高通(Qualcomm)2G/3G/4G系列平台开发经验,专注于无线通信方案软硬件开发.在持续推出标准核心板及开发套件的同时,为满足客户个性化项目需求,提供定制开发服 ...

  9. 1G→2G→3G→4G→5G:一部波澜壮阔的移动通信史

    现代生活离不开移动通信,从信息的生成.传输到接收,网络通信的背后蕴含着数不清的闪光智慧.从1G到5G的演进,时代的转换一幕接一幕,其背后关于通信标准的江湖纷争也是波诡云谲.激烈异常,最终汇出了一部波澜 ...

最新文章

  1. Android技术应用实验指导书,Android应用开发实验指导书
  2. Leet Code OJ 66. Plus One [Difficulty: Easy]
  3. VGG16关于学习率如何影响精度效应
  4. InterlockedIncrement
  5. java mysql_num_rows_JAVA MYSQL sql_calc_found_rows和found_rows()实践
  6. android 固定大小取图片缩略图
  7. azure_Azure Analysis Services中的动态分区(表格)
  8. CSS 二十年发展简史
  9. JDK8高性能队列“Disruptor“
  10. Python内置函数(7)——sum
  11. pragma预处理指令详解
  12. 怎样关闭计算机445端口,445端口怎么关闭 445端口关闭方法介绍
  13. 安卓系统使用chrome插件(以yandex安装油猴为例)
  14. 邱锡鹏《神经网络与深度学习》蒲公英书学习笔记
  15. 栈的应用:火车调度问题
  16. sqlDBX 链接 mysql 提示ODBC驱动不正确
  17. Java面试题总结2020
  18. 构建一个透明的activity
  19. 麻省理工的服务器位置,麻省理工的插头式电脑集群
  20. 【Python】利用python和百度通用OCR文字识别模型处理pdf文件(有水印且加密)

热门文章

  1. java--匿名内部类
  2. 多媒体信息设计原则有哪些
  3. 5V单片机和3.3V模块接口通信
  4. threejs创建3d交互地图
  5. oracle sql时间排序函数,sql的rank函数
  6. 高通Qualcomm处理器的手机或设备进EDL 9008模式的办法
  7. 一篇很详细很全的OGG配置文档
  8. jQuery中的$.ajax
  9. websocket如何区分用户_WebSocket区分不同客户端两种方法(HttpSession和@PathParam)
  10. 超级玛丽HTML5源代码学习------(四)