Partage
  • Partager sur Facebook
  • Partager sur Twitter

besoin de proposition d'amélioration

besoin de proposition d'amélioration de mon code python

    13 octobre 2023 à 17:31:33

    Bonjour ,

    je travaille sur un script python qui me permet d'automatiser la détection des systèmes d'exploitations derrières les IP réseaux  voici le code en question 

    operating_system = "Unknown_OS"
            pack = IP(dst=address) / ICMP()
            resp = sr1(pack, timeout=3)
    
            if resp:
                if IP in resp:
                    ttl = resp.getlayer(IP).ttl
    
                    if ttl <= 64:
                        operating_system = 'Unix Os'
                        if resp.haslayer(TCP) and resp.haslayer(Raw):
                            banner = str(resp[TCP].payload)
                            if re.search(r"Ubuntu", banner, re.IGNORECASE):
                                operating_system = 'Ubuntu Linux'
                            elif re.search(r"Debian", banner, re.IGNORECASE):
                                operating_system = 'Debian Linux'
                            elif re.search(r"CentOS", banner, re.IGNORECASE):
                                operating_system = 'CentOS Linux'
                            elif re.search(r"Red Hat", banner, re.IGNORECASE):
                                operating_system = 'Red Hat Linux'
                            elif re.search(r"Fedora", banner, re.IGNORECASE):
                                operating_system = 'Fedora Linux'
                            elif re.search(r"FreeBSD", banner, re.IGNORECASE):
                                operating_system = 'FreeBSD'
                            elif re.search(r"Kali Linux", banner, re.IGNORECASE):
                                operating_system = 'Kali Linux'
    
                    elif 64 < ttl <= 128:
                        operating_system = 'Windows'
                        if resp.haslayer(TCP) and resp.haslayer(Raw):
                            banner = str(resp[TCP].payload)
                            if re.search(r"Microsoft Windows", banner, re.IGNORECASE):
                                operating_system = 'Microsoft Windows'
                            elif re.search(r"Windows", banner, re.IGNORECASE):
                                operating_system = 'Windows (unknown version)'
    
                    elif 128 < ttl <= 255:
                        operating_system = 'printer'
    
                    elif ttl == 64 and resp.haslayer(ICMP):
                        icmp_resp = resp[ICMP]
                        if icmp_resp.type == 0 and icmp_resp.code == 0:
                            operating_system = 'macOS'
    
                    elif 64 < ttl <= 128 and resp.haslayer(TCP) and resp.haslayer(Raw):
                        banner = str(resp[TCP].payload)
                        if re.search(r"Android", banner, re.IGNORECASE):
                            operating_system = 'Android'
    

    mais il se trouve toute fois que cette manière de faire est obsolète j'ai vraiment besoin des suggestions merci

    • Partager sur Facebook
    • Partager sur Twitter

    be free in your mind

      13 octobre 2023 à 18:18:14

      Nouchi a écrit:

      mais il se trouve toute fois que cette manière de faire est obsolète j'ai vraiment besoin des suggestions merci

      Je ne vois pas ce qui est obsolète dans ce code. Pourriez vous préciser?

      • Partager sur Facebook
      • Partager sur Twitter
        16 octobre 2023 à 14:16:39

        en tout cas dans le code il y a des incohérences dans l'ordre des tests vu que ce sont des elif. on ne passera jamais dans les 2 derniers, vu que l'on sera rentré dans une des conditions précédentes

        • Partager sur Facebook
        • Partager sur Twitter
          17 octobre 2023 à 15:37:08

          mps a écrit:

          Nouchi a écrit:

          mais il se trouve toute fois que cette manière de faire est obsolète j'ai vraiment besoin des suggestions merci

          Je ne vois pas ce qui est obsolète dans ce code. Pourriez vous préciser?


          Au fait ce code  détecte les systèmes Windows et linux en détecte aussi Android comme étant linux mais ne détecte pas directement un Android une distribution linux telle que Red Hat Ubuntu CentOS etc.….
          • Partager sur Facebook
          • Partager sur Twitter

          be free in your mind

            17 octobre 2023 à 16:45:29

            Nouchi a écrit:

            Au fait ce code  détecte les systèmes Windows et linux en détecte aussi Android comme étant linux mais ne détecte pas directement un Android une distribution linux telle que Red Hat Ubuntu CentOS etc.….


            Comment faire pour détecter qu'on tourne sur Android est un sujet qui est indépendant de python. python ne sera concerné que lorsqu'on saura que faire coté système pour que.... et à ce moment là se posera la question de traduire ça en python.
            • Partager sur Facebook
            • Partager sur Twitter
              17 octobre 2023 à 17:00:26

              ici (https://gbhackers.com/operating-systems-can-be-detected-using-ping-command/amp/ ) il y a une liste de correspondances entre les ttl et les OS, on voit que selon les versions/noyaux, le TTL par défaut peut différer
              • Partager sur Facebook
              • Partager sur Twitter
                17 octobre 2023 à 17:32:26

                umfred a écrit:

                ici (https://gbhackers.com/operating-systems-can-be-detected-using-ping-command/amp/ ) il y a une liste de correspondances entre les ttl et les OS, on voit que selon les versions/noyaux, le TTL par défaut peut différer


                Cette liste ne dit rien pour savoir discerner la variante Android d'un Linux..
                • Partager sur Facebook
                • Partager sur Twitter

                besoin de proposition d'amélioration

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown