[ちょっと一息] pdfのpasswordが分からない!

Linux

こんにちは。
梶松です。
今回はちょっと一息という事で、
この間遭遇した出来事で役に立ったものを紹介します。

仕事をしていく中で多くのpdfファイルに触れる事があると思います。
しかし、仕事で触るpdfというのは社内秘だったり社外秘という事で
パスワードがかかってる事があると思います。

でも、みなさん。。。
pdfにパスワードかかってたら、見たくなりますよね?!
梶松は好奇心旺盛なので、なんとしてでも見たくなります。

というわけで、pdfにパスワードがかかってる際に、
このパスワードを解析する際に役に立ったのが
pdfcrack
というものです。

会社でpdfcrackを使う際は、
「パスワードを忘れた際に使用するもの」
という事にしておきましょう。
周りの人に
「特定の偉い人しか見れないpdfをパスワード解析して見てる!」
なんて言いふらしちゃだめですよ!!!

さて、私は仕事ではubuntuとwindowsの二刀流なので、ubuntuで環境を整えました。

apt-get install pdfcrack

これで、環境は整います。
一応探したらwin用もあるみたいですね。

さて、いよいよ使用方法を紹介したいのですが、
その前に、今回私が使用した際の感想としては、
パスワードの文字数を指定して解析させる方法が、
正解のパスワードにたどり着くまでにかかった時間が
短かった気がしました。

=========[2019/05/26 追記]=========
今回、私はパスワードの文字数を指定して解析させておりましたが、
これは定期的に見ているpdfで毎回passwordがかかっており、
だいたいのpasswordの文字数が予想できる状態でありました。
そのため文字数を指定して解析させる方法が正解のパスワードに
たどり着くまでに要する時間が短かったと書いております。
通常ですと文字数も想定がつかないため要する時間は、
非常に大きなものになるかもしれません。
今回は特殊な環境下での解析でした。
その旨記載しておらず、申し訳ありません。
=============================

では、

% pdfcrack
Usage: pdfcrack -f filename [OPTIONS]
OPTIONS:
-b, --bench perform benchmark and exit
-c, --charset=STRING Use the characters in STRING as charset
-w, --wordlist=FILE Use FILE as source of passwords to try
-n, --minpw=INTEGER Skip trying passwords shorter than this
-m, --maxpw=INTEGER Stop when reaching this passwordlength
-l, --loadState=FILE Continue from the state saved in FILENAME
-o, --owner Work with the ownerpassword
-u, --user Work with the userpassword (default)
-p, --password=STRING Give userpassword to speed up breaking
ownerpassword (implies -o)
-q, --quiet Run quietly
-s, --permutate Try permutating the passwords (currently only
supports switching first character to uppercase)
-v, --version Print version and exit

こんな感じで一応ヘルプは出てきます。

私が使用した方法としては、パスワードの文字数を指定して
解析させるという方法です。
ヘルプでいうところの、-nと-mにあたるものですね。
イメージとしては、

-n <= password文字数 <= -m

こんな感じになると思います。

パスワードが5文字以上であれば

pdfcrack -f filename -n 5

パスワードが5〜7文字という事が分かっているのであれば

pdfcrack -f filename -n 5 -m 7

としてあげれば良いし、
パスワードが7文字以下という事であれば

pdfcrack -f filename -m 7

のように、最大値だけ指定してあげれば良いです。

 

次は-cオプションについてです。

-c, –charset=STRING Use the characters in STRING as charset

これはつまり、”STRING”のところに記載している文字を使用して
passwordを探していくという事になります。
ここで気をつけるのは、”as charset”なので、
”文字列”ではなく”文字単体”として使用されるという事です。

例えば、

pdfcrack -f filename –charset=kajimatsu

とした場合、”kajimatsu”で使用されているアルファベット8個を使って
パスワードを解析していくという事になります。
なので、数学でいう所の8の階乗個のパスワードの組み合わせで
解析を行なう事になると思います。
8の階乗個→8×7×6×5×4×3×2×1=40320個
これをすると、PCのの性能によっては少し処理に時間がかかるかもしれません。

 

次は「-w」オプションです。

-w, –wordlist=FILE Use FILE as source of passwords to try

これから解析しようとするパスワードが一般的に流通してる言葉(どら○えもん、のび○くん、など)であると仮定して
辞書ファイルから探していくというものです。
ちなみに辞書ファイルとは、いろんな単語が詰まったもの、つまり広辞苑みたいなものだと思えば良いと思います。

 

「-o」「-u」オプションです。
oはownerで、uはuserで、それぞれのパスワードを解析できるみたいです。
ただ、ここで疑問が。。。
そもそも、pdfにownerとかuserってあるのか???
このオプションはよくわからんかったです。

「-p」は、”–password=STRING”のSTRINGに、userのパスワードを入れたら
オーナーのパスワードの捜索時間が短くなるとか???
やっぱりpdfのオーナーだったりユーザーがわからん。

=========[2019/05/26 追記]=========
オーナー・ユーザーパスワードがわかりましたので、追記します。
ユーザーパスワードとは、文書を開く際に
必要になるpasswordの事を、
オーナーパスワードとは様々な権限(印刷、編集など)の
制限に必要なpasswordの事を指すようです。
=============================

 

まぁ使うオプションもこんなもんだと思います。

ぜひぜひ、見たいpdfにパスワードかかってたら、
こっそり試してみてくださいね!!!
*あくまでも悪用しないようお気をつけてください!
*悪用して怒られても梶松は責任を取りません!!!

IT
全部めんどいけんAnsibleで自動化しよ?❤️

みなさま、こんばんわ。梶松です。 タスクに追われ、更新が不定期ですが、梶松は元気です。 最近は7pa …

Linux
【危険】インフラエンジニア の爆弾投下

  どうも梶松です。 会社も残すところ数日…GWまで長いですね。もういいや全部 …

Linux
【LPIC Level1】環境準備①

まず、Linuxの勉強をするためにはLinuxがなくては話にならない ということでサクッとLinux …