【以太网数据包】微信数据包

    xiaoxiao2023-03-16  4

    【以太网数据结构】系列文章链接 http://blog.csdn.net/u012819339/article/category/5849175


    本次抓包主要针对微信app进行,时间是2016年9月

    微信使用了一下几种协议 sync协议:(大量)在发送微信消息的时候会发现大量该协议的数据包 http协议:(大量)在访问微信朋友圈的时候会发现大量该协议的数据包,以及微信支付的时候(不要怀疑,在填写微信支付密码以及支付成功的过程抓包显示确实是走的http协议,而不是https,微信对http的post数据自行进行了加密) ssl协议:(少数)在涉及到比较隐私的数据时会发现该协议的数据包,比如:其他app通过微信开发者平台提供的接口调起微信支付窗口的过程 unknown协议:(一般)叫这个名字是因为我确实不知道该私有协议叫什么名字,暂且称为unknown协议吧,在通过微信传输图片的时候发现大量该协议的数据 其他未知协议:微信app内部有很多模块,比如摇一摇,附近的人,发红包 等等,这些都可能有其对应的协议,目前还不能抓全

    微信sync协议

    先看看抓包数据:

    微信sync协议头部有5部分组成,图中分别标出,解释如下: 1. 4字节 数据包长度(sync包头+sync包体),这个长度和tcp报文去掉tcp头的长度是相等的 2. 2字节 头部长度(一般为0x0010,即16字节) 3. 2字节 版本号(目前为0x0001) 4. 4字节 操作数 5. 4字节 序列号

    程序中可以使用以下sync报头结构体

    //author: arvik //email: 1216601195@qq.com //微信sync协议报头 typedef struct wx_sync_hr { u_int32_t packet_len; /* 前4字节表示数据包长度,可变* */ u_int16_t header_len; /*2个字节表示头部长度,固定值,0x0010*/ u_int16_t thx_ver; /*2个字节表示版本,固定值,0x0001*/ u_int32_t operation_code; /*4个字节操作说明数字,可变*/ u_int32_t serial_number; /*序列号,可变*/ }__attribute__((packed, aligned(2))) wx_sync_hr_t;

    微信unknown协议

    先看看抓包数据: 请求包: 返回包,这里就只截图做个对比:

    按照图中标出的顺序,解释如下: 1. 1字节 标识,一般为0xab,目前未见过其他值 2. 2字节 标识,一般为0x00 3. 2字节 报文长度,如果低于或等于tcp分段长度的话,这个值是和tcp报文数据部分长度是相等的(注意:第2、3部分有可能都表示报文长度,即:用4字节表示报文长度) 4. 2字节 标识, 未知 5. 16字节 标识,一般都为0x00 6. 2字节 标识, 数据长度, = 总长度 - 头部长度(25字节)

    程序中可以使用以下报头结构体:

    //微信推送图片协议头,协议头部25字节 typedef struct wx_unknown_hr { uint8_t ver; // 标识 一般为0xab uint16_t flag;// 标识 一般为0x0000 uint16_t tot_len; //报文长度(包括报头,和tcp的数据长度是一样的) uint16_t seq; //标识,未知 char unbuf[16]; //未知,一般全部为0x00 uint16_t bodylen; //数据长度,一般为 tot_len - 25 }__attribute__((packed)) wx_unknown_hr;

    微信http协议

    微信http数据就比较多了,请求基本都是post方法,就不一一列举了,随便抓个包

    它有个显著的特点,就是User-Agent字段为MicroMessenger Client,这是微信客户端特有的一个UA标识 另外,也可以通过host找到微信域名的关键字weixin来确认这是微信的数据包

    微信ssl协议

    ssl协议中往往包含的是http协议,所以整体就是https协议,可以通过ssl协议传输公钥中的域名来确定,不过用程序分析起来就比较麻烦了,一般做协议分析只分析到ssl协议包报头位置,并不深入确定某帧数据包ssl协议属于谁 抓个包看看:

    证书中指定的域名为*.swiftpass.cn,实际抓包中发现在微信支付的过程中可能使用了该域名pay.swiftpass.cn,用站长工具查询该域名对应的ip为203.195.142.238,地址为香港腾讯云

    另外,arvik还写了几篇关于深度报文分析的文章,里面讲解了基于开源框架opendpi的ndpi的源码框架以及协议分析器的编写,有兴趣的鞋童可以前去观看我的《智能路由器》专栏一探究竟!

    时间仓促,错误难免,如果发现博客有误,欢迎指正!


    好了,到此结束,作者arvik 【以太网数据结构】系列文章链接 http://blog.csdn.net/u012819339/article/category/5849175

    转载请注明原文地址: https://ju.6miu.com/read-1152670.html
    最新回复(0)