最近看公司同事在玩页游《斗破乾坤》我也进去完了一把,感觉画面还不错,就是不停的点鼠标做任务,一会就烦了,看了下前端配置文件,我们以error.json_3e30为例,这个肯定是记录错误码的文件直接打开是乱码,二进制打开看到:
前面写着czlib_1.0,那肯定是zlib压缩,然后找了个zlib压缩后的数据对比了下,发现,压缩后的数据从78DA开始的,因此也就是从第13个字节开始,解压后发现文件依然不能直接看到,直接打开只能看到少许几个单词,因此可以断定没有加密,只是某种编码如下:
我们可以看到,这里肯定不是ASCII码,因为有大量的不能显示的字符,后来想到AS3中的AMF编码,查了下AMF编码格式,基本断定就是AMF编码,用python写了个小工具如下:
 
#!/usr/bin/env python
#coding=utf-8 import os
import sys
import zlib
import json
import pyamf def amfparser(srcpath, n, dstpath):
fsize = os.path.getsize(srcpath)
srchandle = open(srcpath, 'rb')
srchandle.seek(n)
rdata = srchandle.read(fsize - n)
decdata = pyamf.decode(zlib.decompressobj().decompress(rdata))
srchandle.close() wdata = {}
dsthandle = open(dstpath, 'w')
wdata[k] = [elem[k] for elem in decdata for k in elem]
dsthandle .write(json.dumps(wdata, encoding='utf-8', ensure_ascii=False))
dsthandle.close() if __name__ == '__main__':
reload(sys)
sys.setdefaultencoding('utf-8') #amfparser('charm.xml_e3bb', 13, 'charm.xml')
#amfparser('quest_preload.xml_baa2', 13, 'quest_preload.xml')
#amfparser('13001_skill.tt_474f', 4, '13001_skill.txt')
#amfparser('13005_attacked.tt_7a53', 4, '13005_attacked.txt')
amfparser('error.json_3e30', 13, 'error.json')
中间还是遇到了点问题,因为python默认不支持amf编码,下载了pyamf,然后进行解码,由于python默认ascii编码,而amf解码出来的字符串是unicode编码,最后想到了json,直接把编码结果序列化成json字符串写入文件中,终于正常写入文件,然后用jsonview查看文件.不过不是所有文件编码都是一致的,有的是从第四个字节开始解压缩数据的,他可能根据文件后缀进行判断偏移量,也可能根据文件头进行判断.

python解析AMF协议的更多相关文章

  1. Python解析Pcap包类源码学习

    0x1.前言 ​ 在现场取证遇到分析流量包的情况会比较少,虽然流量类设备原理是把数据都抓出来进行解析,很大一定程度上已经把人可以做的事情交给了机器自动完成. ​ 可用于PCAP包分析的软件比如科来,W ...

  2. pcapng文件的python解析实例以及抓包补遗

    为了弥补pcap文件的缺陷,让抓包文件可以容纳更多的信息,pcapng格式应运而生.关于它的介绍详见<PCAP Next Generation Dump File Format> 当前的w ...

  3. 杂项之python描述符协议

    杂项之python描述符协议 本节内容 由来 描述符协议概念 类的静态方法及类方法实现原理 类作为装饰器使用 1. 由来 闲来无事去看了看django中的内置分页方法,发现里面用到了类作为装饰器来使用 ...

  4. 使用Python解析JSON数据

    使用Python解析百度API返回的JSON格式的数据 # coding:utf-8 # !/usr/bin/env python import matplotlib.pyplot as plt fr ...

  5. 使用Python解析JSON数据的基本方法

    这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下:     ----------------------------------- ...

  6. python解析robot framework的output.xml,并生成html

    一.背景 Jenkins自动构建RF脚本,生成的RF特有HTML报告不能正常打开. 需求:用Python解析测试报告的xml数据,放在普通HTML文件中打开 二.output.xml数据 三.用pyh ...

  7. python 解析json loads dumps

    认识 引用模块 重要函数 案例 排序 缩进参数 压缩 参考 认识 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standa ...

  8. Python解析器源码加密系列之(二):一次使用标准c的FILE*访问内存块的尝试

    摘要:由于近期打算修改Python解释器以实现pyc文件的加密/解密,出于保密的要求,解密之后的数据只能放在内存中,不能写入到文件中.但是后续的解析pyc文件的代码又只能接受FILE*作为入参,所以就 ...

  9. python 解析XML python模块xml.dom解析xml实例代码

    分享下python中使用模块xml.dom解析xml文件的实例代码,学习下python解析xml文件的方法. 原文转自:http://www.jbxue.com/article/16587.html ...

随机推荐

  1. day20 在php中通过php语句操作数据库

    第一步:连接数据库服务器 mysql_connect("数据库服务器地址","用户名","密码") 第二步:设定跟数据库打交道的网页的编码 ...

  2. this在JavaScript中的工作范围

    this在JavaScript中的工作范围 在一个函数中,this的行为,取决于JavaScript函数的调用方式和定义方式,而不仅仅是看它如何被定义的. var fullname = 'Fu';va ...

  3. [Linux]查看本机IP

    命令: ~$ ip addr showor~$ ipconfig 

  4. Demo学习: CellDraw

    CellDraw 学习TUniStringGrid,为什么有些设置在web模式下无效? case TUniBitBtn(Sender).Tag of : UniStringGrid1.ColWidth ...

  5. Sqlserver循环嵌套

    1.游标的状态,游标的开启游标的选择都是需要注意的. USE [ccnu] GO /****** Object: StoredProcedure [dbo].[P_ADD_DATA_XSBLHYCQK ...

  6. 关于javac编译时出现“非法字符:\65279”的解决方法

    一般用UE或记事本编辑过的UTF-8的文件头会加入BOM标识,该标识由3个char组成.在UTF-8的标准里该BOM标识是可有可无的,Sun 的javac 在编译带有BOM的UTF-8的格式的文件时会 ...

  7. Linux私房菜——防火墙部分笔记

    #1 分类 对单一主机,主要有两种:数据包过滤Netfilter和依据服务软件分析的TCP Wrapper. 对区域型防火墙来说,即安装防火墙的主机充当路由器的角色.防火墙类型主要有两种:数据包过滤N ...

  8. Pair project(刘昊岩11061156 黄明源11061186)

    Pair project members:刘昊岩11061156,黄明源11061186 两周时间,工程下午刚刚结束,现做一些总结. 在现有工程基础上修改schedule 包下方法,主要思想是,也就是 ...

  9. Css3 圆角和渐变色问题(IE9)

    border-radius: 4px; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#569B0E', endC ...

  10. 设置BootStrap导航条的高度

    只要加上这段css就可以覆盖Bootstrap.css的代码,定制符合自己的样式 .navbar { min-height: 40px; } .nav > li > a { padding ...