blob: 2c3d508d29e874d1c52190fab10cd1f5d4d9ba99 [file] [log] [blame]
% Regression tests for Scapy Nmap module
~ nmap
############
############
+ Basic Nmap OS fingerprints tests
= Module loading
load_module('nmap')
= Test functions
d = nmap_udppacket_sig(IP()/UDP(), IP(raw(IP()/ICMP(type=3, code=2)/IPerror()/UDPerror())))
assert len(d) == 9
d = nmap_tcppacket_sig(IP()/TCP())
assert len(d) == 5
= Fetch database
from __future__ import print_function
try:
from urllib.request import urlopen
except ImportError:
from urllib2 import urlopen
for i in range(10):
try:
open('nmap-os-fingerprints', 'wb').write(urlopen('https://raw.githubusercontent.com/nmap/nmap/9efe1892/nmap-os-fingerprints').read())
break
except:
pass
conf.nmap_base = 'nmap-os-fingerprints'
= Database loading
assert len(nmap_kdb.get_base()) > 100
= fingerprint test: www.secdev.org
~ netaccess
score, fprint = nmap_fp('www.secdev.org')
print(score, fprint)
assert score > 0.5
assert fprint
= fingerprint test: gateway
~ netaccess
score, fprint = nmap_fp(conf.route.route('0.0.0.0')[2])
print(score, fprint)
assert score > 0.5
assert fprint
= fingerprint test: to text
~ netaccess
import re as re_
a = nmap_sig("www.secdev.org", 80, 81)
a
for x in nmap_sig2txt(a).split("\n"):
assert re_.match(r"\w{2,4}\(.*\)", x)
= nmap_udppacket_sig test: www.google.com
~ netaccess
a = nmap_sig("www.google.com", ucport=80)
assert len(a) > 3
assert len(a["PU"]) > 0
+ Nmap errors triggering
= Nmap base not available
nmap_kdb.filename = "invalid"
nmap_kdb.reload()
assert nmap_kdb.filename == None
= Clear temp files
try:
os.remove('nmap-os-fingerprints')
except:
pass