测试过程中如何分析抓包工具抓的HTTP或TCP包

http://www.docin.com/p-101479451.html


工作中遇到C/S的通讯接口测试,经常会遇到由于请求的结构不对或者包发送错误,导致很多问题,通常需要通过抓包工具,把发送的包抓下来,然后做进一步的分析,就可以一很容易看出存在的错误。
 
根据自己的总结和经验,整理了一个简单的分析方法,做为自己的知识积累,便于以后参考。
 

这是一个登陆请求的抓包:

0x0010   0a01 03a6 50a5 2d6f df20 f96b 2f09 fa4d        ....P.-o...k/..M
0x0020   5010 825b ec59 0000 0000 0000 0000             P..[.Y........
14:23:10.184430 88.120.40.59.broad.sz.gd.dynamic.163data.com.cn.20645 > pcs3166.11631: P [tcp sum ok] 150:306(156) ack 26 win 33371 (DF) (ttl 109, id 23149, len 196)
0x0000   4500 00c4 5a6d 4000 6d06 f19f 3b28 7858        E...Zm@.m...;(xX
0x0010   0a01 03a6 50a5 2d6f df20 f96b 2f09 fa4d        ....P.-o...k/..M
0x0020   5018 825b afcc 0000 0001 9c00 0100 0000        P..[............
0x0030   0100 0000 0000 0000 3c72 6571 3e3c 6d73        ........<req><ms
0x0040   6973 646e 3e31 3336 3332 3631 3734 3339        isdn>13632617439
0x0050   3c2f 6d73 6973 646e 3e3c 7077 643e 3733        </msisdn><pwd>73
0x0060   3432 3830 3c2f 7077 643e 3c75 613e 506f        4280</pwd><ua>Po
0x0070   636b 6574 5f50 433c 2f75 613e 3c76 6572        cket_PC</ua><ver
0x0080   3e6d 7075 7368 2e31 2e31 2e31 2e30 3835        >mpush.1.1.1.085
0x0090   3c2f 7665 723e 3c63 6f6d 6d5f 7665 723e        </ver><comm_ver>
0x00a0   313c 2f63 6f6d 6d5f 7665 723e 3c6d 6574        1</comm_ver><met
0x00b0   6169 643e 303c 2f6d 6574 6169 643e 3c2f        aid>0</metaid></
0x00c0   7265 713e                                      req>

 

那么根据自定义的接口文档来参考:

登陆的消息包头组建格式为:

CLIENT->CSVR的消息的接口格式

Protocal Version

2字节,数字

Length

4字节,数字

Type

2字节,数字

TransactionID

4字节,数字

Session ID

4字节,数字

MSG BODY

XML格式,长度不定

Length:表示整条消息的总长度,包括protocal version, length, type, session id及msg body字段。

Type表示消息类型,其类型和取值为 登录请求:1(Client->Server)

 

按照以上的协议分析:

MSGBODY前面的共:2+4+2+4+4=16个字节

所以找到从MSGBODY向前找,找到16个字节,就正确了,

下面的就是从<req>向前找,  就可以找到这16个字节:

0001  9c00  0100  0000  0100 0000 0000 0000

 

对比协议可以看出:

0001       9c00 0100   0000     0100  0000            0000  0000

nVersion   nLength     nType    nTransactionID;4      nSessionId

 

由于网络字节序与主机字节序的区别,不同CPU的字节序不一样,有些CPU是高字节在前面,有些是低字节在前面。网络上传输的消息码流是网络字节序的,

我们如果分析抓包工具的消息,由于主机是奔腾的CPU,先要将网络序转换为主机序,需要前后左右置换一下。置换后为:

 

0100       0001 009c   0000     0000  0001            0000  0000

nVersion   nLength     nType    nTransactionID;4      nSessionId

 

转化为10进制分别为:256 、65692、0、1、0

而实际的length的值我们可以数一下: 16+MSGBODY包共(140字节)= 156

而且也看出ntype不对,实际上应该是1。版本也不对。

 

通过这样一分析,就知道是登陆请求发错了,而且知道了错误的原因。

 

(一般抓包:我是用root用户直接用命令行抓,没有用相关工具)

 抓包命令为:

  /usr/sbin/tcpdump/ -vvx -s 2048 -i etho port 端口号


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值