二进制协议分析器

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我能在这个程序中更好地使用内存吗?   为什么我的Java while循环迭代了一半   java IntelliJ IDEA不在构建时复制资源   socket仅在Java TCP服务器输出上检查客户端断开连接   java游戏物理摩擦   java片段onClick调用方法   symja数学分析器中无法识别java Abs[x]   java在使用泛型时创建二进制搜索树类的实例?   java在外键约束表上的添加和删除   语法java表达式的含义,如果有条件   java创建内联对象并作为参数传递   是否有相当于Redis排序集(zset)的Java数据结构   java找不到适合的方法(无参数)   音频文件操作给定字节帧的音量Java   Eclipse4不以JavaWebStart启动   java如何使用org在JSON对象中获取嵌套的键元素。json?   java与Jackson的反序列化:“org.codehaus.Jackson.map.JsonMappingException:无法反序列化[projectname]的实例。”   字符串的Java正则表达式   spring集成上的java检测缺火指令