📄 sniff_tab.h
字号:
#ifndef SNIFFTAB_H#define SNIFFTAB_H#include <qvariant.h>#include <qdialog.h>#include <qapplication.h>#include <qwidget.h>#include <qcheckbox.h>#include <qheader.h>#include <qlabel.h>#include <qlineedit.h>#include <qlistview.h>#include <qpushbutton.h>#include <qtabwidget.h>#include <qwidget.h>#include <qlayout.h>#include <qvariant.h>#include <qtooltip.h>#include <qwhatsthis.h>#include <qimage.h>#include <qpixmap.h>#include <qtextstream.h>#include <qfile.h>#include <qthread.h>class QVBoxLayout; class QHBoxLayout; class QGridLayout; class QCheckBox;class QLabel;class QLineEdit;class QListView;class QListViewItem;class QPushButton;class QTabWidget;class QWidget;class QRadioButton;class QButtonGroup;extern "C" { #include <pcap.h>}#include <netinet/in.h> //for struct in_addr htons()#include <sys/socket.h>#include <arpa/inet.h> //for inet_ntoa(),inet_aton()#include <netinet/if_ether.h>#include <netinet/ether.h> //for ether_header#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <fstream>#include <string>#include <vector>#include "network.h"using namespace std;#define EXP_LEN 20class SniffFileDisplay_Thread;class Sniff_Tab : public QWidget, QThread{ Q_OBJECTprivate slots: void enableEth(); void start_sniff(); void start_display(); void clear_sniff(); void enableDefault(); private: static void display_ether(const u_char*); static void display_arp(const u_char*); static void display_ip(const u_char*); static void display_tcp(const u_char*,int offset); static void display_udp(const u_char*,int offset); static void display_payload(const u_char*,int); static void print_hex_ascii_line(const u_char*,int,int); std::vector<std::string> slip_str(std::string); void init(); void sniff_run(); void display(QString output, QListView* disp_sniff, QListViewItem *list_item); void err(const char* msg) { std::cerr<<msg<<std::endl; exit(); } static void getpacket(u_char* args, const struct pcap_pkthdr* header, const u_char* packet); public: Sniff_Tab(); ~Sniff_Tab(); void run(); void stop(); public: char* device; static std::string str_key; int num_packets; std::string filter_exp; QListView* disp_listview; QListViewItem *list_item; private: QPushButton* Sniff_clear; QLabel* sniff_key_label; QLabel* sniff_filter_label; QLabel* sniff_num_label; QPushButton* Sniff_start; QLineEdit* sniff_key_lineedit; QLineEdit* sniff_filter_lineedit; QLineEdit* sniff_num_lineedit; QLineEdit* sniff_Eth_lineedit; QCheckBox* sniff_default_check; QCheckBox* sniff_eth_check; QString error_buf; QString output_buf; char errbuf[PCAP_ERRBUF_SIZE]; bpf_u_int32 net; bpf_u_int32 mask; pcap_t* handle; struct bpf_program fp; volatile bool sniff_stopped; volatile bool display_stopped; SniffFileDisplay_Thread *readfiledisplay_thread;};class SniffFileDisplay_Thread : public QThread{public: SniffFileDisplay_Thread(Sniff_Tab *parent = 0); ~SniffFileDisplay_Thread(); void read_file_display(const QString &FILENAME, QListView *listview, QListViewItem *list_item ); void run(); void stop(); private: Sniff_Tab *p;};#endif //sinffer.h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -