diff options
author | heqnx <root@heqnx.com> | 2025-05-12 20:15:06 +0300 |
---|---|---|
committer | heqnx <root@heqnx.com> | 2025-05-12 20:15:06 +0300 |
commit | 62d49c14190431424f270a540a8da2d1cc4444af (patch) | |
tree | e3d63dc01e56b54a87770fbde3504695d8573651 | |
parent | 53678d3256e8732a078f717037629b3850064837 (diff) | |
download | gists-62d49c14190431424f270a540a8da2d1cc4444af.tar.gz gists-62d49c14190431424f270a540a8da2d1cc4444af.zip |
added nmap-to-csv.sh
-rw-r--r-- | nmap-to-csv.sh | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/nmap-to-csv.sh b/nmap-to-csv.sh new file mode 100644 index 0000000..699955e --- /dev/null +++ b/nmap-to-csv.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +while getopts "g:n:h" ARG; do + case "${ARG}" in + g) + parse="gnmap" + file="${OPTARG}" + ;; + n) + parse="nmap" + file="${OPTARG}" + ;; + esac +done + +if ! test "${parse}" || ! test "${file}"; then + printf "%s\n" "usage: $(basename $0) -g <gnmap file> | -n <nmap file>" + exit 1 +fi + +if ! test -f "${file}"; then + printf "%s\n" "${file} is not a file, exiting" + exit 1 +fi + +case "${parse}" in + gnmap) + cat $file | awk '/Host:/ { + ip = $2 + } + /\/open\/tcp\// { + for (i = 1; i <= NF; i++) { + if ($i ~ /^[0-9]+\/open\/tcp\//) { + print ip "|" $i + } + } + } + ' | sed 's/\/\+/\//g' | awk -F '/' '{print $1"|"$4}' + ;; + nmap) + cat $file | grep -v ^\# | awk -F'[ /]+' ' + /Nmap scan report for/ { + host = $5 + } + /^[0-9]+\// { + version = "" + for (i = 5; i <= NF; i++) { + version = version $i " " + } + printf("%s|%s|%s|%s\n", host, $1, $4, version) + } + ' + ;; +esac |