Linuxでよく使われる「strings」コマンドですが、マイクロソフトのサイトでWindows版が配布されています。このページでは、「strings.exe」をWindowsにインストールする方法を解説します。
Stringsのダウンロード
「strings」は「ファイルから表示可能な文字だけを出力する」コマンドです。大抵のLinux環境にはインストールされています。
Windowsでも「バイナリファイルから人間が読める文字だけを抽出したい」ということがあります。そのため、マイクロソフトがWindows向けの「Strings」を配布しています。
以下のサイトからインストール可能です。
サイトを開くと、以下のページが表示されます。「Stringsのダウンロード」をクリックして、ダウンロードしましょう。
Stringsのインストール
ダウンロードした「Strings.zip」にはインストーラーは含まれていません。「strings.exe」「strings64.exe」「Eula.txt」が入っているだけです。ユーザー自身が、自分でコマンドを配置する必要があります。
個人で所有しているWindows PCなら、「C:\Windows\System32\」にコピーするだけで使えます。64ビット版のWindowsを使っているなら、「strings64.exe」を「string.exe」にリネームして用いると良いでしょう。32ビット版のWindowsを使っているなら、「strings.exe」をそのまま使います。コピーする方法は何通りもありますが、ここではエクスプローラーを使ってZIPファイル内の「strings64.exe」を「C:\Windows\System32\strings.exe」に配置する例を紹介します。
まず、ZIPファイル内の「strings64.exe」を右クリックし、「コピー」をクリックします。なお、以下の画像では拡張子を表示するようエクスプローラーを設定してあります。
「C:\Windows\System32\」に移動し、「貼り付け」ボタンをクリックします。
以下のダイアログが表示された場合は、「続行」をクリックします。
貼り付けられた「strings64.exe」を選択し、「名前の変更」ボタンを押します。
「strings64」を「strings」に書き換えてEnterキーを押します。
以下のダイアログが表示された場合は、「続行」をクリックします。
これで、コマンドプロンプトやPowerShellでstringsコマンドが使えるようになりました。
なお、複数のWindows PCを使っている人なら、OneDriveにコマンドを置くディレクトリを作って置いておくのも良いでしょう。各PCでユーザー環境変数Pathに追加しておけば、どの端末でも同じコマンドが使えます。筆者は以下のように「C:\Users\ユーザー名\OneDrive\bin\」ディレクトリを作り、そこに使いたいコマンドを配置するようにしています。
環境変数Pathには以下のように追加してあります。
大学などの共用PCでWindowsを使っている場合、管理者権限が使えないので「C:\Windows\System32\」には置けないでしょう。OneDriveが使えるなら、上記の方法が使えます。OneDriveも使用できないなら、自分のアカウントで読み書きできるフォルダにコマンドを配置するためのサブフォルダを作成し、環境変数PATHにそのフォルダを追加しておきましょう。
Stringsの使い方
コマンドプロンプトやPowerShellを開き、以下の書式で実行します。
string [オプション] ファイル
このように実行することで、指定したファイルから3文字以上の文字列とみられる部分を出力します。
主なオプションは以下の通りです。
- -a
- アスキー文字のみ検索(デフォルトはアスキー文字とユニコード文字を検索)
- -b
- 検索するバイト数(デフォルトはファイル全体を検索)
- -f
- 検索を開始する位置(デフォルトはファイルの先頭から検索)
- -o
- 各文字列のファイル中の位置を出力
- -n
- 何文字以上を検索対象とするか(デフォルトは3文字以上)
- -s
- サブディレクトリを再帰的に検索
- -u
- ユニコード文字のみ検索(デフォルトはアスキー文字とユニコード文字を検索)
- -nobanner
- 出力冒頭の見出しや著作権情報を出力しない
たとえば以下のように実行すると、「C:\Program Files\Mozilla Firefox\firefox.exe」から「40文字以上の文字列のみ(-n 40)」「ファイル中の位置を出力(-o)」「見出しと著作権表示を省略(-nobanner)」という条件で文字列を抽出します。
strings -n 40 -o -nobanner "C:\Program Files\Mozilla Firefox\firefox.exe"
さらに、以下の画像ではパイプで「findstr」コマンドに渡し、「http」を含む文字列だけを抽出しています。
コメント