import ipaddress import os import socket import struct import sys import threading import time # сканируем подсеть SUBNET = '192.168.31.0/24' # волшебная строка, которую мы будем искать в ICMP-ответах # MESSAGE = 'PYTHONRULES!' MESSAGE = 'asdfaskdflajdskfjalsjdf' class IP: def __init__(self, buff): header = struct.unpack('> 4 self.ihl = header[0] & 0xF self.tos = header[1] self.len = header[2] self.id = header[3] self.offset = header[4] self.ttl = header[5] self.protocol_num = header[6] self.sum = header[7] self.src = header[8] self.dst = header[9] # IP-адруса, понятные человек self.src_address = ipaddress.ip_address(self.src) self.dst_address = ipaddress.ip_address(self.dst) # сопоставляем константы протоколов с их назначением self.protocol_map = {1: "ICMP", 6: "TCP", 17: "UDP"} try: self.protocol = self.protocol_map[self.protocol_num] except Exception as e: print('%s No protocol for %s' % (e, self.protocol_num)) self.protocol = str(self.protocol_num) class ICMP: def __init__(self, buff): header = struct.unpack('