另一个SWF解析器。
项目描述
另一个SWF解析器。
你可以怎么读都行 :)
如何使用它
你可以将swfparser.py用作命令行程序或作为模块。
如果您直接执行,使用方法如下
swfparser.py [-h] [-t] [-e] filepath positional arguments: filepath the SWF file to parse optional arguments: -h, --help show this help message and exit -t, --show-tags show the first level tags of the file -e, --extended show all objects with full detail and nested
如果您想将其用作模块,您可以直接使用SWFParser类或方便的parsefile函数
>>> swf = swfparser.parsefile(<yourSWFfile>) >>> swf.header Header(name=Header, FileLength=4228, ...) >>> len(swf.tags) 365 >>> swf.tags[0] UnknownObject(name=SetBackgroundColor, raw_payload=b'\xff\xff\xff') >>> swf.tags[3] >>> obj = swf.tags[3] >>> obj PlaceObject2(name=PlaceObject2, CharacterId=1, ...) >>> obj.CharacterId 1 >>> obj.Matrix.ScaleX 65536
它遵循SWF文件格式规范版本19,但尚未(完全)涵盖,因此您可能发现一些未知对象。
如何处理仍未知对象
并非所有规范都被涵盖(这是一个正在进行的工作!)。
当解析器遇到仍然无法处理的结构时(因为需要更多的编程),将仅返回包含未解析字节的UnknownObject对象,或者如果您设置了unknown_alert标志,将引发异常
SWFParser.unknown_alert = True
向解析器添加新结构非常简单。如果您提供实际字节的示例,甚至是一个包含缺失对象的样本SWF文件,我将非常乐意这样做。
检查覆盖率
有一种简单的方法可以检查解析器正确覆盖了多少对象(标签、操作、结构等):只需使用coverage参数
$ python3 yaswfp/swfparser.py -c yaswfp/tests/samples/1252533834.swf Header(Signature='CWS', ...) Tags count: 55 Coverage is 97.3% of 74 total items Most common parsed objects: 22 PlaceObject2 21 ShowFrame 10 LineStyleArray Most common Unknown objects 2 DefineMorphShape2
开发
运行测试
./test
您需要 python3-flake8 和 python3-nose。当然,这是Python 3。
为了完成某些方法或能够解析新的结构,我们应该添加展示新内容的示例,查看当前的“合理性”测试。是的,单元测试也是受欢迎的,请随意添加。
该项目托管在GitHub上
https://github.com/facundobatista/yaswfp
联系方式
如有疑问、问题、建议或任何其他事项,请随意在GitHub上打开一个问题或在IRC中找到我,我在Freenode上的用户名是facundobatista。
谢谢!
项目详情
关闭
yaswfp-0.9.3.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 6171057367476bbb511ae1ff95f0963f86079dd2fcb0e9771c6d9763ed351c8d |
|
MD5 | dbb46539778af82ac0684000cdf1365a |
|
BLAKE2b-256 | 2880162a418d1ae03e79987126feb0c42b876f72d5c9d33df2bed8690c6fc12a |