Найти - Пользователи
Полная версия: Пересылка сообщений между компьютерами в локальной сети.
Начало » Python для новичков » Пересылка сообщений между компьютерами в локальной сети.
1
Eliont
Доброе время суток.
Есть два компа (вернее, комп и виртуалка на нём VMWare player), и хост и гость - Windows 7.
Тип подключения - мост. Друг друга пингуют. В домашнюю группу объединены.
Адреса - 192.168.1.1 - роутер, 192.168.1.2 - хост, 192.168.1.3 - виртуалка.

Есть простой скрипт который берёт код нажатой клавиши и отправлет его в сообщении:
сендер, запускается на хосте
import win32api,sys,pythoncom,pyHook,ctypes,socket,time
def OnKeyboardEvent(event):
    global hm
    print "KeyID = ",event.KeyID," | Ascii = ",event.Ascii,"|","Window = ",event.WindowName
    s.send(str(event.KeyID))
    
print "Keylogger start"    
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host = "192.168.1.3"
port = int(50000)
s.connect((host, port))
hm = pyHook.HookManager() 
hm.KeyDown = OnKeyboardEvent 
hm.HookKeyboard() 
pythoncom.PumpMessages()
ресивер, запускается на госте
import win32api,sys,pythoncom,pyHook,ctypes,socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(('192.168.1.2',50000))
print "Receiver started."
s.listen(1)
sock, addr = s.accept()
print "Listening"
while True:   
    keycode = int(sock.recv(1024))
    print keycode
Сначала запускается ресивер и ждёт, затем логгер который посылает.
Когда запускаю оба скрипта на одной машине - всё работает, а когда пытаюсь заставить передавать - получаю ошибку:
Traceback (most recent call last):
  File "receiver.py", line 6, in <module>
    s.bind(('192.168.1.3',50000))
  File "C:\Python27\lib\socket.py", line 222, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 10049]
Уже задолбался. В чём может быть проблема? Заранее спасибо.
terabayt
s.bind(('', 50000))
?
Eliont
То есть на приёмнике не надо указывать с какого адреса ждать, только порт который слушать?
Eliont
Спасибо, так ресивер запускается. Но теперь на хосте получаю ошибку
Traceback (most recent call last):
  File "keylogger.py", line 15, in <module>
    s.connect((host, port))
  File "C:\Python27\lib\socket.py", line 222, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
Похоже, это говорит что порт закрыт.
Но как открыть? Брандмауэр выключен.

Пинг
Обмен пакетами с 192.168.1.3 по с 32 байтами данных:
Ответ от 192.168.1.3: число байт=32 время<1мс TTL=128
Ответ от 192.168.1.3: число байт=32 время<1мс TTL=128
Ответ от 192.168.1.3: число байт=32 время<1мс TTL=128
Ответ от 192.168.1.3: число байт=32 время<1мс TTL=128

Статистика Ping для 192.168.1.3:
Пакетов: отправлено = 4, получено = 4, потеряно = 0
(0% потерь)
Приблизительное время приема-передачи в мс:
Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек

telnet
Подключение к 192.168.1.3...Не удалось открыть подключение к этому узлу, на порт
 50000: Сбой подключения

doza_and
возьмите пример из https://docs.python.org/2/library/socket.html.
Он точно работает. Если не взлетит то надо будет разбираться с конфигурацией
doza_and
возьмите пример из https://docs.python.org/2/library/socket.html.
Он точно работает. Если не взлетит то надо будет разбираться с конфигурацией
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB