john the ripper

記号 意味(?)
!?C 集合Cの文字が入っていない時
!X 文字Xが入っていない時
$X 文字Xを付加
%N?C 集合Cの文字がN回以上含まれる時のみ
%NX 文字XがN回以上含まれる時のみ
'N 長さN文字までで打ち切る
(?C 先頭文字が集合Cに属する時のみ
(X 先頭文字がXである時のみ
)?C 末尾文字が集合Cに属する時のみ
)X 末尾文字がXである時のみ
* ハッシュ型で許される最大長
+ ハッシュ型で許される最大長+1
- ハッシュ型で許される最大長-1
-8 ハッシュ型が8ビット文字を許容する時のみ
-c ハッシュ型が大文字小文字を区別する時のみ
-s パスワードがロード時分割される時のみ
/?C 集合Cの文字が含まれる時のみ
/X 文字Xが含まれる時のみ
0...9 位置0...9.0が先頭
: 何もしない
<N N文字より短い場合のみ
=N?C N文字目が集合Cの文字Xであるときのみ
=NX N文字目が文字Xであるときのみ
>N N文字より長い場合のみ
?? 疑問符 "?"
?a 英字集合 [a-zA-Z]
?c 子音集合 "bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ"
?d 数字集合 [0-9]
?l 文字集合 [a-z]
?p 句読点集合, ".,:;'?!`"と二重引用符
?s 記号集合 "$%^&*()-_+=\<>[]{}#@/~"と縦棒
?u 文字集合 [A-Z]
?v 母音集合 "aeiouAEIOU"
?w 空白,タブ
?x 英数字集合 [a-zA-Z0-9]
@?C 集合Cの文字を全て取り除く
@X 文字Xを全て取り除く
A...Z 位置10...35
C 頭文字だけ小文字にし残りは大文字にする,逆キャピタライズ
DN N文字目の削除
I 進行形 "crack" -> "cracking"
L キーボード左移動 "Crack96" -> "Xeaxj85"
M 文字列を記憶
P 過去形 "crack" -> "cracked"
Q 文字列に変更があった場合のみ
R キーボード右移動 "Crack96" -> "Vtsvl07"
S キーボードシフト "Crack96" -> "cRACK(^"
TN 位置Nの文字の大小を逆転
V 母音を小文字,子音を大文字 "Crack96" -> "CRaCK96"
[ 最初の文字の削除,バックスラッシュエスケープが必要
] 最後の文字の削除,バックスラッシュエスケープが必要
^X 文字Xを前挿
c 先頭文字だけ大文字にし残りは小文字にする,キャピタライズ
d 文字列の繰り返し,二重化 "Fred" -> "FredFred"
f 逆転文字列の付加,反射 "Fred" -> "FredderF"
iNX 文字XをN文字目に挿入
l 小文字にする
oNX 文字XでN文字目を上書き
p 複数形 "crack" -> "cracks"
r 文字列の逆転 "Fred" -> "derF"
s?CY 集合Cの文字を全て文字Yに置換
sXY 文字Xを全て文字Yに置換
t 大文字を小文字にし,小文字を大文字にする,トグル
u 大文字にする
xNM N文字目から最大M文字分抽出
{ 環状左シフト "jsmith" -> "smithj"
} 環状右シフト "smithj" -> "jsmith"
(?acQ 先頭が英字ならばそれを大文字にし変化があるならば実行
>6/?ul'6 6文字より長く,大文字を含むとき小文字に直して6文字に切り詰める
<*d 最大長より短いなら繰り返しを作る
<*dMcQ 最大長より短いなら繰り返しを作りその時点で記憶.先頭を大文字にし記憶したものと変化があるならば実行.Qは上との重複を避ける(?)
>2/?ulx12 2文字より長く大文字を含んでいるなら小文字にし1文字目(先頭=0文字目ではない)から2文字抜き出す
<*l$[1-9!0a-z"-/:-@\[-`{-~] 最大長より短いならば[...]内部を順に後に付加,0を1-9と別にしているのは0を付ける場合は少ないと考えているから(?)
l$!<-$!$! 小文字にし!を付加しても最大長-1より短いならさらに!!を付加.結局!!!付加になるが最大長-2という判定が出来ないため1文字追加してから長さを調べている(?)
/?v@?v>2l 母音を含むなら取り除きそれでも2より長いなら小文字にする
<*(?a[lc])yro0ir$e 最大長より短く先頭が英文字ならば,全て小文字もしくは先頭のみ大文字にし,末尾がyなら逆転して先頭をiに書き換え再度逆転してeを付加.これは末尾yをieに置換する.二重逆転しているのは末尾を置き換える事ができないため(?)
l/oso0[:c] 小文字にし,oを含んでいれば0に全て置き換え,そのままあるいは先頭を大文字にする
lMT[*0]T[*1]T[*2]T[*3]T[*4]T[*5]T[*6]T[*7]Q 一度全て小文字にして記憶する.プリプロセッサに作られる2の8乗のパターンのうちT[*]となる部分はハッシュタイプ上の最大値文字目のトグルになるので何もしないのと同じ.結局T[数]というトグルのみが生き残り,0から7文字目のあらゆる個所を大文字化する全てのパターンという意味になる.最後のQは短いワードの場合にT[7]を行うなど何も変化が起きなくなる場合があるため(?)
  • 複数ある文字Xのうち2つ目のXのみ入れ替える等は出来ない(?)
  • ワードリストモードList.Rules:Wordlistの後にシングルモードList.Rules:Singleのルールを移植してもほとんどは動作するが,GECOSのワード対を使う1[ur]2lなどのシングルモード専用ルールは動かない.
  • 基本的にはcrack5.0のものと同じ.crack5.0にはプリプロセッサはなかったのでルール作成が大変だった?
  • crack5.0のルールの中から発掘して来たもの.
>3=2?vx03$c$h$a$n 3文字より長く2文字目が母音ならば先頭から3文字分取り出しchanを付加する,"ikegami" -> "ikechan"

http://www.openwall.com/john/jack.jpg