1.python为ä»ä¹å«python
2.python协程(4):asyncio
3.深入异步IO框架:asyncio 中篇
4.pythonå¦å®åºç¡å¦ä»ä¹
5.蓝牙马蹄锁分析过程文章小结
6.Python的码分前景怎么样
python为ä»ä¹å«python
å 为pythonçèæ¬ç¹æ§ï¼pythonæäºé ç½®ï¼å¯¹å符çå¤çä¹é常çµæ´»ï¼å ä¸pythonæ丰å¯çç½ç»æå模åï¼æ以python被å«åç¬è«ãPythonç¬è«å¼åå·¥ç¨å¸,ä»ç½ç«æä¸ä¸ªé¡µé¢(é常æ¯é¦é¡µ)å¼å§ï¼è¯»åç½é¡µçå 容ï¼æ¾å°å¨ç½é¡µä¸çå ¶å®é¾æ¥å°åï¼ç¶åéè¿è¿äºé¾æ¥å°å寻æ¾ä¸ä¸ä¸ªç½é¡µï¼è¿æ ·ä¸ç´å¾ªç¯ä¸å»ï¼ç´å°æè¿ä¸ªç½ç«ææçç½é¡µé½æåå®ä¸ºæ¢ã
å¦æææ´ä¸ªäºèç½å½æä¸ä¸ªç½ç«ï¼é£ä¹ç½ç»èèå°±å¯ä»¥ç¨è¿ä¸ªåçæäºèç½ä¸ææçç½é¡µé½æåä¸æ¥ã
ç¬è«ï¼å³ç½ç»ç¬è«ï¼å¤§å®¶å¯ä»¥ç解为å¨ç½ç»ä¸ç¬è¡çä¸åªèèï¼äºèç½å°±æ¯ä½ä¸å¼ 大ç½ï¼èç¬è«ä¾¿æ¯å¨è¿å¼ ç½ä¸ç¬æ¥ç¬å»çèèï¼å¦æå®éå°èªå·±ççç©ï¼æéè¦çèµæºï¼ï¼é£ä¹å®å°±ä¼å°å ¶æåä¸æ¥ã
æ¯å¦å®å¨æåä¸ä¸ªç½é¡µï¼å¨è¿ä¸ªç½ä¸ä»åç°äºä¸æ¡éè·¯ï¼å ¶å®å°±æ¯æåç½é¡µçè¶ é¾æ¥ï¼é£ä¹å®å°±å¯ä»¥ç¬å°å¦ä¸å¼ ç½ä¸æ¥è·åæ°æ®ã
æ©å±èµæï¼
pythonçåå±åç¨
èªä»ä¸çºªå¹´ä»£åPythonè¯è¨è¯çè³ä»ï¼å®å·²è¢«éæ¸å¹¿æ³åºç¨äºç³»ç»ç®¡çä»»å¡çå¤çåWebç¼ç¨ã
Pythonçåå§äººä¸ºè·å °äººåå¤Â·èç½èå§ ï¼Guido van Rossumï¼ãå¹´å£è¯èæé´ï¼å¨é¿å§æ¯ç¹ä¸¹ï¼Guido为äºæåå£è¯èçæ 趣ï¼å³å¿å¼åä¸ä¸ªæ°çèæ¬è§£éç¨åºï¼ä½ä¸ºABC è¯è¨çä¸ç§ç»§æ¿ã
ä¹æ以éä¸Pythonï¼å¤§èèçææï¼ä½ä¸ºè¯¥ç¼ç¨è¯è¨çååï¼æ¯åèªè±å½ä¸çºªå¹´ä»£é¦æççµè§åå§ãèæ.派森干çé£è¡é©¬æå¢ãï¼Monty Python's Flying Circusï¼ã
å°±è¿æ ·ï¼Pythonå¨Guidoæä¸è¯çäºãå¯ä»¥è¯´ï¼Pythonæ¯ä»ABCåå±èµ·æ¥ï¼ä¸»è¦åå°äºModula-3ï¼å¦ä¸ç§ç¸å½ä¼ç¾ä¸å¼ºå¤§çè¯è¨ï¼ä¸ºå°åå¢ä½æ设计çï¼çå½±åï¼å¹¶ä¸ç»åäºUnix shellåCçä¹ æ¯ã
Python å·²ç»æ为æå欢è¿çç¨åºè®¾è®¡è¯è¨ä¹ä¸ï¼èªä»å¹´ä»¥åï¼pythonç使ç¨çå线æ§å¢é¿ãPython 2äºå¹´ææ¥åå¸ï¼ç¨³å®çæ¬æ¯Python 2.7ï¼Python 3äºå¹´æ3æ¥åå¸ï¼ä¸å®å ¨å ¼å®¹Python 2ã
ç±äºPythonè¯è¨çç®æ´æ§ãæ读æ§ä»¥åå¯æ©å±æ§ï¼å¨å½å¤ç¨Pythonåç§å¦è®¡ç®çç 究æºææ¥çå¢å¤ï¼ä¸äºç¥å大å¦å·²ç»éç¨Pythonæ¥ææç¨åºè®¾è®¡è¯¾ç¨ã
ä¾å¦å¡èåºæ¢ é大å¦çç¼ç¨åºç¡ã麻ççå·¥å¦é¢ç计ç®æºç§å¦åç¼ç¨å¯¼è®ºå°±ä½¿ç¨Pythonè¯è¨è®²æãä¼å¤å¼æºçç§å¦è®¡ç®è½¯ä»¶å é½æä¾äºPythonçè°ç¨æ¥å£ï¼ä¾å¦èåç计ç®æºè§è§åºOpenCVãä¸ç»´å¯è§ååºVTKãå»å¦å¾åå¤çåºITKã
åèèµææ¥æºï¼ç¾åº¦ç¾ç§âpython
python协程(4):asyncio
asyncio是官方提供的协程的类库,从python3.4开始支持该模块async & awiat是码分python3.5中引入的关键字,使用async关键字可以将一个函数定义为协程函数,码分使用awiat关键字可以在遇到IO的码分时候挂起当前协程(也就是任务),去执行其他协程。码分
await + 可等待的码分微信机器人 java 源码对象(协程对象、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()] 也是可以的。
示例三:
深入异步IO框架:asyncio 中篇
今日内容丰富,mt7613 源码准备了三日方才整理完毕。阅读后希望有所领悟,给予小明鼓励。上节内容回顾了创建协程对象的方法与事件循环容器运行。首先介绍了两种创建协程对象的途径,然后详细讲解了事件循环容器运行协程的主要步骤。此外,深入解析了生成器与协程的区别,并阐述了协程中如何添加回调函数。
多任务概念引入后,关注协程并发性。并发性类似线程,如同一人同时吃三个馒头,交替啃食。asyncio实现并发,aurojs在线源码通过多个协程协同完成任务,一旦某任务阻塞,其他协程继续工作。首先创建协程列表,接着将协程注册至事件循环,具体实现方式在此节中详述。最后,通过task.result()函数查看返回结果。
协程嵌套部分,通过async定义,封装更多IO操作,实现内部协程与外部协程的连接。使用asyncio.gather()封装协程,实现相同结果,仅是ApConfig配网源码创建任务对象方式不同。深入源码探索,发现看似非嵌套实则内部嵌套的特性。详细代码示例与源码解析,供有兴趣者参考。
协程状态讲解,Future对象或Task任务涉及状态包括Pending、Running、Done、Cancelled。通过手动执行代码,可观察状态变化,包括执行过程与取消状态。控制与等待函数介绍,asyncio.gather与asyncio.wait在异步IO框架中应用广泛。详细对比了两种函数在参数接收、返回结果与控制功能上的区别,包括使用示例与具体操作。
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、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,属性,特性,服务_ble服务和属性特征-CSDN博客
⭐ 六 蓝牙低功耗(BLE)协议栈 之 GATT层_characteristic declaration-CSDN博客
Characteristics在代码中是UUID形式,在数据包中是以Handle形式,Handle与Characteristics是一一对应的,对应关系是在GATT中定义。
Python的前景怎么样
Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。杭州Python开发学习怎么样,前景好不好?我们从Python的特性说起吧!
第一,更高的工作效率
这两年Python在业内大火的原因除了云计算帮Python带来的热潮之外,更多的是本身的特性。目前互联网创业热情高涨,创业者和投资者都希望投资回报周期快。因此,一门开发效率极高的语言就此进入开发者眼帘,众多创业公司首选Python做为开发语言,催生了Python在国内大热的现象。
第二,更快的运行速度
显然,Python并不是一门快语言,这也是被很多程序员诟病Python的主要原因,但最近几年PyPy解释器在不断提高Python的运行速度,通过PyPy运行的程序,在某些场景下速度直接逼近C语言。
相信再过一段时间,Python的运行速度将不再是问题。另外,由于近些CPU处理速度的快速发展,编程语言本身的快慢在大多数业务场景下已不再被做为主要考量。
第三,更强的使用功能
这是导致Python大火的另一个主要原因之一,Python的标准库和第三方库强大到你无法想象,无论你想从事任何方向的技术编程,你几乎都能找到相应的库支持,以下仅举几个例子:
WEB开发——最火的Python web框架Django,支持异步高并发的Tornado框架,短小精悍的flask,bottle,Django官方的标语把Django定义为the framework for perfectionist with deadlines;网络编程——支持高并发的Twisted网络框架,py3引入的asyncio使异步编程变的非常简单等等。