pythonå¦å®åºç¡å¦ä»ä¹
ç¸ä¿¡ä¸ä¸ªpythonçåå¦è ä¸å®å·²ç»å¦å®äºåºç¡çç¼ç¨ç¥è¯ï¼åå ¶ä»ç¼ç¨è¯è¨å·®ä¸å¤ï¼åºç¡çæ°æ®ç±»åãå¤æã循ç¯ãå½æ°ï¼æè®¸ä½ è¿å¦äºé¢å对象ãç¶èï¼å½ä½ å¦å®è¿äºåï¼æ许ä¸æ¬pythonçå ¥é¨ä¹¦ç±ä½ å·²ç»å¦å®äºï¼ä½æ¯ä½ å¼å§è¿·è«äºï¼æ¥ä¸æ¥ï¼å°åºè¯¥å¹²äºä»ä¹å¢ï¼
ç»è¿ä¸å¹´çå¦ä¹ ï¼æè§å¾pythonè¿é¶çæ¹æ³æ¯ï¼å¦å®åºç¡ç¥è¯åï¼å°±å ä»ç½ç»ç¼ç¨å¼å§ï¼ä»ä¸ä¸ªæç®åçsocketå¼å§ï¼å åå两å°æºå¨å¦ä½é讯ï¼æ¾æ¾æå°±æãï¼æ¨èå¦ä¹ ï¼Pythonè§é¢æç¨ï¼
ç¶åæ¥çå¦ä¹ socketserver模åå
逆向
jadx一款java编写的开源图形化反编译工具
⭐GDA不依赖java且支持apk, dex, odex, oat, jar, class, aar文件的反编译, 支持python及java脚本自动化分析
GDA主页-亚洲首款交互式Android反编译器
刷固件
Sniffle项目中fw文件夹是码学固件源码,如果只是码学抓包的话,在Sniffle项目release1.7中有上传的码学编译好的固件,根据型号下载。码学
搜索相关资料得知,码学导入程序源码可以在TI网站上安装UNIFLASH软件来进行刷固件: ti.com/tool/UNIFLASH?码学...
抓包测试
Sniffle抓包方式是开发板抓到数据之后,通过串口发送给PC,码学PC收到数据包之后再根据设定条件来过滤数据,码学最后根据参数决定是码学否保存成pcap文件。因此需要用参数-s 指定某个串口,码学串口可以通过设备管理器查看,码学共有两个,码学选择UART的码学串口:
从README中可以知道python_cli中的sniff_receiver.py为抓包脚本,支持多个参数,码学dts解码源码这里简单介绍下常用的设置:-a 只抓广播包,不知道设备mac地址的情况下,可以用此参数 -m 只抓特定mac地址的数据包,可以从广播包中分析出目标设备mac地址 -o 抓包结果保存到pcap文件
下图是命令sniff_receiver.py -s COM7 -m xx:xx:xx:xx:xx:xx -o data.pcap的显示:
下图是保存的pcap文件中的BLE开始连接过程截图:
低功耗蓝牙(BLE)协议
BLE (低功耗蓝牙)协议入门--整体介绍-腾讯云开发者社区-腾讯云 (tencent.com)
蓝牙低功耗概览 | Android 开发者 | Android Developers (google.cn)
手机端HCI
如何抓取Android手机蓝牙HCI - 知乎 (zhihu.com)
⭐ Android Bluetooth HCI log 详解 - 简书 (jianshu.com)
pcap文件
pcap文件详解 - CharyGao - 博客园 (cnblogs.com)
Wireshark文件pcap的格式详细解析有实例(Global Header、Packet Header)_wireshark格式-CSDN博客
使用 Wireshark 导入/导出pcap文件——Wireshark 新手教程(3) - 哔哩哔哩 (bilibili.com)
AES加密
什么是AES加密?详解AES加密算法原理流程 - 知乎 (zhihu.com)
⭐ 密码学基础:AES加密算法 - 知乎 (zhihu.com)
蓝牙属性通知(Handle Value Notification)
⭐ 低功耗蓝牙学习笔记-属性协议-CSDN博客
蓝牙BLE从机Peripheral讲解二(句柄指示\确认(Handle Value Indication\Confirmation)) - SweetTea_lllpc - 博客园 (cnblogs.com)
ECB加密模式
ASE加密模式介绍(ECB、CBC、PCBC、黑客拿源码CFB、OFB、CTR)-CSDN博客
AES五种加密模式_aes模式-CSDN博客
ECB模式解读-CSDN博客
密码算法 之三分组密码工作模式 (ECB \ CBC \ CFB \ OFB \ CTR \ XTS)浅析_xts模式-CSDN博客
Android logcat
Android logcat命令详解 - 许忠慧 - 博客园 (cnblogs.com)
bleak低功率蓝牙库
其实各语言都有该类型库哦 个人比较热衷于rust,个人觉得其在内存耗损上比python好点(当然,编码也会复杂一点)
bleak · PyPI
hbldh/bleak: A cross platform Bluetooth Low Energy Client for Python using asyncio (github.com)
GATT
蓝牙BLE: GATT Profile 简介(GATT 与 GAP) - 夜行过客 - 博客园 (cnblogs.com)
蓝牙:GATT,属性,特性,代理app源码服务_ble服务和属性特征-CSDN博客
⭐ 六 蓝牙低功耗(BLE)协议栈 之 GATT层_characteristic declaration-CSDN博客
Characteristics在代码中是UUID形式,在数据包中是以Handle形式,Handle与Characteristics是一一对应的,对应关系是在GATT中定义。
python协程(4):asyncio
asyncio是官方提供的协程的类库,从python3.4开始支持该模块async & awiat是python3.5中引入的关键字,使用async关键字可以将一个函数定义为协程函数,jpype源码解读使用awiat关键字可以在遇到IO的时候挂起当前协程(也就是任务),去执行其他协程。
await + 可等待的对象(协程对象、Future对象、Task对象 -> IO等待)
注意:在python3.4中是通过asyncio装饰器定义协程,在python3.8中已经移除了asyncio装饰器。
事件循环,可以把他当做是一个while循环,这个while循环在周期性的运行并执行一些协程(任务),在特定条件下终止循环。
loop = asyncio.get_event_loop():生成一个事件循环
loop.run_until_complete(任务):将任务放到事件循环
Tasks用于并发调度协程,通过asyncio.create_task(协程对象)的方式创建Task对象,这样可以让协程加入事件循环中等待被调度执行。除了使用 asyncio.create_task() 函数以外,还可以用低层级的 loop.create_task() 或 ensure_future() 函数。不建议手动实例化 Task 对象。
本质上是将协程对象封装成task对象,并将协程立即加入事件循环,同时追踪协程的状态。
注意:asyncio.create_task() 函数在 Python 3.7 中被加入。在 Python 3.7 之前,可以改用 asyncio.ensure_future() 函数。
下面结合async & awiat、事件循环和Task看一个示例
示例一:
*注意:python 3.7以后增加了asyncio.run(协程对象),效果等同于loop = asyncio.get_event_loop(),loop.run_until_complete(协程对象)
*示例二:
注意:asyncio.wait 源码内部会对列表中的每个协程执行ensure_future从而封装为Task对象,所以在和wait配合使用时task_list的值为[func(),func()] 也是可以的。
示例三:
2024-12-23 06:58
2024-12-23 06:03
2024-12-23 05:04
2024-12-23 05:02
2024-12-23 04:33