• 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以及别的系统,因此我在这里是统计了数据包中频数最大的操作系统,然后输出结果。

    网安小菜鸡
  • 相关阅读:
    Python课程第三天作业
    Python课程第一天作业
    centos7安装Jenkins
    搭建zookeeper+kafka集群
    redis在实践中的一些常见问题以及优化思路
    部署redis4.0-cluster
    redis哨兵架构的基础知识及部署和管理
    Redis主从复制
    部署Redis4.x单机版及配置RDB和AOF持久化
    xshell使用密钥登陆linux
  • 原文地址:https://www.cnblogs.com/jdr-gbl/p/13790273.html
Copyright © 2020-2023  润新知