可以发送任意包的网络协议学习工具 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    可以发送任意包的网络协议学习工具

    一、动因

    我们在学习网络协议的时候,比如看tcp/ip详解,很多时候需要构造一个自定义包发送然后观察结果,

可以发送任意包的网络协议学习工具

。观察的话最好的工具当然是wiresharp,相当的给力。但是很多时候我们需要发送一个自定义的包,比如发送arp包,观察返回的地址,发送自定义的tcp包,观察相应时间,各种坚持的时间,滑动窗口变化等等。我们都知道在winxp后,已经不能使用raw_socket 构造,除非你写一个自己的网络驱动。所以,曾经找到过一个hping ,有windows 的版本,但是好像怎么也用不了。所以自己写了一个。使用的是wincap 库,使用这个工具的前提是你要安装wincap.自己去下载。

    下面介绍一下基本操作,程序就一个exe文件,win界面,三个区域,分别是发送区,监视区和设置要捕获的包的过滤条件,当然都比较简单的过滤条件。这个小程序的功能就是可以自定义发送apr包,tcp包,udp包,icmp包,可以定义包中的各个字段。并且可以开启监视功能,发送的包会被记录,返回的包也会被记录并被显示(适用于winxp以上操作系统)

    二、基本操作

    1 发送区(填好各种字段后,发送就可以)

   

    2 监视过滤区

   

    3 监视输出区(如果你发送一个apr包,可以看到,马上收到一个返回,并且能看到你发送的包)

   

    三、一些经验

    1、TCP,UDP的检验和应该包括其中的数据,而IP头的检验和只应该计算IP头部

    ip: ipHeader.checksum = Checksum((USHORT*)szSendBuf, sizeof(ipHeader));

    tcp: tcpHeader.th_sum = Checksum((USHORT*)szSendBuf, sizeof(psdHeader) + sizeof(tcpHeader)+strlen(data));

    2、IP头部的长度,应该除以4

    ipHeader.h_len = (4<<4 | sizeof(ipHeader)/sizeof(unsigned long)); //要除4(32BIT)

    3、要注意网络字节顺序和windows循序的的不同,大端模式,高位存放高字节,小端则反之

    ipHeader.sourceIP=inet_addr(szIP);

最新文章