📄 mysimpsnifferdlg.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 + -