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.

Formaty wyjściowe Nmapa
-oN <nazwapliku> (Format normalny)

Powoduje zapis w formacie normalnym do wskazanego pliku. Jak napisano wyżej, format ten różni się nieco od formatu 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 adresem https://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 i Status.

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 i Version 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<nazwa> do zapisywania wyników w formacie normalnym, XML i grepowalnym równocześnie. Wyniki zostaną zapisane odpowiednio w plikach o nazwach <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 lub c:\hacking\sco pod Windows.

Poziom szczegółowości i opcje diagnozowania błędów
-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).

Pozostałe opcje
--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ą na nmap.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 plik nmap.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 pliku nmap.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.