获取局域网当前主机所在网段已经在用的IP

探讨使用etter进行DNS欺骗时遇到的问题,即部分设备如手机在局域网中未被正确扫描识别。通过深入分析,发现手机锁屏状态可能影响ARP应答,并提供了一种替代方案,使用自定义脚本全面扫描B类和C类局域网IP,确保所有设备均可被检测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

用etter作dns欺骗的时候,发现查询局域网IP,手机占用的IP有时候扫描不出来,无法展示到列表中,抓了包看到etter启动扫描局域网是遍历网段所有IP,广播arp请求,可是电脑端的都会正常应答,手机端的确没有。后来测试了下,不用etter扫描,直接ping的话,是有arp应答的(手机端)。用etter扫描测试,手机(小m6)锁屏,可能出现没有arp应答。

毕竟我知道局域网内某个人是用了手机的,但是不知道具体IP是很尴尬的(只能确定已经显示的IP列表肯定没有这个手机IP,但不知道这个用手机的小伙伴IP是多少),我总不能对整个网段的主机作arp缓存中毒攻击(只想针对这个IP),所以写了个脚本,把当前局域网(只针对B类和C类局域网)主机所在网段的所有IP给ping出来。就当替代使用etter扫描主机列表了。

脚本代码

用的bash shell,我加的有注释,就直接粘代码了。

#! /bin/bash

#获得主机所有接口ip
ips=(`hostname -I`)
#输入某些ip
#ips=($1)

#创建记录ip文件
ip_record_file=.ip_record_file
touch $ip_record_file

#分隔符设置,字符串分隔,这里不能用这个了,换个方式
#OLD_IFS=$IFS
#IFS=.

ping_ip()
{
	#ping 1 次ip,如果成功,便认为IP存在
	ping $ip -W 1 -c 1 &>/dev/null
	[ $? -eq 0 ] && echo $ip >> $ip_record_file
}

resolve_ip()
{
	#不尝试获取网关,解析IP前三个字段,1-254主机全部测试
	ip_head=`echo $1 | sed 's/\([0-9]\+\.[0-9]\+\.[0-9]\+\.\).*/\1/g'`;
	for i in `seq 1 254`
	do
		ip="$ip_head$i"
		[[ $ip = $1 ]] && continue;
		ping_ip $ip &
	done
	wait
}

for my_ip in $ips
do
	#只处理B类和C类的局域网IP范围
	#如是B类,172.16.0.0 - 172.31.255.255
	[[ $my_ip =~ ^172* ]] && my_ip_sperators=(${my_ip//./ }) && two_num=${my_ip_sperators[1]};
	if [[ $two_num > 15 && $two_num < 32 ]];then
		resolve_ip $my_ip  &
	fi

	#如果是C类,192.168.0.0 - 192.168.255.255
	[[ $my_ip =~ ^192\.168* ]] && resolve_ip $my_ip  &
done
wait
cat $ip_record_file | sort -u
rm $ip_record_file

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不识君的荒漠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值