1−1.メールコード(Base64形式)変換ツール



Eメールで添付ファイル(アタッチメント)が送られてきたときに、そのファイルを開くと訳の分からない暗号のようなものが書かれている場合があります。
そのパターンはたくさんあると思いますが、ここでは実際に私が受け取った添付ファイルから復元したツールを紹介したいと思います。

他に、次のツールを作成しました。
    1−2.JIS→SJISコード変換ツール(Ver 2.80 1999/3/13)
       ・円グラフ(サンプル)      (Ver 4.20 2000/10/30)


<環境>

<送信した添付ファイル>
写真データ(JPG形式、36枚、約2MB)をLHAで圧縮したもの。

<受け取った添付ファイルの内容>
ZYbgCx7c7r5ajiuksW2/iCEZWiq96uZGr9cWj6/+IHR16u0ScTwDgsGszCwoCHSYmmQ7nMad
...


     モジュール名:codechan, codechan2
    (ただしWIN32版の実行にはGNU-Win32 runtime DLL(例:cygwin.dllなど)が必要です。)

このツールが欲しい方はメールでご連絡ください。


<使用方法>
今回、受け取った添付ファイルをIFile1.txt,IFile2.txt,...,IFile56.txtとし(実際56ファイルに分割されてきた)、出力ファイル(LZH方式)をOFile.lzh、中間ファイルをDum.txt,TmpFile.txtとする。

$ codechan IFile1.txt Dum.txt
$ cat Dum.txt >> TmpFile.txt
...(上の2命令を56ファイル分繰り返した)

$ codechan2 TmpFile.txt OFile.lzh



<説明>
まず、受け取った添付ファイルの内容を見てもらうと、使用されている文字が
A 〜 Z, a 〜 z, 0 〜 9, +, /
であることがわかる。これを数えてみると、64個(2^6)である。
で、これは1バイト(8ビット)を6ビットに変換したことがわかる。
これを元に戻すために、どの文字がどういう値になるか調べると、以下の表の様になることがわかった。

6ビット文字コード対応表
0123456789ABCDEF
0ABCDEFGHIJKLMNOP
1QRSTUVWXYZabcdef
2ghijklmnopqrstuv
3wxyz0123456789+/

この時、縦が上位で横が下位になる。例えば’m’という文字は、0x26である。

後はこの表を見て、
  1. 添付ファイルの文字を2進数コード化する。(codechan)
    (変換後の中間ファイルの例)
    0110010110000110111000000000101100011110110111001110111010111110010
    1101010001110001010111010010010110001011011011011111110001000001000
    ...
  2. コードを8ビットずつ読み、バイナリ化する。(codechan2)
と、lzhファイルができる。
ここでモジュールを2つにしたのは、送られてきた添付ファイルが今回のようにいくつかにわかれても、中間ファイルを1つにまとめる事で対応できるようにしたためである。

他の変換パターンも、文字とコードの対応がわかれば簡単にできると思う。


KEIJI『公開図書館』の掲示板 〜ご意見・ご感想などはこちらへ

POSTメールはこちらへ

>>> 本を閉じる <<<
MARK