Я пишу программу, для которой требуется несколько потоков (злоумышленников):
MESSAGE = b"flood"
IP = "127.0.0.1"
BREAKER_PORT = 5005
CONTROLLER_PORT = 49153
ATTACKER_PORT1 = 49154
ATTACKER_PORT2 = 49155
def send_flood_messages(port_number):
print("port number: " + str(port_number))
attacker_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
attacker_socket.bind((IP, port_number))
x = 0 #used to interchange between attackers to mitigate detection
counter = 0 #handle replays
while True:
frame, meta = receiving_socket.recvfrom(65565)
if len(frame) >= 34:
UDP_dictionary = promisc.unpack_UDP(frame[34:])
if UDP_dictionary.get("udp_dest") == CONTROLLER_PORT:
counter += 1
if counter == 2:
time.sleep(float(wait_time))
print("Sending flood message at time: " + str(time.time()))
attacker_socket.sendto(MESSAGE, (IP, BREAKER_PORT))
counter = 0
class attackerThread(threading.Thread):
def __init__(self, threadID, name):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
def run(self, port_number):
send_flood_messages(port_number)
attacker1 = attackerThread(1, "attacker1")
attacker2 = attackerThread(2, "attacker2")
attacker1.run(ATTACKER_PORT1)
attacker2.run(ATTACKER_PORT2)
Когда я запускаю оба потока, только один поток выполняется и печатает (первый). Результат выглядит следующим образом:
port number: 49154
Я не могу понять, почему второй поток не выполняет и не выполняет функцию? Я ожидал увидеть следующий результат:
port number: 49154
port number: 49155