0x03用多线程扫描
某一网段中存活的主机
(如果渗透进了内网,还可以扫描内网上里的存活主机)
脚本利用演示+实现思路分析
实现思路:
调用终端执行ping命令,通过回显中是否有关键字 TTL 来判断主机是否存活
比较简陋,但是开发速度快,扫描精准度一般
先是用raw_input()接收要扫描的网段,然后生成该网段的256个ip,然后调用ping_check(ip)进行扫描,用subprocess.Popen()调用命令行终端执行ping,然后用check.stdout.read()读取执行ping命令之后返回的结果,用关键字TTL是否存在来判断主机是否存活,如果存在TTL就说明主机存活(这个我们执行以下ping就知道了,看下面截图)
主机112.90.216.1存活,在返回的信息里有字串‘TTL’
主机112.90.216.2不存活,在返回的信息里没有字串‘TTL’
一些基础知识
这里提供两个脚本给大家对比学习(主要是学习多线程)
一般来说,使用线程有两种模式,一种是创建线程要执行的函数,把这个函数传递进Thread对象里,让它来执行;另一种是直接从Thread继承,创建一个新的class,重写run方法,把线程执行的代码放到这个新的 class里。
科普一个模块IPy,如下脚本 会生成一整个192.168.1.0/24网段的256个ip
(也可以不使用这个模块)