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