DD,
add MACServerExploit.py i na Windows.
cely problem je v tom, ze ten skript ma prijem dat vyresen v separatnim vlakne, ktere bezi nezavisle na hlavni casti skriptu. A co vic spousti se jeste drive nez se zacna v hlavnim vlakne neco dit. Windows (zrejme narozdil od Linuxu) maji problem s tim, ze se spusti na UDP socketu prijem dat jeste driv, nez vlastne system vi jake packety ma ten socket prijimat. Protoze skript neinformuje system o jake packety ma zajem (na jakem portu nasloucha), ziskava system tuhle informaci s prvnim odeslanym packetem (opise si z nej zdrojovy port apod). Jenze skript ve vedlejsim vlakne dojde k sock.recv() jeste driv nez v hlavnim vlakne k m.send(). Na windows to hodi chybu a skript se sesype.
Takze oprava spociva v tom, jak donutit skript, aby si tech chyb 10022 apod nevsimal. Obalil jsem try/except sekci prislusny kod a voila, hesla jsou tady.
Opravit je treba funkci __recv_manager__(). Asi nejak takhle:
def __recv_manager__(self):
while self.work:
try:
data, _ = self.sock.recvfrom(1024*64)
self.__parse_packet__(data)
except (OSError) as err:
print("socket runtime error:", err)
Python celkem nesnasim (jazyk, ktery pouziva levostranny whitespace jako soucast syntaxe? WTF), takze v nem nedelam a asi to jde upravit elegantneji. V kazdem pripade, dejte si pozor na levostranne mezery (radeji nemichat s tabulatory) a dodrzet jejich stejny pocet pro vsechny povely stejne urovne. Po tehle uprave skript vypise navic par hlaseni o socket runtime chybe. Cely ten print() by slo zahodit.