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

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

?? snifferdlg.cpp

?? sniffer program for serial
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// SnifferDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Sniffer.h"
#include "SnifferDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


inline CString GetNiceString(LPCTSTR pString)
{
	const int numDots = 40 - _tcslen(pString);

	CString dotString(_T('.'),numDots);


	CString s = CString(pString) + dotString + CString(_T(" "));

	return s;
}


// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	enum { IDD = IDD_ABOUTBOX };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

// Implementation
protected:
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()


// CSnifferDlg dialog



CSnifferDlg::CSnifferDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CSnifferDlg::IDD, pParent)
	, m_SelInterface(_T(""))
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

	Init();
}

void CSnifferDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_CMB_INTERFACES, m_CmbInterfaces);
	DDX_Control(pDX, IDC_FRM_INTERFACES, m_FrmInterfaces);
	DDX_Control(pDX, IDC_STARTSNIFFING, m_BtnStartSniffing);
	DDX_Control(pDX, IDC_TV_PACKETS, m_TVPackets);
}

BEGIN_MESSAGE_MAP(CSnifferDlg, CDialog)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	//}}AFX_MSG_MAP
	ON_WM_SIZE()
	ON_BN_CLICKED(IDC_STARTSNIFFING, OnBnClickedStartsniffing)
	ON_WM_CLOSE()
END_MESSAGE_MAP()


// CSnifferDlg message handlers

BOOL CSnifferDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon

	// TODO: Add extra initialization here
	for ( int i = 0 ; i < m_Interfaces.GetSize(); i ++ )
	{
		m_CmbInterfaces.AddString( m_Interfaces.GetAt(i) );
	}

	m_CmbInterfaces.SetCurSel( 0 );

	m_IL.Create(16,16,ILC_COLOR32 | ILC_MASK, 0,1);

	m_IL.Add( LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_COMP2COMP ) ) );
	m_IL.Add( LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_IPHeader ) ) );
	m_IL.Add( LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_TCPHEADER ) ) );

	m_TVPackets.SetImageList( &m_IL,TVSIL_NORMAL );

//	ShowWindow( SW_SHOWMAXIMIZED );
	ResizeForm();

	LOGFONT logFont;
	CFont* pFont = new CFont();

	RtlZeroMemory( &logFont, sizeof(logFont) );

	_tcscpy(logFont.lfFaceName, _T("Lucida Console"));
	logFont.lfHeight = 12;

	pFont->CreateFontIndirect( &logFont );

	m_TVPackets.SetFont( pFont, TRUE );
	



	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CSnifferDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CSnifferDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this function to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CSnifferDlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}

// Starts the sniffing process
bool CSnifferDlg::StartSniffing(void)
{
	SOCKET        s = INVALID_SOCKET;
	WSABUF        wbuf = {0};
	DWORD         dwBytesRet = 0, dwFlags = 0;
	unsigned int  optval = 0;
	char         *rcvbuf=NULL;
	int           rc = 0, err;


	
	if ( m_ulFilterMask & (FILTER_MASK_SOURCE_ADDRESS | FILTER_MASK_SOURCE_PORT) )
	{
		printf("Source address filter     : ");
		//PrintAddress((SOCKADDR *)&m_saSourceAddress, sizeof(m_saSourceAddress));
		printf("\n");
	}
	if ( m_ulFilterMask & (FILTER_MASK_DESTINATION_ADDRESS | FILTER_MASK_DESTINATION_PORT) )
	{
		printf("Destination address filter: ");
		//PrintAddress((SOCKADDR *)&g_saDestinationAddress, sizeof(g_saDestinationAddress));
		printf("\n");
	}

	//
	// Create a raw socket for receiving IP datagrams
	//
	s = WSASocket(AF_INET, SOCK_RAW, IPPROTO_IP, NULL, 0, WSA_FLAG_OVERLAPPED);
	if (s == INVALID_SOCKET)
	{
		printf("WSASocket() failed: %d\n", WSAGetLastError());
		return false;
	}

	//
	// This socket MUST be bound before calling the ioctl
	//

	sockaddr_in sa;
	sa.sin_family = AF_INET;
	sa.sin_addr.s_addr = inet_addr(m_SelInterface);
	sa.sin_port = INADDR_ANY;//htons(7000);

	rc = bind(s, (SOCKADDR *)&sa, sizeof(sa));
	if (rc == SOCKET_ERROR)
	{
		printf("bind() failed: %d\n", WSAGetLastError());
		if (INVALID_SOCKET != s)
		{
			closesocket(s);
			s = INVALID_SOCKET;
		}
		WSACleanup();
		return false;
	}
	printf("Binding to: ");
	//PrintAddress((SOCKADDR *)&g_saLocalInterface, sizeof(g_saLocalInterface));
	printf("\n");

	//
	// Set the SIO_RCVALLxxx ioctl
	//
	optval = 1;
	rc = WSAIoctl(s, SIO_RCVALL, &optval, sizeof(optval),
		NULL, 0, &dwBytesRet, NULL, NULL);
	if (rc == SOCKET_ERROR)
	{
		printf("WSAIotcl(0x%x) failed: %d\n", SIO_RCVALL,
			(err = WSAGetLastError()));
		if (err == WSAEINVAL)
		{
			printf("NOTE: IPv6 does not currently support the SIO_RCVALL* ioctls\n");
		}

		if (INVALID_SOCKET != s)
		{
			closesocket(s);
			s = INVALID_SOCKET;
		}
		WSACleanup();
		return false;
	}

	//
	// Allocate a buffer for receiving data
	//
	rcvbuf = (char *)HeapAlloc(GetProcessHeap(), 0, MAX_IP_SIZE);
	if (rcvbuf == NULL)
	{
		fprintf(stderr, "HeapAlloc failed: %d\n", GetLastError());
		if (INVALID_SOCKET != s)
		{
			closesocket(s);
			s = INVALID_SOCKET;
		}
		WSACleanup();
		return false;
	}

	//
	// Start receiving IP datagrams until interrupted
	// 
	while ( !m_bExit )
	{
		wbuf.len = MAX_IP_SIZE;
		wbuf.buf = rcvbuf;
		dwFlags  = 0;

		rc = WSARecv(s, &wbuf, 1, &dwBytesRet, &dwFlags, NULL, NULL);
		if (rc == SOCKET_ERROR)
		{
			printf("WSARecv() failed: %d\n", WSAGetLastError());
			break;
		}

		DecodePacket(rcvbuf , dwBytesRet );


	}
	//
	// Cleanup
	//

	if (rcvbuf) 
		HeapFree(GetProcessHeap(), 0, rcvbuf);

	if (INVALID_SOCKET != s)
	{
		closesocket(s);
		s = INVALID_SOCKET;
	}
	WSACleanup();

	return true;
}

bool CSnifferDlg::Init(void)
{
	try
	{
		m_bExit = false;
		m_hThread = NULL;
		m_dwThreadID = 0;

		m_ulFilterMask = 0;

		m_Logger.Open( _T("Logger.txt"),CFile::modeCreate | CFile::modeWrite | CFile::shareDenyNone);

		int           rc = 0;
		WSADATA       wsd;
		//
		// Load Winsock
		//
		if ((rc = WSAStartup(MAKEWORD(2,2), &wsd)) != 0)
		{
			printf("WSAStartup() failed: %d\n", rc);
			return false;
		}

		GetInterfaces( m_Interfaces );


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

}

// Decodes the packet
bool CSnifferDlg::DecodePacket(char* pData, DWORD dwSize)
{

	try
	{
	
		if (dwSize < sizeof(char))
			return false;
		
		// Check the IP version
		const int ip_version = HI_BYTE(*pData);
		
		CString source, destination;

		if ( ip_version == 4)
		{
			IPV4_HDR* pHeader;
			int headerLen = 0;

		
			// Verify the buffer is large enough
			if (dwSize  < sizeof(IPV4_HDR))
				return false;
			
			// Get length of IPv4 header to determine where next protocol header begins
			headerLen = LO_BYTE(*pData) * 4;
			
			pHeader = (IPV4_HDR *)pData;

			ConvertAddress( pHeader->ip_srcaddr, source );
			ConvertAddress( pHeader->ip_destaddr, destination);

			switch (pHeader->ip_protocol)
			{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情欧美日韩一区二区| 99国产精品国产精品毛片| 成人av电影在线观看| 9191国产精品| 国产精品美女久久久久久| 日本亚洲一区二区| 91麻豆.com| 国产亚洲欧美一区在线观看| 日精品一区二区三区| av在线不卡网| 国产网站一区二区| 久久精品久久精品| 欧美三级一区二区| 日韩一区中文字幕| 大胆亚洲人体视频| 2欧美一区二区三区在线观看视频| 亚洲成人动漫一区| 一本大道久久精品懂色aⅴ| 久久精品一区二区三区四区| 青青草原综合久久大伊人精品| 99国产精品国产精品毛片| 中文字幕在线一区免费| 91丝袜美女网| 337p日本欧洲亚洲大胆色噜噜| 亚洲成人免费影院| 欧美亚洲综合久久| 亚洲成人av一区二区| 欧美色中文字幕| 亚洲va欧美va天堂v国产综合| 色婷婷精品久久二区二区蜜臀av | 欧美成人女星排名| 日韩电影在线看| 欧美老年两性高潮| 五月天丁香久久| 欧美一区二区视频在线观看2020| 亚洲一区二区高清| 欧美色成人综合| 午夜久久久影院| 欧美一区二区免费视频| 免费观看在线综合| 精品国产三级电影在线观看| 麻豆freexxxx性91精品| www久久精品| 波多野结衣中文字幕一区 | 亚洲电影中文字幕在线观看| 欧美性生活一区| 日日嗨av一区二区三区四区| 精品国产伦一区二区三区观看体验| 麻豆精品一区二区综合av| 精品国产青草久久久久福利| 国产福利不卡视频| 亚洲精品免费在线观看| 欧美日韩免费一区二区三区视频| 日本欧美一区二区| 国产欧美日韩精品a在线观看| av高清久久久| 青青青伊人色综合久久| 久久久精品中文字幕麻豆发布| 成人短视频下载| 亚洲国产综合在线| 久久久精品黄色| 欧美视频一区二区| 国产乱一区二区| 一区二区三区久久| 日韩你懂的在线观看| heyzo一本久久综合| 亚洲高清在线视频| 久久精品欧美一区二区三区不卡| 91原创在线视频| 久久精工是国产品牌吗| 亚洲色图视频网| 日韩精品中文字幕在线不卡尤物| 成人动漫一区二区| 免费的国产精品| 伊人婷婷欧美激情| 久久你懂得1024| 欧美精品久久99久久在免费线 | 男人的天堂亚洲一区| 中文字幕欧美一| 精品精品国产高清一毛片一天堂| 成人91在线观看| 狠狠狠色丁香婷婷综合激情| 一区二区三区在线免费| 久久网站热最新地址| 欧美视频一区二| 91性感美女视频| 国产91高潮流白浆在线麻豆| 日韩av成人高清| 亚洲一区二区三区四区不卡| 国产免费成人在线视频| 欧美成人性福生活免费看| 欧美日韩国产高清一区二区三区 | 色天天综合色天天久久| 国产精品一区二区在线观看不卡| 日韩电影免费在线| 亚洲综合色区另类av| 国产精品久久久久久久久快鸭| 久久综合五月天婷婷伊人| 欧美精品自拍偷拍动漫精品| 在线精品视频一区二区| 福利一区二区在线观看| 国产主播一区二区三区| 日本网站在线观看一区二区三区 | 欧美日韩精品三区| 色吧成人激情小说| 94色蜜桃网一区二区三区| 懂色av中文一区二区三区| 国产精一品亚洲二区在线视频| 韩国精品在线观看| 激情亚洲综合在线| 久久66热re国产| 久久99精品国产麻豆婷婷洗澡| 日产欧产美韩系列久久99| 丝袜亚洲另类欧美| 午夜国产不卡在线观看视频| 亚洲第一综合色| 亚洲国产日韩av| 五月天激情综合| 久久精品国产99久久6| 久久激五月天综合精品| 国产九色sp调教91| 成人激情免费网站| 色综合视频在线观看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 91丨porny丨中文| 欧美中文字幕不卡| 欧美精品v国产精品v日韩精品| 欧美浪妇xxxx高跟鞋交| 日韩精品一区二区三区中文不卡| 精品三级在线看| 国产日韩欧美精品在线| 亚洲欧洲制服丝袜| 午夜婷婷国产麻豆精品| 蜜桃视频免费观看一区| 国产一区二区三区电影在线观看| 国产成人亚洲综合a∨婷婷 | 国产精品自拍在线| 波多野结衣亚洲一区| 欧洲精品在线观看| 欧美一区二区三区在线| 国产欧美精品一区二区三区四区 | 欧美亚洲另类激情小说| 欧美一区二区日韩一区二区| 久久精品人人爽人人爽| 依依成人综合视频| 久久精品免费看| 91在线无精精品入口| 欧美一区午夜精品| 中文字幕在线一区| 日韩在线一区二区三区| 国产成人在线观看| 欧美日韩久久一区| 国产人伦精品一区二区| 亚洲午夜视频在线| 国产99精品视频| 欧美一区二区三区在线视频| 日本一二三不卡| 午夜av区久久| 成人免费视频app| 欧美精品色一区二区三区| 欧美国产日本视频| 石原莉奈在线亚洲三区| av欧美精品.com| 欧美不卡一区二区| 一区二区日韩av| 国产成人三级在线观看| 在线播放亚洲一区| 亚洲视频资源在线| 韩国精品主播一区二区在线观看 | 欧美日韩午夜在线视频| 久久九九全国免费| 免费的成人av| 欧美怡红院视频| 国产精品久久免费看| 极品少妇一区二区| 69av一区二区三区| 亚洲一区在线观看免费| 91麻豆自制传媒国产之光| 久久精品在线观看| 国产一区二区免费视频| 欧美一区二区女人| 性欧美疯狂xxxxbbbb| 在线观看成人免费视频| 国产精品久久一卡二卡| 国产麻豆欧美日韩一区| 欧美精品一区二区三| 亚洲一级电影视频| 色婷婷国产精品久久包臀| 最新中文字幕一区二区三区| 成人在线综合网站| 国产人成亚洲第一网站在线播放| 久久99在线观看| 精品国产区一区| 国产一区二区在线看| 精品电影一区二区| 极品少妇一区二区三区精品视频| 精品美女一区二区三区| 精品午夜久久福利影院| 日韩欧美国产不卡| 国产在线一区观看|