aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorheqnx <root@heqnx.com>2025-05-12 20:15:06 +0300
committerheqnx <root@heqnx.com>2025-05-12 20:15:06 +0300
commit62d49c14190431424f270a540a8da2d1cc4444af (patch)
treee3d63dc01e56b54a87770fbde3504695d8573651
parent53678d3256e8732a078f717037629b3850064837 (diff)
downloadgists-62d49c14190431424f270a540a8da2d1cc4444af.tar.gz
gists-62d49c14190431424f270a540a8da2d1cc4444af.zip
added nmap-to-csv.sh
-rw-r--r--nmap-to-csv.sh54
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