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
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
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.….
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.
Cette liste ne dit rien pour savoir discerner la variante Android d'un Linux..
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.
be free in your mind
be free in your mind