分かりやす〜い
コンピュータ技術情報

TOPに戻る
▼Network
Badtrans.Bウィルスとは?
┣ HTMLメールと
┃ MIMEヘッダ

┣ 5つのパート
┣ HTMLメールを改造する
┗ IEのバグ

Copyright(C) 2001-2002.ugpop. All rights reserved.




■デジタル用語辞典:

■ 5つのパート ■

前回はHTMLメールにファイルを添付して送信した時のメールの
内容について少しだけ説明しました。
「Content-Type〜」を「MIME(Multipurpose Internet Mail
Extensions encoding)ヘッダ」と言い、このヘッダがある部分
はそれぞれ別々のパートに分かれているという事の説明をしま
した。
HTMLメールにファイルを添付して送信した場合、5つのパート
に分けられる事の説明を行い、パート1の部分について説明を
行ないました。
今回は5つのパートの内の、パート2以降の説明を行ないます。

まずは5つのパートをもう1度見てみましょう。

−−↓ここから−−−−−−−−−−−−−−−−−−−−−−−−
パート1
┌────────────────────────────┐
│Content-Type: multipart/mixed;←●MIMEヘッダ      │
│ boundary="----=_NextPart_000_000D_01C1ADAD.89FB9BC0" │
└────────────────────────────┘

パート2
┌────────────────────────────┐
│------=_NextPart_000_000D_01C1ADAD.89FB9BC0       │
│Content-Type: multipart/alternative;←●MIMEヘッダ   │
│ boundary="----=_NextPart_001_000E_01C1ADAD.89FB9BC0" │
└────────────────────────────┘

パート3
┌────────────────────────────┐
│------=_NextPart_001_000E_01C1ADAD.89FB9BC0       │
│Content-Type: text/plain; ←●MIMEヘッダ        │
│ charset="iso-2022-jp"                 │
│Content-Transfer-Encoding: quoted-printable       │
│ こんにちは                      │
└────────────────────────────┘

パート4
┌───────────────────────────────┐
│------=_NextPart_001_000E_01C1ADAD.89FB9BC0          │
│Content-Type: text/html;←●MIMEヘッダ            │
│ charset="iso-2022-jp"                    │
│Content-Transfer-Encoding: quoted-printable          │
│                               │
│<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">│
│<HTML><HEAD>                         │
│<META http-equiv=3DContent-Type content=3D"text/html; =    │
│charset=3Diso-2022-jp">                    │
│<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>   │
│<STYLE></STYLE>                        │
│</HEAD>                            │
│<BODY bgColor=3D#d8d0c8>                   │
│<DIV><FONT size=3D2>こんにちは</FONT></DIV></BODY></HTML>   │
│                               │
│------=_NextPart_001_000E_01C1ADAD.89FB9BC0--         │
└───────────────────────────────┘

パート5
┌───────────────────────────────┐
│------=_NextPart_000_000D_01C1ADAD.89FB9BC0          │
│Content-Type: application/x-msdownload;←●MIMEヘッダ     │
│ name="readme.exe"                      │
│Content-Transfer-Encoding: base64               │
│Content-Disposition: attachment;               │
│ filename="readme.exe"                    │
│                               │
│TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA│
│AAAA4AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW│
│ZGUuDQ0KJAAAAAAAAACTomL518MMqtfDDKrXwwyquNwHqtbDDKq43AaqzMMMql│
└───────────────────────────────┘
−−↑ここまで−−−−−−−−−−−−−−−−−−−−−−−−

パート1は「パート2とパート5は、複数の種類のContent-
Typeが混合(mix)していますよ。」という意味になる事は前回
説明しました。

次にパート2の説明を行ないます。

パート2
┌────────────────────────────┐
│------=_NextPart_000_000D_01C1ADAD.89FB9BC0       │
│Content-Type: multipart/alternative;←●MIMEヘッダ   │
│ boundary="----=_NextPart_001_000E_01C1ADAD.89FB9BC0" │
└────────────────────────────┘

「boundary・・・」の部分はパート3とパート4の物を示して
います。

パート3の先頭部分
┌────────────────────────────┐
│------=_NextPart_001_000E_01C1ADAD.89FB9BC0       │

パート4の先頭部分
┌───────────────────────────────┐
│------=_NextPart_001_000E_01C1ADAD.89FB9BC0          │


パート2のboundaryで指定されたラベルと同じ物ですね。
つまり、「パート2のMIMEヘッダはパート3とパート4につい
て説明していますよ。」という事を表しています。

「Content-Type」の部分は「multipart/alternative」となっ
ています。
「alternative」とは、「どちらか選択してください。」とい
う意味です。

つまり、「メーラーで表示する時はパート3とパート4のどち
らか選択して表示してくださいね。」という意味になります。

何故パート3とパート4を選択するの?

という疑問が起きますが、先にパート3・4の説明をさせてく
ださい。

パート3
┌────────────────────────────┐
│------=_NextPart_001_000E_01C1ADAD.89FB9BC0       │
│Content-Type: text/plain; ←●MIMEヘッダ        │
│ charset="iso-2022-jp"                 │
│Content-Transfer-Encoding: quoted-printable       │
│ こんにちは                      │
└────────────────────────────┘

MIMEヘッダが「Content-Type: text/plain」となっています。
これは、「このパートはテキスト平文ですよ。」という事を表
しています。

「charset」とはテキストの文字コードの種類を表し、「Cont-
ent-Transfer-Encoding」はテキストを実際に送信する時に変
換する変換形式の種類を表しています。

このパートではテキストで「こんにちは」と表示するようにな
っています。

次にパート4の説明です。

パート4
┌───────────────────────────────┐
│------=_NextPart_001_000E_01C1ADAD.89FB9BC0          │
│Content-Type: text/html;←●MIMEヘッダ            │
│ charset="iso-2022-jp"                    │
│Content-Transfer-Encoding: quoted-printable          │
│                               │
│<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">│
│<HTML><HEAD>                         │
│<META http-equiv=3DContent-Type content=3D"text/html; =    │
│charset=3Diso-2022-jp">                    │
│<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>   │
│<STYLE></STYLE>                        │
│</HEAD>                            │
│<BODY bgColor=3D#d8d0c8>                   │
│<DIV><FONT size=3D2>こんにちは</FONT></DIV></BODY></HTML>   │
│                               │
│------=_NextPart_001_000E_01C1ADAD.89FB9BC0--         │
└───────────────────────────────┘

MIMEヘッダが「Content-Type: text/html」となっています。
これは、「このパートはHTML(Hyper Text Markup Language)で
すよ。」という事を表しています。

「charset」とはHTMLの文字コードの種類を表し、「Content-
Transfer-Encoding」はHTMLを実際に送信する時に変換する変
換形式の種類を表しています。

このパートではHTMLで「こんにちは」と表示するようになって
います。(HTMLの細かい説明についてはこの講座の趣旨とはず
れてしまう為省略させていただきます。)

Outlook Expressは、このHTMLを上の様なテキストで表示する
のではなく、ちゃんとしたWEBページの様に表示する為に、内
部でインターネットエクスプローラを起動します。
そしてインターネットエクスプローラが上記のHTML文を翻訳し、
WEBページの様に表示してくれるのです。

さて、パート3、パート4の説明が終わったので先ほどの疑問

何故パート3とパート4を選択するの?

について説明します。

すでにお分かりの方もいらっしゃるかもしれませんが、パート
3はテキストメールを表示する時に使用され、パート4はHTML
メールを表示する時に使用されます。

メーラーによってはHTMLメールの表示をサポートしていない物
もあります。そういったメーラーはパート3のテキストメール
を表示し、HTMLメールをサポートしているメーラーはパート4
のHTMLメールを表示するよう動作します。

これはメーラーが自動的に選択してくれるのですが、更にHTML
メールをサポートしているメーラーであっても、ユーザーがそ
の機能を使わないように設定すれば、やはりHTMLメールは表示
されないようにする事が出来ます。
この場合もテキスト平文のメールが表示されるようになります。

ユーザーによっては「セキュリティの面で不安」という理由で
HTMLメールを好まない人も少なからずいるのです。
(メールウィルスはHTMLメールで感染する物が多い。)


最後にパート5の説明をします。

パート5
┌───────────────────────────────┐
│------=_NextPart_000_000D_01C1ADAD.89FB9BC0          │
│Content-Type: application/x-msdownload;←●MIMEヘッダ     │
│ name="readme.exe"                      │
│Content-Transfer-Encoding: base64               │
│Content-Disposition: attachment;               │
│ filename="readme.exe"                    │
│                               │
│TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA│
│AAAA4AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW│
│ZGUuDQ0KJAAAAAAAAACTomL518MMqtfDDKrXwwyquNwHqtbDDKq43AaqzMMMql│
└───────────────────────────────┘

MIMEヘッダが「Content-Type: application/x-msdownload」と
なっています。
これは「マイクロソフトのアプリケーションですよ。」という
意味を表します。

1行下の「name=・・・」の部分はアプリケーション名を表し、
「Content-Transfer-Encoding」はアプリケーションファイル
を実際に送信する時に変換する変換形式の種類を表しています。

「Content-Disposition: attachment」とは、「このデータは
は添付されたもので添付ファイル名は"readme.exe"ですよ。」
という意味を表します。

1番最後のわけの分からない文字列はreadme.exeのプログラム
コードです。(正確にはプログラムコードをbase64変換した物)

以上でファイルを添付したHTMLメールの中身の説明が終わりま
した。

尚、普通のメール(単なるテキストだけのメール)の場合、こ
こで説明した様に複数のパートに分かれる事はありません。

テキストだけのメールの場合、パートは1つだけで、「Conte-
nt-Type: text/plain」(テキスト平分)のパートのみとなり
ます。

ここで説明した例はHTMLメールというやや特殊なメールに、更
にファイルを添付しているという状態でメールを送信した場合
の例となっているのでパートが複数あるのです。

そして実はBadtrans.Bが送信するメールがこの例で説明したメ
ール形式に近い物となっています。

今回は正常なHTMLメール+添付ファイルの場合の説明を行ない
ましたが、次回はこのメールを改造して少しずつBadtrans.Bに
近づけていこうと思います。



←前へ戻る    ▲このページの上へ    続きを読む→

▲このページの上へ

▲このページの上へ