⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 awl_checksum.c

📁 数据转发,可以根据需要动态改变 阅读您的文件包然后写出其具体功能
💻 C
字号:
#include <string.h>#include <stdlib.h>#include <netinet/in.h>#include <netinet/tcp.h>#include <awl_checksum.h>static unsigned short inline checksum(unsigned short *buffer,int size){	unsigned long cksum = 0;		while(size>1){		cksum += *buffer++;		size  -= sizeof(unsigned short);	}		if(size){		cksum += *(unsigned char *)buffer;	}		cksum = (cksum >> 16) + (cksum & 0xffff);	cksum += (cksum >> 16);				return((unsigned short )(~cksum));}unsigned int inline tcp_checksum(unsigned long saddr,   								unsigned long daddr,								unsigned short *buffer,								int size){	unsigned long sum = 0;	char *buf;	struct tcp_fake_header *tfh;	int tfh_len = sizeof(struct tcp_fake_header);		buf = (char *)malloc(tfh_len+size);	tfh = (struct tcp_fake_header *)buf;	memcpy(buf+tfh_len,buffer,size);		tfh->saddr = saddr;	tfh->daddr = daddr;	tfh->mbz = 0;	tfh->proto = IPPROTO_TCP;	tfh->header_len = htons(sizeof(struct tcphdr));		sum = checksum((unsigned short*)buf,tfh_len+size);	free(buf);		return(sum);}unsigned int inline ip_checksum(unsigned short *buffer,int size){	return(checksum(buffer,size));}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -