首页
社区
课程
招聘
[旧帖] [求助]封包里为什么看不到字符串,但下断WS2_32的recv()接收缓存里看得到? 0.00雪花
发表于: 2008-7-15 14:49 3695

[旧帖] [求助]封包里为什么看不到字符串,但下断WS2_32的recv()接收缓存里看得到? 0.00雪花

2008-7-15 14:49
3695
用Iris 4.07抓包,封包里看不到传送的字符串,但OD下断WS2_32的recv(),接收缓存里看得到明文,为什么?

是不是封包里的数据要处理一下?

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
调用一次WS2_32.recv(),是不是对应一个封包,还是多个封包?
2008-7-15 16:50
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
3
recv返回的内容和封包不是相互对应的. 
1. 封包里面除了会话内容外还有协议内容, 有的封包甚至只是一个回应而不带任何数据.
2. 由于路由问题, 封包到达目的系统的顺序和离开源系统的顺序并不一定相同, 但系统会帮你排好队.
3. 对每一个连接, 系统有对应的一个缓冲区负责接收, 这个缓冲区的大小是用户可指定的.
4. 系统收到封包后会剥离协议头, 只将会话内容存入接收缓冲区, 然后通知用户收到数据(Select会返回真)
5. 调用一次recv会把当前接收缓冲区里的内容传送到你给出的Buffer里, 数据的多少由你给的大小和缓冲区中实际的数据大小来决定.
6. 以太网内, 一个TCP/IP的封包有效负荷只有1K多一点(具体数忘记了, 懒得算)
因此, 一次recv的结果可能是N个封包的组合. 特别是HTTP这样一次收发nK的数据的会话.

至少为什么封包里看不到, recv能看到, 有三种可能:
1. 你没截获到. 因为收到封包后系统才会通知应用程序有数据到, 这时应用程序才会调recv, 这有个时间差.
2. 你没看到. ^Q^
3. 你的会话是通过VPN或是PPTP之类加密通道传输的, 这样封包里是看不到的(因为已经加密了), recv可以看到(系统帮你还原了).
2008-7-15 21:06
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
使用了加密通道,是不是可以从IP的协议头中看出?
2008-7-16 00:14
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
5
先说明一下, VPN本来只是指使用IPSec协议的, 现在使用PPTP/L2TP等等协议的都叫VPN了---只要能加密认证就可以叫VPN....
IPSec使用UDP 4500端口进行会话;
PPTP使用TCP 1723端口做为控制会话, 实际的数据传输会话协议是GRE(IP协议号为47).
L2TP使用UDP 1701端口, 通常会与IPSec共用.
2008-7-16 21:12
0
游客
登录 | 注册 方可回帖
返回
//