当前位置: 首页 > 图文教程 > 网络安全 > 安全基础 > wincap and sniffer(2)

安全基础
防火墙防止DDOS分布式拒绝服务攻击的几种方式
防止SYN泛洪攻击 开启路由器的TCP拦截
浅谈除不尽理还乱的Spyware间谍软件
自己动手清除电脑中的木马程序
动态嵌入式DLL木马发现与清除
通配符的魔力—轻装入侵个人主页空间
黑客又出手 全面解析新时代的网络攻击技术
我的黑色工具箱—几款黑客工具的使用方法
应对DoS/DDoS攻击的十条军规
浅析2004年出现的4种新后门技术
上网需注意:黑客攻击方式的四种最新趋势
让木马不在兴风作浪:解析木马程序的藏身之处
黑客入侵攻击方式的 四种最新趋势
简述一次操作系统被入侵之后的修复过程
黑客利用RM在IE上强行打开本地文件
黑客扫描特征及易受攻击的端口
预防DDoS攻击的十项安全策略
关于木马隐藏一个的新方法
用Norton Internet Security拦截黑客攻击
Win 2000密码破解不完全指南

安全基础 中的 wincap and sniffer(2)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-28   浏览: 106 ::
收藏到网摘: n/a

一些著名的嗅探器:
tcpdump/windump:支持多种unix,后者支持windows。基于libpcapSniffit:unix,windows,libpcapNgrep:libpcap,unixwindows.可以用规则表达式,识别PPP,SLIP及FDDI数据包
Sniffer pro/NetXray:专业的协议分析工具,是NAI提供的网络分析方案中的一部分
其它:
Iris
LanExplorer
NetMOnitor
CommView

单一用途的噢探器
口令嗅:winsniffer,典型的黑客工具,嗅探并解析ftp,pop3,http,icq,smtp,telnet,IMAP,NNTP等口令
password sniffer for NetHackerIII

专用嗅探器:
SMB嗅探器:L0phtcrack,SMPRelay
TCP连接会话嗅探器:CommView ,Iris,Juggernaut
SSL嗅探器:SSLDump--sslv3/tls网络协议分析工具
RIDIUS嗅控器:一个基于udp的论证记账协议,Radiusniff是其代表
PPTP嗅 控器:Anger,PPTP-sniff(solaris)
SNMP嗅探器:Snmpsniff

交换网络嗅探器:Ettercap
综合:Dsniff
其它交换网络嗅探器:
snarp,parasite

嗅探对策.........

netsys2:

网络上流传的GUNIFFER是个基本的原型:


void main(int argc, char ** argv)

{

int iErrorCode;

char RecvBuf[MAX_PACK_LEN] = {0};

usage();

if(GetCmdLine(argc, argv)==CMD_PARAM_HELP) exit(0);

//初始化SOCKET

WSADATA wsaData;

iErrorCode = WSAStartup(MAKEWORD(2,1),&wsaData);

CheckSockError(iErrorCode, "WSAStartup");

SockRaw = socket(AF_INET , SOCK_RAW , IPPROTO_IP);

CheckSockError(SockRaw, "socket");

//获取本机IP地址

char FAR name[MAX_HOSTNAME_LAN];

iErrorCode = gethostname(name, MAX_HOSTNAME_LAN);

CheckSockError(iErrorCode, "gethostname");

struct hostent FAR * pHostent; //注意下面这三句,这里先对pHostent分配了一块

pHostent = (struct hostent * )malloc(sizeof(struct hostent));

//内存,然后有让它等于gethostbyname函数的返回

pHostent = gethostbyname(name); //值,但gethostbyname函数是自己在函数内部分配内

存的,因此上一句根本就是多余,把上一句删除后一切正常。但此程序用VC6编译运行都没有问题

,不知为何?也许是VC6的编译器优化在起作用。

SOCKADDR_IN sa;

sa.sin_family = AF_INET;

sa.sin_port = htons(6000);

memcpy(&sa.sin_addr.S_un.S_addr, pHostent->h_addr_list[0], pHostent->h_length);

free(pHostent); //由于前面分配内存的语句已经删除,所以这一句也要去掉,否则出错。感谢网友 Heyuming 发现这个问题。

iErrorCode = bind(SockRaw, (PSOCKADDR)&sa, sizeof(sa));

CheckSockError(iErrorCode, "bind");

//设置SOCK_RAW为SIO_RCVALL,以便接收所有的IP包

DWORD dwBufferLen ;

DWORD dwBufferInLen = 1 ;

DWORD dwBytesReturned = 0 ;

iErrorCode=WSAIoctl(SockRaw, SIO_RCVALL,&dwBufferInLen,

sizeof(dwBufferInLen),

&dwBufferLen, sizeof(dwBufferLen),&dwBytesReturned , NULL , NULL );

CheckSockError(iErrorCode, "Ioctl");

//侦听IP报文

while(1)

{

memset(RecvBuf, 0, sizeof(RecvBuf));

iErrorCode = recv(SockRaw, RecvBuf, sizeof(RecvBuf), 0);

CheckSockError(iErrorCode, "recv");

iErrorCode = DecodeIpPack(RecvBuf, iErrorCode);

CheckSockError(iErrorCode, "Decode");

}

}

它有2个不方便之处:
1)不能选择网卡
2)采用死循环方式读数据,改编到WINDOWS窗口模式下时有死机的感觉。