生成diceware词表。
项目描述
diceware-list
为使用diceware创建和检查词表。
这不是一个diceware实现,而是一个创建和检查适当词表的辅助工具。
目前,我们提供了三个脚本
diceware-list 基于输入列表创建词表
wlflakes 检查现有词表是否存在错误
wldownload 下载Android词表
安装
从pypi安装最新版本
(venv) $ pip install diceware-list
或从github克隆仓库
$ git clone https://github.com/ulif/diceware-list.git
请考虑使用virtualenv进行部署。
在活动 virtualenv 中,您可以安装并运行 diceware-list 的可执行脚本
(venv) $ python setup.py install (venv) $ diceware-list --help usage: diceware-list [-h] [-l LENGTH] [-n] [--ascii] [-d SIDES] [-k] [--use-416] [-p {none,short,long}] [-v] [--version] DICTFILE [DICTFILE ...]
创建词表: diceware-list
diceware-list 脚本可以从给定的列表中创建新列表
$ diceware-list -n -l 7776 /usr/share/dict/words 11111 a 11112 a's ... 12353 capt 12354 cara 12355 carl ... 66663 zoos 66664 éclat 66665 élan 66666 épée
《diceware-list》的主要目标是提供“良好”的单词列表。如果单词列表满足以下条件,则被认为是“良好”的:
包含足够数量的术语,可用于特定的diceware应用程序(例如,使用六个六面骰子时,6^6 = 7776个术语)
包含尽可能短的术语(以减少打字)
(可选)不包含非ASCII字符的单词(以便能够与非本地化键盘一起使用)
(可选)是一个前缀码,即列表中的任何完整单词都不是列表中另一个单词的前缀。
不包含冒犯性术语
最后一个问题在技术上很难解决(欢迎提供提示!),但《diceware-list》可以帮助遵循其他设计规则。
《diceware-list》生成的单词列表不是为了保密。您可以将它们放在互联网上,发布在Facebook上或在《纽约时报》上印刷。相反,《diceware》技术的安全性依赖于您的骰子、计算机等设备的熵或(在这种情况下)“随机性”。
换句话说:您的密码短语的安全性不是因为隐藏您的单词列表。它们之所以安全,是因为您可以从单词列表中选择许多可能的组合。这意味着:较长的列表比较短的列表更安全(如果您的随机源真正使用《diceware》),但隐藏的列表与公开的列表相比并没有更安全。
使用方法
首先,您需要一个包含单词作为“字典”的文件。在典型的Debian系统上,此类文件可以在/usr/share/dicts/中找到。
然后,您可以将此文件输入到《diceware-list》中,以创建适合与diceware一起使用的单词列表。
$ diceware-list /usr/share/dict/words ! !! !!! ... alan alana alar ... zzz zzzz
默认情况下,所有输入单词都会被过滤并输出。使用-l选项,您可以要求输出单词列表的特定长度。如果输入列表提供的术语多于所需,我们将选择子集。如果输入列表中的术语不足,将引发错误。
使用-n,您可以告诉《diceware-list》将数字放入每一行,表示骰子投掷[1]
$ diceware_list -n -l 7776 /usr/share/dict/words 11111 ! 11112 !! ... 12353 alan 12354 alana 12355 alar ... 66665 zzz 66666 zzzz
如果您为非标准骰子创建单词列表,例如10面骰子,则可以使用以下方式使用-d
$ diceware_list -n -d 10 -l 10000 /usr/share/dict/words 1-1-1-1 aol 1-1-1-2 aachen 1-1-1-3 aaron ... 10-10-10-8 zoomed 10-10-10-9 zooms 10-10-10-10 zoos
–ascii选项会过滤掉包含非ASCII字符的术语。这有助于生成可使用常规英文键盘的英文单词列表。
详细选项–verbose可以多次给出以提高详细程度。
有关其他选项,请参阅–help。
《diceware-list》大致遵循Reinhold先生在http://diceware.com/上给出的建议。
检查单词列表:wlflakes
在单词列表中查找碎片。
- ::
$ wlflakes mywordlist.txt
无输出表示:未检测到问题。
我们可以查找前缀碎片。即,我们检查,给定文件中的任何一行是否是任何其他行的开始。
- ::
$ cat wordlist.txt air port airport
$ wlflakes wordlist.txt wordlist.txt:3: E1 “air” from line 1 is a prefix of “airport”
也会显示重复条目
- ::
$ cat wordlist.txt air port air
$ wlflakes wordlist.txt wordlist.txt:1: E1 “air” from line 1 is a prefix of “air” wordlist.txt:1: E2 “air” appears multiple times
wlflakes提供的更多检查
警告:- 显示包含非ASCII字符的术语 - 太短的列表条目(比猜测更容易暴力破解)
wlflakes还支持--help或-h列出所有支持选项。
处理Android单词列表:wldownload
Android单词列表是单词列表的良好来源。可以从公共仓库下载。
$ wldownload --raw -v Starting download of Android wordlist file. Fetching wordlist from https://android.googlesource.com/platform/pack... Done.
wldownload 下载这些列表并帮助将它们转换为可用于 diceware 的列表。请注意,默认情况下,列表术语输出到 stdout(Android 单词列表可能包含超过 100,000 个术语)
$ wldownload > mylist $ cat mylist the to ... yt yuk
默认情况下,术语输出到 stdout(使用 shell 重定向或 --outfile 来更改此行为)。
您可以使用 --lang 或 -l 与语言代码(如 cs 或 de)一起请求非英语单词列表。使用 --lang-codes 列出所有受支持的语言代码。
--no-offensive 标志抑制标记为可能冒犯性的术语。
测试
在源代码的克隆中,您可以运行如下测试:
(venv) $ python setup.py test
此命令将下载所有必需的包,特别是 py.test。
(venv)$ pip install pytest (venv)$ pip install -e .
然后运行测试如下:
(venv)$ py.test
如果您还安装了 tox
(venv)$ pip install tox
那么您可以一次性运行所有支持平台的测试
(venv)$ tox
覆盖率
要获取覆盖率报告,您可以使用相应的 tox 目标
(venv)$ tox -e cov
或者您可以使用通用的 coverage 工具
(venv)$ pip install coverage (venv)$ coverage run setup.py test (venv)$ coverage report --include="diceware_list.py,libwordlist.py"
变更
2.1.dev0(未发布)
支持 Python 3.6、3.7 和 pypy3。
diceware-list 允许限制允许的字符集(使用 -c 或 --chars)。
diceware-list 现在允许在请求时使用大写字母(使用 -u 或 --allow-uppercase)。
wlflakes 现在检查列表和术语中的非 ASCII 字符以及太短且因此容易被破解的术语。
添加了计算单词列表及其字母表字符的熵的函数。
修复了 #4:仅在大小写上不同的术语导致结果列表中的重复条目。
2.0 (2018-01-23)
添加了新的 wldownload 命令。这是一个用于处理 Android 单词列表的工具(下载、解压缩、解析)。
添加了新的 wlflakes 命令。这是一个用于检查现有单词列表的一致性、密码碎片等的工具。
diceware-list 的 -l 选项不再包含默认值。如果未设置此选项,则输出所有合适的术语。
1.0 (2017-02-09)
从现在起,默认情况下不再将 dicewarekit.txt 列表包含在生成的列表中。您可以使用新选项 use-kit 请求包含。不再支持旧选项 no-kit。
在编号输出中,使用 - 将数字分开以区分多位数。当生成包含超过 9 个面的骰子的单词列表时至少需要这样做。
将 -s 选项重命名为 -d(如 dice-sides)。
日志输出现在注册为 libwordlist 名称。
添加了新的模块 libwordlist,其中包含 diceware-list 的 API 部分。
新的 –version 选项。
新的 –prefix 选项。如果设置前缀代码,则生成前缀代码,即不包含另一个列表项的前缀的列表。
声称为 Python 3.6 提供支持。
重构包:所有单个脚本现在都是包的一部分。
0.3 (2016-07-25)
将安装脚本作为 diceware-list 而不是 diceware_list 安装。
允许 –sides 选项支持没有六面的骰子。
0.2 (2016-03-18)
允许 -v 选项多次使用以增加详尽程度。
随机选择最大宽度的词条。在此更改之前,我们包含了所有较短的条目以及最大宽度(按字母顺序)的第一条条目。现在,我们从这些最大宽度的条目中随机选择一组作为结果列表。
声明支持 Python 3.5。
0.1 (2016-02-09)
初始发布。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分布
diceware_list-2.1.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 536ff6fc9664ff64863b8ccb06599c5469352d1046d6593c839ea7166292788d |
|
MD5 | 709c83917e80bccacadc901a39929dd8 |
|
BLAKE2b-256 | 7c65528b7c586fcb502e024493c813504a904faf68ab7249125dfba0564b2a64 |
diceware_list-2.1-py2.py3-none-any.whl 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | ce83bd83389eb71e648a11d555ab1efe4ee45b53297f490e334cd64dcc37a3e0 |
|
MD5 | 389273427d9d97d7deccb40764b5acb2 |
|
BLAKE2b-256 | a8dd4e1553d7eb92d90dfcca50affbd03a4947ba0caaefddb5c52513231aac0d |