From f8c4ea0903325b3951f36144c09185a957612183 Mon Sep 17 00:00:00 2001
From: adrien <adrien@malingrey.fr>
Date: Tue, 11 Apr 2023 20:33:11 +0200
Subject: [PATCH] change yaml format

---
 init.sh                                       | 11 ++++++---
 .../http-favicon-url.nse                      |  0
 http-get.nse => nmap/http-get.nse             |  0
 results.xsl                                   | 23 +++++++++++++------
 scan_all.php                                  | 17 +++++++-------
 toyaml.xsl                                    |  7 +++---
 6 files changed, 37 insertions(+), 21 deletions(-)
 rename http-favicon-url.nse => nmap/http-favicon-url.nse (100%)
 rename http-get.nse => nmap/http-get.nse (100%)

diff --git a/init.sh b/init.sh
index 473e645..a2c068f 100755
--- a/init.sh
+++ b/init.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
 
 ###
 #
@@ -6,9 +6,14 @@
 #
 ###
 
+DIR="$(dirname -- "$0")"
+
 echo "Nom du site ?"
 read site
+filename="${site/ /_}"
 echo "Adresse réseau CIDR (xxx.xxx.xxx.xxx/xx) ?"
 read network
-nmap --script smb-enum-shares.nse -oX "scans/$site.xml" $network
-xsltproc --stringparam site "$site" --stringparam network $network toyaml.xsl "scans/$site.xml" > "confs/$site.yaml"
+
+
+nmap --script smb-enum-shares.nse -oX "scans/$filename.xml" $network
+xsltproc --stringparam site "$site" --stringparam network $network toyaml.xsl "$DIR/scans/$filename.xml" > "$DIR/confs/$filename.yaml"
diff --git a/http-favicon-url.nse b/nmap/http-favicon-url.nse
similarity index 100%
rename from http-favicon-url.nse
rename to nmap/http-favicon-url.nse
diff --git a/http-get.nse b/nmap/http-get.nse
similarity index 100%
rename from http-get.nse
rename to nmap/http-get.nse
diff --git a/results.xsl b/results.xsl
index f098d03..f2bdd51 100644
--- a/results.xsl
+++ b/results.xsl
@@ -5,12 +5,12 @@
     version="1.1">
 <xsl:output method="html" encoding="UTF-8" indent="yes" />
 
-<xsl:variable name="scan" select="document(string(lanScanConf/scan/@path))/nmaprun"/>
+<xsl:variable name="scan" select="document(string(lanScanConf/@scanpath))/nmaprun"/>
 
 <xsl:template match="lanScanConf">
 <html lang="fr">
     <head>
-        <title>lanScan - <xsl:value-of select="@name"/></title>
+        <title>lanScan - <xsl:value-of select="@site"/></title>
         <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.3/dist/jquery.min.js"></script>
         <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/fomantic-ui@2.9.2/dist/semantic.min.css" />
         <script src="https://cdn.jsdelivr.net/npm/fomantic-ui@2.9.2/dist/semantic.min.js"></script>
@@ -41,7 +41,7 @@
     <body>
         <header class="ui fixed blue inverted menu">
             <a href="." class="header item">lan<img id="logo" src="../logo.svg" alt="S"/>can</a>
-            <div class="item"><xsl:value-of select="@name"/></div>
+            <div class="item"><xsl:value-of select="@site"/></div>
         </header>
         <div class="ui main container">
             <p><xsl:value-of select="$scan/runstats/finished/@summary"/></p>
@@ -133,9 +133,18 @@
             <xsl:otherwise>red</xsl:otherwise>
         </xsl:choose>
     </xsl:variable>
+    <xsl:variable name="title">
+        <xsl:value-of select="$scannedPort/@portid"/>
+        <xsl:text>/</xsl:text>
+        <xsl:value-of select="$scannedPort/@protocol"/>
+        <xsl:text> </xsl:text>
+        <xsl:value-of select="$scannedPort/service/@name"/>
+        <xsl:text> </xsl:text>
+        <xsl:value-of select="$scannedPort/state/@state"/>
+    </xsl:variable>
     <xsl:choose>
         <xsl:when test="($scannedPort/service/@name='microsoft-ds' or $scannedPort/service/@name='netbios-ssn' or $scannedPort/service/@name='smb') and $scannedHost/hostscript/script[@id='smb-enum-shares']/table[not(contains(@key, '$'))]">
-            <div class="ui {$state} dropdown mini button" title="{$scannedPort/@protocol}/{$scannedPort/@portid} {$scannedPort/service/@name} {$scannedPort/state/@state}">
+            <div class="ui {$state} dropdown mini button" title="{$title}">
                 <div class="text"><xsl:value-of select="@name"/></div>
                 <i class="dropdown icon"></i>
                 <div class="menu">
@@ -146,17 +155,17 @@
             </div>
         </xsl:when>
         <xsl:when test="$scannedPort/service/@name='ms-wbt-server' or $scannedPort/service/@name='rdp'">
-            <a class="ui {$state} mini button" href="../rdp.php?v={$scannedHostAddress}:{$scannedPort/@portid}" title="{$scannedPort/@protocol}/{$scannedPort/@portid} {$scannedPort/service/@name} {$scannedPort/state/@state}">
+            <a class="ui {$state} mini button" href="../rdp.php?v={$scannedHostAddress}:{$scannedPort/@portid}" title="{$title}">
                 <xsl:value-of select="@name"/>
             </a>
         </xsl:when>
         <xsl:when test="$scannedPort/service/@name='ftp' or $scannedPort/service/@name='ssh' or $scannedPort/service/@name='http' or $scannedPort/service/@name='https'">
-            <a class="ui {$state} mini button" href="{$scannedPort/service/@name}://{$scannedHostAddress}:{$scannedPort/@portid}"  target="_blank" title="{$scannedPort/@protocol}/{$scannedPort/@portid} {$scannedPort/service/@name} {$scannedPort/state/@state}">
+            <a class="ui {$state} mini button" href="{$scannedPort/service/@name}://{$scannedHostAddress}:{$scannedPort/@portid}"  target="_blank" title="{$title}">
                 <xsl:value-of select="@name"/>
             </a>
         </xsl:when>
         <xsl:otherwise>
-            <a class="ui disabled {$state} mini button" title="{$scannedPort/@protocol}/{$scannedPort/@portid} {$scannedPort/service/@name} {$scannedPort/state/@state}">
+            <a class="ui disabled {$state} mini button" title="{$title}">
                 <xsl:value-of select="@name"/>
             </a>
         </xsl:otherwise>
diff --git a/scan_all.php b/scan_all.php
index 98aa277..2a1a970 100644
--- a/scan_all.php
+++ b/scan_all.php
@@ -23,14 +23,15 @@ foreach (scandir(__DIR__."/confs") as $file) {
 <lanScanConf/>
 XML
 );
-        $xml->addChild("scan path='scans/$site.xml'");
-
-        foreach ($yaml as $siteName => $groups) {
-            $xml->addAttribute("name", $siteName);
-            if ($groups) foreach ($groups as $groupName => $hosts) {
+        $xml->addAttribute("scanpath", "scans/$site.xml");
+    
+        foreach ($yaml as $key => $value) {
+            if ($key == "site") {
+                $xml->addAttribute("site", $value);
+            } else {
                 $xmlGroup = $xml->addChild("group");
-                $xmlGroup->addAttribute("name", $groupName);
-                if ($hosts) foreach($hosts as $hostaddress => $servicesList) {
+                $xmlGroup->addAttribute("name", $key);
+                foreach($value as $hostaddress => $servicesList) {
                     $targets[$hostaddress] = true;
                     $xmlHost = $xmlGroup->addChild("host");
                     $xmlHost->addAttribute("address", $hostaddress);
@@ -46,7 +47,7 @@ XML
         $targets = join(array_keys($targets), " ");
         $services = join(array_keys($services), ",");
 
-        exec("nmap -v -Pn -p $services --script smb-enum-shares,./http-get.nse,./http-favicon-url.nse -oX '".__DIR__."/scans/tmp.xml' $targets\n");
+        exec("nmap -v -Pn -p $services --script smb-enum-shares,".__DIR__."/nmap -oX '".__DIR__."/scans/tmp.xml' $targets\n");
         rename(__DIR__."/scans/tmp.xml", __DIR__."/scans/$site.xml");
 
         $xml->asXML(__DIR__."/site/$site.xml");
diff --git a/toyaml.xsl b/toyaml.xsl
index 0315a50..215f592 100644
--- a/toyaml.xsl
+++ b/toyaml.xsl
@@ -10,14 +10,15 @@
 
 <xsl:template match="nmaprun">
 <xsl:text>---
+site: </xsl:text><xsl:value-of select="$site" /><xsl:text>
+
+</xsl:text><xsl:value-of select="$network" /><xsl:text>:
 </xsl:text>
-<xsl:value-of select="$site" />:
-<xsl:text>  </xsl:text><xsl:value-of select="$network" />:
 <xsl:apply-templates select="host"/>
 </xsl:template>
 
 <xsl:template match="host">
-<xsl:text>    </xsl:text>
+<xsl:text>  </xsl:text>
 <xsl:choose>
 <xsl:when test="hostnames/hostname/@name"><xsl:value-of select="hostnames/hostname/@name" /></xsl:when>
 <xsl:otherwise>  <xsl:value-of select="address/@addr" /></xsl:otherwise>