2014-11-26 6 views
0

파이썬 (nmap과 같은)을 사용하여 OS 감지 기능을 구현하고 싶습니다. python-nmap-0.3.4.tar.gz 라이브러리를 찾았지만 응답으로 운영 체제를 제공하지 않았습니다! 목표를 달성하려면 어떻게 변경해야합니까?파이썬에서의 원격 OS 감지

편집 : site 샘플 :

>>> 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;; 

이 OS를 찾을 수 있습니다,하지만 난 내 자신을 실행할 때 어떤 운영 체제를 보이지 않았다. 원격 OS를 찾을 수있는 기능이 있습니까? 그래서 당신은 루프를

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('') 

더 많은 정보를해야 당신이

print(nm.csv()) 

을 할 경우

nm.scan('scanme.nmap.org', arguments='-O') 

이 문제는 정보가 표시되지 않습니다되어 -O 옵션을

+0

연구를 공유하면 모두에게 도움이됩니다. 귀하가 시도한 내용과 귀하의 필요를 충족시키지 못한 이유를 알려주십시오. 이것은 시간을내어 자신을 도우려는 것을 보여 주며, 명백한 답을 되풀이하지 않아도되며, 무엇보다도보다 구체적이고 관련성있는 답변을 얻는 데 도움이됩니다! 또한 [물어 보는 방법] (http://stackoverflow.com/help/how-to-ask)을 참조하십시오. –

답변