use*_*088 1 nmap python-3.x os-detection
我想使用python(如nmap)实现操作系统检测,我找到了python-nmap-0.3.4.tar.gz库,但它没有提供操作系统响应!我怎样才能改变它来实现我的目标。
编辑:在站点示例中:
>>> import nmap
>>> nm = nmap.PortScanner()
>>> nm.scan('127.0.0.1', '22-443')
>>> print(nm.csv())
host;protocol;port;name;state;product;extrainfo;reason;version;conf
127.0.0.1;tcp;22;ssh;open;OpenSSH;protocol 2.0;syn-ack;5.9p1 Debian 5ubuntu1;10
127.0.0.1;tcp;25;smtp;open;Exim smtpd;;syn-ack;4.76;10
127.0.0.1;tcp;53;domain;open;dnsmasq;;syn-ack;2.59;10
127.0.0.1;tcp;80;http;open;Apache httpd;(Ubuntu);syn-ack;2.2.22;10
127.0.0.1;tcp;111;rpcbind;open;;;syn-ack;;10
127.0.0.1;tcp;139;netbios-ssn;open;Samba smbd;workgroup: WORKGROUP;syn-ack;3.X;10
127.0.0.1;tcp;443;;open;;;syn-ack;;
Run Code Online (Sandbox Code Playgroud)
它找到 OS ,但是当我自己运行时它没有显示任何 os. 有没有找到远程操作系统的功能?
尝试使用 -O 选项
nm.scan('scanme.nmap.org', arguments='-O')
Run Code Online (Sandbox Code Playgroud)
问题是如果你这样做信息不会出现
print(nm.csv())
Run Code Online (Sandbox Code Playgroud)
所以你必须做一个循环
nm.scan("127.0.0.1", arguments="-O")
if 'osclass' in nm['127.0.0.1']:
for osclass in nm['127.0.0.1']['osclass']:
print('OsClass.type : {0}'.format(osclass['type']))
print('OsClass.vendor : {0}'.format(osclass['vendor']))
print('OsClass.osfamily : {0}'.format(osclass['osfamily']))
print('OsClass.osgen : {0}'.format(osclass['osgen']))
print('OsClass.accuracy : {0}'.format(osclass['accuracy']))
print('')
Run Code Online (Sandbox Code Playgroud)
PS:你需要 python 3.x,我不认为它适用于 Python 2.x
编辑当然,您可以直接访问
print nm['127.0.0.1']['osclass']
Run Code Online (Sandbox Code Playgroud)
或者
print nm['127.0.0.1']['osclass']['vendor']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9338 次 |
| 最近记录: |