selfspy / selfspy

Log everything you do on the computer, for statistics, future reference and all-around fun!
GNU General Public License v3.0
2.42k stars 230 forks source link

Blowfish constructor in Crypto.Cipher takes 2 arguments #169

Open gagbo opened 6 years ago

gagbo commented 6 years ago

Selfspy crashes after I enter a password for my database with this stack :

selfspy
Password: 
Traceback (most recent call last):
  File "/home/gagbo/.local/bin/selfspy", line 11, in <module>
    load_entry_point('selfspy==0.3.0', 'console_scripts', 'selfspy')()
  File "build/bdist.linux-x86_64/egg/selfspy/__init__.py", line 109, in main
  File "build/bdist.linux-x86_64/egg/selfspy/password_dialog.py", line 32, in get_password
  File "build/bdist.linux-x86_64/egg/selfspy/password_dialog.py", line 39, in get_user_password
  File "build/bdist.linux-x86_64/egg/selfspy/password_dialog.py", line 84, in get_tty_password
  File "build/bdist.linux-x86_64/egg/selfspy/__init__.py", line 89, in check_with_encrypter
  File "build/bdist.linux-x86_64/egg/selfspy/__init__.py", line 75, in make_encrypter
TypeError: new() takes at least 2 arguments (1 given)

Indeed, the Blowfish constructor is called with only 1 argument in code currently

And from the help in a python interactive prompt there should be 2 arguments there :

Help on module Crypto.Cipher.Blowfish in Crypto.Cipher:

NAME
    Crypto.Cipher.Blowfish - Module's constants for the modes of operation supported with Blowf
ish:

FILE
    /home/gagbo/.local/lib/python2.7/site-packages/Crypto/Cipher/Blowfish.py

DESCRIPTION
    :var MODE_ECB: Electronic Code Book (ECB)
    :var MODE_CBC: Cipher-Block Chaining (CBC)
    :var MODE_CFB: Cipher FeedBack (CFB)
    :var MODE_OFB: Output FeedBack (OFB)
    :var MODE_CTR: CounTer Mode (CTR)
    :var MODE_OPENPGP:  OpenPGP Mode
    :var MODE_EAX: EAX Mode

FUNCTIONS
    new(key, mode, *args, **kwargs)
        Create a new Blowfish cipher
         currently
        :param key:
            The secret key to use in the symmetric cipher.
            Its length can vary from 5 to 56 bytes.
        :type key: byte string

        :param mode:
            The chaining mode to use for encryption or decryption.
        :type mode: One of the supported ``MODE_*`` constants
...

I only cloned the repo and used pip to install Xlib dependencies, then ran python setup.py install --user, trusting requirements.txt, but even after changing pycrypto>=2.5 to pycrypto==2.5 I still have the issue. (For the record, I have pycrypto 2.6 on a Fedora 28 machine)

Does anyone else manage to run selfspy with a password on DB ? Can I just change this call to encrypter according to #160 and everything else will work without issue ?

gagbo commented 6 years ago

ping @anarcat : you did not have this issue while testing the software ? I thought this may be a problem only when running selfspy on recent enough installations

anarcat commented 6 years ago

i didn't test the crypto bits very much.