⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mysimpsnifferdlg.h

📁 一个关于局域网简单抓包工具
💻 H
字号:
// MySimpSnifferDlg.h : header file
//

#if !defined(AFX_MYSIMPSNIFFERDLG_H__39692900_D18B_4B8F_BD92_AD9A67BEAFF7__INCLUDED_)
#define AFX_MYSIMPSNIFFERDLG_H__39692900_D18B_4B8F_BD92_AD9A67BEAFF7__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include ".\SplitterBar\SplitterBar.h"

#define MAX_PROTO_TEXT_LEN	16		//子协议名称(如"TCP")最大长度
#define MAX_PROTO_NUM		12		//子协议数量
#define MAX_ADDR_LEN		16		//点分十进制地址的最大长度
#define MAX_HOSTNAME_LAN   255		//最大主机名长度
#define MAX_PACK_LEN	 65535		//数据包最大长度 

/*使用ioctlsocket函数*/
/*下面三行摘自winsock2.h文件中,不知为何非得加上*/
#define IOC_VENDOR                    0x18000000
#define _WSAIOW(x,y)                  (IOC_IN|(x)|(y))
#define SIO_RCVALL _WSAIOW(IOC_VENDOR,1)

typedef struct _RECEIVEINFO
{
        char *	szProtocol;
        char *	szSrcIP;
        int		iSrcPort;
        char *	szDstIP;
        int		iDstPort;
        int		iTTL;
        int		Length;			// 用户数据长度
        char	TCPFlag[6];
        int		iBufSize;
        char	iICMPType;
        char	iICMPCode;
        char *	ReceiveData;
        CString ReceiveUDPData;
}RECEIVEINFO;

typedef struct _PROTOMAP	//定义子协议映射表
{
	int  ProtoNum;
	char ProtoText[MAX_PROTO_TEXT_LEN];
	//char * ProtoText;
}PROTOMAP; 

typedef struct _GETSETPARAM		// 控制参数结构体
{
	CDialog *pDialog;
	int  iSrcPort;				// 源端口过滤
	int  iDstPort;				// 目的端口过滤
	char DstIP[MAX_ADDR_LEN];	// 目的地址过滤
	char SrcIP[MAX_ADDR_LEN];	// 源地址过滤
	bool bUDP;					// 是否关注UDP报文
	bool bTCP;					// 是否关注TCPP报文
	bool bICMP;					// 是否关注ICMP报文
	bool bDecode;				// 是否分离用户数据
}GETSETPARAM; 

typedef struct _ListCtrlStruct	// 列表控件字段结构
{
	CString item0;
	CString item1;
	CString item2;
	CString item3;
	CString item4;
	CString item5;
	CString item6;
	CString item7;
	CString item8;
	CString item9;
	CString item10;
	CString item11;
	CString item12;
	CString item13;
	CString item14;
	CString item15;
	CString item16;
	CString item17;
	CString item18;
	CString item19;
	CString item20;
	CString item21;
	CString item22;
	CString item23;
	CString item24;
	CString item25;
	CString item26;
	CString item27;
	CString item28;
	CString item29;
}ListCtrlStruct;

/////////////////////////////////////////////////////////////////////////////
// CMySimpSnifferDlg dialog

class CMySimpSnifferDlg : public CDialog
{
// Construction
public:
	void AddData(CString s0, CString s1, CString s2, CString s3, CString s4, CString s5, CString s6);
	void GetParamSet();
	char * CheckProtocol(int iProtocol);
	int DecodeIPPack(char * buf, int iBufSize);
	DWORD m_threadID;
	char TCPFlag[6];	// 定义TCP标志
	char RecvBuf[MAX_PACK_LEN];
	int m_iTTL;
	int m_iProtocol;
	int m_iPortFilter;						// 端口过滤
	char * m_strDestIpFilter;				// 目的地址过滤
	char * m_strFromIpFilter;				// 源地址过滤
	bool m_ParamUDP;						// 是否关注UDP报文
	bool m_ParamTCP;						// 是否关注TCPP报文
	bool m_ParamICMP;						// 是否关注ICMP报文
	bool m_ParamDecode;						// 是否分离用户数据
	char m_szDstIP[MAX_ADDR_LEN];
	char m_szSrcIP[MAX_ADDR_LEN];
	char m_szProtocol[MAX_PROTO_TEXT_LEN];
	bool bStop;
	SOCKET SockRaw;
	CMySimpSnifferDlg(CWnd* pParent = NULL);	// standard constructor

// Dialog Data
	//{{AFX_DATA(CMySimpSnifferDlg)
	enum { IDD = IDD_MYSIMPSNIFFER_DIALOG };
	CEdit	m_Data;
	CTreeCtrl	m_TreeDetail;
	CButton		m_start;
	CListCtrl	m_listdata;
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CMySimpSnifferDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
//	DWORD m_threadID;
	DWORD m_localip;	//本机IP
	HICON m_hIcon;
	CSplitterBar m_wndVSplitBar;
	CSplitterBar m_wndHSplitBar;

friend UINT threadFunc ( LPVOID p ) ;
friend UINT threadFunc_Catch( LPVOID pthreadArg );

	// Generated message map functions
	//{{AFX_MSG(CMySimpSnifferDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	virtual void OnOK();
	afx_msg void OnClose();
	afx_msg void OnChkPort();
	afx_msg void OnStart();
	afx_msg void OnCHKSrcIP();
	afx_msg void OnCHKDstIP();
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnItemchangedListData(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnColumnclickListData(NMHDR* pNMHDR, LRESULT* pResult);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
private:
	void SetListCtrlData(int ntype,char *pSetData);
	void SetTree(char pPtype, char *pData);
	void SetTree();
	void InitList();
	void Close_Thread();
	void AddReceiveData(RECEIVEINFO *ReceiveInfo);
	int DecodeICMPPack(char * IcmpBuf, int iBufSize);
	int DecodeUDPPack(char * UdpBuf, int iBufSize);
	int DecodeTCPPack(char * TcpBuf, int iBufSize);
//	int DecodeIPPack(char * buf, int iBufSize);
	void ReceiveData();
//	void GetParamSet();
//	char * CheckProtocol(int iProtocol);
	void SnifferInit();
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_MYSIMPSNIFFERDLG_H__39692900_D18B_4B8F_BD92_AD9A67BEAFF7__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -