【テキストにしてバイナリファイルを送信】Windows10の標準コマンドでuuencode/uudecodeみたいにASCII文字に変換する方法(Base64エンコードデコード)


PC/プログラム/ゲーム/ネット系レポ TOPはこちら

メールに添付せずテキスト(文書)としてデータを送りたい!

昔(199x年頃)、インターネットやそれより前のJUNETなどを使用していた方の中には、メールやニュースでバイナリファイルを送信ために、uuencode, uudecode(uudxやuuexなど)を使って、画像ファイルやプログラム、圧縮ファイルなどの「バイナリーファイル」をASCII文字の「テキスト」に変換して、メール本文に貼り付けて、何通にも分けて送るということをしていた人も多いと思います。

このご時世、そんなことをしなくても、メールに"ひょい"っと添付すればいいのですが、セキュリティーの都合上、添付ファイルの送信を制限されている企業も増えてきています。そんな時、どうしても、ファイルを送らなければいけない事情があるとき、困ってしまうことがあると思います。

昔を知っている人は、「uuencode」「uudecode」などのASCII文字にエンコードしてくれるコマンドがあれば・・・と思いますが、最近ではソフトウェアがパソコンへ自由にインストールできないケースも増えてきています。

そんなとき・・・実はWindowsで標準で入っているコマンドで実現できます。certutil というコマンドで「バイナリーファイル」をASCII文字の「テキスト」に変換できます。

具体的には、エンコードした「テキスト」を「メール本文にCOPY&PASTEで貼り付けて送信」し、そして、「受信したメール本文からCOPY&PASTEで、テキストファイル」に保存し、保存した「テキストファイル」から元の「バイナリーファイル」に戻すことができます。

今回は、その方法をご紹介します。(2021.4.2)

Windowsでのコマンドは certutil -f -encode [変換するファイル名] [出力ファイル名]

「certutil」というコマンドを使用します。BASE64のエンコード・デコードで使用するコマンドです。ファイル名からわかるように、電子証明書関係のコマンドとなります。

・エンコードのコマンド
> certutil -f -encode [Input filename] [Output Filename]

・デコードのコマンド
> certutil -f -decode [Input Filename] [Output Filename]

これを見ただけでわかる人は、以上で説明終わり!となります。

 

ただ、コマンドだけ見せられたってわかるかよ!!ということですので、具体的に細かく記載いたします。

具体的に実施してみましょう

certutil コマンドでエンコードします

例えば、以下の「亀石」の写真(こちら:kameishi.jpg)をASCIIテキストに変換したい場合は、

コマンドプロンプトを開いて

※管理者権限が必要なフォルダで作業する場合は右クリックで、「管理者権限」で起動してください。

 

C:\ に画像ファイル(kameishi.jpg)がある場合を例に、エンコードする例に説明します。

カレントフォルダ を、C:\ へ移動して(> cd \)

コマンドを打ち込みます。

certutil -f -encode kameishi.jpg aaa.txt

と打ち込みます。

そうすると、謎の文字列(ASCII文字)でできた「aaa.txt」というファイルが出来上がります。(これです ⇒ aaa.txt)

中身はこんな感じです。画像ファイルが、ASCII文字に変わりました。

ずーっと続いています。

メール本文に貼り付けて送ります

このテキストファイルの文字列は、メールの本文に貼り付けることができます。

大きいファイルの場合は、1通のメールで送ることができない場合があるため、その場合は、分割して、何通かに分けて送ります。

(手動での添付ファイルの作業を行うイメージです)

メールを受信して、テキストファイルに保存します

受信したメールから、本文をCOPY&PASTEして、テキストファイルに保存します。

適当な名前のテキストファイル(形式は、SHIFT-JIS でいいです)を作って、貼り付けます。

例えば、temp.txt という名前のファイルを作って、そこに受信した本文を貼り付けします。

certutil コマンドでデコードして元に戻す

certutil コマンドを打ち込んでファイルに戻します。

例えば受信した文字列を、D:\temp.txt という名前のファイルに貼り付けて保存した場合、

コマンドプロンプトを起動して、

certutil -f -decode temp.txt output.jpg

を打ち込めば、output.jpg というファイルが出力されます。

※複数ファイルに分けた場合は、戻すときに、貼り付けの順番がわからなくならないように、気を付けてください。

 

これが復元した写真(output.jpg) です。もちろん元と同じです。

この時、出力するファイル名は自由に指定できるのですが、拡張子を含めて、きっちり指定する必要があります。

例えば、元のファイルがZIPファイルの場合、.zip , 画像ファイルの場合は .jpg という具合に、ファイル名を拡張子まで含めて指定します。

おすすめはZIPファイル

おすすめなのはZIPファイルをに圧縮してから、テキストにエンコードすることです。

デコードして、復元したZIPファイルを解凍することで、元のファイル名やフォルダ構成も復元できます。

まとめ

添付ファイルの送付ができず、困ったときは、一度お試しください。

以上です。