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

安全基础
text2html格式转换软件转换txt为网页
Gmail邮件搬家:Gmail邮件直接搬家到网易邮箱
木马下载器导致大量的同名进程wmisqtu.exe
百度知道文档分享:上传下载需要的文档
局域网里固定IP地址无法上网故障解决方法
警告:XP系统赶快停止使用IE6
删除火狐浏览器保存的表单密码
Windows7系统下怎么修改explorer.exe文件
取消ESET NOD32开机扫描的设置技巧
查看垃圾邮件信头找到真正的发件人
输入法技巧:Ctrl+Shift灵活运用
网络时代坐在家里能时刻掌握火车票剩票信息
安全删除USB设备 做到一键删除
安全专家:网络购物过程中的十大“陷阱”
禁用Adobe Reader和Acrobat里javascript功能
屏幕分辨率和显示屏调节工具调节屏幕分辨率
退出路由或者交换机使用正确退出命令exit
上网计算机查漏洞方法和相应处理措施
XP系统下IE7默认首页改变的方法
新手入门:QQ邮件常见问题问答

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-28   浏览: 74 ::
收藏到网摘: 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窗口模式下时有死机的感觉。