22 个版本 (14 个重大更新)
新功能 0.15.1 | 2024年8月22日 |
---|---|
0.15.0 | 2024年7月30日 |
0.14.1 | 2024年4月4日 |
0.14.0 | 2023年12月11日 |
0.2.0 | 2019年9月9日 |
#210 在 命令行工具
每月下载量 142
130KB
907 行
关于
xkcd风格的密码生成器
用法
$ xpg -h
xpg 0.15.1 <https://crates.io/crates/xpg>
xkcd-style password generator
Usage: xpg [OPTIONS] [PATTERNS]...
Arguments:
[PATTERNS]... Pattern(s) (see note 1) [default: `wwww`, `-L`: `{a}`]
Options:
-c, --count <NUMBER> Number of passwords (0:∞ ) [default: 1]
-l, --length <NUMBER> Length
-m, --minimum <NUMBER> Minimum length
-M, --maximum <NUMBER> Maximum length
-a, --attempts <NUMBER> Attempts (see note 2) [default: 10]
-C, --config <PATH> Configuration file
-e, --extended Merge extended words (see note 3)
-L, --list List words in `{sub}`(s)
-d, --dump-config Print configuration
-r, --readme Print readme
-h, --help Print help
-V, --version Print version
---
Notes
1. Patterns
* Words
* `W`: WORD
* `w`: word
* `T`: Word
* `k`: `shuffle(cccc(c|d)(C|c))`
* `{sub}`: see `WordKind`s section in readme
* Characters
* `C`: A-Z
* `c`: a-z
* `d`: 0-9
* `s`: `~!@#$%^&*-_=+;:,./?()[]{}<>`
* `a`: `C` | `c` | `d` | `s`
* Special
* `keychain`
* `codename`
* `codename-series`
* `haiku`
* `haiku+`
* `haiku-`
* `haiku--`
* `haiku++`
* `haiku+++`
2. Ten attempts are made to satisfy the given length requirements by default;
use `-a N` and set `N` to the number of attempts to increase chances.
It will exit with an error if unable to satisfy requirements; some
configurations will always produce an error.
3. Extended words are only available in exclusively extended word kinds by
default; however, with `-e`, they are merged with regular word kinds; use
with the `-L` option to see its effect.
$ xpg -V
xpg 0.15.1
请参阅下面的 配置 部分。
示例
$ xpg
copyoslobecomespace
生成10个密码
$ xpg -c 10
historydesignbutterbeautiful
moscowchanceshoesdrink
eggschangewhethershare
pleasefilledjordannight
tillstaplecopyquite
speedaustriadaresilver
indiansharplowerliar
gaveteartakenmany
simplehomeimportantchair
facewhatdelightdesire
持续生成密码
直到 Ctrl+C / SIGINT
$ xpg -c 0
inchesdelawareloneears
waveorderplanesing
britainthemrepeatedentered
roundkitchencarrysold
collegemachinecowsonce
leadertheremountainplural
shipfamilyhalfpage
gavethousandblowhawaii
clothesanswerwondermatch
oxygenspokesugarrome
^C
生成一个由8个单词组成的密码
$ xpg wwwwwwww
dategeneralpreparedquietgoneenteredbecomefell
生成10个由8个单词组成的密码
$ xpg wwwwwwww -c 10
easyfeelthanbrothertubelistmakedaily
goldpaintsaturdaynountroublecopywithskin
firstgamedoctorpickeverlasttellminute
fifthhallequationwheelspiecehowevereasystorm
walesstandcolourmonthsviewoverstudyalthough
allowsnowunderlineplanetbotswanaspokecolourfamous
melodyraiseslowlyfavormuchfinlandincludelord
irelandbringfinallycorrectfootrememberropegain
glassleavecrossbottomdropfieldstormbank
spotrosemountaingermanyexperiencestillfullinclude
生成一个由2个单词和3个数字组成的密码
$ xpg wwddd
memberyesterday429
生成一个由2个单词和2个符号组成的密码
$ xpg wwss
largefact.#
生成一个由2个单词、一个数字和一个符号组成的密码
$ xpg wwds
helpsuggested2_
生成一个由4个单词和2个小写字母组成的密码
$ xpg wwwwcc
killguideniecehungerpf
生成一个由4个单词和2个大写字母组成的密码
$ xpg wwwwCC
remainlegsloneperiodJA
生成一个由4个标题大小写单词组成的密码
$ xpg TTTT
BehindCharacterRootSail
生成一个由4个全部大写单词组成的密码
$ xpg WWWW
STRANGENEVADAPERIODSCIENCE
生成一个由4个单词和5个任意字符组成的密码
“任意字符”可以是小写字母、大写字母、数字或符号。
$ xpg wwwwaaaaa
appleunderlineneptunemodernoNd/0
生成一个由3个单词组成且至少有15个字符的密码
$ xpg www -m 15
preparedjudgeinformation
生成一个由3个单词组成且不超过20个字符的密码
$ xpg www -M 20
studentpulledwent
生成一个由4个单词组成且字符数在20到25个之间的密码
$ xpg www -m 20 -M 25 -a 1000
berlinfuturenorthern
请参阅 用法 注意2。
生成一个由2个单词、3个数字、1个符号和恰好16个字符组成的密码
$ xpg wwddds -l 16 -a 1000
peruneighbor579+
请参阅 用法 注意2。
生成一个包含1个、2个标题大小写单词和!
的密码
$ xpg '1TT!'
1GoodbyeInformation!
生成一个包含1个符号、2个形容词、1个名词和2个数字的密码
$ xpg 's{adj}{adj}{n}dd'
+slowelsewild27
生成一个包含2个单词和1个扩展单词的密码
$ xpg 'ww{ext}'
billwelloregon
生成一个包含2个单词和1个标题大小写扩展单词的密码
$ xpg 'ww{T:ext}'
cornscienceGalatea
生成一个包含2个单词和1个全部大写扩展单词的密码
$ xpg 'ww{W:ext}'
hawaiidenmarkJANUARY
生成10个包含4个标题大小写单词和扩展单词合并的密码
$ xpg -ec 10 TTTT
MarkAthenaTearPrice
ConsiderHimselfTakenTall
WashWantsParkBrother
AmsterdamNameOregonMatter
ThalassaBurningFootThrew
TogetherEngineUncleKenya
ShapeBeanSectionLittle
FineArrivedHundredAlso
LittleSummerColombiaShade
WeekSpeakPlanTemperature
生成一个密码链风格的密码
$ xpg keychain
crxoor-uastQc-u5tfco
生成一个代号
$ xpg codename
BUILT COLUMN
生成一个代号系列
$ xpg codename-series
WHICHTRADE SAFEMARKET
WHICHTRADE IRONMANNER
WHICHTRADE NOTHINGSTUDENT
WHICHTRADE SHALLOXYGEN
WHICHTRADE HAPPYFLAT
WHICHTRADE FEELINGPLANTS
WHICHTRADE ONLYPOINT
WHICHTRADE LONESHAKE
WHICHTRADE VARIOUSDESIRE
WHICHTRADE SHARPDRIVE
生成一个包含20个代号的代号系列
$ xpg codename-series -c 20
EXPRESSDELIGHT VARIOUSYESTERDAY
EXPRESSDELIGHT USUALPART
EXPRESSDELIGHT NEARGALAXY
EXPRESSDELIGHT THROWNWEDNESDAY
EXPRESSDELIGHT DEEPSQUARE
EXPRESSDELIGHT WHATSPRING
EXPRESSDELIGHT TOGETHERVERB
EXPRESSDELIGHT SMALLSHOE
EXPRESSDELIGHT GLASSHUSBAND
EXPRESSDELIGHT AWAYGLASS
EXPRESSDELIGHT THIRDSUIT
EXPRESSDELIGHT NEVERHUNTING
EXPRESSDELIGHT FAIRWEEK
EXPRESSDELIGHT TWELVEQUESTIONS
EXPRESSDELIGHT MANYCROPS
EXPRESSDELIGHT IMPORTANTEUROPE
EXPRESSDELIGHT ROUNDDESIRE
EXPRESSDELIGHT REALLYPARAGRAPH
EXPRESSDELIGHT DAILYSTORY
EXPRESSDELIGHT MADEHAND
生成一首俳句
$ xpg haiku
Damascus build touch / Especially opposite / Electricity
生成一个带有音节模式的俳句
$ xpg haiku+
Roll Bulgaria (1,4) / Everyone Fiji fifty (3,2,2) / Cents thirteen spend feed (1,2,1,1)
生成一个带有音节模式的压缩俳句
$ xpg haiku-
Considerable(5)/Dictionary-paragraph(4,3)/Material-view(4,1)
生成一个压缩俳句
$ xpg haiku--
Considerable/Arizona-fruit-word-spent/Electricity
生成一个带有换行的俳句
$ xpg haiku++
Cells Tokyo wagon
Egypt once forever fight
Colombia seat
生成一个包含音节模式和换行的俳句
$ xpg haiku+++
Particular phrase (4,1)
California help member (4,1,2)
India thirteen (3,2)
生成一个包含扩展单词的俳句
$ xpg -e haiku
Upon service sell / Thelxinoe paragraph / Matter window grain
生成一个包含20个任意字符的密码
$ xpg aaaaaaaaaaaaaaaaaaaa
&>ZQ03o7I0!mu!LhxNpv
与上一个示例相同,但更短
这是因为仅字符的模式会被最后一个字符填充到最小长度。
$ xpg a -m 20
MU*{PfY5Avgn%u?&O/*a
从不同的模式中生成3个密码
$ xpg wwww WWWW TTTT
butterrealizeriddencharge
DEVICEFOOLBRIGHTSPAIN
OsloCarefullyWinterNeedle
生成包含1、2、3、4和5个音节的单词密码
$ xpg '{a:1}-{W:a:2}-{T:a:3}-{olympian:4}-{T:ext:5}'
crops-MARKET-President-dionysus-Southcarolina
以颜色/ {color}
$ xpg -L '{color}'
black
blue
brown
gray
green
white
yellow
以颜色/ {color}
大写形式显示
$ xpg -L '{W:color}'
BLACK
BLUE
BROWN
GRAY
GREEN
WHITE
YELLOW
以颜色/ {color}
的标题形式显示
$ xpg -L '{T:color}'
Black
Blue
Brown
Gray
Green
White
Yellow
计算颜色/ {color}
中的单词数量
$ xpg -L '{color}' |wc -l
7
以颜色/ {color}
和元素/ {W:el}
显示单词列表
$ xpg -L '{color}' '{W:el}'
black
blue
brown
gray
green
white
yellow
GOLD
IRON
LEAD
MERCURY
OXYGEN
SILVER
计算单词数量
$ xpg -L |wc -l
1257
计算扩展单词数量
$ xpg -Le |wc -l
1403
配置
查看config.json
或使用-d
获取编译到二进制可执行文件中的默认配置。
如果在以下任何位置放置了另一个文件或在运行时通过-C
选项提供的路径,则将使用该文件。
- Linux:
/home/username/.config/xpg/config.json
- Windows:
C:\Users\username\AppData\Roaming\qtfkwk\xpg\config\config.json
- macOS:
/Users/username/Library/Application Support/com.qtfkwk.xpg/config.json
WordKind
类型
- 所有扩展单词 /
{a.ext}
- 所有 /
{a}
- 形容词 /
{adj}
- 颜色* /
{color}
- 国籍 /
{nat}
- 颜色* /
- 副词 /
{adv}
- 连词 /
{conj}
- 感叹词 /
{i}
- 名词 /
{n}
- 复数名词 /
{n.pl}
- 代词 /
{n.pro}
- 单数名词 /
{n.s}
- 天文学 /
{ast}
- 月亮 /
{moon}
- 行星 /
{planet}
- 月亮 /
- 颜色* /
{color}
- 白天 /
{day}
- 月份 /
{mon}
- 专有名词 /
{n.prop}
- 元素 /
{el}
- 名字 /
{name}
- 女性名字 /
{fname}
- 男性名字 /
{mname}
- 女性名字 /
- 地点 /
{place}
- 城市 /
{city}
- 大陆 /
{cont}
- 国家 /
{country}
- 美国州 /
{us-state}
- 城市 /
- 神话学 /
{myth}
- 希腊神话 /
{greekmyth}
- 奥林匹斯神 /
{olympian}
- 地府 /
{chthonic}
- 奥林匹斯神 /
- 罗马神话 /
{romanmyth}
- 希腊神话 /
- 元素 /
- 天文学 /
- 复数名词 /
- 介词 /
{prep}
- 动词 /
{v}
- 助动词 /
{v.aux}
- 不及物动词 /
{v.int}
- 及物动词 /
{v.tr}
- 动词过去式 /
{v.past}
- 助动词 /
- 形容词 /
- 扩展的 /
{ext}
- 名词 /
{n}
- 单数名词 /
{n.s}
- 天文学 /
{ast}
- 月亮 /
{moon}
- 火星月球 /
{marsmoon}
- 木星月球 /
{jupitermoon}
- 土星月球 /
{saturnmoon}
- 天王星月球 /
{uranusmoon}
- 海王星月球 /
{neptunemoon}
- 火星月球 /
- 月亮 /
- 天文学 /
- 单数名词 /
- 名词 /
- 所有 /
注意
-
WordKind /
{sub}
-
只需设置最具有描述性的
WordKind
(s),因为它们会自动包含在更大的词类中。 -
characters
对象值必须包含C
、c
和d
键,并且具有非空值。可以添加额外的键/值并使用它们。 -
{sub}
默认生成小写单词,但如果以W:
或T:
前缀,单词将分别为大写或标题格式:即{W:sub}
或{T:sub}
(将sub
替换为上面实际的{sub}
名称)。 -
{sub}
默认包含所有单词,但如果以:N
后缀,其中N
是一个数字,它将仅包含具有该音节数的单词:即{sub:N}
(将sub
替换为上面实际的{sub}
名称,并将N
替换为所需的音节数 ~1-5)。
变更日志
请在 CHANGELOG.md
中找到 仓库。
参考
- 单词列表源自 Bart Busschots 的 HSXKPasswd Perl 模块(GitHub,CPAN: Crypt::HSXKPasswd),具体为 lib/Crypt/HSXKPasswd/Dictionary/EN.pm@1d88564:38
依赖
~4–13MB
~170K SLoC