二进制协议分析器

dump的Python项目详细描述


矮胖

dumpy是一个具有声明性语法的二进制解析器。你所需要的 告诉框架你的数据是什么样子,然后让dumpy 剩下的就做。

dumpy支持python版本>;=3.0。

安装

只需使用PIP或类似工具:

pip install dumpy

用法

要解析预定义的二进制结构,需要定义一个类 对于那个结构。例如,pascal strings

的类
importdumpy.typesasdtclassPString(dict,metaclass=dt.DumpyMeta):__field_specs__=(dt.field('len',dt.UInt8,default=dt.count_of('data')),dt.field('data',dt.UInt8,count=dt.counted_by('len')),)s=PString()s['data']=b'\x01\x02\x03\x04'# The length field is calculated automatically.asserts['len']==4asserts.pack()==b'\x04\x01\x02\x03\x04's2=s.unpack(s.pack())asserts2['len']==4assertbytes(s2['data'])==b'\x01\x02\x03\x04'

请参见demo/png_packer.py以获取真实格式解析器。

已知问题

  1. dumpy中的类型检查和转换代码有点幼稚, 它不检查序列中的元素类型。
  2. dumpy在当前阶段是非常慢的。您可能不想使用 它可以解析网络消息或庞大的数据结构。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
由于测试失败,java testcontainers maven构建失败   java实现jacobi算法实现laplace方程   java中的多线程:如何在不等待所有线程使用ExecutorService完成任务的情况下终止所有线程的执行?   java Hello World不在Android Studio 3中工作   ubuntu Tomcat7的Java版本不正确   java Javafx内存泄漏   对于手动实现的Spring数据存储库方法,我应该使用Java8默认方法吗?   googleappengine中的java添加过滤查询   html当使用JSOUP库在Java中读取标签时,如何保留标签(如<br>、<ul>、<li>、<p>等)的含义?   编码为什么jasper生成的报告在Java中不显示西里尔语(保加利亚语)?   java有没有办法隐藏当前位置和jdk动作?   java找出编译原型文件的版本   有没有办法在运行时更改java方法的访问修饰符?   语法字符串。。。Java中的参数   java数组元素在添加其他元素时会相互覆盖   eclipse中的java GWT项目   java如何为spring rest模板请求将动态json属性名映射到jackson   java无法在Windows 10上找到特定的JDK   在xml字符串和java字符串之间提取正则表达式子字符串