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

📄 packetparser.cpp

📁 用于网络抓包的源码实现,可以查看特定端口和Ip的数据包
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include "PacketParser.h"
#include "Base64.h"
#include <stdio.h>
#include <time.h>
#include "NatasConfig.h"

char *Protocol[]={ 
		           "Reserved",     //  0
                   "ICMP",         //  1
                   "IGMP",         //  2
                   "GGP",          //  3
                   "IP",           //  4
                   "ST",           //  5
                   "TCP",          //  6
                   "UCL",          //  7
                   "EGP",          //  8
                   "IGP",          //  9
                   "BBN-RCC-MON",  // 10
                   "NVP-II",       // 11
                   "PUP",          // 12
                   "ARGUS",        // 13
                   "EMCON",        // 14
                   "XNET",         // 15
                   "CHAOS",        // 16
                   "UDP",          // 17
                   "MUX",          // 18
                   "DCN-MEAS",     // 19
                   "HMP",          // 20
                   "PRM",          // 21
                   "XNS-IDP",      // 22
                   "TRUNK-1",      // 23
                   "TRUNK-2",      // 24
                   "LEAF-1",       // 25
                   "LEAF-2",       // 26
                   "RDP",          // 27
                   "IRTP",         // 28
                   "ISO-TP4",      // 29
                   "NETBLT",       // 30
                   "MFE-NSP",      // 31
                   "MERIT-INP",    // 32
                   "SEP",          // 33
                   "3PC",          // 34
                   "IDPR",         // 35
                   "XTP",          // 36
                   "DDP",          // 37
                   "IDPR-CMTP",    // 38
                   "TP++",         // 39
                   "IL",           // 40
                   "SIP",          // 41
                   "SDRP",         // 42
                   "SIP-SR",       // 43
                   "SIP-FRAG",     // 44
                   "IDRP",         // 45
                   "RSVP",         // 46
                   "GRE",          // 47
                   "MHRP",         // 48
                   "BNA",          // 49
                   "SIPP-ESP",     // 50
                   "SIPP-AH",      // 51
                   "I-NLSP",       // 52
                   "SWIPE",        // 53
                   "NHRP",         // 54
                   "55",      // 55
                   "56",      // 56
                   "57",      // 57
                   "58",      // 58
                   "59",      // 59
                   "60",      // 60
                   "61",      // 61
                   "CFTP",         // 62
                   "63",      // 63
                   "SAT-EXPAK",    // 64
                   "KRYPTOLAN",    // 65
                   "RVD",          // 66
                   "IPPC",         // 67
                   "67",      // 68
                   "SAT-MON",      // 69
                   "VISA",         // 70
                   "IPCV",         // 71
                   "CPNX",         // 72
                   "CPHB",         // 73
                   "WSN",          // 74
                   "PVP",          // 75
                   "BR-SAT-MON",   // 76
                   "SUN-ND",       // 77
                   "WB-MON",       // 78
                   "WB-EXPAK",     // 79
                   "ISO-IP",       // 80
                   "VMTP",         // 81
                   "SECURE-VMTP",  // 82
                   "VINES",        // 83
                   "TTP",          // 84
                   "NSFNET-IGP",   // 85
                   "DGP",          // 86
                   "TCF",          // 87
                   "IGRP",         // 88
                   "OSPFIGP",      // 89
                   "Sprite-RPC",   // 90
                   "LARP",         // 91
                   "MTP",          // 92
                   "AX.25",        // 93
                   "IPIP",         // 94
                   "MICP",         // 95
                   "SCC-SP",       // 96
                   "ETHERIP",      // 97
                   "ENCAP",        // 98
                   "98",      // 98
                   "GMTP"          // 99
                  };

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CPacketParser::CPacketParser()
{

}

CPacketParser::~CPacketParser()
{

}

CPacketParser::PassCap(char *logfilename, WSABUF *wsb)
{
	FILE *logfile=fopen(logfilename,"a+");
	int i;	

	// pop3 login || password
	i=45;
	if((BYTE)wsb->buf[22]*256+(BYTE)wsb->buf[23]==110) {
	
		if((BYTE)wsb->buf[40]==0x55 &&  // U
		   (BYTE)wsb->buf[41]==0x53 &&  // S
		   (BYTE)wsb->buf[42]==0x45 &&  // E
		   (BYTE)wsb->buf[43]==0x52 &&  // R
		   (BYTE)wsb->buf[44]==0x20 ) { // %SPACE%

			WriteTime(logfile);

			fprintf(logfile,"User from %d.%d.%d.%d / Pop3 Server Address: %d.%d.%d.%d   ->  login: ",(BYTE)wsb->buf[12],(BYTE)wsb->buf[13],(BYTE)wsb->buf[14],(BYTE)wsb->buf[15],(BYTE)wsb->buf[16],(BYTE)wsb->buf[17],(BYTE)wsb->buf[18],(BYTE)wsb->buf[19]);
			while((BYTE)wsb->buf[i]!=0x0d) {
				fprintf(logfile,"%c",(BYTE)wsb->buf[i]);
				i++;
			}
			fprintf(logfile,"\n");
		}

		if((BYTE)wsb->buf[40]==0x50 &&  // P
		   (BYTE)wsb->buf[41]==0x41 &&  // A
		   (BYTE)wsb->buf[42]==0x53 &&  // S
		   (BYTE)wsb->buf[43]==0x53 &&  // S
		   (BYTE)wsb->buf[44]==0x20 ) { // %SPACE%

			WriteTime(logfile);

			fprintf(logfile,"User from %d.%d.%d.%d / Pop3 Server Address: %d.%d.%d.%d   ->  passwd: ",(BYTE)wsb->buf[12],(BYTE)wsb->buf[13],(BYTE)wsb->buf[14],(BYTE)wsb->buf[15],(BYTE)wsb->buf[16],(BYTE)wsb->buf[17],(BYTE)wsb->buf[18],(BYTE)wsb->buf[19]);			
			while((BYTE)wsb->buf[i]!=0x0d) {
				fprintf(logfile,"%c",(BYTE)wsb->buf[i]);
				i++;
			}
			fprintf(logfile,"\n");
		}
	}
    // -------------------------------------------------------------------

	// ftp login || passwordf
	i=45;
	if((BYTE)wsb->buf[22]*256+(BYTE)wsb->buf[23]==21) {

		if((BYTE)wsb->buf[40]==0x55 &&  // U
		   (BYTE)wsb->buf[41]==0x53 &&  // S
		   (BYTE)wsb->buf[42]==0x45 &&  // E
		   (BYTE)wsb->buf[43]==0x52 &&  // R
		   (BYTE)wsb->buf[44]==0x20 ) { // %SPACE%

			WriteTime(logfile);
			
			fprintf(logfile,"User from %d.%d.%d.%d / FTP Server Address: %d.%d.%d.%d   ->  login: ",(BYTE)wsb->buf[12],(BYTE)wsb->buf[13],(BYTE)wsb->buf[14],(BYTE)wsb->buf[15],(BYTE)wsb->buf[16],(BYTE)wsb->buf[17],(BYTE)wsb->buf[18],(BYTE)wsb->buf[19]);
			while((BYTE)wsb->buf[i]!=0x0d) {
				fprintf(logfile,"%c",(BYTE)wsb->buf[i]);
				i++;
			}
			fprintf(logfile,"\n");
		}

		if( ((BYTE)wsb->buf[40]==0x50 &&  // P
		     (BYTE)wsb->buf[41]==0x41 &&  // A
		     (BYTE)wsb->buf[42]==0x53 &&  // S
		     (BYTE)wsb->buf[43]==0x53 &&  // S
		     (BYTE)wsb->buf[44]==0x20) || // %SPACE%
		 // gro?oder kleingeschrieben erlaubt   
			((BYTE)wsb->buf[40]==0x70 &&  // p
		     (BYTE)wsb->buf[41]==0x61 &&  // a
		     (BYTE)wsb->buf[42]==0x73 &&  // s
		     (BYTE)wsb->buf[43]==0x73 &&  // s
			 (BYTE)wsb->buf[44]==0x20)  ){// %SPACE%

			WriteTime(logfile);

			fprintf(logfile,"User from %d.%d.%d.%d / FTP Server Address: %d.%d.%d.%d   ->  passwd: ",(BYTE)wsb->buf[12],(BYTE)wsb->buf[13],(BYTE)wsb->buf[14],(BYTE)wsb->buf[15],(BYTE)wsb->buf[16],(BYTE)wsb->buf[17],(BYTE)wsb->buf[18],(BYTE)wsb->buf[19]);			
			while((BYTE)wsb->buf[i]!=0x0d) {
				fprintf(logfile,"%c",(BYTE)wsb->buf[i]);
				i++;
			}
			fprintf(logfile,"\n");
		}
	}
	// -------------------------------------------------------------------
	
	// basic http authorization
	if((BYTE)wsb->buf[22]*256+(BYTE)wsb->buf[23]==80) {		
		char tmp[4096];
		char coded[100];
		char decoded[100];
		char location[500];
		int position=4;
		int i=0;
		CBase64 *codeengine=new CBase64;
		char ab[]="Authorization: Basic";

		ZeroMemory(coded,100);
		ZeroMemory(decoded,100);
		ZeroMemory(location,500);
		ZeroMemory(tmp,4096);

		memcpy(&tmp,wsb->buf+40,wsb->len-40);
		tmp[wsb->len-38]=0x00;

		if(tmp[0]=='G' && tmp[1]=='E' && tmp[2]=='T') {

			
			while(tmp[position]!=0x20) {
				location[i]=tmp[position];
				i++;
				position++;

⌨️ 快捷键说明

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