皮皮网
皮皮网

【底指标源码】【得物 源码】【spice 源码解析】asyncio 源码学习

来源:天猫项目源码 发表时间:2024-12-22 12:03:09

1.python学完基础学什么
2.django框架前景如何(django是码学后端框架吗)
3.深入异步IO框架:asyncio 中篇
4.蓝牙马蹄锁分析过程文章小结
5.python协程(4):asyncio

asyncio 源码学习

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为抓包脚本,支持多个参数,码学得物 源码这里简单介绍下常用的设置:-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、spice 源码解析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,属性,特性,winform编程源码服务_ble服务和属性特征-CSDN博客

       ⭐ 六 蓝牙低功耗(BLE)协议栈 之 GATT层_characteristic declaration-CSDN博客

       Characteristics在代码中是UUID形式,在数据包中是以Handle形式,Handle与Characteristics是一一对应的,对应关系是在GATT中定义。

python协程(4):asyncio

        asyncio是官方提供的协程的类库,从python3.4开始支持该模块

        async & awiat是python3.5中引入的关键字,使用async关键字可以将一个函数定义为协程函数,指数源码网址使用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()] 也是可以的。

        示例三:

相关栏目:知识