泛素Airview2 2.4GHz频谱分析仪库
pyairview的Python项目详细描述
pyairview是泛素airview2 2.4ghz频谱分析仪的库,它 具有未记录的设备API
pyairview允许第三方应用程序使用airview设备,而不是 而不仅仅是原始的Java应用程序。
图书馆在预定的目的下运转良好:)
一旦我把基础知识写下来并记录下来,我就可以把它移植到C语言中,以便在其他语言中使用 所以有一个通用的低级库,但是 很简单,即使是到ruby或c的高级端口也可能不需要 一天多了。
设备API文档
请参阅此存储库中包含的DEVICE_API.md文件
用法
from__future__importprint_functionfromtimeimportsleepimportpyairview# open the proper serial portpyairview.connect(port="/dev/ttyACM0")# retrieve device-specific information like RF frequency range and channel sizedevice_info=pyairview.get_device_info()print('Device info: %s',device_info)""" start RSSI scanning in a background thread. callback should take a parameter named 'rssi_list', which will be a list of rssi values. Use information obtained in device_info to interpret the RSSI values and pair them with exact frequencies. """defscan_callback(rssi_list):print('Received %d RSSI level readings: %s',len(rssi_list),rssi_list)pyairview.start_scan(callback=scan_callback)some_condition=Falsewhilepyairview.is_scanning():sleep(0.1)# or do something else, change some_condition, etcifsome_condition==True:pyairview.stop_scan()
AirView2硬件
airview2设备非常便宜(29-39美元),最初附带了一个java 应用程序,用于可视化该频段的使用,用于Wi-Fi网络规划, 发现恶意热点,诊断蓝牙问题等
在内部,设备基本上只是一个简单的微控制器(aCC2011) 内置2.4GHz收音机和USB接口。它使用标准的USB接口 连接到PC的CDC-ACM串行接口
设备上运行的固件可能是由泛素网络定制的, 我在自己的airView2设备外没有它的副本,即使是在转储的二进制文件中 表单,所以我不太了解它,但它似乎是一个简单的命令/响应 与使用本机rssi功率级扫描的功能耦合的环路 靠芯片
库开发和逆向工程
此库是在使用^{tt1}进行数小时的手动测试后创建的$ 以及screen,猜测使用设备api的正确命令。没有 用于创建此库的信息来自于反编译设备固件 或者原始的Java应用程序。
不要创建包含以下内容的github问题,或向我发送以下内容:
- 从设备转储固件
- 反编译的固件或从中派生的代码
- 原始软件或其派生代码的反编译版本
- 与API相关的任何类型的代码(除了记录在案的“洁净室”工作)
- 等
我没见过那些东西,我不想看到它们 我再也不能为这个库编写代码了。
我甚至不知道如何正确使用洁净室文件,如果 有人会提供给我,所以虽然这可能会有帮助,但我会 当然感谢您的帮助,请不要邮寄或发送文档 先不跟我讨论。
如果你想帮忙,请随时检查代码是否有缺陷,或者打开一个终端 连接到您的airview设备并像我一样猜测一些命令:)
变更日志
版本0.1a2
- 单文件Python 2.7和3.2+兼容性
释放0.1a1
- 将libairview模块重命名为pyairview以匹配项目名称(与测试应用程序相同)
- travis-ci自动测试。只是测试导入pyairview模块 现在,但这足以发现某些简单的错误。要模拟的代码 不久将添加到实际airview设备的串行连接,即 为了测试库中的任何东西
- 使start_scan()命令不阻塞,调用方应处理管理 库作为运行循环等的一部分。
- 如果需要,添加disconnect()命令关闭串行端口
- 允许调用代码在需要时安全地启动和停止扫描
- 处理部分响应留在串行缓冲区的情况
- 添加对新发现的“es”命令的支持,以指示Airview结束 当前扫描
- 添加de的自动解析“gdi”命令中的vice信息,每个元素都被放入 在字典中为每个键提供公共模块常量
释放0.1a0
- 目前只支持Python2.7,3.2+正在开发中
- 初始α释放