Skip to main content

A simple python script to convert Nmap output to CSV

Project description

NmaptoCSV
============

Description
-----------
A simple python script to convert Nmap output to CSV

Features
--------
* Support of Nmap version 5, 6, 7 normal format output (default format, `-oN` option)
* Support of Nmap any version Grepable format output (`-oG` option)
* Parsing main information : IP, FQDN, MAC address and vendor, open ports, tcp/udp protocols, listening services and versions, OS, Number of hops to the target, and script output
* Custom output format following the main items

Usage
-----
Pass the Nmap output via stdin or from a specified file (`-i`).
The processed dump can be collected at stdout or to a specified file (`-o`).

### Options
```
Usage: nmaptocsv.py [options]
Version: 1.2

Options:
-h, --help show this help message and exit

Mandatory parameters:
-i INPUT, --input=INPUT
Nmap scan output file (stdin if not specified)

Output parameters:
-o OUTPUT, --output=OUTPUT
CSV output filename (stdout if not specified)
-f FORMAT, --format=FORMAT
CSV column format { fqdn, hop_number, ip, mac_address,
mac_vendor, port, protocol, os, script, service,
version } (default: ip-fqdn-port-protocol-service-
version)
-d DELIMITER, --delimiter=DELIMITER
CSV output delimiter (default ";"). Ex: -d ","
-n, --no-newline Do not insert a newline between each host. By default,
a newline is added for better readability
-s, --skip-header Do not print the CSV header
```

### Nmap Normal format (default output format -oN)
```
$ python nmaptocsv.py -i test.nmap -f ip-fqdn-port-protocol-service-version-os
IP;FQDN;PORT;PROTOCOL;SERVICE;VERSION;OS
192.168.1.2;Test.lan;135;tcp;msrpc;Microsoft Windows RPC;Windows 7 Professional 7601 Service Pack 1 (Windows 7 Professional 6.1)
192.168.1.2;Test.lan;139;tcp;netbios-ssn;;Windows 7 Professional 7601 Service Pack 1 (Windows 7 Professional 6.1)
192.168.1.2;Test.lan;445;tcp;netbios-ssn;;Windows 7 Professional 7601 Service Pack 1 (Windows 7 Professional 6.1)
192.168.1.2;Test.lan;5357;tcp;http;Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP);Windows 7 Professional 7601 Service Pack 1 (Windows 7 Professional 6.1)


$ python nmaptocsv.py -i test.nmap -f ip-fqdn-port-protocol-service-version -d ',' | csvlook
|--------------+----------+------+----------+-------------+------------------------------------------|
| IP | FQDN | PORT | PROTOCOL | SERVICE | VERSION |
|--------------+----------+------+----------+-------------+------------------------------------------|
| 192.168.1.2 | Test.lan | 135 | tcp | msrpc | Microsoft Windows RPC |
| 192.168.1.2 | Test.lan | 139 | tcp | netbios-ssn | |
| 192.168.1.2 | Test.lan | 445 | tcp | netbios-ssn | |
| 192.168.1.2 | Test.lan | 5357 | tcp | http | Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP) |
| |
|--------------+----------+------+----------+-------------+------------------------------------------|

$ nmap -sV -p- localhost -oN - | python nmaptocsv.py
IP;FQDN;PORT;PROTOCOL;SERVICE;VERSION
127.0.0.1;localhost;22;tcp;ssh;OpenSSH 7.6p1 Debian 2 (protocol 2.0)
127.0.0.1;localhost;80;tcp;http;Apache httpd 2.4.29 ((Debian))
127.0.0.1;localhost;5432;tcp;postgresql;PostgreSQL DB 9.5.4
127.0.0.1;localhost;5433;tcp;postgresql;PostgreSQL DB 9.6.0 or later
127.0.0.1;localhost;5434;tcp;postgresql;PostgreSQL DB 9.6.0 or later
```

### Nmap Grepable format (-oG)
```
$ cat scan.gnmap
# Nmap 6.01 scan initiated Thu Nov 22 11:28:15 2012 as: nmap -p- -sV -oA scan 10.0.0.0/24
Host: 10.0.0.1 (test1.local) Status: Up
Host: 10.0.0.1 (test1.local) Ports: 23/open/tcp//telnet//Cisco router telnetd/ Ignored State: closed (65534)
Host: 10.0.0.2 (test2.local) Status: Up
Host: 10.0.0.2 (test2.local) Ports: 23/open/tcp//telnet//Cisco router telnetd/ Ignored State: closed (65534)
Host: 10.0.0.3 (test3.local) Status: Up
Host: 10.0.0.3 (test3.local) Ports: 23/open/tcp//telnet//Cisco router telnetd/ Ignored State: closed (65534)
Host: 10.0.0.50 (test50.local) Status: Up
Host: 10.0.0.50 (test50.local) Ports: 22/open/tcp//ssh//OpenSSH 3.8.1p1 Debian 8.sarge.6 (protocol 2.0)/, 80/open/tcp//http//Apache httpd 1.3.33 ((Debian GNU|Linux) PHP|4.3.10-19)/, 111/open/tcp//rpcbind (rpcbind V2)/(rpcbind:100000*2-2)/2 (rpc #100000)/, 113/open/tcp//ident///, 684/open/tcp//status (status V1)/(status:100024*1-1)/1 (rpc #100024)/, 5432/open/tcp//postgresql//PostgreSQL DB (French)/ Ignored State: closed (65529)
Host: 10.0.0.100 (test100.local) Status: Up
Host: 10.0.0.100 (test100.local) Ports: 80/closed/tcp//http///, 5432/open/tcp//postgresql//PostgreSQL DB (French)/, 19999/filtered/tcp///// Ignored State: closed (65532)

$ python nmaptocsv.py -i scan.gnmap -f ip-fqdn
IP;FQDN
10.0.0.1;test1.local

10.0.0.2;test2.local

10.0.0.3;test3.local

10.0.0.50;test50.local

10.0.0.100;test100.local


$ cat scan.gnmap | python nmaptocsv.py
IP;FQDN;PORT;PROTOCOL;SERVICE;VERSION
10.0.0.1;test1.local;23;tcp;telnet;Cisco router telnetd

10.0.0.2;test2.local;23;tcp;telnet;Cisco router telnetd

10.0.0.3;test3.local;23;tcp;telnet;Cisco router telnetd

10.0.0.50;test50.local;22;tcp;ssh;OpenSSH 3.8.1p1 Debian 8.sarge.6 (protocol 2.0)
10.0.0.50;test50.local;80;tcp;http;Apache httpd 1.3.33 ((Debian GNU|Linux) PHP|4.3.10-19)
10.0.0.50;test50.local;111;tcp;rpcbind (rpcbind V2);(rpcbind:100000*2-2)/2 (rpc #100000)
10.0.0.50;test50.local;113;tcp;ident;
10.0.0.50;test50.local;684;tcp;status (status V1);(status:100024*1-1)/1 (rpc #100024)
10.0.0.50;test50.local;5432;tcp;postgresql;PostgreSQL DB (French)

10.0.0.100;test100.local;5432;tcp;postgresql;PostgreSQL DB (French)
```

Dependencies and installation
-----------------------------
* Python 2 (compatibility with Python 3 is in progress)
* The **easiest way** to setup everything: `pip install nmaptocsv` and then directly use `$ nmaptocsv`
* Or git clone that repository

Changelog
---------
* version 1.2 - 01/07/2018: script output parsing addition
* version 1.1 - 01/07/2018: Cleaning the code, fixing some parsing bugs, delimiter option addition and made newline default
* version 1.0 - from 2012 to 2013

Copyright and license
---------------------
Nmaptocsv is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Nmaptocsv is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with nmaptocsv.
If not, see http://www.gnu.org/licenses/.

Contact
-------
* Thomas Debize < tdebize at mail d0t com >

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nmaptocsv-1.2.tar.gz (8.9 kB view details)

Uploaded Source

File details

Details for the file nmaptocsv-1.2.tar.gz.

File metadata

  • Download URL: nmaptocsv-1.2.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for nmaptocsv-1.2.tar.gz
Algorithm Hash digest
SHA256 dc7e8cf7e23fbf5621248c614afef5bcca7cf62e3a4097d817925a1bec5062a1
MD5 e4588138df62a7a830fa9db4f1d64e06
BLAKE2b-256 34bd3215ca5180c88f232aa22ec89e0e635483ae62f6c622b3c5497005487f22

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page