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

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

?? snifferdlg.cpp

?? sniffer program for serial
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

			case IPPROTO_TCP:

				TCP_HDR* pTCPHeader;

				pTCPHeader = (TCP_HDR *) &pData[headerLen];
				
				ParseTCPPacket(source, destination, pTCPHeader, pData, dwSize - headerLen );

				break;

			default:

				//TRACE(_T("Not a TCP packet"));
				return false;

			}

		}
		else
		{
			//TRACE( _T("IP version 6") );
			return false;
		}

/*
	struct in_addr sa4 = {0};

	char* pAddress = NULL;

	//	sa4.S_un.sin_family = AF_INET;
	//    sa4.sin_port   = 0;

	sa4.S_un.S_addr = pIPHeader->ip_srcaddr;

	pAddress = inet_ntoa( sa4);
*/
		return true;
	}
	catch(...)
	{
		return false;
	}

	
}


bool CSnifferDlg::ParseTCPPacket(const CString& source, const CString& destination, TCP_HDR* pTCPHeader, char* pData, unsigned long len	)
{
	try
	{
		if ( len < sizeof(*pTCPHeader) )
			return false;

		len -= sizeof(*pTCPHeader);
		pData += sizeof(*pTCPHeader);

		unsigned int sourcePort, destPort;

		sourcePort = htons(pTCPHeader->src_portno);
		destPort = htons(pTCPHeader->dest_portno);
	
//		if ( sourcePort != 25 && destPort != 25 )
//			return false;

		Session* pSide = NULL;
		CString strError;

		INT_PTR arrayIndex = -1;

		for ( int i = 0 ; i < m_Array.GetSize(); i++ )
		{
			Session* pCur = m_Array.GetAt(i);

			if ( pCur->sourceIP == source && pCur->sourcePort == sourcePort 
				&& pCur->destIP == destination && pCur->destPort == destPort)
			{
				pSide = pCur;
				arrayIndex = i; // Save the position in the array
				break;
			}

		}

		const bool sideExist = (pSide != NULL );

		const tcp_seq curSeq = ntohl(pTCPHeader->seq_num);
		
		// if the packet is a SYN packet then don't count the gap
		const USHORT flg = (ntohs(pTCPHeader->lenflags) & 0x3F);


		if ( !pSide )  // A new session
		{
			// Only if the packet is a SYN packet then
			if ( (flg & TH_SYN ) )
			{
				pSide = new Session();

				pSide->sourceIP = source;
				pSide->destIP = destination;
				pSide->sourcePort = sourcePort;
				pSide->destPort = destPort;
				pSide->len = len;
				pSide->ISN = curSeq;
				pSide->pOtherSide = NULL;

				arrayIndex = m_Array.Add( pSide );

				strError = _T(" /*New session*/ ");
			}

		}


		// Make sure the gap in sequences is less than 10 MB and is positive
		if ( sideExist )
		{
			const long gap = curSeq - pSide->ISN;
			
			pSide->len = len;

			if ( (flg & TH_SYN) != TH_SYN )
			{
				
				if ( (flg & TH_RST ) || ( flg & TH_FIN) )
				{
					m_Array.RemoveAt( arrayIndex );
				}
				else
				{
					// Only if the size is greater than 0 do the checking
					if ( len > 0 )
					{

//						ASSERT( gap >= 0 );
						if ( gap < 0 )
							strError += _T(" { Gap < 0 }");

//						ASSERT ( gap <= 10 * 1024 * 1000 );

						if ( gap >  10 * 1024 * 1000 )
							strError += _T(" { Gap > 10 MB }");
					}
				}
			}
			else
				pSide->ISN = curSeq;
			
		}

//		if ( sourcePort == 25 || destPort == 25 )
			PrintPacket( source, destination, pTCPHeader, len, strError);


		return true;
		
	}
	catch(...)
	{
		return false;
	}
	
}


void CSnifferDlg::ConvertAddress( unsigned int address, CString& strAddress )
{
	IN_ADDR ad;

	ad.S_un.S_addr = address;

	strAddress = inet_ntoa( ad );
}


void CSnifferDlg::PrintSession( Session* pSession )
{


}


void CSnifferDlg::PrintPacket( const CString& source, const CString& destination,TCP_HDR* pTCPHeader, DWORD dwSize, const CString& errors ) 
{
	CString s, from, to, flags, sequence, ack ;

	from = source;
	to = destination;

	unsigned int sourcePort, destPort;

	sourcePort = htons(pTCPHeader->src_portno);
	destPort = htons(pTCPHeader->dest_portno);

	// if the packet is a SYN packet then don't count the gap
	const USHORT flg = (ntohs(pTCPHeader->lenflags) & 0x3F);

	if ( flg & TH_SYN ) 
	{
		if ( flags.GetLength() > 0 )
			flags += _T(",");
		flags += _T("SYN");

	}
	if ( flg & TH_RST ) 
	{
		if ( flags.GetLength() > 0 )
			flags += _T(",");
		flags += _T("RST");
	}

	if ( flg & TH_FIN ) 
	{
		if ( flags.GetLength() > 0 )
			flags += _T(",");
		flags += _T("FIN");
	}

	if ( flg & TH_ACK ) 
	{
		if ( flags.GetLength() > 0 )
			flags += _T(",");
		flags += _T("ACK");
	}

	if ( flg & TH_URG ) 
	{
		if ( flags.GetLength() > 0 )
			flags += _T(",");
		flags += _T("URG");
	}


	if ( flg & TH_PUSH ) 
	{
		if ( flags.GetLength() > 0 )
			flags += _T(",");
		flags += _T("PUSH");
	}

	if ( flg & TH_TAPI ) 
	{
		if ( flags.GetLength() > 0 )
			flags += _T(",");
		flags += _T("TAPI");
	}

	if ( flg & TH_NETDEV ) 
	{
		if ( flags.GetLength() > 0 )
			flags += _T(",");
		flags += _T("NETDEV");
	}

	sequence.Format(_T("%lu"),ntohl(pTCPHeader->seq_num));
	ack.Format(_T("%lu"),ntohl(pTCPHeader->ack_num) );

	s.Format(_T("%s - %s {%ld-%ld}, len: %ld, seq: %s,ack: %s, Flags: %s %s\r\n"), from, to, sourcePort, destPort, dwSize, sequence,ack, flags, errors);

	m_Logger.Write( (LPCTSTR)s, s.GetLength() * sizeof(TCHAR) );
	
	
	CString szSourcePort, szDestPort, szSize;
	
	szSourcePort.Format( _T("%ld"), sourcePort );
	szDestPort.Format( _T("%ld"), destPort );
	
	szSize.Format( _T("%ld"), dwSize );

	TVPacketItem packetItem(source, szSourcePort, destination, szDestPort, szSize, flags, sequence, ack);
	
	InsertPacketToTV( packetItem );

}
bool CSnifferDlg::GetInterfaces(CStringArray& interfaces)
{
	try
	{
	

		char     Hostname[MAX_PATH];
		HOSTENT *pHostEnt;
		int      nAdapter = 0;
		struct sockaddr_in   address;

		gethostname( Hostname, sizeof( Hostname ));
		pHostEnt = gethostbyname( Hostname );

		while ( pHostEnt->h_addr_list[nAdapter] )
		{
			memcpy(&address.sin_addr,pHostEnt->h_addr_list[nAdapter], pHostEnt->h_length);

			interfaces.Add(inet_ntoa(address.sin_addr));
			nAdapter++;
		} 

		return true;
	}
	catch(...)
	{
		return false;
	}
}
void CSnifferDlg::OnSize(UINT nType, int cx, int cy)
{
	CDialog::OnSize(nType, cx, cy);

	ResizeForm();
}

void CSnifferDlg::ResizeForm(void)
{
	if ( !IsWindowVisible() || !m_CmbInterfaces.IsWindowVisible() ||  !m_FrmInterfaces.IsWindowVisible() || !m_TVPackets.IsWindowVisible())
		return;
	
	CRect rect, dlgRect;

	GetClientRect( &dlgRect );

	rect = dlgRect;

	rect.top = 100;
	
	m_TVPackets.MoveWindow( &rect );
}

void CSnifferDlg::OnBnClickedStartsniffing()
{
	m_CmbInterfaces.GetLBText( m_CmbInterfaces.GetCurSel(), m_SelInterface );
	
	m_hThread = CreateThread(NULL, 0,SnifferThread,this,0,&m_dwThreadID);

	
}


ULONG WINAPI CSnifferDlg::SnifferThread(LPVOID pParam)
{
	
	CSnifferDlg* pDlg = (CSnifferDlg*)pParam;

	pDlg->StartSniffing();

	return S_OK;
}

void CSnifferDlg::OnClose()
{
	m_bExit = true;
		
	DWORD dwValue = WaitForSingleObject( m_hThread, 5000);

	if ( dwValue == WAIT_TIMEOUT )
		TerminateThread( m_hThread,0);

	CDialog::OnClose();
}

void CSnifferDlg::InsertPacketToTV(const TVPacketItem& packetItem)
{
	const CString caption = packetItem.m_SourceIP + CString(_T(" - ")) + packetItem.m_DestIP;

	HTREEITEM hItem = m_TVPackets.InsertItem( caption,0,0 );
	
	m_TVPackets.SetItemData( hItem, DWORD_PTR(&packetItem) );

	HTREEITEM hIPHeader = m_TVPackets.InsertItem(_T("IP Header"),1,1,hItem);

	CString str;

	str = GetNiceString(_T("Source IP:")) + packetItem.m_SourceIP;

	m_TVPackets.InsertItem(str,2,2,hIPHeader);

	str = GetNiceString(_T("Destination IP:")) + packetItem.m_DestIP;

	m_TVPackets.InsertItem(str,2,2,hIPHeader);

	HTREEITEM hTCPHeader = m_TVPackets.InsertItem(_T("TCP Header"),1,1,hItem);

	str = GetNiceString(_T("Source Port:")) + packetItem.m_SourcePort;

	m_TVPackets.InsertItem(str,2,2,hTCPHeader);

	str = GetNiceString(_T("Destination Port:")) + packetItem.m_DestPort;

	m_TVPackets.InsertItem(str,2,2,hTCPHeader);

	str = GetNiceString(_T("Size:")) + packetItem.m_Size;

	m_TVPackets.InsertItem(str,2,2,hTCPHeader);

	str = GetNiceString(_T("Flags:")) + packetItem.m_Flags;

	m_TVPackets.InsertItem(str,2,2,hTCPHeader);

	str = GetNiceString(_T("Sequence:")) + packetItem.m_Sequence;

	m_TVPackets.InsertItem(str,2,2,hTCPHeader);

	str = GetNiceString(_T("Ack:")) + packetItem.m_Ack;

	m_TVPackets.InsertItem(str,2,2,hTCPHeader);

}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本网站在线观看一区二区三区| 国产精品久久一级| 一本一道综合狠狠老| 国产精品中文欧美| 国产成人亚洲综合a∨猫咪| 美女视频黄频大全不卡视频在线播放| 亚洲一区二区成人在线观看| 亚洲另类中文字| 亚洲色欲色欲www| **欧美大码日韩| 综合久久久久久久| 一区二区三区在线免费观看| 依依成人综合视频| 日韩国产欧美一区二区三区| 日韩一区欧美二区| 国产在线精品不卡| 成人av高清在线| 成人18精品视频| 91成人免费在线视频| 欧美电影一区二区| 亚洲精品在线一区二区| 国产农村妇女毛片精品久久麻豆| 欧美极品美女视频| 国产精品色哟哟网站| 日韩伦理免费电影| 日日骚欧美日韩| 国内成人免费视频| 91网站在线播放| 欧美妇女性影城| 国产调教视频一区| 樱桃视频在线观看一区| 麻豆精品在线视频| 成人av在线播放网站| 欧美另类一区二区三区| 日韩欧美精品三级| 亚洲欧洲一区二区在线播放| 午夜欧美一区二区三区在线播放| 精久久久久久久久久久| 91污在线观看| 久久久影院官网| 亚洲香蕉伊在人在线观| 精品写真视频在线观看 | 91激情五月电影| 日韩三级视频中文字幕| 日本一区二区久久| 日韩高清中文字幕一区| 成人美女视频在线观看18| 欧美日韩成人综合| 国产精品三级av| 久久国内精品视频| 91成人国产精品| 国产调教视频一区| 免播放器亚洲一区| 在线视频国内一区二区| 久久九九影视网| 91在线国产观看| 亚洲国产成人自拍| 精品一区二区三区免费视频| 色综合视频在线观看| 久久久久久夜精品精品免费| 亚洲自拍另类综合| 99视频精品全部免费在线| 欧美精品一区二区三区久久久| 成人免费小视频| 国产91富婆露脸刺激对白 | 一级精品视频在线观看宜春院| 久久精品国产久精国产| 欧美精品 国产精品| 亚洲第一成人在线| 日本道免费精品一区二区三区| 国产日产欧美一区| 国产精品性做久久久久久| 日韩精品一区国产麻豆| 91麻豆swag| 欧美日韩国产小视频| 国产精品理论片| 国产成人一区在线| 欧美国产激情二区三区| 国产毛片精品视频| 国产色产综合产在线视频| 国产精品亚洲第一| 国产精品伦一区二区三级视频| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美色精品在线视频| 亚洲一区二区三区中文字幕| 91视频免费观看| 亚洲成人一区二区| 91超碰这里只有精品国产| 午夜伊人狠狠久久| 制服.丝袜.亚洲.另类.中文| 三级欧美韩日大片在线看| 欧美日本一区二区在线观看| 亚洲自拍偷拍网站| 欧美电影一区二区| 精品一区二区国语对白| 国产欧美日韩视频在线观看| 成人v精品蜜桃久久一区| 中国色在线观看另类| 99在线精品观看| 亚洲福中文字幕伊人影院| 91精品国产综合久久小美女| 九一九一国产精品| 日本一区二区成人在线| 91麻豆免费看| 香蕉影视欧美成人| 国产亚洲欧美在线| 在线免费av一区| 激情综合五月婷婷| 亚洲天堂成人网| 欧美成人一区二区| 97久久超碰国产精品电影| 日韩va欧美va亚洲va久久| 亚洲精品五月天| 不卡一区二区三区四区| 亚洲1区2区3区4区| 欧美极品另类videosde| 欧美日韩精品电影| 岛国精品在线播放| 日韩影院免费视频| 自拍偷自拍亚洲精品播放| 91精品视频网| 色婷婷av一区二区三区软件| 老色鬼精品视频在线观看播放| 成人欧美一区二区三区黑人麻豆| 日韩欧美国产一二三区| 色八戒一区二区三区| 国产精品资源在线| 日本aⅴ免费视频一区二区三区| 综合欧美亚洲日本| 亚洲国产精品成人综合| 日韩一区二区三区四区五区六区| 99国产精品99久久久久久| 久久国产夜色精品鲁鲁99| 亚洲不卡一区二区三区| 国产精品久久久久7777按摩| 26uuu亚洲| 日韩一级黄色大片| 欧美日韩欧美一区二区| 一本久道中文字幕精品亚洲嫩| 国产一区在线看| 日韩成人一级大片| 亚洲午夜在线视频| 亚洲视频一区二区在线| 国产欧美日韩一区二区三区在线观看| 欧美一区二区网站| 911精品国产一区二区在线| 91传媒视频在线播放| 色av成人天堂桃色av| 99久久婷婷国产综合精品电影| 国产成人精品免费在线| 国产乱码字幕精品高清av | 欧美一二区视频| 欧美三级电影网| 欧美日韩一二三| 欧美丰满美乳xxx高潮www| 欧美色电影在线| 91精品国产综合久久精品麻豆| 欧美三级日韩三级国产三级| 欧美性猛交xxxx乱大交退制版| 在线精品视频一区二区三四| 91麻豆免费在线观看| 日本伦理一区二区| 欧美日本一区二区三区四区| 欧美一级二级三级蜜桃| 色哟哟一区二区三区| 精品视频免费在线| 宅男在线国产精品| 久久这里都是精品| 国产精品天天看| 伊人性伊人情综合网| 天天综合色天天| 日本欧美加勒比视频| 国产一区二区三区免费| 成人av一区二区三区| 欧美日韩在线综合| 精品国产1区二区| 中文字幕av一区 二区| 一卡二卡三卡日韩欧美| 久久成人免费网| 99久久久久久| 日韩丝袜美女视频| 久久久噜噜噜久久人人看| 1024成人网| 美日韩一区二区三区| 国产aⅴ综合色| 欧美亚洲动漫另类| 久久久久国产精品免费免费搜索| 国产精品激情偷乱一区二区∴| 亚洲三级在线免费观看| 亚洲成va人在线观看| 国产成人在线视频播放| 欧美日韩一区二区不卡| 久久综合久久鬼色中文字| 亚洲最新视频在线观看| 国产精品自在在线| 欧美日韩一级二级三级| 国产精品久久久爽爽爽麻豆色哟哟| 五月天激情综合网| thepron国产精品| 精品国产一区二区三区久久久蜜月|