zoukankan      html  css  js  c++  java
  • Python识别远程主机操作系统

    最近在写exp,需要识别远程主机操作系统。

    通常判断远程主机操作系统,有以下几种方式:

    1. 大小写判断
    2. ttl值判断
    3. 扫描器扫描

    由于不清楚目标链接是否存在某个文件或者目录,因此使用大小写来判断操作系统,也并非良策。

    ttl值可以自定义,因此也不太好判断是否正确。

    因此就想到了调用扫描器的扫描结果,来判断扫描是否正确。

    这里我调用的是python-nmap这个库。

    安装方式

    pip install python-nmap

    使用方式如下

    import nmap
    def scan_system(domain_name):
        nm = nmap.PortScanner()  #创建扫描对象
        os_list = []
        try:
            scan_result=nm.scan(hosts=domain_name,arguments='-O')  #添加扫描参数
            for i,j in scan_result['scan'].items():                #将扫描结果转成字典
                if j['osmatch']:                                   #判断是否有osmatch
                    for k in j['osmatch']:
                        for os in k['osclass']:
                            # print(domain_name,os['osfamily'],'
    ')
                            os_list.append(os['osfamily'])         #osfamily对应的是操作系统家族
                else:
                    break
        except Exception as e:
            print(domain_name,'None
    ')                            #当链接不能被访问时,抛出异常
        print(domain_name,max(os_list, key=os_list.count))
       
        
    if __name__ == "__main__":
        url = []                              #url列表
        for i in range(len(url)):
            scan_system(url[i])

     nmap扫描结果是模糊测试的结果,会返回很多测试的数据包,数据包的结果中,含有linux,windows以及别的系统,因此我在这里是统计了数据包中频数最大的操作系统,然后输出结果。

    网安小菜鸡
  • 相关阅读:
    洛谷P3959 宝藏(模拟退火乱搞)
    POJA Star not a Tree?(模拟退火)
    HDU 2899Strange fuction(模拟退火)
    洛谷P2062 分队问题(dp)
    主定理与时间复杂度
    android工程混淆和反编译
    查看linux内存、cpu
    Android sqlite数据库存取图片信息
    深入浅出JSONP--解决ajax跨域问题
    分析WordPress主题结构是如何架构的?
  • 原文地址:https://www.cnblogs.com/jdr-gbl/p/13790273.html
Copyright © 2011-2022 走看看