使用Ruby脚本计算IP地址范围与子网扫描技巧

本文介绍了一个基于Ruby的IP范围计算脚本,用于解决在特定子网内避免使用广播ping时的扫描需求。通过IP地址和子网掩码自动计算可用主机范围,支持自定义网络扫描命令。

计算IP范围 - DigiNinja

概述

这个简短的脚本是因为我需要一种方法,能够在给定子网中ping通每个IP地址,而不使用广播ping。为什么不使用广播?因为显然有些交换机会阻止广播ping,所以如果途中有一些交换机,我的扫描可能无法到达子网上的每台机器。

更复杂的是,我只有子网中一台机器的IP地址和子网掩码。

我最初的想法是这很简单,对于IP 192.168.0.9,掩码为255.255.255.0,我将有一个192.168.0.0/24的子网,我可以只ping从192.168.0.1到192.168.0.254。但后来我意识到,如果我有一个IP为192.168.0.69,子网掩码为255.255.255.192呢?从这我将不得不ping从192.168.0.65到192.168.0.126的主机,或者对于172.16.66.76,掩码为255.255.192.0,这将给出主机范围从172.16.64.1到172.16.127.254。

在Twitter上快速求助后,我得到了很多指向在线子网计算器的建议,这些计算器手动给了我需要的答案,但没有提供脚本化查找范围顶部和底部的方法。然后Carlos Perez来救援,并指向了我ruby gem “ip”。这个很棒的小gem将接受一个IP和子网掩码,并从中提供我需要的所有信息,包括顶部和底部主机地址、网络和广播地址。

我发布的脚本显示了信息,然后执行ping并退出,我将留给你想象从那时起该做什么,或者你可以用其他什么命令替换ping。

安装

你只需要安装ip gem,这可以通过以root身份运行以下命令完成:

1
gem install ip

有些人可能还需要设置以下环境变量:

1
export RUBYOPT="rubygems"

用法

用法很简单,只需将IP地址和子网掩码作为参数传递。

1
2
3
4
5
6
7
8
$ ./calc_ip_range.rb 
get_range 1.0 Robin Wood (robin@digininja.org) (www.digininja.org)

用法: get_range IP地址 网络掩码
	--help, -h: 显示帮助

示例:
	get_range 192.168.2.98 255.255.255.0

下载

下载计算IP范围工具

支持本站

我不从这个网站上的任何项目中获得报酬,所以如果你想支持我的工作,你可以使用下面的联盟链接,这样我可以获得账户积分或现金返还。通常只有几分钱,但它们都会累加起来。

请我喝一杯冰沙


所有内容由Robin Wood创建,除非另有说明

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计