NT的另乙個SNIFFER

2021-04-07 00:31:14 字數 3369 閱讀 4587

#include

#include

#include

#pragma comment(lib,"ws2_32.lib")

#define sio_rcvall _wsaiow(ioc_vendor,1)

#define status_failed 0xffff //定義異常出錯**

#define max_pack_len 65535 //接收的最大ip報文

#define max_addr_len 16 //點分十進位制位址的最大長度

#define max_proto_text_len 16 //子協議名稱(如"tcp")最大長度

#define max_proto_num 12 //子協議數量

#define max_hostname_lan 255 //最大主機名長度

#define cmd_param_help true

typedef struct _iphdr

ip_header;

typedef struct _tcphdr //定義tcp首部

tcp_header;

typedef struct _udphdr //定義udp首部

udp_header;

typedef struct _icmphdr //定義icmp首部

icmp_header;

typedef struct _protomap //定義子協議對映表

protomap;

protomap protomap[max_proto_num]=, ,

, ,

, ,

, ,

, ,

,

};

socket sockraw;

char tcpflag[6]=; //定義tcp標誌位

bool paramtcp =false; // -t關注tcp 報文

bool paramudp =false; // -u關注udp 報文

bool paramicmp =false; // -i關注icmp報文

bool paramdecode=true; // -d對協議進行解碼

char *strfromipfilter=null; // 源ip位址過濾

char *strdestipfilter=null; // 目的位址過濾

int decodeippack(char *,int);

int decodetcppack(char *);

int decodeu***ack(char *);

int decodeicmppack(char *);

void checksockerror(int,char*);

char * checkprotocol(int);

void usage(void);

bool getcmdline(int, char **);

void main(int argc, char ** argv) ;

usage();

if(getcmdline(argc, argv)==cmd_param_help) exit(0);

//初始化socket

wsadata wsadata;

ierrorcode = wsastartup(makeword(2,1),&wsadata);

checksockerror(ierrorcode, "wsastartup");

sockraw = socket(af_inet , sock_raw , ipproto_ip);

checksockerror(sockraw, "socket");

//獲取本機ip位址

char far name[max_hostname_lan];

ierrorcode = gethostname(name, max_hostname_lan);

checksockerror(ierrorcode, "gethostname");

struct hostent far * phostent;

phostent = (struct hostent * )malloc(sizeof(struct hostent));

phostent = gethostbyname(name);

sockaddr_in sa;

sa.sin_family = af_inet;

sa.sin_port = htons(6000);

memcpy(&sa.sin_addr.s_un.s_addr, phostent->h_addr_list[0], phostent->h_length);

ierrorcode = bind(sockraw, (psockaddr)&sa, sizeof(sa));

checksockerror(ierrorcode, "bind");

//設定sock_raw為sio_rcvall,以便接收所有的ip包

dword dwbufferlen[10] ;

dword dwbufferinlen = 1 ;

dword dwbytesreturned = 0 ;

ierrorcode=wsaioctl(sockraw,sio_rcvall,&dwbufferinlen,sizeof(dwbufferinlen),&dwbufferlen, sizeof(dwbufferlen),

&dwbytesreturned , null , null );

checksockerror(ierrorcode, "ioctl");

//偵聽ip報文

while(1)

}

//ip解包程式

int decodeippack(char *buf, int ibufsize)

//printf("/n");

return true; }

//sock錯誤處理程式

void checksockerror(int ierrorcode, char *perrormsg)

}

//協議識別程式

char * checkprotocol(int iprotocol)

printf("/n");

return true; }

//udp解包程式

int decodeu***ack(char * udpbuf)

//icmp解包程式

int decodeicmppack(char * icmpbuf)

//命令列引數處理

bool getcmdline(int argc, char ** argv)

另乙個自己

人們常說 人貴有自知之明 可是話說回來,又有幾人能真正的了解自己呢?我覺得我就是乙個很沒有自知之明的人。生於89年的我,到了今年的生日就28周歲了。都說三十而立,正所謂成家立業,可以回過頭發現自己可以稱得上 一無是處,一無所有 曾幾何時,還是鄰居家叔叔阿姨教育孩子的榜樣 曾幾何時父母因為自己考個好大...

呼叫另乙個Activity

1 建立主activity 注意通過權重來分配尺寸的方式 元件1 android layout width 0dp android layout weight 1 元件2 android layout width wrap content 2 在主類中指定onclick所對應的sendmessage...

08 另乙個林則徐

子孫若如我,留錢做什麼?賢而多財,財損其志 子孫不如我,留錢做什麼?愚而多財,益增其過。清 林則徐 音訊點我!有一本書,叫 林則徐家書 是林則徐寫給家裡人的信。林則徐大家都知道,先是欽差大臣,去廣東禁菸 鴉片戰爭失敗之後,又成了朝廷的替罪羊,被發配到新疆伊犁,這批家書基本上都是這個時候寫的。過去我們...