ndiff(1)
NAMN
ndiff – verktyg för att jämföra resultat från Nmap-skanningar
SYNOPSIS
ndiff [optioner] a.xml b.xml
BESKRIVNING
Ndiff är ett verktyg som hjälper till att jämföra Nmap-skanningar.
Det tar två Nmap XML-utdatafiler och skriver ut skillnaderna mellan dem.
Skillnader som observeras är:
- värdtillstånd, exempelvis från up till down
- porttillstånd, exempelvis från open till closed
- tjänsteversioner, från -sV
- OS-matchningar, från -O
- skriptutdata
Ndiff jämför, precis som standardverktyget diff(1), två skanningar åt gången.
OPTIONS SUMMARY
-h, --help
- Visa hjälpmeddelande och avsluta.
-v, --verbose
- Ta med alla värdar och portar i utdatan, inte bara de som har ändrats.
--text
- Skriv utdata i läsbart textformat.
--xml
- Skriv utdata i maskinläsbart XML-format.
- Dokumentstrukturen definieras i filen:
ndiff.dtd
som ingår i distributionen.
Alla andra argument behandlas som namn på Nmap XML-utdatafiler.
Exakt två sådana filer måste anges.
EXEMPEL
Följande exempel använder Ndiff för att jämföra resultatet från två Nmap-skanningar med olika optioner.
I den första skanningen används snabbskanning:
-F
vilket skannar färre portar för bättre hastighet.
I den andra skanningen används den större standarduppsättningen portar, och ett NSE-skript körs.
# nmap -F scanme.nmap.org -oX scanme-1.xml # nmap --script=html-title scanme.nmap.org -oX scanme-2.xml $ ndiff -v scanme-1.xml scanme-2.xml -Nmap 5.35DC1 at 2010-07-16 12:09 +Nmap 5.35DC1 at 2010-07-16 12:13 scanme.nmap.org (64.13.134.52): Host is up. -Not shown: 95 filtered ports +Not shown: 993 filtered ports PORT STATE SERVICE VERSION 22/tcp open ssh 25/tcp closed smtp 53/tcp open domain +70/tcp closed gopher 80/tcp open http +|_ html-title: Go ahead and ScanMe! 113/tcp closed auth +31337/tcp closed Elite
Ändringar markeras med - eller + i början av raden.
Av utdatan syns att skanningen utan snabbskanningsoptionen -F hittade två ytterligare portar:
70 31337
Skriptet html-title gav dessutom extra utdata för port 80.
Av portantalet kan man dra slutsatsen att snabbskanningen skannade 100 portar:
- 95 filtrerade
- 3 öppna
- 2 stängda
Den normala skanningen skannade 1000 portar:
- 993 filtrerade
- 3 öppna
- 4 stängda
Optionen -v, eller --verbose, gjorde att Ndiff även visade portar som inte ändrats, som port 22 och 25.
Utan -v hade dessa inte visats.
UTDATA
Det finns två utdatalägen:
- text
- XML
Textutdata är standard och kan även väljas med optionen:
--text
Textutdata liknar en unified diff av Nmappens vanliga terminalutdata.
Varje rad föregås av ett tecken som anger om och hur raden ändrades.
-
- Raden fanns i den första skanningen men inte i den andra.
+
- Raden fanns i den andra skanningen men inte i den första.
En ändrad rad visas som en --rad följd av en +-rad.
Rader som inte ändrats föregås av ett blanktecken.
Exempel 1. Ndiff textutdata
I detta exempel fick port 80 på värden:
photos-cache-snc1.facebook.com
en tjänsteversion:
lighttpd 1.5.0
Värden på:
69.63.179.25
ändrade sitt reverse DNS-namn.
Värden på:
69.63.184.145
saknades helt i första skanningen men fanns i den andra.
-Nmap 4.85BETA3 at 2009-03-15 11:00 +Nmap 4.85BETA4 at 2009-03-18 11:00 photos-cache-snc1.facebook.com (69.63.178.41): Host is up. Not shown: 99 filtered ports PORT STATE SERVICE VERSION -80/tcp open http +80/tcp open http lighttpd 1.5.0 -cm.out.snc1.tfbnw.net (69.63.179.25): +mailout-snc1.facebook.com (69.63.179.25): Host is up. Not shown: 100 filtered ports +69.63.184.145: +Host is up. +Not shown: 98 filtered ports +PORT STATE SERVICE VERSION +80/tcp open http Apache httpd 1.3.41.fb1 +443/tcp open ssl/http Apache httpd 1.3.41.fb1
XML-utdata
XML-utdata är avsett att bearbetas av andra program och väljs med optionen:
--xml
Formatet bygger på Nmaps XML-utdata, med några extra element för att ange skillnader.
XML-dokumentet omsluts av elementen:
nmapdiff scandiff
Värdskillnader omsluts av:
hostdiff
Portskillnader omsluts av:
portdiff
Inuti hostdiff eller portdiff visar taggarna a och b tillståndet för värden eller porten i den första skanningen, a, respektive den andra skanningen, b.
Exempel 2. Ndiff XML-utdata
Följande XML-diff motsvarar samma skanningar som i exempel 1.
<?xml version="1.0" encoding="UTF-8"?>
<nmapdiff version="1">
<scandiff>
<hostdiff>
<host>
<status state="up"/>
<address addr="69.63.178.41" addrtype="ipv4"/>
<hostnames>
<hostname name="photos-cache-snc1.facebook.com"/>
</hostnames>
<ports>
<extraports count="99" state="filtered"/>
<portdiff>
<port portid="80" protocol="tcp">
<state state="open"/>
<a>
<service name="http"/>
</a>
<b>
<service name="http" product="lighttpd" version="1.5.0"/>
</b>
</port>
</portdiff>
</ports>
</host>
</hostdiff>
<hostdiff>
<host>
<status state="up"/>
<address addr="69.63.179.25" addrtype="ipv4"/>
<hostnames>
<a>
<hostname name="cm.out.snc1.tfbnw.net"/>
</a>
<b>
<hostname name="mailout-snc1.facebook.com"/>
</b>
</hostnames>
<ports>
<extraports count="100" state="filtered"/>
</ports>
</host>
</hostdiff>
<hostdiff>
<b>
<host>
<status state="up"/>
<address addr="69.63.184.145" addrtype="ipv4"/>
<ports>
<extraports count="98" state="filtered"/>
<port portid="80" protocol="tcp">
<state state="open"/>
<service name="http" product="Apache httpd"
version="1.3.41.fb1"/>
</port>
<port portid="443" protocol="tcp">
<state state="open"/>
<service name="http" product="Apache httpd" tunnel="ssl"
version="1.3.41.fb1"/>
</port>
</ports>
</host>
</b>
</hostdiff>
</scandiff>
</nmapdiff>
Observera att port 80 för photos-cache-snc1.facebook.com finns i portdiff-taggar.
För 69.63.179.25 finns det gamla värdnamnet i a-taggar och det nya i b-taggar.
För den nya värden 69.63.184.145 finns en b i hostdiff utan motsvarande a. Det anger att det saknades information om värden i den första skanningen.
PERIODISKA DIFFAR
Med Nmap, Ndiff, cron och ett skalskript är det möjligt att skanna ett nätverk dagligen och få e-postrapporter om nätverkets tillstånd och ändringar sedan föregående skanning.
Exempel 3. Skanna ett nätverk periodiskt med Ndiff och cron
#!/bin/sh
TARGETS="targets"
OPTIONS="-v -T4 -F -sV"
date=`date +%F`
cd /root/scans
nmap $OPTIONS $TARGETS -oA scan-$date > /dev/null
if [ -e scan-prev.xml ]; then
ndiff scan-prev.xml scan-$date.xml > diff-$date
echo "*** NDIFF RESULTS ***"
cat diff-$date
echo
fi
echo "*** NMAP RESULTS ***"
cat scan-$date.nmap
ln -sf scan-$date.xml scan-prev.xml
Om skriptet sparas som:
/root/scan-ndiff.sh
kan följande rad läggas till i roots crontab:
0 12 * * * /root/scan-ndiff.sh
AVSLUTNINGSKOD
Avslutningskoden anger om skanningarna är lika.
0
- Skanningarna är lika i alla avseenden som Ndiff känner till.
1
- Skanningarna skiljer sig åt.
2
- Ett körningsfel inträffade, till exempel att en fil inte kunde öppnas.
FEL
Fel rapporteras till Nmaps utvecklingssändlista:
dev@nmap.org
HISTORIK
Ndiff började som ett projekt av Michael Pattrick under Google Summer of Code 2008.
Michael designade programmet och ledde diskussionen om dess utdataformat.
Han skrev versioner av programmet i Perl och C++, men sommaren tog slut kort efter att beslutet fattats att skriva om programmet i Python för Windows- och Zenmap-kompatibilitet.
Python-versionen skrevs av David Fifield.
James Levine släppte år 2000 ett Perl-skript med namnet Ndiff och liknande funktionalitet.
FÖRFATTARE
- David Fifield <david@bamsoftware.com>
- Michael Pattrick <mpattrick@rhinovirus.org>
WEBBPLATS
https://nmap.org/ndiff/
ANMÄRKNINGAR
Notering 1, released:
https://seclists.org/nmap-hackers/2000/315
KOLOFON
Denna sida är en del av projektet nmap, en nätverksskanner.
Information om projektet finns på:
http://nmap.org/
Felrapporter för manualsidan skickas till:
dev@nmap.org
Sidan hämtades från projektets uppströms Git-spegel av Subversion-förrådet:
https://github.com/nmap/nmap
den 24 maj 2026.
Vid den tidpunkten var den senaste hittade commiten daterad den 18 maj 2026.
Om du upptäcker renderingsproblem i HTML-versionen av sidan, eller anser att det finns en bättre eller mer aktuell källa, kan du skicka e-post till:
man-pages@man7.org
KORT SAMMANFATTNING
ndiff jämför två Nmap XML-resultatfiler.
Kör två skanningar till XML:
nmap -oX scan-1.xml mål nmap -oX scan-2.xml mål
Jämför skanningarna:
ndiff scan-1.xml scan-2.xml
Visa även oförändrade värdar och portar:
ndiff -v scan-1.xml scan-2.xml
Skriv textutdata:
ndiff --text scan-1.xml scan-2.xml
Skriv XML-utdata:
ndiff --xml scan-1.xml scan-2.xml
Tolka avslutningskod:
0 = inga skillnader 1 = skillnader finns 2 = körningsfel
Sidslut
Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/ndiff.1.html
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Bromma Datorservice som har sponsrat Linux.se med webbhotell.