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

📄 decode.c

📁 一个网络工具包,可以嗅探email和http等数据包中的密码等信息.注意要先把libnet-1.0.2a.tar.gz和 libnids-1.16.tar.gz装上,不然会因为缺少库函数而无法编译和安
💻 C
字号:
/*  decode.c   Copyright (c) 2000 Dug Song <dugsong@monkey.org>    $Id: decode.c,v 1.12 2000/12/15 20:03:26 dugsong Exp $*/#include "config.h"#include <sys/types.h>#include <arpa/telnet.h>#include <rpc/rpc.h>#include <stdio.h>#include <string.h>#include <ctype.h>#include "decode.h"extern int decode_hex(u_char *, int, u_char *, int);extern int decode_ftp(u_char *, int, u_char *, int);extern int decode_telnet(u_char *, int, u_char *, int);extern int decode_smtp(u_char *, int, u_char *, int);extern int decode_pptp(u_char *, int, u_char *, int);extern int decode_http(u_char *, int, u_char *, int);extern int decode_ospf(u_char *, int, u_char *, int);extern int decode_poppass(u_char *, int, u_char *, int);extern int decode_pop(u_char *, int, u_char *, int);extern int decode_nntp(u_char *, int, u_char *, int);extern int decode_smb(u_char *, int, u_char *, int);extern int decode_imap(u_char *, int, u_char *, int);extern int decode_snmp(u_char *, int, u_char *, int);extern int decode_ldap(u_char *, int, u_char *, int);extern int decode_mmxp(u_char *, int, u_char *, int);extern int decode_rlogin(u_char *, int, u_char *, int);extern int decode_rip(u_char *, int, u_char *, int);extern int decode_socks(u_char *, int, u_char *, int);extern int decode_citrix(u_char *, int, u_char *, int);extern int decode_oracle(u_char *, int, u_char *, int);extern int decode_tds(u_char *, int, u_char *, int);extern int decode_sniffer(u_char *, int, u_char *, int);extern int decode_cvs(u_char *, int, u_char *, int);extern int decode_icq(u_char *, int, u_char *, int);extern int decode_napster(u_char *, int, u_char *, int);extern int decode_aim(u_char *, int, u_char *, int);extern int decode_postgresql(u_char *, int, u_char *, int);extern int decode_pcanywhere(u_char *, int, u_char *, int);extern int decode_x11(u_char *, int, u_char *, int);extern int decode_irc(u_char *, int, u_char *, int);extern int decode_portmap(u_char *, int, u_char *, int);extern int decode_mountd(u_char *, int, u_char *, int);extern int decode_vrrp(u_char *, int, u_char *, int);extern int decode_ypserv(u_char *, int, u_char *, int);extern int decode_yppasswd(u_char *, int, u_char *, int);static struct decode decodes[] = {	{ "hex",	decode_hex },	{ "ftp",	decode_ftp },	{ "telnet",	decode_telnet },	{ "smtp",	decode_smtp },	{ "pptp",	decode_pptp },	{ "http",	decode_http },	{ "ospf",	decode_ospf },	{ "poppass",	decode_poppass },	{ "pop",	decode_pop },	{ "nntp",	decode_nntp },	{ "smb",	decode_smb },	{ "imap",	decode_imap },	{ "snmp",	decode_snmp },	{ "ldap",	decode_ldap },	{ "mmxp",	decode_mmxp },	{ "rlogin",	decode_rlogin },	{ "rip",	decode_rip },	{ "socks",	decode_socks },	{ "citrix",	decode_citrix },	{ "oracle",	decode_oracle },	{ "tds",	decode_tds },	{ "sniffer",	decode_sniffer },	{ "cvs",	decode_cvs },	{ "icq",	decode_icq },	{ "napster",	decode_napster },	{ "aim",	decode_aim },	{ "postgresql",	decode_postgresql },	{ "pcanywhere", decode_pcanywhere },	{ "vrrp",	decode_vrrp },	{ "x11",	decode_x11 },	{ "irc",	decode_irc },	{ "portmap",	decode_portmap },	{ "mountd",	decode_mountd },	{ "ypserv",	decode_ypserv },	{ "yppasswd",	decode_yppasswd },	{ NULL }};struct decode *getdecodebyname(const char *name){	struct decode *dc;		for (dc = decodes; dc->dc_name != NULL; dc++) {		if (strcasecmp(dc->dc_name, name) == 0)			return (dc);	}	return (NULL);}/* Strip telnet options, as well as suboption data. */intstrip_telopts(u_char *buf, int len){	int i, j, subopt = 0;	char *p, *q;		for (i = j = 0; i < len; i++) {		if (buf[i] == IAC) {			if (++i >= len) break;			else if (buf[i] > SB)				i++;			else if (buf[i] == SB) {				/* XXX - check for autologin username. */				p = buf + i + 1;				if ((q = bufbuf(p, len - i, "\xff", 1))				    != NULL) {					if ((p = bufbuf(p, q - p, "USER\x01",							5)) != NULL) {						p += 5;						buf[j++] = '[';						memcpy(buf + j, p, q - p);						j += q - p;						buf[j++] = ']';						buf[j++] = '\n';					}				}				subopt = 1;			}			else if (buf[i] == SE) {				if (!subopt) j = 0;				subopt = 0;			}		}		else if (!subopt) {			/* XXX - convert isolated returns to newlines. */			if (buf[i] == '\r' && i + 1 < len &&			    buf[i + 1] != '\n')				buf[j++] = '\n';			/* XXX - strip binary nulls. */			else if (buf[i] != '\0')				buf[j++] = buf[i];		}	}	buf[j] = '\0';		return (j);}/* Strip a string buffer down to a maximum number of lines. */intstrip_lines(char *buf, int max_lines){	char *p;	int lines, nonascii;		if (!buf) return (0);		lines = nonascii = 0;		for (p = buf; *p && lines < max_lines; p++) {		if (*p == '\n') lines++;		if (!isascii(*p)) nonascii++;	}	if (*p) *p = '\0';		/* XXX - lame ciphertext heuristic */	if (nonascii * 3 > p - buf)		return (0);		return (lines);}intis_ascii_string(char *buf, int len){	int i;		for (i = 0; i < len; i++)		if (!isascii(buf[i])) return (0);		return (1);}u_char *bufbuf(u_char *big, int blen, u_char *little, int llen){	u_char *p;	         for (p = big; p <= big + blen - llen; p++) {		 if (memcmp(p, little, llen) == 0)			 return (p);	 }	 return (NULL);}

⌨️ 快捷键说明

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