为什么小弟我自己构造的数据包发不出去呢? 大侠帮小弟我看看啊
为什么我自己构造的数据包发不出去呢? 大侠帮我看看啊!
void UC_interdiction()
{
int i;
IP_HEADER ipHeader;
UDP_HEADER udpHeader;
u_int8_t packet_content[119] = {0};
u_int8_t pdata[64] = "\x3A\x10\x03\x12\x00\x68\x10\x24\x00\xBE\x01\x00\x00\x00\x00\x02\x01\x10\x10\xAF\x24\x00\x00\x3C\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x24\x9E\xBE\x01\x00\x00\x00\x00\x03\x41\x41\x41\xDB\x27\x13\x00\x01\xD3\x5E\xA3\x44 ";
u_int8_t Dst_MAC[6] = "\x01\xE1\xFC\x1A\x57\xFA ";
u_int8_t Src_MAC[6] = "\x01\x17\xF3\xB4\x11\x22 ";
u_int8_t HeadData[14] = "\x11\xc9\xfc\x0d\x7c\x19\x12\x01\x00\x01\x00\x40\x00\x22 ";
//填充IP首部
ipHeader.h_lenver = (4 < <4 | sizeof(ipHeader)/sizeof(unsigned long));
ipHeader.tos = 0;
ipHeader.total_len = htons(sizeof(ipHeader)+sizeof(udpHeader)+13+64);
ipHeader.ident = 1;
ipHeader.frag_and_flags = 0;
ipHeader.ttl = 128;
ipHeader.proto = IPPROTO_UDP;
ipHeader.checksum = 0; /
ipHeader.sourceIP = inet_addr( "168.16.35.8 ");
ipHeader.destIP = inet_addr( "205.191.99.214 ");
//填充UDP首部
udpHeader.souceport = htons(2835);
udpHeader.destport = htons(3111);
udpHeader.length = htons(sizeof(udpHeader)+13+64);//数据长度
udpHeader.checksum = 0;
//效验和
memset(packet_content,0, sizeof(packet_content));
memcpy(packet_content, &udpHeader, sizeof(udpHeader));
memcpy(packet_content+sizeof(udpHeader), HeadData, 13);
memcpy(packet_content+sizeof(udpHeader)+13,UCdata, 64);
udpHeader.checksum = checksum((USHORT *)packet_content, sizeof(udpHeader)+13+64);
memset(packet_content,0, sizeof(packet_content));
memcpy(packet_content, &ipHeader, sizeof(ipHeader));
memcpy(packet_content+sizeof(ipHeader), &udpHeader, sizeof(udpHeader));
memcpy(packet_content+sizeof(ipHeader)+sizeof(udpHeader), HeadData, 13);
memcpy(packet_content+sizeof(ipHeader)+sizeof(udpHeader)+13, pdata, 64);
ipHeader.checksum = checksum((USHORT *)packet_content, sizeof(ipHeader)+sizeof(udpHeader)+13+64);
memset(packet_content,0, sizeof(packet_content));
memcpy(packet_content,Dst_MAC,6);
memcpy(packet_content+6,Src_MAC,6);
memcpy(packet_content+14, &ipHeader, sizeof(ipHeader));
memcpy(packet_content+14+sizeof(ipHeader),&udpHeader,sizeof(udpHeader));
memcpy(packet_content+14+sizeof(ipHeader)+sizeof(udpHeader), HeadData, 13);
memcpy(packet_content+14+sizeof(ipHeader)+sizeof(udpHeader)+13, pdata, 64);
if( packet_content!= NULL)
{
pcap_sendpacket(adhandle,packet_content,119);
}
}
//UDP / IP 校验和
unsigned short checksum(unsigned short *buffer,int size)
{
unsigned long cksum = 0;
while(size > 1) //各位求和
{
cksum += *buffer++;
void UC_interdiction()
{
int i;
IP_HEADER ipHeader;
UDP_HEADER udpHeader;
u_int8_t packet_content[119] = {0};
u_int8_t pdata[64] = "\x3A\x10\x03\x12\x00\x68\x10\x24\x00\xBE\x01\x00\x00\x00\x00\x02\x01\x10\x10\xAF\x24\x00\x00\x3C\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x24\x9E\xBE\x01\x00\x00\x00\x00\x03\x41\x41\x41\xDB\x27\x13\x00\x01\xD3\x5E\xA3\x44 ";
u_int8_t Dst_MAC[6] = "\x01\xE1\xFC\x1A\x57\xFA ";
u_int8_t Src_MAC[6] = "\x01\x17\xF3\xB4\x11\x22 ";
u_int8_t HeadData[14] = "\x11\xc9\xfc\x0d\x7c\x19\x12\x01\x00\x01\x00\x40\x00\x22 ";
//填充IP首部
ipHeader.h_lenver = (4 < <4 | sizeof(ipHeader)/sizeof(unsigned long));
ipHeader.tos = 0;
ipHeader.total_len = htons(sizeof(ipHeader)+sizeof(udpHeader)+13+64);
ipHeader.ident = 1;
ipHeader.frag_and_flags = 0;
ipHeader.ttl = 128;
ipHeader.proto = IPPROTO_UDP;
ipHeader.checksum = 0; /
ipHeader.sourceIP = inet_addr( "168.16.35.8 ");
ipHeader.destIP = inet_addr( "205.191.99.214 ");
//填充UDP首部
udpHeader.souceport = htons(2835);
udpHeader.destport = htons(3111);
udpHeader.length = htons(sizeof(udpHeader)+13+64);//数据长度
udpHeader.checksum = 0;
//效验和
memset(packet_content,0, sizeof(packet_content));
memcpy(packet_content, &udpHeader, sizeof(udpHeader));
memcpy(packet_content+sizeof(udpHeader), HeadData, 13);
memcpy(packet_content+sizeof(udpHeader)+13,UCdata, 64);
udpHeader.checksum = checksum((USHORT *)packet_content, sizeof(udpHeader)+13+64);
memset(packet_content,0, sizeof(packet_content));
memcpy(packet_content, &ipHeader, sizeof(ipHeader));
memcpy(packet_content+sizeof(ipHeader), &udpHeader, sizeof(udpHeader));
memcpy(packet_content+sizeof(ipHeader)+sizeof(udpHeader), HeadData, 13);
memcpy(packet_content+sizeof(ipHeader)+sizeof(udpHeader)+13, pdata, 64);
ipHeader.checksum = checksum((USHORT *)packet_content, sizeof(ipHeader)+sizeof(udpHeader)+13+64);
memset(packet_content,0, sizeof(packet_content));
memcpy(packet_content,Dst_MAC,6);
memcpy(packet_content+6,Src_MAC,6);
memcpy(packet_content+14, &ipHeader, sizeof(ipHeader));
memcpy(packet_content+14+sizeof(ipHeader),&udpHeader,sizeof(udpHeader));
memcpy(packet_content+14+sizeof(ipHeader)+sizeof(udpHeader), HeadData, 13);
memcpy(packet_content+14+sizeof(ipHeader)+sizeof(udpHeader)+13, pdata, 64);
if( packet_content!= NULL)
{
pcap_sendpacket(adhandle,packet_content,119);
}
}
//UDP / IP 校验和
unsigned short checksum(unsigned short *buffer,int size)
{
unsigned long cksum = 0;
while(size > 1) //各位求和
{
cksum += *buffer++;