今晚开什么生肖和特马

Expandpass:用于解密你有點記不清的密碼的工具

2019-10-19 68008人圍觀 工具

expandpass是一個簡單的字符串擴展器,主要用于幫助你破解那些你有點記不清的密碼。

簡單示例

轉換構造如下的種子文件:

{ "apple" "banana" }( "!" "123" )

擴展字符串列表,如下所示:

apple!123
banana!123
apple123!
banana123!

定義一個種子文件,并將其作為參數傳遞給expandpass(默認為seed.txt)

expandpass -i path/to/seed.txt

它將種子的完整擴展輸出到stdout,或者你可以使用以下命令定義輸出文件

expandpass -o path / to / output.txt

它也可以以標準的unix-y方式運行(并按預期運行)

echo '{ "apple" "banana" }[m5]' | expandpass | grep 4

參數

-i input_file:指定用作種子的文件(默認為seed.txt,也接受stdin w/o specification)

-o output_file:指定要打印結果的文件(默認stdout)

-b#:指定在打印到輸出之前要填充的緩沖區大小(字節)(默認為1M,實驗上只要大于~20個字節,就不會影響性能)

-f[aA|A|a|#|aA#|@|l] [#]:按屬性過濾輸出(有關詳細信息,請使用–help查看)。可選數字作為參數,量化要求。expandpass -f# -fa -fA -fl 10

-c # [progress_file]:設置將進度保存到進度文件的頻率(默認為:never)(“set Checkpoint”)。在將進度寫入文件之前將輸出#密碼(也可以選擇指定;默認值:“seed.progress”)。expandpass -c 1000000 my_seed.progress

-r [checkpoint_file]:從可選定義的(默認值:seed.progress)進度文件中恢復。注意 – 使用其他種子文件創建的進度文件將產生不可預測的結果。expandpass -r my_seed.progress

–estimate [@600000]:打印從給定種子文件生成的密碼數的估計值,以及在指定的輸出/秒(默認值:600000)通過這些密碼進行枚舉所需的時間的預測。注意:在處理修改中近似分組長度;容易出錯。expandpass –estimate @7000

–unroll#:指定組大小的臨界值(默認為1000; 0 == don’t unroll)。

–normalize:打印標準化/優化的種子文件(實際生成時使用)。–unquoted:將無效字符視為單字符串。

–help:顯示簡單用法菜單。expandpass –help

–version:顯示版本。expandpass –version

SEED(種子)

種子的最基本原子是字符串,使用”"指定

種子文件:

"banana"

輸出:

banana

空字符串可以指定為”",也可以不加引號 -

注意:要在字符串中包含”,請用\對其進行轉義(例如:“ Hello\”World\””即 Hello”World”)。要包含\,同樣請用\\對其進行轉義。

下一層是Option Group,由{}指定

種子文件:

{
"banana"
"apple"
}

輸出:

banana
apple

接下來,Sequence Group,用<>指定

種子文件:

<
"banana"
"apple"
>

輸出:

bananaapple

最后,Permutation Group,用()指定

種子文件:

(
"banana"
"apple"
)

輸出:

bananaapple
applebanana

然后,作為特殊情況,是用[]指定的修飾符。注意 – 修飾符適用于修飾符之前的分組。(有關語法的詳細信息,請參見“MODIFIER”部分)

種子文件:

"banana"
[ s1 "abcdefghijklmnopqrstuvwxyz" ]

輸出:

aanana
banana
canana
...
zanana
banana
bbnana
bcnana
...
bananz

所有這些都可以任意嵌套。例如:

種子文件:

(
  "Jean"
  < { "M" "m" } "arry" { "M" "m" } "e" >
)
"123"
[-s1 "0123456789"]
{
"!"
"!!"
}

輸出:(你可以自己運行它!它已在seed.txt文件中了,輸出的行數應該為496行)

注意 – 種子文件在其周圍指定了默認的隱式序列組(implicit Sequence Group)<>。

MODIFIERS(修飾符)

這里有5種類型的修改: ‘i’njections‘s’ubstitutions‘d’eletionss’m'art substitutions 和 ‘c’opies,我假設每個修改都需要按照自己的路線進行(盡管這不是語法強制的)。

你指定要使用[]修改先前指定的組(或字符串),并指定修改內容。例如,如果我想要“banana”的所有實例,但刪除了一個字符,則將其放入種子文件中:

"banana"
[
d1
]

這意味著“在該字符串上嘗試所有單字符刪除”操作,結果為:

"anana"
"bnana"
"baana"
"banna"
"banaa"
"banan"

你還可以指定嘗試所有單字符替換 – 但要這么做,你還必須定義一個gamut:

"banana"
[
s1 "ABC"
]

結果為:

"Aanana"
"Banana"
"Canana"
"bAnana"
...
"bananC"

Injection的結果與之相同:

"banana"
[
i1 "ABC"
]

結果為:

"Abanana"
"Bbanana"
"Cbanana"
"bAanana"
...
"bananaC"

Smart Substitution會查看字符并嘗試常見的substitutions(而無需定義gamut!):

"banana"
[
m1
]

"Banana"
"bAnana"
"b4nana"
"baNana"
...

Copy僅重復前一組n次

"banana"
[
c3
]

"bananabananabanana"

同樣,這些功能的強大之處在于它們的可組合性。最簡單的方法是將1遞增為2

"banana"
[
s2 "ABC"
]

結果為:

"AAnana"
"ABnana"
...
"banaCC"

可以組成多種修改類型:

"banana"
[
s1d1 "ABC"
]
"Anana"
"Bnana"
"Cnana"
"bAana"
"bBana"
"bCana"
...

注意:這不能保證完全的唯一性。刪除第一個字母并將第二個字母替換為“A”等同于刪除第二個字母并替換第一個字母。因此,組合修改可能是多余的。

你也可以在sequence中組合修改:

"banana"
[
  d1
  s1 "ABC"
]

結果為:

"anana"
... (all the deletes)
"banan"
"Aanana"
"Banana"
..

注意:sequence中的新修改用換行符或定義的gamut來描述。因此,可以將先前的種子交替指定為:

"banana" [ d1 "" s1 "ABC" ]

最后,“null”修改為破折號 -

"banana"
[
-
d1
]

將確保在修改之前先將banana打印為未修改的。

注意:- 是單一修改(不需要進一步描述)。因此,你可以同樣指定”banana”[-d1]

性能

基準測試:

time echo '( "Jean" < { "M" "m" } "arry" { "M" "m" } "e" > ) [m5] "123" [-s1 "0123456789"] { "!" "!!" }' | expandpass | wc -l

最壞的情況(經過多次試驗):

 954800

real	0m0.507s
user	0m0.500s
sys	0m0.020s

在2014 Macbook Air,1.4 GHz Intel Core i5上運行。可以達到~2M lines/s的速度。

注意 - 性能仍有提升的空間。但在我沒有找到足夠的理由之前,我并不打算把工作重心放到這方面。也就是說,我下一步的計劃將是:

當迭代發生在其他地方時,為blit緩存supgroup輸出。

并行化(Parallelize )

在適當的位置編輯密碼迭代,而不是完全重建密碼(將需要適當的重構。可能會導致并行化更加困難)。

*參考來源:GitHub,FB小編secist編譯,轉載請注明來自FreeBuf.COM

相關推薦
取消
Loading...

特別推薦

推薦關注

活動預告

填寫個人信息

姓名
電話
郵箱
公司
行業
職位
css.php 今晚开什么生肖和特马 德州通宵麻将群 福建快三 掌心福州麻将官网安卓 基金理财平台大的排行 北京PK10单期计 家彩网3d试机号金 南宁麻将规则打法 昆山百搭麻将官方版下载 福州麻将清一色怎么打 易配资平台 探球比分网球比分 5分彩 广西麻将 百色玩法 竞彩比分直播新浪 体球网手机比分版 湖北晃晃麻将游戏下载