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

📄 trans_check.c

📁 示范了Unix和Linux下如何利用Raw Socket构造伪装的TCP、IP、UDP的包
💻 C
字号:
/* Transport header checksum * for TCP and UDP * shadows@whitefang.com */#include <stdlib.h>#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netinet/in_systm.h>#include <netinet/ip.h>#include <netinet/udp.h>#include <netinet/tcp.h>#include <errno.h>#include <string.h>#if !defined(HAVE_INCKSUM)#include <checksum.h>#endifstruct psuedohdr  {  struct in_addr source_address;  struct in_addr dest_address;  unsigned char place_holder;  unsigned char protocol;  unsigned short length;} psuedohdr;unsigned short trans_check(unsigned char proto,			   char *packet,			   int length,			   struct in_addr source_address,			   struct in_addr dest_address){  char *psuedo_packet;  unsigned short answer;    psuedohdr.protocol = proto;  psuedohdr.length = htons(length);  psuedohdr.place_holder = 0;  psuedohdr.source_address = source_address;  psuedohdr.dest_address = dest_address;    if((psuedo_packet = malloc(sizeof(psuedohdr) + length)) == NULL)  {    perror("malloc");    exit(1);  }    memcpy(psuedo_packet,&psuedohdr,sizeof(psuedohdr));  memcpy((psuedo_packet + sizeof(psuedohdr)),	 packet,length);    answer = (unsigned short)in_cksum((unsigned short *)psuedo_packet,				    (length + sizeof(psuedohdr)));  free(psuedo_packet);  return answer;}

⌨️ 快捷键说明

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