Search code examples
pythonpython-3.xmultithreadingkeylogger

Exception in thread Thread-25 with my keylogger Python


I have this remote keylogger and it works fine at first to send the emails but after a few minutes it stops sending emails and it throws me this error:

Exception in thread Thread-25:
Traceback (most recent call last):
  File "C:\Users\Lisandro0\AppData\Local\Programs\Python\Python37\lib\threading.py", line 926, in _bootstrap_inner
    self.run()
  File "C:\Users\Lisandro0\AppData\Local\Programs\Python\Python37\lib\threading.py", line 1177, in run
    self.function(*self.args, **self.kwargs)
  File "C:\Users\Lisandro0\Desktop\Desktop3\keylogger\crack.py", line 64, in report
    self.sendmail(EMAIL_ADDRESS, EMAIL_PASSWORD, self.log)
  File "C:\Users\Lisandro0\Desktop\Desktop3\Keylogger\crack.py", line 53, in sendmail
    server.sendmail(email, email, message)
  File "C:\Users\Lisandro0\AppData\Local\Programs\Python\Python37\lib\smtplib.py", line 855, in sendmail
    msg = _fix_eols(msg).encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode character '\xf1' in position 312: ordinal not in range(128)

I would appreciate reading the code as it is short.

I appreciate any help


Solution

  • The error message is clear:

    ...Python37\lib\smtplib.py...UnicodeEncodeError: 'ascii' codec can't encode character '\xf1' in position 312: ordinal not in range(128)

    It seems that smtplib has problem encoding your mail content.

    I did some source code reading. In smtplib.py:

        def sendmail(self, from_addr, to_addrs, msg, mail_options=(),
                     rcpt_options=()):
            """This command performs an entire mail transaction.
    
            The arguments are:
                - from_addr    : The address sending this mail.
                - to_addrs     : A list of addresses to send this mail to.  A bare
                                 string will be treated as a list with 1 address.
                - msg          : The message to send.
                - mail_options : List of ESMTP options (such as 8bitmime) for the
                                 mail command.
                - rcpt_options : List of ESMTP options (such as DSN commands) for
                                 all the rcpt commands.
    
            msg may be a string containing characters in the ASCII range, or a byte
            string.  A string is encoded to bytes using the ascii codec, and lone
            \\r and \\n characters are converted to \\r\\n characters.
    

    Look here:

    msg may be a string containing characters in the ASCII range, or a byte string

    If you want to send mail of non-ascii content, you can encode the content into a byte string first.

    (By the way, if I got it right, your question title is somewhat off the point, failing to grasp the key of your problem.)