识别操作系统主要是用于操作系统漏洞的利用。不管是windows还是linux系统,在安装完毕后都会默认启动一些服务,开启一些端口。

识别目标主机的系统最简单的方法就是发送ping包,windows起始ttl值默认为128,linux和unix系统默认为64,还有一些特殊的unix系统的ttl值为255.下图为ping局域网内的两台主机,一台为win xp(192.168.0.104),一台为metasploitable2靶机(192.168.0.108):

可以明显地看到,windows发送的pin回包ttl值是128,而linux发送的ttl值是64.

 #!/usr/bin/python
from scapy.all import * if len(sys.argv) != 2:
print "this script needs one arg!\nExample:./ttl_os.py 192.168.0.0 or ./ttl_os.py baidu.com"
sys.exit() ip = sys.argv[1]
r = sr1(IP(dst = ip) / ICMP(), timeout = 1, verbose = 0) if r == None:
print "no response!"
elif r[IP].ttl <= 64:
print "Linux or Unix!"
elif r[IP].ttl > 64 and r[IP].ttl <= 128:
print "Windows!"
else:
print "Unix!"

python代码实现

ttl值可以通过软件进行更改,所以仅仅通过ttl值进行的判断并不总是准确的。而强大的nmap又提供了强大的参数-O,可以根据多种特征进行系统识别,执行nmap 192.168.0.108 -O命令,得到结果:

当然了,即使使用nmap这个强大的工具得到的结果也有可能不完全准确,小编使用nmap扫描win xp 家庭版得出的结果是win xp 专业版或者win2003.

操作系统识别-python、nmap的更多相关文章

  1. 小白日记11:kali渗透测试之服务扫描-banner、dmitry、nmap特征库、操作系统识别、SNMP

    服务扫描 不能单纯的以端口辨别服务.很多网络服务是漏洞频发的高危对象,对网络上的特定服务进行扫描,往往能让我们少走弯路,增加渗透成功的几率.确定开放端口后,通常会对相应端口上所运行服务的信息进行更深入 ...

  2. kali linux之操作系统识别/SMB扫描

    操作系统识别技术种类很多,好产品采用多种技术结合 查看TTL值: linux:64(1-64) 某些unix:255 windows:128(65-128) nmap 被动操作系统识别 p0f ——— ...

  3. python操作三大主流数据库(4)python操作mysql④python服务端flask和前端bootstrap框架结合实现新闻展示

    python操作mysql④python服务端flask和前端bootstrap框架结合实现新闻展示 参考文档http://flask.pocoo.org/docs/0.11/http://flask ...

  4. python操作三大主流数据库(3)python操作mysql③python操作mysql的orm工具sqlaichemy安装配置和使用

    python操作mysql③python操作mysql的orm工具sqlaichemy安装配置和使用 手册地址: http://docs.sqlalchemy.org/en/rel_1_1/orm/i ...

  5. python操作三大主流数据库(2)python操作mysql②python对mysql进行简单的增删改查

    python操作mysql②python对mysql进行简单的增删改查 1.设计mysql的数据库和表 id:新闻的唯一标示 title:新闻的标题 content:新闻的内容 created_at: ...

  6. MySQL中的分页操作结合python

    mysql中的分页操作结合python --分页: --方式1: ;-- 读取十行 , --从第十行读取 往后再读十行 --方式2: offset ; --从第二十行开始读取10行 -- 结合pyth ...

  7. python学习道路(day12note)(mysql操作,python链接mysql,redis)

    1,针对mysql操作 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); 设置密码 update user set password ...

  8. day3-Python集合、函数、文件操作,python包的概念

    本节大纲: 1 python程序由包(package).模块(module)和函数组成.包是由一系列模块组成的集合.模块是处理某一类问题的函数和类的集合. 2 包就是一个完成特定任务的工具箱. 3 包 ...

  9. 生成HTMLTestRunner测试报告的操作步骤——Python+selenium自动化

    HTMLTestRunner是Python标准库的unittest模块的一个扩展,具体操作如下 1.安装 环境:Window8 步骤:1)http://tungwaiyip.info/software ...

随机推荐

  1. N3飞控踩坑指南

    1.想要使用上位机仿真的话,在本次连接上位机的过程中不要点击IMU校准. 2.两路12S电池并联为飞控供电时(DJI智能电池),需要确保所有电池均为满电.否则如果上电时电量不平衡,电池之间将会自动互相 ...

  2. 【SpringMVC】使用三层架构实现登录,注册。(上篇)

    构思 界面层 1.jsp [见名知义] failed.jsp-->失败页面,登录.注册失败就跳转至失败页面 index.jsp-->默认生成的界面,没什么用 login.jsp--> ...

  3. Java实现 蓝桥杯 算法训练VIP 报数(暴力+数学)约瑟夫环问题

    试题 算法训练 报数 问题描述 现有n个同学站成一圈,顺时针编号1至n.从1号同学开始顺时针1/2报数,报到1的同学留在原地,报到2的同学退出圆圈,直到只剩一名同学为止.问最后剩下的同学编号. 输入格 ...

  4. Java实现 蓝桥杯 算法训练 Rotatable Number(暴力)

    试题 算法训练 Rotatable Number 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 Bike是个十分喜欢数学的聪明孩子.他发明了"可旋转数",其灵感 ...

  5. Java实现蓝桥杯VIP算法训练 相邻字母

    试题 算法训练 相邻字母 资源限制 时间限制:1.0s 内存限制:256.0MB [问题描述] 从键盘输入一个英文字母,要求按字母的顺序打印出3个相邻的字母,指定的字母在中间.若指定的字母为Z,则打印 ...

  6. Linux 系统命令sudo权限

    sudo权限 root把本来只能超级用户执行的命令赋予普通用户执行 sudo的操作对象是系统命令 sudo使用 1.给普通用户赋予所能执行的权限(实质是修改/etc/sudoers文件):vi /et ...

  7. vue+js清除定时器

    注意data数据里面一定要定义Timeout Timeout:Function,//定时器 methods里面 moseovefalse(){//需要执行的方法 var that=this; that ...

  8. 05.Django-form表单与请求的生命周期

    Django中请求的生命周期 HTTP请求及服务端响应中传输的所有数据都是字符串 步骤 用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务器 url经过wsgi和中间件,到达路由映射表,在 ...

  9. python—列表,元组,字典

    ——列表:(中括号括起来:逗号分隔每个元素:列表中的元素可以是数字,字符串,列表,布尔值等等) (列表元素可以被修改)  list(类)    (有序的) [1]索引取值:切片取值:for循环:whi ...

  10. php symfony/var-dumper 打印插件

    $records = array( array( 'id' => 2135, 'first_name' => 'John', 'last_name' => 'Doe', ), arr ...