python信息收集(一)

    在渗透测试初期,需要进行大量的信息收集。一般情况下,信息收集可以分为两大类————被动信息收集和主动信息收集。
    其中,被动信息收集主要是通过各种公开的渠道来获取目标系统的信息,例如:站长工具、Google hack等。这类信息收集的特点是不与目标系统产生直接的交互,从而避免留下痕迹,但带来的缺点就是收集的信息可能是一些过时的信息,不够准确。
    相反,主动信息收集是与目标系统进行直接的交互,进而得到更为准确的及时信息。例如:AWVS、Appscan等漏洞扫描工具对目标站点进行的扫描。但不可避免的就是可能会在目标系统中留下痕迹,可能会被封杀。
    在利用python来进行信息收集,主要是体现在了主动信息收集方面。
    在主动信息收集中,主要内容是主机发现、端口扫描、指纹识别。
    在主机发现部分,主动信息收集主要是通过扫描来实现的,其中扫描是可以在不同的网络层次中实现,包括数据链路层主机发现、网络层主机发现和传输层主机发现。
    下面先介绍二层主机发现。
    主机发现,顾名思义,就是确定一个IP范围内存活的主机,找到潜在攻击的目标。二层主机发现主要利用的协议是ARP协议,主要用于在内网中进行探测,发现与攻击者在同一个网段内的主机。二层的主机发现,一般扫描速度都很快,并且可靠性较高,因为即便是安装了安全软件,安全软件都是默认没有防御ARP攻击的。
    在Kali中,我们只要执行arping命令,就可以对外发送ARP响应包来进行主机的探测了,只要我们收到响应,即可判断对方主机在线。
    我们要用到的python第一个模块,是subprocess模块,subprocess模块可以用来创建一个子进程,并且运行一个外部的程序。一般使用subprocess模块中的check_output()方法来调用系统命令。
    如下:

    上面是调用python模块实现的单个语句判断主机是否在线,如果使用python脚本来实现的话,如下所示:

代码如下

import subprocess
import sys
import time
from threading import Thread

def arping(ip):
    try:
        subprocess.check_output('arping -c 1 ' + str(ip),shell=True)
        time.sleep(0,1)
        print ip,'在线'
        return 
    except:
        return
        
def main():
    host = str(sys.argv[1]).strip()
    addr=host.split(".")[0]+"."+host.split(".")[1]+"."+host.split(".")[2]+"."
    for i in range(1,255):
        ip = addr + str(i)
        t=Thread(target=arping,args=(ip,))
        t.start()
        
if __name__=='__main__':
    main()


原文地址:https://www.cnblogs.com/ricardojxu/p/12777560.html