使用 winpcap 定制 TCP 包
前些时候做 DOS 方面的测试,由于协议学得不够好,有些回应不记得,所以就首先想
到用 hping 来定制一些包,看看远程主机的回应。结果下载的 hping 死活都不发包,换了多
个不同版本的 winpcap 都不行。一怒之下,决定自己写个简单的。首先想到的是 perl 来做,
最后觉得一样要安装 winpcap 还有很多别的模块,不如直接 c 来实现一下,来得更痛快。
需要说明一下的是,在以太网头那里我故意偷懒了,没有获取本机的 MAC 地址而是写
了个错误的。所以给内网用户发包的话,能发出去,只是你收不到回应了,发给外网就没
这个问题,这是因为同交换机下面靠 MAC 地址来定位的。
最后一点,这里所有的包,目的 MAC 地址都是写的 MAC,通过网关把数据转发出去
的。虽然同交换机下面可以直接通过 MAC 定位,但是我懒得判断,直接发送给网关再转
发会比较简单。
代码:
/* Code By yunshu, 2008-05-08, Make tcp packet to send to remote server
* I don't know which version of winpcap needed by hping, so I wrote this code.
* Under winpcap 4.0.2, Dev-CPP 4.9.9.2, windows xp professional sp2
*/
#include <stdio.h>
#include <string.h>
#include <winsock2.h>
#include <iphlpapi.h>
#include <unistd.h>
#include <pcap.h>
#include <remote-ext.h>
#define IP_PROTO 0x0800
char LocalIP[20] = { 0 };