darcosion / Echosounder

petit programme marrant
MIT License
14 stars 1 forks source link

Bug énumération de service, fonction python nmap crash en cas de cible down #46

Closed darcosion closed 2 years ago

darcosion commented 2 years ago

Actuellement, il manque un try catch dans le cas où une machine scanné ne répond pas.

Cette ligne crash : https://github.com/darcosion/Echosounder/blob/ec731e71a4554b9bcc0f83ed8af8559b563428b3/echosounder.py#L244

En raison de l'absence de l'IP dans nm puisqu'elle n'a pas pu être scanné. Cela peut être identifié via le retour de commande nmap :

{
    "nmap": {
        "command_line": "nmap -oX - -p 0-400 -sV 192.168.1.9",
        "scaninfo": {
            "tcp": {
                "method": "syn",
                "services": "0-400"
            }
        },
        "scanstats": {
            "timestr": "Sun Mar 13 18:09:42 2022",
            "elapsed": "0.67",
            "uphosts": "0",
            "downhosts": "1",
            "totalhosts": "1"
        }
    },
    "scan": {}
}

Néanmoins, le downhosts n'aidera pas dans un cas de scan multiples...

AlixCheval commented 2 years ago

Le bug devrait être corrigé. Le fix implémenté dans le cas où une IP n'existant pas est demandé est le suivant : le code retourne [{'IP': None, 'protocols': None}] Lien du fix :

https://github.com/darcosion/Echosounder/blob/ce4cf2e1ffa98ce0f48536fde769f55c3aa0be79/echosounder.py#L244-L249

darcosion commented 2 years ago

Le fix rend le scan de service inopérant, j'ai ajouté un print(nmap_scan_result) pour tester, j'ai des retour de scan, mais au niveau json, :

{
  "scan": [
    {
      "IP": null, 
      "protocols": null
    }
  ]
}

@AlixCheval

AlixCheval commented 2 years ago

Le bug a été fixé dans 5eed2e62ac04e869534d0101ccd4231eff6068e0.
Dans le cas où l'adresse IP demandée n'existe pas, un dictionnaire vide est retourné {} :

https://github.com/darcosion/Echosounder/blob/5eed2e62ac04e869534d0101ccd4231eff6068e0/echosounder.py#L327-L328

Un try catch a été implémenté car aucune autre solution à ce jour a été trouvée.