Git Product home page Git Product logo

passpie's Introduction

passpie: Command-line password manager

https://raw.githubusercontent.com/marcwebbie/passpie/master/images/passpie2.png

Version Coverage

Passpie is a command line tool to manage passwords from the terminal with a colorful and configurable interface. Use a master passphrase to decrypt login credentials, copy passwords to clipboard, syncronize with a git repository, check the state of your passwords, and more.

Password files are encrypted using GnuPG and saved into yaml text files. Passpie supports Linux, OSX and Windows.

What does it look like? Here is an example of a simple Passpie usage:

passpie init
passpie add [email protected] --random
passpie add [email protected] --pattern "[0-9]{5}[a-z]{5}"
passpie update foo@example --comment "Hello"
passpie
passpie copy [email protected]

Outputs:

===========  =======  ==========  =========
Name         Login    Password    Comment
===========  =======  ==========  =========
example.com  bar      ********
example.com  foo      ********    Hello
===========  =======  ==========  =========
Password copied to clipboard
Check example remote passpie database: https://github.com/marcwebbie/passpiedb.

Install

pip install passpie

Or if you are on a mac, install via Homebrew:

brew install passpie

Dependencies

Passpie depends on GnuPG for encryption

Commands

Usage: passpie [OPTIONS] COMMAND [ARGS]...

Options:
  -D, --database TEXT  Database path or url to remote repository
  --autopull TEXT      Autopull changes from remote pository
  --autopush TEXT      Autopush changes to remote pository
  --config PATH        Path to configuration file
  -v, --verbose        Activate verbose output
  --version            Show the version and exit.
  --help               Show this message and exit.

Commands:
  add       Add new credential to database
  complete  Generate completion scripts for shells
  config    Show current configuration for shell
  copy      Copy credential password to clipboard/stdout
  export    Export credentials in plain text
  import    Import credentials from path
  init      Initialize new passpie database
  list      Print credential as a table
  log       Shows passpie database changes history
  purge     Remove all credentials from database
  remove    Remove credential
  reset     Renew passpie database and re-encrypt...
  search    Search credentials by regular expressions
  status    Diagnose database for improvements
  update    Update credential

Learn more

Licence License

Copyright (c) 2014-2016 Marcwebbie, <http://github.com/marcwebbie>

Full license here: LICENSE

passpie's People

Contributors

bjmc avatar costypetrisor avatar ddworken avatar devlucas avatar gaomd avatar leonjza avatar marcwebbie avatar mauriciomelo avatar qbi avatar scorphus avatar vitalk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

passpie's Issues

1Password import issue

I just tried importing from 1Password .1pif format.

OS X Yosemite 10.10.2
1Password - Version 5.1 (510027) - Mac App Store

Here's the traceback:

Traceback (most recent call last):
  File "/Users/greg/.virtualenvs/pysswords/bin/pysswords", line 9, in <module>
    load_entry_point('pysswords==0.0.12', 'console_scripts', 'pysswords')()
  File "/Users/greg/.virtualenvs/pysswords/lib/python2.7/site-packages/pysswords/__main__.py", line 91, in main
    interface.importdb(args.importdb)
  File "/Users/greg/.virtualenvs/pysswords/lib/python2.7/site-packages/pysswords/cli.py", line 184, in importdb
    self.database.importdb(dbfile)
  File "/Users/greg/.virtualenvs/pysswords/lib/python2.7/site-packages/pysswords/db/database.py", line 148, in importdb
    self.import1password(dbfile)
  File "/Users/greg/.virtualenvs/pysswords/lib/python2.7/site-packages/pysswords/db/database.py", line 154, in import1password
    creds = parsers.onepassword(dbfile)
  File "/Users/greg/.virtualenvs/pysswords/lib/python2.7/site-packages/pysswords/db/parsers.py", line 15, in onepassword
    "password": entry["secureContents"]["password"],
KeyError: 'password'

The format of the record is:

{u'contentsHash': u'8b293941',
 u'createdAt': 1413128818,
 u'location': u'https://support.ford.com/tools/account/login',
 u'locationKey': u'ford.com',
 u'secureContents': {u'URLs': [{u'label': u'website',
                                u'url': u'https://support.ford.com/tools/account/login'}],
                     u'fields': [{u'designation': u'username',
                                  u'name': u'username',
                                  u'type': u'T',
                                  u'value': u'[email protected]'},
                                 {u'designation': u'password',
                                  u'name': u'password',
                                  u'type': u'P',
                                  u'value': u'my-redacted-password'}]},
 u'securityLevel': u'SL5',
 u'title': u'MyFord',
 u'typeName': u'webforms.WebForm',
 u'updatedAt': 1413128834,
 u'uuid': u'98C1AB23A1FF4EBAB5342189B0C8B861'}

Relevant code from the parser:

for entry in entries:
    print entry
    cred_dict = {
        "name": entry["title"],
        "login": "",
        "password": entry["secureContents"]["password"],
        "comment": entry["secureContents"].get("notesPlain", "")
    }

I'm not sure if this is a newer version of the export format, but the parser doesn't match the record format very well; password isn't correct, login is set to an empty string and comment isn't set at all.

Package conflict

I did a pip install pysswords system wide which succeed. Then when I tried to init a database I got the traceback below. Repeating the install in a virtualenv an doing an init succeeded. A little digging determined that the difference was the presence of python-gnupg (https://pypi.python.org/pypi/python-gnupg/0.3.7) in the system packages. Removing this package allowed the init to complete in the system wide install. Thanks for program, now that I have got it running I will be using.

Traceback (most recent call last):
File "/usr/bin/pysswords", line 9, in
load_entry_point('pysswords==0.0.12', 'console_scripts', 'pysswords')()
File "/usr/lib/python2.7/site-packages/pysswords/main.py", line 85, in main
randompass=args.random
File "/usr/lib/python2.7/site-packages/pysswords/cli.py", line 22, in init
self.create_database(path=database_path)
File "/usr/lib/python2.7/site-packages/pysswords/cli.py", line 37, in create_database
database = Database.create(path, passphrase)
File "/usr/lib/python2.7/site-packages/pysswords/db/database.py", line 41, in create
create_keyring(os.path.join(path, ".keys"), passphrase)
File "/usr/lib/python2.7/site-packages/pysswords/crypt.py", line 27, in create_keyring
key_input = generate_key_input(path, passphrase)
File "/usr/lib/python2.7/site-packages/pysswords/crypt.py", line 10, in generate_key_input
return getgpg(path).gen_key_input(
File "/usr/lib/python2.7/site-packages/pysswords/crypt.py", line 6, in getgpg
return gnupg.GPG(binary=which("gpg"), homedir=path)
TypeError: init() got an unexpected keyword argument 'binary'

Homebrew issue

Hi
Great concept ;)... Love it !
anyway it seems that there's no valid brew formula for passpie ... no install possible ...

Pyperclip requires the xclip or xsel application, or the gtk or PyQt4 module

I installed passpie in my Ubuntu 14.04 but I received the error below when I tried to execute it:

Traceback (most recent call last):
  File "/usr/local/bin/passpie", line 7, in <module>
    from passpie.cli import cli
  File "/usr/local/lib/python3.4/dist-packages/passpie/cli.py", line 9, in <module>
    import pyperclip
  File "/usr/local/lib/python3.4/dist-packages/pyperclip/__init__.py", line 203, in <module>
    raise Exception('Pyperclip requires the xclip or xsel application, or the gtk or PyQt4 module.')
Exception: Pyperclip requires the xclip or xsel application, or the gtk or PyQt4 module.

Tell me if you need more information about my environment.

[]'s

Error init passpie on windows 8

After successfully installed passpie, I typed this

passpie init

And this error occur :

raise RuntimeError(str(ae))
RuntimeError: Homedir ''C:\Users\XXX~1\AppData\Local\Temp\tmpmp4852an'' needs
 read/write permissions

passpie init: hangs after passphrase confirmation

Hello,

I'm trying to use passpie on my debian testing and passpie init hangs after passphrase confirmation

$ python --version
Python 2.7.9
$ virtualenv passpie
$ source passpie/bin/activate
(passpie)$ pip install --upgrade https://github.com/marcwebbie/passpie/tarball/master
(passpie)$ which passpie
/home/jbd/tmp/passpie/bin/passpie

The program hangs after passphrase confirmation:

(passpie)$ passpie init
Passphrase: 
Repeat for confirmation: 

Sync passwords or password db between computers

I under stand that this could be a larger issue, but I think a way to keep multiple computers in sync would be amazing. This with browser support could make me want to use it over last pass.

So I see maybe 2 possibilities for syncing.

  1. Sync server. Similar to other pass managers. The db syncs with the online server making it available anywhere.
  2. Allowing to easily export the db. Although more clunky to then sync the files manually

Now that I think about it, would it be plausible to sync it over Google Drive or similar?

[Feature Request] Add 2 Factor Authentications

I wanted to be able to log into my gmail, which has 2 factor authentication on it, but i didn't want to have to keep reaching for my cellphone. To that end I've hacked something together to retrieve a 2-factor authentication key stored in passpie and then pass that into onetimepass, then put that token into the clipboard the way passpie would. This would be helpful feature. Passpie eliminates the potentially insecure aspect of having your computer be responsible for two factor authentication, and its HELLA convenient.

example:
https://gist.github.com/athrabeth/1f44cce1bb615bcf3185

passpie --version: Please install this project with setup.py or pip

Hello,

I'm trying to use passpie on my debian testing and I cannot use pip --version:

$ python --version
Python 2.7.9
$ virtualenv passpie
$ source passpie/bin/activate
(passpie)$ pip install --upgrade https://github.com/marcwebbie/passpie/tarball/master
(passpie)$ which passpie
/home/jbd/tmp/passpie/bin/passpie

pip --version does not work :

(passpie)$ passpie --version
passpie, version Please install this project with setup.py or pip

Error on spesific password

If I use a password like Tjo13'Ex* I get error:
AttributeError: 'NoneType' object has no attribute 'encode'
and passpie stops and nothing is inserted.

I use Ubuntu 14.04 LTS and the system is updated.

Pysswords import

I tried to import a database exported with Pysswords using the command
passpie import dbname.db
but I get this error:

Traceback (most recent call last):
  File "/usr/local/Cellar/passpie/0.3.2/libexec/bin/passpie", line 9, in <module>
    load_entry_point('passpie==0.3.2', 'console_scripts', 'passpie')()
  File "/usr/local/Cellar/passpie/0.3.2/libexec/vendor/lib/python2.7/site-packages/click/core.py", line 664, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/Cellar/passpie/0.3.2/libexec/vendor/lib/python2.7/site-packages/click/core.py", line 644, in main
    rv = self.invoke(ctx)
  File "/usr/local/Cellar/passpie/0.3.2/libexec/vendor/lib/python2.7/site-packages/click/core.py", line 991, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/Cellar/passpie/0.3.2/libexec/vendor/lib/python2.7/site-packages/click/core.py", line 837, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/Cellar/passpie/0.3.2/libexec/vendor/lib/python2.7/site-packages/click/core.py", line 464, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/Cellar/passpie/0.3.2/libexec/lib/python2.7/site-packages/passpie/cli.py", line 410, in import_database
    importer = find_importer(path)
  File "/usr/local/Cellar/passpie/0.3.2/libexec/lib/python2.7/site-packages/passpie/importers/__init__.py", line 51, in find_importer
    if importer.match(filepath):
  File "/usr/local/Cellar/passpie/0.3.2/libexec/lib/python2.7/site-packages/passpie/importers/default_importer.py", line 17, in match
    dict_content = yaml.load(file_content)
  File "/usr/local/Cellar/passpie/0.3.2/libexec/vendor/lib/python2.7/site-packages/yaml/__init__.py", line 69, in load
    loader = Loader(stream)
  File "/usr/local/Cellar/passpie/0.3.2/libexec/vendor/lib/python2.7/site-packages/yaml/loader.py", line 34, in __init__
    Reader.__init__(self, stream)
  File "/usr/local/Cellar/passpie/0.3.2/libexec/vendor/lib/python2.7/site-packages/yaml/reader.py", line 79, in __init__
    self.determine_encoding()
  File "/usr/local/Cellar/passpie/0.3.2/libexec/vendor/lib/python2.7/site-packages/yaml/reader.py", line 135, in determine_encoding
    self.update(1)
  File "/usr/local/Cellar/passpie/0.3.2/libexec/vendor/lib/python2.7/site-packages/yaml/reader.py", line 165, in update
    exc.encoding, exc.reason)
yaml.reader.ReaderError: 'utf8' codec can't decode byte #x99: invalid start byte
  in "<string>", position 1536

I installed Passpie using Homebrew on Mac OS X 10.10.5

[NFR] Password duplication/expiration check

1password suggests check passwords for duplication or expiration(6 month, year). So I suggest to add diagnose command, that would report about duplication and expiration:

$ pysswords diagnose
Password: 
| Name      | Login  | Status                                  |
|-----------+--------+-----------------------------------------|
| github    | nkt    | OK                                      |
| gmail     | gusnkt | Duplicate of twitter                    |
| twitter   | gusnkt | Duplicate of gmail                      |
| bitbucket | gnkt   | Has not changed since 02/20/15 (1 year) |

Tag releases new here as well

A little nitpicky, but I was confused as the latest release tagged here is 0.0.9 and on PyPi it is 0.0.12...

Thanks!

possible for a name change?

This library is great and i intend to use it forever. However, i'm afraid that with a name that looks to english-speaking people as "piss words", this will not really get off the ground. Many great python libraries don't have "py" in their names. Its not a requirement, or even a convention.

Pyperclip exception

I have installed with pip install pysswords and ran pysswords --init.

But got this exception. Thought it is more related to pyperclip, couldn't find the solution.
Exception: Pyperclip requires the xclip or xsel application, or the gtk or PyQt4 module.

Can you help?

pysswords throws a nasty error on --show-password

I have one test entry in the database but on showpassword it throws and error.

| name | login | password | comments |
|--------+-------------+------------+-------------------------|
| github | betarelease | **** | this is github password |

pysswords --show-password

Database passphrase:
Traceback (most recent call last):
File "/usr/local/bin/pysswords", line 5, in
runpy.run_module("pysswords", run_name="main")
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 180, in run_module
fname, loader, pkg_name)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/Library/Python/2.7/site-packages/pysswords/main.py", line 223, in
run()
File "/Library/Python/2.7/site-packages/pysswords/main.py", line 219, in run
show_password=args.show_password)
File "/Library/Python/2.7/site-packages/pysswords/main.py", line 113, in list_credentials
row = build_row(database, credential, show_password)
File "/Library/Python/2.7/site-packages/pysswords/main.py", line 95, in build_row
check_passphrase(database, passphrase)
File "/Library/Python/2.7/site-packages/pysswords/main.py", line 82, in check_passphrase
default_key=database.key,
File "/Library/Python/2.7/site-packages/pysswords/db.py", line 32, in key
return self.gpg.list_keys(secret=True)[0]["fingerprint"]
IndexError: list index out of range

Support GnuPG 2?

~ % gpg2 --version
gpg (GnuPG) 2.0.27
libgcrypt 1.6.3
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, RSA, RSA, ELG, DSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
~ % passpie
Error: GnuPG not installed. https://www.gnupg.org/

I already have GnuPG 2 installed in my system, it seems better for desktop system (https://www.gnupg.org/documentation/manuals/gnupg/Invoking-GPG.html), so my question is: can passpie support gpg2 as well?

Write a .deb package

Have an .deb package for debian based systems like Ubuntu:

sudo apt-get install pysswords

passpie init hangs forever on Ubuntu 14.04

Hi,
after installing passpie on Ubuntu 14.04 (0.3.0 from pip and current master tested) passpie init hangs forever after entering the passphrase. This is reproduceable on multiple systems.

Maybe a snipped strace of the moment where he is hanging is helping to figure out the problem:

stat("/home/user/.passpie/.keys", 0x7fff3db49200) = -1 ENOENT (No such file or directory)
pipe([3, 4])                            = 0
fcntl(3, F_GETFD)                       = 0
fcntl(3, F_SETFD, FD_CLOEXEC)           = 0
fcntl(4, F_GETFD)                       = 0
fcntl(4, F_SETFD, FD_CLOEXEC)           = 0
pipe([5, 6])                            = 0
fcntl(5, F_GETFD)                       = 0
fcntl(5, F_SETFD, FD_CLOEXEC)           = 0
fcntl(6, F_GETFD)                       = 0
fcntl(6, F_SETFD, FD_CLOEXEC)           = 0
pipe([7, 8])                            = 0
fcntl(7, F_GETFD)                       = 0
fcntl(7, F_SETFD, FD_CLOEXEC)           = 0
fcntl(8, F_GETFD)                       = 0
fcntl(8, F_SETFD, FD_CLOEXEC)           = 0
pipe([9, 10])                           = 0
fcntl(9, F_GETFD)                       = 0
fcntl(9, F_SETFD, FD_CLOEXEC)           = 0
fcntl(10, F_GETFD)                      = 0
fcntl(10, F_SETFD, FD_CLOEXEC)          = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fbba9526a10) = 9632
close(10)                               = 0
mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbba5897000
read(9, "", 1048576)                    = 0
mremap(0x7fbba5897000, 1052672, 4096, MREMAP_MAYMOVE) = 0x7fbba5897000
close(3)                                = 0
close(6)                                = 0
close(8)                                = 0
close(9)                                = 0
munmap(0x7fbba5897000, 4096)            = 0
fcntl(4, F_GETFL)                       = 0x1 (flags O_WRONLY)
fstat(4, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbba9550000
lseek(4, 0, SEEK_CUR)                   = -1 ESPIPE (Illegal seek)
fstat(4, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
munmap(0x7fbba9550000, 4096)            = 0
fcntl(5, F_GETFL)                       = 0 (flags O_RDONLY)
fstat(5, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbba9550000
lseek(5, 0, SEEK_CUR)                   = -1 ESPIPE (Illegal seek)
fstat(5, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
munmap(0x7fbba9550000, 4096)            = 0
fcntl(7, F_GETFL)                       = 0 (flags O_RDONLY)
fstat(7, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbba9550000
lseek(7, 0, SEEK_CUR)                   = -1 ESPIPE (Illegal seek)
fstat(7, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
munmap(0x7fbba9550000, 4096)            = 0
mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fbba5197000
mprotect(0x7fbba5197000, 4096, PROT_NONE) = 0
clone(child_stack=0x7fbba5996fb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fbba59979d0, tls=0x7fbba5997700, child_tidptr=0x7fbba59979d0) = 9633
futex(0xf2a390, FUTEX_WAIT_PRIVATE, 0, NULL) = 0
futex(0xd6da90, FUTEX_WAIT_PRIVATE, 0, NULL) = 0
mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fbba4996000
mprotect(0x7fbba4996000, 4096, PROT_NONE) = 0
clone(child_stack=0x7fbba5195fb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fbba51969d0, tls=0x7fbba5196700, child_tidptr=0x7fbba51969d0) = 9634
futex(0xa2c230, FUTEX_WAIT_PRIVATE, 0, NULL) = 0
futex(0xd6da90, FUTEX_WAIT_PRIVATE, 0, NULL) = 0
mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fbba4195000
mprotect(0x7fbba4195000, 4096, PROT_NONE) = 0
clone(child_stack=0x7fbba4994fb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fbba49959d0, tls=0x7fbba4995700, child_tidptr=0x7fbba49959d0) = 9635
futex(0xd6da90, FUTEX_WAKE_PRIVATE, 1)  = 1
futex(0xd6da90, FUTEX_WAIT_PRIVATE, 0, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0xa2c230, FUTEX_WAKE_PRIVATE, 1)  = 1
futex(0xd6da90, FUTEX_WAKE_PRIVATE, 1)  = 1
futex(0xe8bfe0, FUTEX_WAIT_PRIVATE, 0, NULL^CProcess 9146 detached

[Feature request] Destroy clipboard password after n seconds

I feel like having to clear my password from the clipboard after using the command passpie copy [credential] is a little inconvenient.

Taking in consideration most users will need their password on the clipboard for a short period of time just to fill a login form I would like to suggest a feature aiming convenience and security.

  1. Add a default timeout to the passpie copy command configurable through global settings.
  2. Add a parameter destroy to passpie copy that clears the clipboard after n seconds

In my head it would work this way:

passpie copy Google --destroy 10
passpie: copied your password to clipboard
passpie: clearing clipboard in 10 seconds
passpie: clipboard cleared

TypeError: must be encoded string without NULL bytes, not str

Python 2.7.3
Mac OS X 10.8.5 (Mountain Lion)
Installed with easy_install.

~ ↝ pysswords
Traceback (most recent call last):
  File "/usr/local/bin/pysswords", line 8, in <module>
    load_entry_point('pysswords==0.0.12', 'console_scripts', 'pysswords')()
  File "/Library/Python/2.7/site-packages/pysswords-0.0.12-py2.7.egg/pysswords/__main__.py", line 85, in main
    randompass=args.random
  File "/Library/Python/2.7/site-packages/pysswords-0.0.12-py2.7.egg/pysswords/cli.py", line 23, in __init__
    self.database = Database(database_path)
  File "/Library/Python/2.7/site-packages/pysswords-0.0.12-py2.7.egg/pysswords/db/database.py", line 33, in __init__
    self.gpg = getgpg(self.keys_path)
  File "/Library/Python/2.7/site-packages/pysswords-0.0.12-py2.7.egg/pysswords/crypt.py", line 6, in getgpg
    return gnupg.GPG(binary=which("gpg"), homedir=path)
  File "/Library/Python/2.7/site-packages/gnupg-1.4.0-py2.7.egg/gnupg/gnupg.py", line 120, in __init__
    use_agent=use_agent,)
  File "/Library/Python/2.7/site-packages/gnupg-1.4.0-py2.7.egg/gnupg/_meta.py", line 214, in __init__
    self._check_sane_and_get_gpg_version()
  File "/Library/Python/2.7/site-packages/gnupg-1.4.0-py2.7.egg/gnupg/_meta.py", line 475, in _check_sane_and_get_gpg_version
    proc = self._open_subprocess(["--list-config", "--with-colons"])
  File "/Library/Python/2.7/site-packages/gnupg-1.4.0-py2.7.egg/gnupg/_meta.py", line 577, in _open_subprocess
    env={'LANGUAGE': 'en'})
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 679, in __init__
    errread, errwrite)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1228, in _execute_child
    raise child_exception
TypeError: must be encoded string without NULL bytes, not str

[feature request]: Support generating password in given pattern.

Allow user to input a regular expression, then the program could randomly generate a password with respect to the inputted pattern. For example, allowing user to supply a regular expression [a-z]{3}[0-9]{3}[A-Z]{3}, then the program could generate something like mdj293EIR.

ImportError: No module named tinydb.queries

Hi,

I installed passpie with pip install passpie, when do passpie in the termianl I get this error message

Traceback (most recent call last):
File "/usr/local/bin/passpie", line 7, in
from passpie.cli import cli
File "/usr/local/lib/python2.7/dist-packages/passpie/cli.py", line 8, in
from tinydb.queries import where
ImportError: No module named tinydb.queries

THanks

[Feature Request/Question]

Is it not possible to have your email be your login name? Given the fullname structure uses the @, you can't likely do myemail@gmail.com@thatsiteiuse for the name of the entry.

Or can you, and I'm just missing something?

Support for git remotes and automatic check for changes

Hi,

I've manually configured a remote git origin and pushed.

Then my collegue just ran git clone ssh://blabla/passpie.git ~/.passpie and it works.

It would be nice to integrate the remote management directly in passpie, and maybe to automatically push after changing the database, and automatically pulling when accessing it.

Error during 'pysswords --init'

During my initial 'pysswords --init' run I run into the fillowing exception:

Exception in thread Thread-3:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 763, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/usr/lib/python2.7/site-packages/gnupg/_meta.py", line 605, in _read_response
    result._handle_status(keyword, value)
  File "/usr/lib/python2.7/site-packages/gnupg/_parsers.py", line 862, in _handle_status
    raise ValueError("Unknown status message: %r" % key)
ValueError: Unknown status message: u'PINENTRY_LAUNCHED'

Database initialized in '/home/my-username/.pysswords'

If I ignore the error and try to add an entry using 'pysswords -a', I receive the following error:

Database initialized in '/home/my-username/.pysswords'

I'm on Manjaro Linux (Arch derivate). Installed using pip, but systemwide using sudo.

passpie init: UnicodeEncodeError: 'ascii' codec can't encode character

Hello,

I'm trying to use passpie on my debian testing and it seems that I cannot use a passphrase with a "é" in it:

$ python --version
Python 2.7.9
$ virtualenv passpie
$ source passpie/bin/activate
(passpie)$ pip install --upgrade https://github.com/marcwebbie/passpie/tarball/master
(passpie)$ which passpie
/home/jbd/tmp/passpie/bin/passpie

Try to use a passphrase with some accentued characters in it does not work:

(passpie)$ passpie init
Passphrase: 
Repeat for confirmation: 
Traceback (most recent call last):
  File "/home/jbd/tmp/passpie/bin/passpie", line 9, in <module>
    load_entry_point('passpie==0.1', 'console_scripts', 'passpie')()
  File "/home/jbd/tmp/passpie/local/lib/python2.7/site-packages/click/core.py", line 664, in __call__
    return self.main(*args, **kwargs)
  File "/home/jbd/tmp/passpie/local/lib/python2.7/site-packages/click/core.py", line 644, in main
    rv = self.invoke(ctx)
  File "/home/jbd/tmp/passpie/local/lib/python2.7/site-packages/click/core.py", line 991, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/jbd/tmp/passpie/local/lib/python2.7/site-packages/click/core.py", line 837, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/jbd/tmp/passpie/local/lib/python2.7/site-packages/click/core.py", line 464, in invoke
    return callback(*args, **kwargs)
  File "/home/jbd/tmp/passpie/local/lib/python2.7/site-packages/passpie/cli.py", line 141, in init
    cryptor.create_keys(passphrase)
  File "/home/jbd/tmp/passpie/local/lib/python2.7/site-packages/passpie/crypt.py", line 57, in create_keys
    keys = self._gpg.gen_key(KEY_INPUT.format(passphrase))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 0: ordinal not in range(128)

Browser integration

It would be nice to add an API interface, so a browser extension can access to DB data and autofill forms, just like lastpass but locally. Do you think it's possible to add this feature to the roadmap?

Crash when copying passwords

$ passpie copy bascht@company/example.com
Passphrase: 
Traceback (most recent call last):
  File "/home/bascht/.local/bin/passpie", line 11, in <module>
    sys.exit(cli())
  File "/home/bascht/.local/lib/python2.7/site-packages/click/core.py", line 664, in __call__
    return self.main(*args, **kwargs)
  File "/home/bascht/.local/lib/python2.7/site-packages/click/core.py", line 644, in main
    rv = self.invoke(ctx)
  File "/home/bascht/.local/lib/python2.7/site-packages/click/core.py", line 991, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/bascht/.local/lib/python2.7/site-packages/click/core.py", line 837, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/bascht/.local/lib/python2.7/site-packages/click/core.py", line 464, in invoke
    return callback(*args, **kwargs)
  File "/home/bascht/.local/lib/python2.7/site-packages/passpie/cli.py", line 275, in copy
    copy_to_clipboard(decrypted)
  File "/home/bascht/.local/lib/python2.7/site-packages/passpie/cli.py", line 110, in copy_to_clipboard
    clipboard.copy(text)
  File "/home/bascht/.local/lib/python2.7/site-packages/passpie/clipboard.py", line 83, in copy
    _copy_linux(text)
  File "/home/bascht/.local/lib/python2.7/site-packages/passpie/clipboard.py", line 75, in _copy_linux
    p = Popen(command, stdin=PIPE, close_fds=True)
  File "/usr/lib64/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
  File "/usr/lib64/python2.7/subprocess.py", line 1214, in _execute_child
    executable = args[0]
IndexError: list index out of range

System

$ passpie --version
passpie, version 0.2.1

$ python --version
Python 2.7.9

$ lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: Fedora
Description:    Fedora release 22 (Twenty Two)
Release:    22
Codename:   TwentyTwo

Let me know if I can supply more information! :)

pip install passpie doesn't work

➜ ~ pip install passpie
Downloading/unpacking passpie
Could not find a version that satisfies the requirement passpie (from versions: 0.1rc1, 0.1rc2, 0.1rc3, 0.1rc4, 0.1rc5, 0.1rc6, 0.1rc7, 0.1rc1, 0.1rc2, 0.1rc3, 0.1rc4, 0.1rc5, 0.1rc6, 0.1rc7)
Cleaning up...
No distributions matching the version for passpie
Storing debug log for failure in /Users/lvanderpool/.pip/pip.log

OS X, iterm2

Write brew formula

Write a brew formula for passpie so we can install it by:

brew install passpie

passpie init hangs

passport init hangs, can't initialize a database.

app:git:(master) ✗ passpie init
Passphrase: 
Repeat for confirmation: 

running on the latest pip version

Requirement already satisfied (use --upgrade to upgrade): passpie in /usr/local/lib/python2.7/dist-packages
Requirement already satisfied (use --upgrade to upgrade): tabulate==0.7.5 in /usr/local/lib/python2.7/dist-packages (from passpie)
Requirement already satisfied (use --upgrade to upgrade): click==4.0 in /usr/local/lib/python2.7/dist-packages (from passpie)
Requirement already satisfied (use --upgrade to upgrade): PyYAML==3.11 in /usr/local/lib/python2.7/dist-packages (from passpie)
Requirement already satisfied (use --upgrade to upgrade): tinydb==2.3.2 in /usr/local/lib/python2.7/dist-packages (from passpie)
Requirement already satisfied (use --upgrade to upgrade): gnupg==2.0.2 in /usr/local/lib/python2.7/dist-packages (from passpie)
Requirement already satisfied (use --upgrade to upgrade): psutil>=1.2.1 in /usr/local/lib/python2.7/dist-packages (from gnupg==2.0.2->passpie)

error ascii codec

  1. I added a new credential with an unicode character
➜  ~  pysswords -a
Name: #######
Login: ########  
Password: 
Type again: 
Comment: site français
  1. Pysswords throwns an error when listing credentials
➜  ~  pysswords   
ERROR:root:'ascii' codec can't encode characters in position 816-817: ordinal not in range(128)

Make it work with OS X keychain

First of all, great UI and idea! But it seems like many OS X users would simply rely on the encryption in their OS Keychain about their passwords etc rather than creating a separate DB. What do you think about this? Can passpie be considered as an alternative to "Keychain Access" GUI?

Support for 1Password chrome extension

I'm digging deep on how 1Password chrome extension protocol works. What do you think about pysswords supporting it? Btw, 1Password extension communicates with the 1Password Helper using web sockets.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.