《Python网络安全项目实战》项目4 编写网络扫描程序
项目4 编写网络扫描程序
许多扫描工具是由Python编写的。本项目中我们将用python写一个IP扫描工具,用来发现内网在线的IP以及开放的端口。
项目目标:
能够正确获取系统的类型,是Windows还是Linux;
能够正确获得本机IP的地址;
能够正确得到IP地址的在线和端口开放情况。
任务4.1 扫描内网有效IP地址
任务描述
在对局域网进行管理时,为了知道网段内的IP在线情况,知道网段IP地址的使用情况,我们可以对网段的所有IP地址进行一次扫描。
任务分析
判断一个IP是否在线,最简单的方法就是去ping这个IP,通过ping返回的信息来判断IP是否在线,在Windows中ping命令默认发送4个数据包,而Linux中默认是一直发送数据,但是这个值也是可以更改的,Windows中只需要加上-n参数后面跟上一个数字,就是发送多少个数据包,而Linux中为-c,为了统一发送数据包的个数,需要先判断系统为Linux还是Windows。
确定好系统之后就是本网段的所有网址,对于一个C类内网网段,,一共有256个内网地址,从0到255,通过获取自己的IP地址,再对IP地址进行编辑,就可以获得内网所有IP,再通过ping命令去ping所有的IP,再通过返回信息就可以得到内网所有有效的IP地址。
使用python编程进行内网的IP扫描,那么需要用到网络相关的模块,在扫描内网前,先要知道自己的IP地址,而自己的IP地址是本地系统上的信息,所以还需要用到os模块,为了一次ping多个IP同时进行,还需要treading模块。
任务实施
【步骤1】:由于这次IP扫描的编程过程中需要使用系统、网络、线程、时间模块,所以在编程前先引用需要的模块(见图4-1-1)。
图4-1-1 引用需要使用的模块
【步骤2】:先获取系统信息,判断自己的系统是windows,还是linux,返回ping时需要使用-n,还是-c参数来确定数据包的个数(见图4-1-2)。