Git Product home page Git Product logo

pwman3's Introduction

PWMAN3

Build Status Build status Coverage Status Documentation Status

A lightweight command line password manager, which can use different database to store your passwords (currently, SQLite, MySQL, Postgresql and MongoDB are supported). Pwman3 can also copy passwords to the clipboard without exposing them! Besides managing and storing passwords, Pwman3 can also generate passwords using different algorithms.

Nice Features in pwman3:

  • Strong AES Encryption
  • copying of passwords to clipboard
  • launching specific uri's with default browser
  • password generators
  • not really a user oriented feature. However, it guarantees the elimination of silly bugs: pwman3 is test driven!

Documentation

http://pwman3.readthedocs.org/en/latest/

A very important note about security

If you are a concerned about security, please note: PWMAN3 is a very very basic software, which was designed to be used in a safe environment.

  • If you are afraid that PWMAN3 is to weak for your needs ... and you still want to try it, here are a few recommendations:
    1. Don't store your Password Database in the Obvious place, and if your extremely paranoind store it completely away from your computer on a separate USB key.
    2. Use a HARD to crack password to encrypt your database!
  • If you care, report bugs, and send patches.
  • I would realy like you to use PWMAN3, so I could get feedback and more ideas, especially, if you know something about security!

Installing

Pwman3 requires the following debian packages:

python-colorama xsel - to copy password to clipboard on Linux

It is also recommended to install python-crypto. Pwman supports Python 3.x.

To install from source:

$ python setup.py install

You can also install PWMAN3 using python pip:

$ pip install pwman3

User Interface

  1. When xsel is install on a Linux system, you can copy passwords directly to clipboard with the copy command.

  2. The command 'open' will open the default browser if URL is specified.

  3. An automatic 'clear screen' function is called after printing an entry in the database. The screen will be cleared after 5 seconds by default. However, this can be changed by changing the correct value in ~.pwman/config:

    [Global]
    ...
    cls_timeout = 10
    

    To disable the automatic 'clear screen' functionality set cls_timeout to 0.

    [Global]
    ...
    cls_timeout = 0
    
  • making a password from the numeric character and the alphabet character ([A-Za-z0-9]).

    You can add a parameter for making the password to the config(~/.pwman/config).

    For Example:

    [Generator]
    numerics = true
    
  • Passwords can contain one of the following special signs:

    specialsigns = ["@", "#", "?", "!", '\\', "|", "$",
                     "%", "^", "&", "*", "(", ")", ":", ";",
                     "{", "}", "+","-"]
    

The config file must have the following option:

```
[Generator]
special_signs = true
```
  • Individual password policy can be chosen with:

    Pwman3 0.6.0 (c) visit: http://github.com/pwman3/pwman3
    pwman> n {'leetify':False, 'numerics':True, 'special_signs':True}
    Username: username
    Password length (default 8): 12
    New password: Q1dab@7abcd5
    
  • Default password length can be changed by:

    [Generator]
    default_pw_length = 42
    
  • Copying password to X11 or Mac clip board:

  • On Mac OSX systems copying utilizes pbcopy

  • On X11 Systems Specify the path to xsel if you already have ~/.pwman/config

    [Global]
    xsel = yes
    xselpath = /usr/bin/xsel
    

    When launching pwman for the first time, it will try and look for xsel and write the configuration properly.

Supporting

If you find this work useful, you can do one or more of the following:

* Star this repository.
* Tweeter me with a thank you.
* Donate me a humlbe sum of 5-10€. (Donations should go to oz dot tiram at gmail dot com), I'll mention you here for supporting my work.

pwman3's People

Contributors

dbeecham avatar dependabot[bot] avatar donnm avatar hbrunn avatar ikegam avatar ivankelly avatar limonte avatar oz123 avatar ryancdotorg 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pwman3's Issues

error opening non default database

When opening a database file other than default, this error shows:

   [Database]   
   filename = /home/oz123/.pwman/pwman.db.no.encryption 

Error:

  Error: invalid load key, 'O'.

This however works:

   pwman3 -d /home/oz123/.pwman/pwman.db.no.encryption 

so the problem is probably just reading the config file ...

After update, printing new nodes fails

Updated from 0.5.1d by exporting and importing CSV. New entries added are saved but when printed cause the following crash:

pwman> new
Username: Test
Password (leave empty to create one):
Password length (default: 8):
Url: https://site.url  
Notes: My site
Tags: 
pwman> print 158
Traceback (most recent call last):
  File "/usr/local/bin/pwman3", line 9, in <module>
    load_entry_point('pwman3==0.9.5', 'console_scripts', 'pwman3')()
  File "/usr/local/lib/python3.5/dist-packages/pwman3-0.9.5-py3.5.egg/pwman/ui/cli.py", line 138, in main
    cli.cmdloop()
  File "/usr/lib/python3.5/cmd.py", line 138, in cmdloop
    stop = self.onecmd(line)
  File "/usr/lib/python3.5/cmd.py", line 217, in onecmd
    return func(arg)
  File "/usr/local/lib/python3.5/dist-packages/pwman3-0.9.5-py3.5.egg/pwman/ui/baseui.py", line 474, in do_print
    print(node)
  File "/usr/local/lib/python3.5/dist-packages/pwman3-0.9.5-py3.5.egg/pwman/data/nodes.py", line 40, in __str__
    tags =",".join(t.decode() for t in self.tags) if len(self.tags) > 1 else self.tags[0].decode()  # noqa
IndexError: list index out of range

Editing and deleting seem to work fine. A workaround to print the password is thus to edit it and not save the changes.

Printing entries that existed prior to the update seems to work correctly.

Error: Input strings must be a multiple of 16 in length

Hi,

I'm using pwman3, 0.5.3 (installed via pip), tried 0.4.2-1 (default in my Linux distribution) and could not access my passwords, because of error mentioned in the title of the issue.
I think, it's pycrypto problem, but not sure, so wanna to know your opinion.

Regards,
Mariusz

bsaic tutorial

Hi

Can you please add a simple tutorial on how to add remove and display passwords? I failed to show the passwords that I saved. Sounds dumb but I see no tutorial therefor I am moving on to something else after wasting my time on trying to figure out such a seemingly obvious functionality

Corrupted database after database upgrade

I recently upgraded to 0.4.2 and upgraded the database using the -k parameter. After upgrading my password database is missing 3 entries (65 down from 68) and upon trying to print another one I receive an error message:

Error: could not convert string to int

This error is printed after the username field and returns to the prompt (the password is never displayed).

Listing with attributes

lunching l 1 crashes program to print this statement after any action:

Error: SQLite: RIGHT and FULL OUTER JOINs are not currently supported

I use Ubuntu x32 and these packages installed (installed shouted that I need python-sqlite although It started only after installing python-pysqlite2).

python-pysqlite2 - Python interface to SQLite 3
python-sqlite - Python interface to SQLite 2

TypeError: Incorrect padding via tags command

Version 0.7.0 & 0.7.1 in an altinstall of Python2.7

Affects imported databases and new databases.

Steps:

  1. Launch PWman3
  2. input master password
  3. enter tags, the following error happens:

pwman> tags
Tags:
Traceback (most recent call last):
File "/opt/python27/bin/pwman3", line 9, in
load_entry_point('pwman3==0.7.1', 'console_scripts', 'pwman3')()
File "/opt/python27/lib/python2.7/site-packages/pwman/ui/cli.py", line 113, in main
cli.cmdloop()
File "/opt/python27/lib/python2.7/cmd.py", line 142, in cmdloop
stop = self.onecmd(line)
File "/opt/python27/lib/python2.7/cmd.py", line 221, in onecmd
return func(arg)
File "/opt/python27/lib/python2.7/site-packages/pwman/ui/baseui.py", line 314, in do_tags
print(ce.decrypt(t).decode())
File "/opt/python27/lib/python2.7/site-packages/pwman/util/crypto_engine.py", line 173, in decrypt
AES.block_size))
File "/opt/python27/lib/python2.7/site-packages/pwman/util/crypto_engine.py", line 36, in
DecodeAES = lambda c, e: c.decrypt(base64.b64decode(e)).rstrip()
File "/opt/python27/lib/python2.7/base64.py", line 76, in b64decode
raise TypeError(msg)
TypeError: Incorrect padding

URL cannot be edited on existing entry

Version: 0.3.9d (latest from git)
Environment: Debian Linux 7.2

Description:
Attempting to edit the URL of an existing entry fails. It modifies the "Notes" entry instead of the URL.

Repro Steps:

  1. Start pwman3
  2. Type 'edit' or 'e' to edit an existing entry (enter password as needed)
  3. Press '3' to modify the URL
  4. Enter the new URL
  5. Press 'X' to quit editing
  6. Type 'print' to show the entry you just attempted to edit
  7. Type 'o' or 'open' to open the entry you just attempted to edit

Expected results:
The new URL appears when the entry is 'printed' and 'opens' to that URL in your default browser

Actual results:
The 'Notes' entry is edited, but the URL remains unchanged.

Option to always query for database password

Basically, I would like to have pwman3 always open in a terminal window, but that would be insecure because then someone just has to come around to my laptop when I'm away for a bit and they have full access to my passwds. Solution? Always query for the master password, or at least for important commands like cp or p.

Also, if this features already exists, please add it to the docs (that's where I've been looking).

unexpected crash.

issuing filter and tags causes crash with new db format.

pwman> filter mail
Current tags: mail
pwman> tags
Traceback (most recent call last):
File "./scripts/pwman3", line 162, in
cli.cmdloop()
File "/usr/lib/python2.7/cmd.py", line 142, in cmdloop
stop = self.onecmd(line)
File "/usr/lib/python2.7/cmd.py", line 221, in onecmd
return func(arg)
File "/home/ozdeb/Desktop/pwman3/pwman/ui/cli.py", line 831, in do_tags
tags = self._db.listtags()
File "/home/ozdeb/Desktop/pwman3/pwman/data/drivers/sqlite.py", line 121, in listtags
self._cur.execute(sql, params)
sqlite3.InterfaceError: Error binding parameter 1 - probably unsupported type.

`passwd` command not functioning

I'm trying to change the password on my database, but it seems as though it won't let me or this functionality is not implemented. When I attempt to run the command passwd I just get a new prompt:

pwman> passwd
pwman>

The password seems to have remained the same as well.

v0.5

version 0.5 with keepass

Installing in windows is plagued with bugs

For example:

Collecting pwman3
  Using cached pwman3-0.7.2.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 20, in <module>
      File "c:\users\svenja~1\appdata\local\temp\pip-build-veykeg\pwman3\setup.py", line 325, in <module>
        install_requires.append('pyreadeline')
    AttributeError: 'tuple' object has no attribute 'append'

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in c:\users\svenja~1\appdata\local\temp\pip-build-veykeg\pwman3                                                                                                                           

crash when reading database from pwman3 that was used with python2

on python3

$ pwman3
sqlite:///home/oznt/.pwman/pwman.db
pwman3 0.7.4 (c) visit: http://pwman3.github.io/pwman3/
pwman> ls

Traceback (most recent call last):
File "/usr/local/bin/pwman3", line 11, in
sys.exit(main())
File "/usr/local/lib/python3.5/dist-packages/pwman/ui/cli.py", line 112, in main
cli.cmdloop()
File "/usr/lib/python3.5/cmd.py", line 138, in cmdloop
stop = self.onecmd(line)
File "/usr/lib/python3.5/cmd.py", line 217, in onecmd
return func(arg)
File "/usr/local/lib/python3.5/dist-packages/pwman/ui/baseui.py", line 153, in do_ls
self.do_list(args)
File "/usr/local/lib/python3.5/dist-packages/pwman/ui/baseui.py", line 410, in do_list
_nodes_inst = self._db_entries_to_nodes(raw_nodes)
File "/usr/local/lib/python3.5/dist-packages/pwman/ui/baseui.py", line 373, in _db_entries_to_nodes
node[5:]))
File "/usr/local/lib/python3.5/dist-packages/pwman/data/nodes.py", line 75, in from_encrypted_entries
node._username = bytes(username).strip()
TypeError: string argument without an encoding

Password list sorting

It would be great to have a sorted list (otherwise looking through a list of 500 passwords can be a bit time consuming to find what you want).

My own personal preference is sort on url... but it would be great to read this from the config file

nodes = sorted(nodes, key = lambda x: x.url)

[Error] could not convert string to (float|int) on ls and cp

Hi, I was trying pwman3 on a Ubuntu install and I noticed an error that makes the copy and listing features unusable. I installed pwman3 0.4.2 via the official ubuntu repository.

OS: Ubuntu 14.04
Shell: zsh, bash
Python: 2.7.6

  1. while populating the db, adding a "f" (as in "Firefox") in any field makes the following error appear when issuing ls:
    Error: could not convert string to float: irefox

  2. copying with cp from an entry with a field that begins with a number (like IPs, 192.xxx) yelds:
    Error: could not convert string to int

I'm going to try the git version but I think the issue had to be reported.

"Error: no such table: CRYPTO" after update

Pulled from git, updated with "python3 setup.py install" and get this error when I run pwman3 with no command line arguments: Error: no such table: CRYPTO

Last version I was running was 0.5.1d.

fresh install from pypi - no module named colorama

pip install pwman3
Collecting pwman3
Using cached pwman3-0.7.4.tar.gz
Collecting pycrypto>=2.6 (from pwman3)
Using cached pycrypto-2.6.1.tar.gz
Collecting colorama>=0.2.4 (from pwman3)
Using cached colorama-0.3.7-py2.py3-none-any.whl
Building wheels for collected packages: pwman3, pycrypto
Running setup.py bdist_wheel for pwman3 ... error
Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;file='/tmp/pip-build-RCQX6W/pwman3/setup.py';exec(compile(getattr(tokenize, 'open', open)(file).read().replace('\r\n', '\n'), file, 'exec'))" bdist_wheel -d /tmp/tmpLimb4spip-wheel- --python-tag cp27:
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-x86_64-2.7
creating build/lib.linux-x86_64-2.7/pwman
copying pwman/init.py -> build/lib.linux-x86_64-2.7/pwman
creating build/lib.linux-x86_64-2.7/pwman/ui
copying pwman/ui/win.py -> build/lib.linux-x86_64-2.7/pwman/ui
copying pwman/ui/baseui.py -> build/lib.linux-x86_64-2.7/pwman/ui
copying pwman/ui/cli.py -> build/lib.linux-x86_64-2.7/pwman/ui
copying pwman/ui/mac.py -> build/lib.linux-x86_64-2.7/pwman/ui
copying pwman/ui/tools.py -> build/lib.linux-x86_64-2.7/pwman/ui
copying pwman/ui/init.py -> build/lib.linux-x86_64-2.7/pwman/ui
creating build/lib.linux-x86_64-2.7/pwman/exchange
copying pwman/exchange/init.py -> build/lib.linux-x86_64-2.7/pwman/exchange
copying pwman/exchange/importer.py -> build/lib.linux-x86_64-2.7/pwman/exchange
creating build/lib.linux-x86_64-2.7/pwman/util
copying pwman/util/config.py -> build/lib.linux-x86_64-2.7/pwman/util
copying pwman/util/init.py -> build/lib.linux-x86_64-2.7/pwman/util
copying pwman/util/callback.py -> build/lib.linux-x86_64-2.7/pwman/util
copying pwman/util/crypto_engine.py -> build/lib.linux-x86_64-2.7/pwman/util
creating build/lib.linux-x86_64-2.7/pwman/data
copying pwman/data/nodes.py -> build/lib.linux-x86_64-2.7/pwman/data
copying pwman/data/convertdb.py -> build/lib.linux-x86_64-2.7/pwman/data
copying pwman/data/factory.py -> build/lib.linux-x86_64-2.7/pwman/data
copying pwman/data/database.py -> build/lib.linux-x86_64-2.7/pwman/data
copying pwman/data/init.py -> build/lib.linux-x86_64-2.7/pwman/data
creating build/lib.linux-x86_64-2.7/pwman/data/drivers
copying pwman/data/drivers/mysql.py -> build/lib.linux-x86_64-2.7/pwman/data/drivers
copying pwman/data/drivers/sqlite.py -> build/lib.linux-x86_64-2.7/pwman/data/drivers
copying pwman/data/drivers/postgresql.py -> build/lib.linux-x86_64-2.7/pwman/data/drivers
copying pwman/data/drivers/init.py -> build/lib.linux-x86_64-2.7/pwman/data/drivers
copying pwman/data/drivers/mongodb.py -> build/lib.linux-x86_64-2.7/pwman/data/drivers
running egg_info
writing requirements to pwman3.egg-info/requires.txt
writing pwman3.egg-info/PKG-INFO
writing top-level names to pwman3.egg-info/top_level.txt
writing dependency_links to pwman3.egg-info/dependency_links.txt
writing entry points to pwman3.egg-info/entry_points.txt
warning: manifest_maker: standard file '-c' not found

reading manifest file 'pwman3.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'pwman3.egg-info/SOURCES.txt'
creating build/lib.linux-x86_64-2.7/pwman/ui/templates
copying pwman/ui/templates/ajax.tpl -> build/lib.linux-x86_64-2.7/pwman/ui/templates
copying pwman/ui/templates/base.tpl -> build/lib.linux-x86_64-2.7/pwman/ui/templates
copying pwman/ui/templates/edit.tpl -> build/lib.linux-x86_64-2.7/pwman/ui/templates
copying pwman/ui/templates/foxy.html -> build/lib.linux-x86_64-2.7/pwman/ui/templates
copying pwman/ui/templates/login.tpl -> build/lib.linux-x86_64-2.7/pwman/ui/templates
copying pwman/ui/templates/main.tpl -> build/lib.linux-x86_64-2.7/pwman/ui/templates
copying pwman/ui/templates/view.tpl -> build/lib.linux-x86_64-2.7/pwman/ui/templates
creating build/lib.linux-x86_64-2.7/pwman/ui/templates/static
creating build/lib.linux-x86_64-2.7/pwman/ui/templates/static/css
copying pwman/ui/templates/static/css/main.css -> build/lib.linux-x86_64-2.7/pwman/ui/templates/static/css
copying pwman/ui/templates/static/css/normalize.css -> build/lib.linux-x86_64-2.7/pwman/ui/templates/static/css
copying pwman/ui/templates/static/css/normalize.min.css -> build/lib.linux-x86_64-2.7/pwman/ui/templates/static/css
creating build/lib.linux-x86_64-2.7/pwman/ui/templates/static/js
copying pwman/ui/templates/static/js/main.js -> build/lib.linux-x86_64-2.7/pwman/ui/templates/static/js
copying pwman/ui/templates/static/js/plugins.js -> build/lib.linux-x86_64-2.7/pwman/ui/templates/static/js
creating build/lib.linux-x86_64-2.7/pwman/ui/templates/static/js/vendor
copying pwman/ui/templates/static/js/vendor/jquery-1.11.0.js -> build/lib.linux-x86_64-2.7/pwman/ui/templates/static/js/vendor
copying pwman/ui/templates/static/js/vendor/modernizr-2.6.2-respond-1.1.0.min.js -> build/lib.linux-x86_64-2.7/pwman/ui/templates/static/js/vendor
running build_manpage
Traceback (most recent call last):
File "", line 1, in
File "/tmp/pip-build-RCQX6W/pwman3/setup.py", line 369, in
'console_scripts': ['pwman3 = pwman.ui.cli:main']
File "/usr/lib/python2.7/distutils/core.py", line 151, in setup
dist.run_commands()
File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands
self.run_command(cmd)
File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/usr/lib/python2.7/dist-packages/wheel/bdist_wheel.py", line 179, in run
self.run_command('build')
File "/usr/lib/python2.7/distutils/cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/usr/lib/python2.7/distutils/command/build.py", line 128, in run
self.run_command(cmd_name)
File "/usr/lib/python2.7/distutils/cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "/usr/lib/python2.7/distutils/dist.py", line 971, in run_command
cmd_obj.ensure_finalized()
File "/usr/lib/python2.7/distutils/cmd.py", line 109, in ensure_finalized
self.finalize_options()
File "/tmp/pip-build-RCQX6W/pwman3/setup.py", line 87, in finalize_options
raise err
ImportError: No module named colorama


Failed building wheel for pwman3
Running setup.py clean for pwman3
Running setup.py bdist_wheel for pycrypto ... done
Stored in directory: /home/oznt/.cache/pip/wheels/80/1f/94/f76e9746864f198eb0e304aeec319159fa41b082f61281ffce
Successfully built pycrypto
Failed to build pwman3
Installing collected packages: pycrypto, colorama, pwman3
Running setup.py install for pwman3 ... done
Successfully installed colorama pwman3 pycrypto
You are using pip version 8.1.1, however version 8.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

passwords are not correctly read

Pwman3 0.5-dev (c) visit: http://github.com/pwman3/pwman3
pwman> ls
Please enter your password:
Please enter your password:
Traceback (most recent call last):
File "./scripts/pwman3", line 187, in
cli.cmdloop()
File "/usr/lib/python2.7/cmd.py", line 142, in cmdloop
stop = self.onecmd(line)
File "/usr/lib/python2.7/cmd.py", line 221, in onecmd
return func(arg)
File "/home/ozdeb/software/pwman3/pwman/ui/base.py", line 654, in do_ls
self.do_list(args)
File "/home/ozdeb/software/pwman3/pwman/ui/base.py", line 497, in do_list
name = "%s@%s" % (n.username, n.url)
File "/home/ozdeb/software/pwman3/pwman/data/nodes.py", line 79, in username
return enc.decrypt(self._username).strip()
File "/home/ozdeb/software/pwman3/pwman/util/crypto.py", line 190, in decrypt
cipher = self._getcipher()
File "/home/ozdeb/software/pwman3/pwman/util/crypto.py", line 327, in _getcipher
key = str(key).decode('base64')
File "/usr/lib/python2.7/encodings/base64_codec.py", line 42, in base64_decode
output = base64.decodestring(input)
File "/usr/lib/python2.7/base64.py", line 321, in decodestring
return binascii.a2b_base64(s)
binascii.Error: Incorrect padding

Custom list formatting

Personally I like my pwman output like this:
name = "%s -- %s" % (n.url, n.username)

It would be really nice to read a format string from the config file so everyone can have their own preferred output

silly crash on copy

pwman> cp 1
Traceback (most recent call last):
File "/usr/local/bin/pwman3", line 5, in
pkg_resources.run_script('Pwman3==0.4.4-dev', 'pwman3')
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 487, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1337, in run_script
execfile(script_filename, namespace, namespace)
File "/usr/local/lib/python2.7/dist-packages/Pwman3-0.4.4_dev-py2.7.egg/EGG-INFO/scripts/pwman3", line 150, in
cli.cmdloop()
File "/usr/lib/python2.7/cmd.py", line 142, in cmdloop
stop = self.onecmd(line)
File "/usr/lib/python2.7/cmd.py", line 221, in onecmd
return func(arg)
File "/usr/local/lib/python2.7/dist-packages/Pwman3-0.4.4_dev-py2.7.egg/pwman/ui/cli.py", line 897, in do_cp
self.do_copy(args)
File "/usr/local/lib/python2.7/dist-packages/Pwman3-0.4.4_dev-py2.7.egg/pwman/ui/cli.py", line 608, in do_copy
ids = self.get_ids(args)
File "/usr/local/lib/python2.7/dist-packages/Pwman3-0.4.4_dev-py2.7.egg/pwman/ui/cli.py", line 101, in get_ids
ids += self._db.listnodes()
File "/usr/local/lib/python2.7/dist-packages/Pwman3-0.4.4_dev-py2.7.egg/pwman/data/drivers/sqlite.py", line 219, in listnodes
params = [t.name.strip()]
AttributeError: Tag instance has no attribute 'name'

Crash on windows with current head.

pwman> cp 1
Traceback (most recent call last):
  File "pwman3", line 60, in <module>
    main(args)
  File "pwman3", line 53, in main
    cli.cmdloop()
  File "C:\Python27\lib\cmd.py", line 142, in cmdloop
    stop = self.onecmd(line)
  File "C:\Python27\lib\cmd.py", line 221, in onecmd
    return func(arg)
  File "C:\Python27\lib\site-packages\pwman\ui\baseui.py", line 144, in do_cp
    self.do_copy(args)
  File "C:\Python27\lib\site-packages\pwman\ui\win.py", line 168, in do_copy
    ids = self.get_ids(args)
AttributeError: 'PwmanCliWin' object has no attribute 'get_ids'

@echo on
python C:\Python27\Scripts\pwman3 %*
IF %ERRORLEVEL% NEQ 0 PAUSE

Changing default location

How to to use a different location for pwman3's config and database file? I run pwman3 -c .pwman.bak/config with history = ~/.pwman.bak/history and filename = ~/.pwman.bak/pwman.db defined in the config file, but pwman3 still recreates the default directory ~/.pwman, along with database, etc.

python3 updates

  • Remove built-in which and use shutil.which from the stdlib.
  • Replace xdg-open with the brower module.

crash on convert

oz123@debian ~ $ pwman3 -k
Will convert the following Database: /home/nahum/.pwman/pwman.db
backup created in /home/nahum/.pwman/pwman.backup-2013-05-29-09:05.db
Please enter your password:
Traceback (most recent call last):
File "/home/nahum/localroot/bin/pwman3", line 148, in
status = dbconvertor.run()
File "/home/nahum/localroot/lib/python2.7/site-packages/pwman/data/convertdb.py", line 117, in run
self.save_new_nodes_to_db()
File "/home/nahum/localroot/lib/python2.7/site-packages/pwman/data/convertdb.py", line 96, in save_new_nodes_to_db
self.newdb.addnodes(self.NewNodes)
File "/home/nahum/localroot/lib/python2.7/site-packages/pwman/data/drivers/sqlite.py", line 194, in addnodes
raise DatabaseException("SQLite: %s" % (e))
pwman.data.database.DatabaseException: SQLite: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.

Unicode Issue

Testing latest version on a raspi before upgrade on my debian desktop, which has 0.5.1d (c).
Characters outside the "ascii range" can be entered and saved to the DB, but cause errors
on output/display.

Cheers,

    Jens

jens@raspi1:$ python --version
Python 2.7.3
jens@raspi1:
$ rm -rf .pwman/
jens@raspi1:~$ /usr/local/bin/pwman3
sqlite:///home/jens/.pwman/pwman.db
Please type in the master password:
pwman3 0.8.0 (c) visit: http://pwman3.github.io/pwman3/
pwman> n
Username: NameWithäUmlaut
Password (leave empty to create one):
Password length (default: 8):
Url:
Notes:
Tags:
pwman> p 1
Traceback (most recent call last):
File "/usr/local/bin/pwman3", line 9, in
load_entry_point('pwman3==0.8.0', 'console_scripts', 'pwman3')()
File "/usr/local/lib/python2.7/dist-packages/pwman/ui/cli.py", line 126, in main
cli.cmdloop()
File "/usr/lib/python2.7/cmd.py", line 142, in cmdloop
stop = self.onecmd(line)
File "/usr/lib/python2.7/cmd.py", line 221, in onecmd
return func(arg)
File "/usr/local/lib/python2.7/dist-packages/pwman/ui/baseui.py", line 160, in do_p
self.do_print(arg)
File "/usr/local/lib/python2.7/dist-packages/pwman/ui/baseui.py", line 459, in do_print
print(node)
File "/usr/local/lib/python2.7/dist-packages/pwman/data/nodes.py", line 41, in str
width=10, entry=str(self.username))
File "/usr/local/lib/python2.7/dist-packages/pwman/data/nodes.py", line 100, in username
return u.decode()
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 8: ordinal not in range(128)

xdg compliance

store the configuration data in $XDG_CONFIG_HOME
store the db in $XDG_CONFIG_DATA

Config file option to disable screen flush

In the ancient 0.5 version I preferred the behaviour where I could just hit CTRL-L to flush the screen manually. That way it was easier to query for multiple passwords in a row without having to press Enter and have the screen cleared each time. Is it possible to add a config option to disable screen flush?

The filter command is broken?

when issuing filter:

oz123@yenitiny:~/Desktop/pwman3 [master]$ ./scripts/pwman3 -t -d tests/pwman.db.no.encryption -e Dummy
Pwman3 0.3.0 (c) visit: http://github.com/pwman3/pwman3
pwman> tags
[]
Tags:  tag1  tag2  tag3 
pwman> filter tag1
Current tags:  tag1 
pwman> tags
['(ipwman.data.tags\nTag\np1\n(dp2\nS\'_name\'\np3\nS"S\'tag1\'\\np1\\n."\np4\nsb.', <pwman.data.tags.Tag instance at 0x7f8abd078f38>]
Traceback (most recent call last):
  File "./scripts/pwman3", line 134, in <module>
    cli.cmdloop()
  File "/usr/lib/python2.7/cmd.py", line 142, in cmdloop
    stop = self.onecmd(line)
  File "/usr/lib/python2.7/cmd.py", line 221, in onecmd
    return func(arg)
  File "/home/ozdeb/Desktop/pwman3/pwman/ui/cli.py", line 242, in do_tags
    tags = self._db.listtags()
  File "/home/ozdeb/Desktop/pwman3/pwman/data/drivers/sqlite.py", line 99, in listtags
    self._cur.execute(sql, params)
sqlite3.InterfaceError: Error binding parameter 1 - probably unsupported type.

weired error handling ...

program exists if passwords don't match ...

   if (newpassword1 != newpassword2):
        raise CryptoPasswordMismatchException("Passwords do not match")

calling by tag no longer works

I cannot list or print by tag since upgrading the database. I'm using pwman3 version 0.3.9c-1 on debian. An example, where none of the database entries tagged by "email" are listed.

pwman> ls email
Current tags:  email

Password length issue

pwman3 0.0.8-1
python2.7.3 rc2-1
Debian 3.1.0-1-amd64

Hello, I'm seeing a minor issue with pwman3. With 'leetify = true' set in the config file the passwords generated often exceed the length stated.

For example:

pwman> new
Username: test
Password (Blank to generate):
Password length (default 7): 9
New password: R3|<dO+JIs

Actual password length is 10

or

pwman> new
Username: test
Password (Blank to generate):
Password length (default 7): 12
New password: J0D3|/|39yU7ed

Actual password length is 15

From doing this a number of times I believe non-alphanumeric characters that follow non-alphanumeric characters are not being counted.

I hope this information helps improve this very handy program.

PDHobs

On a fresh install on mac os x ...

Traceback (most recent call last):
  File "/Users/user/.virtualenvs/pw-test/bin/pwman3", line 52, in <module>
    main(args)
  File "/Users/user/.virtualenvs/pw-test/bin/pwman3", line 37, in main
    xselpath, dbtype, config = get_conf_options(args, OSX)
  File "/Users/user/.virtualenvs/pw-test/lib/python2.7/site-packages/pwman/__init__.py", line 133, in get_conf_options
    configp = get_conf(args)
  File "/Users/user/.virtualenvs/pw-test/lib/python2.7/site-packages/pwman/__init__.py", line 100, in get_conf
    configp = config.Config(args.cfile, default_config)
  File "/Users/user/.virtualenvs/pw-test/lib/python2.7/site-packages/pwman/util/config.py", line 65, in __init__
    self.parser = self._load(defaults)
  File "/Users/user/.virtualenvs/pw-test/lib/python2.7/site-packages/pwman/util/config.py", line 70, in _load
    with open(self.filename) as f:
IOError: [Errno 2] No such file or directory: '/Users/user/.pwman/config'

add credits

To all people who contributed and have reported bugs.

'open' and 'copy' operations do not work / error out

Hi! Love pwman3. Was working great for my on Linux Mint, but now the 'open' and 'copy' commands error out on my install of Debian 7.1. Details below.

Hardware: MacBook Pro c.2009
OS: Debian 7.1 stable
Window Manager: XFCE 4.10
Python: 2.7.3
Pwman Version: Latest from git (09/07/2013)

Description:
When attempting to 'open' or 'copy' a particular entry, the operation does not work and the following error is reported: "Error: 'NewNode' object has no attribute 'get_url'"

Repro Steps:

  1. Start pwman3 with a database that has at least one entry.
  2. Type: "o 1" (without quotes)
  3. Type "cp 1" (without quotes)

Expected Results:
At step 2, a new browser window or tab is opened at the url stored in entry 1. At step 3 the password stored in entry 1 is copied to the shell's clipboard.

Actual Results:
At both step 2 and step 3 the only response is the following error:
Error: 'NewNode' object has no attribute 'get_url'

Database password change

When I try to change the database password via 'passwd' command and enter the correct information, the following error occurs

Error: 'SQLiteDatabaseNewForm' object has no attribute '_save'

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.