はじめに
この実験では、標準的な Linux コマンドラインユーティリティを使用して、カスタム単語リストを作成および管理するための基本的な技術を探求します。単語リストは、パスワードの総当たり攻撃からアプリケーションのファジング、テキストデータの分析まで、さまざまなサイバーセキュリティおよびデータ処理タスクにおいて非常に重要です。簡単な単語リストの生成方法、複数のリストの結合方法、重複エントリの削除方法、アルファベット順のソート方法、および長さに基づいたフィルタリング方法を学びます。この実験の終わりには、特定のニーズに合わせて調整された単語リストを作成するために、テキストファイルを効率的に操作する方法についての確固たる理解が得られるでしょう。
シンプルなカスタム単語リストの生成
このステップでは、echo コマンドとリダイレクションを使用して、基本的なカスタム単語リストを作成する方法を学びます。これは、各単語が新しい行に配置されたファイルを作成する最も簡単な方法です。
まず、プロジェクトディレクトリにまだ移動していない場合は移動します。
cd ~/project
次に、いくつかの単語を含む my_wordlist.txt という名前のシンプルな単語リストを作成します。
echo -e "apple\nbanana\norange\ngrape" > my_wordlist.txt
-e オプションはバックスラッシュエスケープの解釈を有効にし、\n は新しい行を作成します。> は出力を指定されたファイルにリダイレクトし、ファイルが存在しない場合は作成し、存在する場合は上書きします。
新しく作成した単語リストの内容を確認するには、cat コマンドを使用します。
cat my_wordlist.txt
以下の出力が表示されるはずです。
apple
banana
orange
grape
次に、既存のコンテンツを上書きせずに、同じ単語リストにさらに単語を追加しましょう。ここでは追記のために >> 演算子を使用します。
echo -e "kiwi\nstrawberry\nblueberry" >> my_wordlist.txt
更新された内容を確認します。
cat my_wordlist.txt
出力には、新しく追加された単語が含まれているはずです。
apple
banana
orange
grape
kiwi
strawberry
blueberry
この方法は、小さいカスタム単語リストをすばやく生成したり、既存のリストにエントリを追加したりする場合に役立ちます。
複数の単語リストの結合
このステップでは、複数の単語リストの内容を単一の統合された単語リストに結合する方法を学びます。これは、マージしたいさまざまな単語ソースがある場合に一般的なタスクです。
まず、additional_words.txt という名前の別の小さな単語リストを作成しましょう。
echo -e "melon\npeach\nplum" > additional_words.txt
その内容を確認します。
cat additional_words.txt
以下が表示されるはずです。
melon
peach
plum
次に、my_wordlist.txt と additional_words.txt を combined_wordlist.txt という新しいファイルに結合します。cat コマンドを使用してファイルを連結し、出力をリダイレクトします。
cat my_wordlist.txt additional_words.txt > combined_wordlist.txt
combined_wordlist.txt の内容を確認します。
cat combined_wordlist.txt
出力には、連結された順序で両方のファイルからのすべての単語が表示されます。
apple
banana
orange
grape
kiwi
strawberry
blueberry
melon
peach
plum
このテクニックは非常に柔軟性があり、任意の数の単語リストを結合するために使用できます。
単語リストから重複を削除する
単語リスト、特に複数のソースを結合した後には、重複するエントリが含まれていることがよくあります。このステップでは、sort および uniq コマンドを使用してこれらの重複を削除する方法を学びます。uniq コマンドは隣接する重複行のみを検出するため、最初にファイルをソートすることが重要です。
これを実証するために、意図的に combined_wordlist.txt に重複エントリを追加しましょう。
echo -e "apple\nbanana\nmelon" >> combined_wordlist.txt
次に、combined_wordlist.txt の内容を表示して重複を確認します。
cat combined_wordlist.txt
apple、banana、melon が複数回出現していることに気づくでしょう。
重複を削除するには、まずファイルをソートし、その出力を uniq にパイプします。結果を unique_wordlist.txt という新しいファイルに保存します。
sort combined_wordlist.txt | uniq > unique_wordlist.txt
次に、unique_wordlist.txt を確認します。
cat unique_wordlist.txt
出力には、アルファベット順にソートされた一意のエントリのみが含まれているはずです。
apple
banana
blueberry
grape
kiwi
melon
orange
peach
plum
strawberry
これは、単語リストをクリーンアップするための強力なコマンドの組み合わせです。
単語リストをアルファベット順にソートする
単語リストをアルファベット順にソートすることは、整理、読みやすさの向上、および重複削除のような他の操作の前処理(前のステップで見たように)として役立ちます。このステップでは、単語リストを明示的にソートします。
unique_wordlist.txt に対して sort コマンドを使用し、ソートされた出力を sorted_wordlist.txt に保存します。unique_wordlist.txt は既にソートされていますが、このステップでは sort コマンドを独立して実証します。
sort unique_wordlist.txt > sorted_wordlist.txt
次に、sorted_wordlist.txt の内容を表示します。
cat sorted_wordlist.txt
出力はアルファベット順の単語になります。
apple
banana
blueberry
grape
kiwi
melon
orange
peach
plum
strawberry
sort コマンドには、逆アルファベット順のための -r や、数値ソートのための -n のような多くのオプションがあります。例えば、逆順にソートするには:
sort -r unique_wordlist.txt
これにより、以下が出力されます。
strawberry
plum
peach
orange
melon
kiwi
grape
blueberry
banana
apple
この実験では、デフォルトのアルファベット順ソートを使用します。
単語リストを長さでフィルタリングする
単語リストを単語の長さに基づいてフィルタリングする必要がある場合があります。例えば、5 文字から 8 文字の単語のみが必要な場合があります。このステップでは、awk コマンドを使用して単語を長さでフィルタリングします。
sorted_wordlist.txt をフィルタリングして、長さが 5 文字から 7 文字(両端を含む)の単語のみを含めるようにします。awk の length($0) 関数は、現在の行(単語)の長さを返します。
awk 'length($0) >= 5 && length($0) <= 7' sorted_wordlist.txt > filtered_wordlist.txt
次に、filtered_wordlist.txt の内容を確認します。
cat filtered_wordlist.txt
出力には、長さの条件を満たす単語のみが含まれているはずです。
apple
banana
orange
grape
melon
peach
awk コマンドの内訳を見てみましょう。
awk: テキスト処理のためのコマンドラインユーティリティ。'length($0) >= 5 && length($0) <= 7': これはawkプログラムです。length($0): 行全体($0は行全体を参照します)の長さを返します。>= 5: 長さが 5 以上であるかを確認します。&&: 論理 AND 演算子。<= 7: 長さが 7 以下であるかを確認します。- 条件が真の場合、
awkはデフォルトで行を出力します。
sorted_wordlist.txt: 入力ファイル。> filtered_wordlist.txt: 出力を新しいファイルにリダイレクトします。
このフィルタリング機能は、特定の目的のために単語リストを絞り込む上で非常に強力です。
まとめ
この実験では、さまざまな基本的な Linux コマンドラインツールを使用して、カスタム単語リストを作成および管理する方法を習得しました。echoとリダイレクションを使用して単純な単語リストを生成することから始め、catを使用して複数のリストを結合しました。sortとuniqを組み合わせて重複エントリを削除するという重要なテクニックを習得し、単語リストをアルファベット順にソートする練習をしました。最後に、awkを使用して特定の長さの基準に基づいて単語リストをフィルタリングしました。これらのスキルは、テキストデータを扱うすべての人、特にパスワードクラッキング、ファジング、データ分析などのサイバーセキュリティのタスクにおいて基本的です。これで、さまざまな要件に合わせて単語リストを操作および改良するための確固たる基盤ができました。


