После прочтения этого ответа я попытался написать простой вызов nmap в Python, чтобы получить osclass в возвращаемых результатах.
Мой сценарий выглядит следующим образом:
import sys
import os
import nmap
try:
nm = nmap.PortScanner()
except nmap.PortScannerError:
print('Nmap not found', sys.exc_info()[0])
sys.exit(1)
except:
print("Unexpected error:", sys.exc_info()[0])
sys.exit(1)
if(os.getuid() == 0):
nm.scan("127.0.0.1", arguments="-O")
print(nm.command_line())
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('')
else:
print("no osClass detected")
И мой вывод возвращается при запуске с привилегиями root:
nmap -oX - -O 127.0.0.1
osClass не обнаружен