Wyjście
Każde narzędzie jest tylko tak dobre, jak wyniki które się za jego pomocą uzyskuje. Złożone testy i algorytmy nie są nic warte, jeśli ich wyniki nie są zaprezentowane w odpowiedniej formie. Z związku z tym, że użytkownicy Nmapa używają go w różny sposób, także w połączeniu z innymi narzędziami, nie ma jednego formatu, który by wszystkich zadowolił. Dlatego też Nmap oferuje kilka formatów, włączając w to tryb interaktywny i tryb XML do lepszej integracji z innymi programami.
Dodatkowo poza różnymi formatami wyjściowymi, Nmap posiada opcje pozwalające na kontrolowanie poziomu szczegółowości dostarczanych informacji oraz komunikatów do śledzenia błędów. Wyniki mogą być przekazywane do standardowego wyjścia jak i do plików (w trybie zastępowania lub dołączania). Wygenerowane pliki mogą również być wykorzystywane do wznowienia przerwanych skanowań.
Nmap pozwala na uzyskanie pięciu różnych formatów raportów. Domyślny
to format interaktywny
i jest
wykorzystywany w połączeniu ze standardowym wyjściem. Jest także format
format normalny
, podobny do
interaktywnego
, jednak wyświetla mniej
rutynowych informacji i ostrzeżeń, ponieważ jest raczej przewidziany do
poźniejszej analizy, niż do interaktywnego oglądania w trakcie skanowania.
Tryb XML jest jednym z najważniejszych, jako że może zostać przekonwertowany na HTML lub bezporoblemowo przetworzony przez inne programy, takie jak graficzne interfejsy użytkownika lub zaimportowany do bazy danych.
Pozostałe dwa najmniej skomplikowane to format pozwalający na łatwe
przetwarzanie za pomocą wyrażeń regularnych (grep), który zawiera większość
informacji o hoście w jednej linii, oraz format
sCRiPt KiDDi3 0utPUt
.
Podczas gdy format interaktywny jest domyślny i nie posiada dodatkowych
opcji, pozostałe cztery formaty używają tej samej składni w postaci jednego
argumentu, będącego nazwą pliku do którego mają zostać zapisane wyniki.
Możliwe jest podawanie wielu formatów jednocześnie, jednak każdy z nich może
być podany tylko raz. Na przykład, jeśli chcesz zapisać format normalny do
późniejszego przegladania i równocześnie XML do przetwarzania przez inne
programy, używamy składni -oX myscan.xml -oN myscan.nmap
.
W przykładach z tej dokumentacji dla ułatwienia używamy prostych nazw, takich
jak myscan.xml
, jednak w codzinnym użyciu
zalecane jest stosowanie nazw bardziej opisowych. Nazwy te mogą być dowolnie
wybierane, zgodnie z własnymi preferencjami, osobiście preferuję długie nazwy
zawierające datę skanowania i słowo lub dwa opisujące skanowanie, umieszczone
w katalogu zawierającym nazwę firmy skanowaniej.
Podczas zapisywania wyników do pliku Nmap nadal wyświetla interaktywną
formę raportu na standardowe wyjście. Przykładowo, komenda
nmap -oX myscan.xml cel zapisuje wyniki w
formacie XML do pliku myscan.xml
równocześnie wyświetlając je w trybie interaktywnym tak, jakby opcja
-oX
nie była podana. Możliwa jest zmiana tego zachowania
poprzez podanie znaku myślnika (-) zamiast nazwy pliku przy wybranym
formacie, co spowoduje wyświetlanie go zamiast formy interaktywnej. Tak więc
komenda nmap -oX - cel spowoduje
wyświetlenie tylko formatu XML na standardowym wyjściu stdout. Komunikaty
o poważnych błędach sa nadal wyświetlane za pomocą standardowego wyjścia
błędów stderr.
Inaczej niż przy innych opcjach, spacja pomiędzy opcją (taką jak
-oX
), a nazwą pliku lub myślnika nie jest wymagana.
Jeśli spacja zostanie pominięta przy opcjach takich jak
-oG-
lub -oXscan.xml
, z powodów
kompatybilności wstecznej Nmap zapisze wyniki w formacie normalnym w plikach
odpowiednio G-
i
Xscan.xml
.
Nmap posiada również opcje pozwalające na ustalenie poziomu szczegółowości podawanych informacji jak również pozwalające na dołączanie wyników do już istniejących plików. Opcje te zostały opisane poniżej.
-
-oN <nazwapliku>
(Format normalny) Powoduje zapis w
formacie normalnym
do wskazanego pliku. Jak napisano wyżej, format ten różni się nieco odformatu interaktywnego
.-
-oX <nazwapliku>
(Format XML) Powoduje zapis w
formacie XML
do wskazanego pliku. Nmap dołącza definicje formatu dokumentu (DTD), który pozwala innym programom na weryfikację zawartości tego pliku. Funkcja ta jest głównie przeznaczona do wykorzystania przez oprogramowanie dodatkowe, jednak może pomóc w ręcznej analizie zawartych danych. DTD opisuje jakie elementy XML mogą być legalnie uzywane w pliku i często podaje jakie wartości mogą przyjmować poszczególne znaczniki. Zawsze aktualna DTD wersja jest dostępna pod adresemhttps://nmap.org/data/nmap.dtd
.XML jest stabilnym formatem, który może być łatwo przetwarzany przez inne programy. Darmowe biblioteki do przetwarzania XML są dostępne dla większości języków programowania, takich jak C/C++, Perl, Python czy Java. Napisano nawet wiele procedur dostosowanych specjalnie do potrzeb Nmapa. Przykładami są Nmap::Scanner i Nmap::Parser dla Perla (CPAN). W wiekszości dużych aplikacji korzystających z Nmapa preferowany jest właśnie format XML.
W formacie XML jest również opisany styl XSL, który może zostać wykorzystany do konwersji do HTML. Najprostrzym sposobem jest po prostu wczytanie pliku XML do przeglądarki internetowej, takiej jak Firefox czy IE. Domyślnie zadziała to tylko na komputerze na którym był uruchamiany Nmap (lub skonfigurowanym podobnie), z powodu umieszczenia ścieżki do pliku
nmap.xsl
właściwej dla danego systemu. Za pomocą opcji--webxml
lub--stylesheet
można utworzyć przenośny raport XML, możliwy do obejrzenia w formacie HTML na każdym komputerze podłączonym do Internetu.-
-oS <nazwapliku>
(Format ScRipT KIdd|3) Format script kiddie jest podobny do interaktywnego, jednak jest dodatkowo przetworzony na potrzeby l33t HaXXorZ, którzy nie byli zadowoleni z domyślnego, uporządkowanego formatu Nmapa. Osoby bez poczucia humoru powinny wiedzieć przed zarzucaniem mi „pomagania script kiddies ”, że opcja ta jest tylko żartem, a nie pomocą.
-
-oG <nazwapliku>
(Format "grepowalny") Ten format został opisany jako ostatni, jako że jest już przestarzały. Format XML jest dużo lepszy i jest prawie tak samo wygodny dla zaawansowanych użytkowników. XML jest standardem, do którego napisano dziesiątki bibliotek, podczas gdy format grepowalny jest moim osobistym wymysłem. XML pozwala również na łatwe rozszerzanie o nowe funkcje Nmapa w miarę ich dodawania, podczas gdy w formacie grepowalnym muszą one być pomijane z powodu braku miejsca.
Niezależnie od tego, format ten jest nadal całkiem popularny. Jest prostym formatem opisującym każdy host w oddzielnej linii i umożliwiający bardzo proste wyszukiwanie i przetwarzanie za pomocą standardowych narzędzi systemów UNIX takich jak grep, awk, cut, sed, diff i Perl. Format ten jest wygodny do szybkiego odnajdywania potrzebnych danych, na przykład hostów z otwartym portem SSH lub używających systemu Solaris i jest to możliwe za pomocą wycinania interesujących informacji za pomocą prostych poleceń awk czy cut.
Format grepowalny składa sie z linii komentarzy (rozpoczynających się od znaku #) i linii wyników. Linia wyników składa się z sześciu pól, oddzielonych znakami tabulacji i przecinkami. Polami tymi są
Host
,Ports
,Protocols
,Ignored State
,OS
,Seq Index
,IPID
iStatus
.Najważniejszymi z tych pól są najczęściej pola
Ports
, które zawierają informacje o interesujących portach, w postaci listy oddzielonej przecinkami. Każda pozycja na liście reprezentuje jeden otwarty port i opisuje go siedmioma, oddzielonymi znakami (/) subpolami:Port number
,State
,Protocol
,Owner
,Service
,SunRPC info
iVersion info
.Tak jak i w przypadku formaty XML, dokładny opis formatu grepowalnego przekracza zakres tej dokumentacji i jest dostępny pod adresem
http://www.unspecific.com/nmap-oG-output
.-
-oA <nazwa>
(Wyjście we wszystkich formatach) Dla wygody można podać opcję
-oA
do zapisywania wyników w formacie normalnym, XML i grepowalnym równocześnie. Wyniki zostaną zapisane odpowiednio w plikach o nazwach<nazwa>
<nazwa>
.nmap,<nazwa>
.xml i<nazwa>
.gnmap. Tak jak i w przypadku innych programów, nazwa może zostać poprzedzona scieżką, na przykład~/nmaplogs/foocorp/
w systemach UNIX lubc:\hacking\sco
pod Windows.
-
-v
(Podwyższenie poziomu raportowania) Podwyższenie poziomu raportowania powoduje wyświetlanie przez Nmapa większej ilości informacji na temat postępów skanowania. Otwarte porty są pokazywane zaraz po ich wykryciu, podawany jest także przewidywany czas zakończenia skanowania w przypadku kiedy Nmap zakłada, że test potrwa dłużej niż kilka minut. Dwukrotne użycie tej opcji powoduje dalsze powiększenie poziomu szczegółowości, trzykrotne i dalsze nie dają już żadnego efektu.
Większość zmian dotyczy trybu interaktywnego, niektóre odnoszą się także do trybu normalnego i script kiddie. Pozostałe formaty są przystosowane do przetwarzania przez maszyny, więc Nmap może zawsze podawać szczegółowe informacje bez zmniejszania czytelności dla człowieka. Są jednak i drobne różnice w innych formatach, na przykład w formacie grepowalnym linia komentarza zawierająca listę skanowanych hostów jest dodawana tylko w trybie podwyższonej szczegółowości, ze względu na swoją dosyć znaczną długość.
-
-d [poziom]
(Ustawianie poziomu śledzenia błędów) Jeśli dostępne poziomy szczegółowości nie dostarczają wystarczającej ilości informacji, opcje śledzenia błędów mogą Cię wrecz nimi zasypać! Podobnie jak w przypadku wykorzystania opcji podwyższania szczegółowości (
-v
), opcja włączająca umowanie nazwane śledzenie błędów, włączana jest za pomocą parametru (-d
) i możliwe jest jej wielokrotne dodawanie powiększające skutek. Alternatywnie można podać poziom jako argument do opcji-d
. Na przykład-d9
ustawia poziom na dziewięć. Jest to najwyższy możliwy poziom produkujący setki linii, o ile nie jest to proste skanowanie kilku portów i hostów.Format ten jest użyteczny jeśli podejrzewamy istnienie błędu w Nmapie lub jeśli po prostu chcemy wiedzieć co Nmap robi i czemu. Jako że opcja ta jest przeznaczona głównie dla autorów, wyświetlane linie nie zawsze są do końca zrozumiałe. Można otrzymać na przykład coś w stylu:
Timeout vals: srtt: -1 rttvar: -1 to: 1000000 delta 14987 ==> srtt: 14987 rttvar: 14987 to: 100000
. Jeśli nie rozumiesz takiego zapisu, możesz go po prostu zignorować, poszukać w kodzie źródłowym lub poprosić o pomoc na liście dyskusyjnej twórców Nmapa (nmap-dev). Niektóre linie są dosyć czytelne, ale stają się coraz bardziej skomplikowane wraz ze wzrostem poziomu śledzenia błędów.-
--packet-trace
(Śledzenie wysyłanych i odbieranych pakietów) Powoduje wyświetlanie przez Nmapa krótkiej informacji na temat każdego wysyłanego i odbieranego pakietu. Opcja ta jest często używana podczas śledzenia błędów, ale zawiera również wartościowe informacje dla nowych użytkowników, pozwalające zrozumieć co Nmap robi. Uniknięcie wyświetlania tysięcy linii możliwe jest poprzez ograniczenie ilości portów do skanowania, na przykład za pomocą
-p20-30
. Jeśli chcesz zobaczyć tylko to, co dzieje się w trakcie wykrywania wersji, użyj raczej opcji--version-trace
.-
--iflist
(Pokazuj interfejsy i tablicę routingu) Wyświetla listę interfejsów i tablice routingu wykryte przez Nmapa. Opcja jest przydatna przy śledzeniu błędów w routingu lub niepoprawnym wykrywaniu typów interfejsów (na przykład jeśli Nmap traktuje połączenie PPP jako ethernet).
-
--append-output
(Dołączaj wyniki do pliku) Jeśli zostanie podana nazwa pliku jako argument do opcji takiej jak
-oX
czy-oN
, domyślnie poprzednia zawartość pliku zostanie usunęta i zastąpiona nową. Jeśli zachodzi potrzeba zachowania poprzedniej zawartości pliku i dołączenie nowych wyników, należy dodać opcję--append-output
. Potraktowane tak zostaną wszystkie podane pliki. Opcja nie działa zbyt dobrze z formatem XML, jako że wynikowy plik nie może być pożniej bezbłędnie przetworzony bez ręcznych poprawek.-
--resume <nazwapliku>
(Wznowienie przerwanego skanowania) Niektóre skanowania Nmapa mogą trwać bardzo długo, nawet kilka dni. Problem pojawia się wtedy, kiedy nie jest możliwe ciągłe prowadzenie skanowania, na przykład z powodu potrzeby działania tylko w godzinach pracy, problemów z dostępnością sieci, (nie)przypadkowym restartem komputera na którym działa Nmap lub wykonaniem przez niego nieprawidłowej operacji. Użytkownik może również przerwać w każdej chwili skanowanie za pomocą kombinacji ctrl-C. W takich przypadkach ponowne rozpoczynanie testów od początku może nie być pożądane. Na szczęście, jeśli pozostały wyniki przerwanych testów w formacie normalnym (
-oN
) lub grepowalnym (-oG
), możliwe jest ich wznowienie od momentu przerwania. Służy do tego opcja--resume
dla której argumentem musi byc nazwa pliku w formacie normalnym lub grepowalnym. W tym przypadku nie jest możliwe podawanie żadnych innych opcji, jako że Nmap przetworzy podany plik i odtworzy wcześniej podane opcje. Po prostu uruchom nmap --resume<nazwapliku>
, a Nmap dołączy do wskazanego pliku nowe wyniki. Opcja ta nie obsługuje formatu XML, jako że łączenie dwóch oddzielnych wynikóę skanowań w jeden plik jest dosyć trudne.-
--stylesheet <ścieżka lub URL>
(Styl XSL do transformacji formatu XML) Nmap posiada domyślny styl XSL do przeglądania lub konwersji do formatu XML w pliku
nmap.xsl
. Plik wyjściowy XML zawiera dyrektywęxml-stylesheet
wskazującą nanmap.xml
, ze ścieżką do domyślej lokalizacji tego pliku (lub bierzącego katalogu pod Windows). Dzięki temu wystarczy po prostu załadować plik XML Nmapa do przeglądarki, która sama odczyta sobie pliknmap.xsl
i użyje go do prawidłowego wyświetlenia wyników. Możliwe jest również użycie innego stylu poprzez podanie nazwy pliku jako argumentu dla opcji--stylesheet
. W tym przypadku konieczne jest podanie pełnej ścieżki lub adresu URL. Typowe wywołanie ma postać--stylesheet https://nmap.org/data/nmap.xsl
. Dyrektywa ta nakazuje pobranie najnowszej wersji pliku ze stylem ze strony Insecure.Org. Opcja--webxml
robi dokładnie to samo, będąc łatwiejszą do wpisania i zapamiętania. Używanie pliku XSL ze strony Insecure.Org ułatwia przeglądanie wyników na systemie nie posiadającym zainstalowanego Nmapa (czyli nie posiadającym plikunmap.xsl
). Podawanie adresu URL jest wygodniejsze, jednak domyślnie używany jest plik lokalny ze względu za zachowanie poufności użytkownika.-
--webxml
(Użyj stylu ze strony Insecure.Org) Opcja jest wygodniejszym zapisem analogicznego
--stylesheet https://nmap.org/data/nmap.xsl
.-
--no-stylesheet
(Nie używaj deklaracji stylu XSL w formacie XML) Dodanie tej opcji powoduje wyłączenie dołączania stylu XSL do pliku z wynikami w formacie XML. Zostaje pominięta dyrektywa
xml-stylesheet
.