SPhinX password protocol

pwdsphinx的Python项目详细描述


sphinx:一个密码**s**从**i**tself
(**n**o**x**aggeneration)


pwdsphinx是libsphinx的python包装器-一个加密密码存储
,如https://eprint.iacr.org/2015/1099


[libsphinx](https://github.com/stef/libsphinx)。


您还需要使用操作系统包
管理器或pip安装"pynadium"。


如果您还想使用websphinx浏览器扩展,则还需要从gnupg项目安装一个x11版本的pinentry:

-要么"apt get install pinentry qt"
-要么"apt get install pinentry-gtk2"
-要么"apt get install pinentry-gnome3"
-要么"apt get install pinentry fltk"

(或者任何与操作系统上的"apt get install"等效的东西)

开始吧。

\api

`sphinxlib`是一个基于'ctypes'的python包装器,它围绕着[libsphinx](https://github.com/stef/libsphinx)运行,因此
您可以立即在python中构建任何您喜欢的内容。exposed接口对库中的3个sphinx函数进行如下包装:

````
def challenge(pwd)
`````

返回bfac和chal

`````
````def respond(chal,secret)
```
return the response

````
def finish(pwd,bfac,resp)
```

返回原始的32字节密码。


Pitchfork Sphinx
附带了一个PY3中实现的服务器,您可以从通常的桌面/智能手机上托管非现场
。此外,还提供了一个客户端,该客户端能够与服务器通信并管理密码。


客户端和服务器都可以通过以下任何文件进行配置:
-`/etc/sphinx/config`
-`/.sphinxrc`
-`/.config/sphinx/config`
-`./sphinx.cfg`

这意味着全局设置可以由每个用户和每个目录的设置覆盖。


\oracle-服务器

正在侦听,
默认值为"localhost"-您可能需要更改该值。

您可能希望不时将此目录备份到加密的
媒体。


`verbose`允许记录到标准输出。

`keydir`是服务器存储其密钥的目录,
用于向客户端签名消息。

根据需要更改这些设置。启动服务器
只需执行以下操作:

```
./oracle.py
````

配置为更改配置文件的`[client]`部分中的设置。"host"和"port"应该与您在服务器中设置的匹配。

datadir(默认值:` ~/.sphinx`)变量保存客户机参数的位置。特别是它包含一个salt(默认情况下
` ~/.sphinx/salt`),用于计算服务器上
机密的id,更重要的是它还包含一个密钥
(默认情况下:` ~/.sphinx/key`),用于对发送到服务器的每个消息进行签名,以授权操作在你的密码上。如果不可用,
salt和密钥都会自动生成。你可能要备份并加密salt和密钥。


\__授权


所有操作都由用于签名所有操作的文件(默认值:`/.sphinx/key`)
。您应该保护这个
文件,这样只有您才能对密码进行操作。


注意,没有列出"记录"的命令,因为服务器不包含任何有关其存储内容的文本信息。所有
操作都需要用户名和此密码所属的站点。


并在本例中提供类似
的参数:

```
echo'my master password'./sphinx.py create username https://example.com ulsd 0
````

然后
"username"代表网站"https://example.com"上的用户名,然后
字母"ulsd"和"0"的组合代表
最终密码的大小。字母"ulsd"代表以下字符类:'u'大写字母,'l'小写字母,'s'
符号和'd'代表数字。

实际上,您可以为不同的用户/站点组合使用不同的"主"密码。


https://example.com
```

这里再次提供标准输入的主密码,将
的"get"操作作为第一个参数,将"username"作为第二个参数,将"site"作为第三个参数。生成的密码在标准输出时返回。


命令如下:

```
echo'my master password'./sphinx.py change username https://example.com
````


主密码可以相同,但如果您也要更改主密码,则也可以是新密码。将change操作作为第一个参数提供给客户机,将username作为第二个参数,将site作为第三个参数。新密码将在标准输出时返回。


更改密码后,您将返回旧密码,在您使用

```
echo'my master password'./sphinx.py commit username https://example.com
````

您可以使用以下
命令:

````
./sphinx.py delete username https://example.com
````

此命令不需要标准输入上的任何内容,也不需要在标准输出上提供任何内容,以防一切正常。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在Hibernate中从两个具有不同功能的表(postgreSQL)映射一个实体   java jfreechart需要自定义Y轴,以便打印   Java:从外部获取类。罐子   java如何获取Appium服务器日志   具有完全相同内容的java重写函数会导致错误   java消息的类路径是什么。属性(如果在依赖项jar中)   循环/相等的java问题==   java如何使用ionic cordova angularjs将所选图像发送到spring controller以保存到服务器?   库中的java语言环境数据   java从JSON webservice检索安卓中的字节[]   调试如何从Java中的类调试方法?   java将日期字符串切割成变量   无法使用java附加到文件?