
grep、sedで(ゾロ目のような)同じ文字の繰り返しを抽出、置換する
コンソール上で、同じ文字の繰り…
ふと、コンソール上で特定の単語の文字組み合わせを取得するにはどうすればよいのかなと思ったので、ちょっと調べてみた。
ブレース展開を増殖させる方法でどうにか…と思ったけど、無駄に長くなったうえに、文字すべての組み合わせになってしまう。これをどうにかする方法は見つけることができなかった…。
TEST=$(echo test) && eval echo $(eval echo $(echo $TEST | xargs -I@ sh -c 'echo \"{$(echo @ | sed "s/./&,/g;s/.$//g")}\"{$(echo @ | sed "s/./,/g;s/.$//g")}') | tr -d ' ' ) | tr ' ' '\n' | sort | uniq
blacknon@BS-PUB-UBUNTU-01:~$ TEST=$(echo test) && eval echo $(eval echo $(echo $TEST | xargs -I@ sh -c 'echo \"{$(echo @ | sed "s/./&,/g;s/.$//g")}\"{$(echo @ | sed "s/./,/g;s/.$//g")}') | tr -d ' ' ) | tr ' ' '\n' | sort | uniq | wc -l 81
ペネトレーションテストに用いる辞書ファイルの生成ツール。
たぶんこれが一番楽。使用する文字列を指定する前に「-p」でpermutationフラグを立てることで、文字列を入れ替えたもののみ生成してくれる。
インストール方法は以下。ダウンロードのリンクはこちらから最新のものを確認するとよいだろう。
なお、Debian/Ubuntu系ならaptで、OS Xであればbrewでインストールできる。
wget https://downloads.sourceforge.net/project/crunch-wordlist/crunch-wordlist/crunch-3.6.tgz tar xzvf crunch-3.6.tgz cd crunch-3.6 make && make install
●その他
sudo apt install -y crunch # Debian/Ubuntu系の場合 brew install crunch # OS Xの場合
実行方法は以下。
crunch 0 0 -p Strings
Rubyを使うと結構簡単に書けるようだ。
crunchが入れられない環境でも、Rubyなら使えることが多いだろう。
echo Keyword | ruby -ne '$_.chomp.chars.to_a.permutation{|x| puts x.join}'
一応、Pythonでも同様の処理が可能だ。
Pythonであればバンドルされていることも多いので、Rubyも入れられないならこちらを使うとよいだろう。
echo test | python -c "import sys;from itertools import permutations as p; print('\n'.join([''.join(item) for item in p(sys.stdin.read()[:-1])]))"