ワタタツの日記
2006 年 9 月 3 日 (日)
☆ 巧妙 SPAM 来了。
最近メールの本文が全て base64 エンコードされていて、なおかつ Subject: ヘッダや From: ヘッダに書いてあるマルティバイトはエンコードされてなくて生になっているのでぐちゃぐちゃに文字化けという SPAM がくるようになりました! 問題は本文です。base64 はデコードせずに bogofilter に渡しているので、全く SPAM 判定されません。Quit or die! (やめるか死んで!)
「base64 部分だけ base64 デコード」するのって base64 コマンドじゃできないみたい(全体がされてしまう)ので、簡単なコマンドを書かないといけないのかな。
※ 以上の記事は「標準入力の base64 部分だけ base64 デコードして標準出力にはいてくれるコマンドをご存知の方募集」と読みます。
☆ Yahoo! JAPAN - 大人のためのドラえもん特集
おおーいいねー。
nkf -mB とかはだめですか?
それだとメール全体が base64 だと思ってデコードされてしまうんですよねー。切り出して部分的に nkf -mB をかけるスクリプトを書くしかないのかなあ。
uudeview はどうでしたっけ?同じかな。
uudeview は初めて使ってみましたが、うまくいきませんでした。標準入力として得て、標準出力に出すというのができないかもしれません。ちなみに uudecode だと<br>begin 行がありません<br>と言われてしまいました(ToT)
/dev/stdin /dev/stdout を使うとか。でも、perlでちょちょっとかいたほうがはやいかも。
perl -ne 'use MIME::Base64;s/\=\?([^\?]+)\?B\?(.+)\?\=/decode_base64($2)/iE'<br><br>とかじゃだめ?いま適当に書いたので見当外れならごめん。
コマンドはご存じないのだが、<br>最近、本文はまっとうで関係ない画像の広告がついた<br>SPAMが多数来てお手上げ気味。
のくすさん、<br>/dev/stdin /dev/stdout を使っても base64 部分を置き換えたものを出すことはできなかったのです。<br>base64 部分だけを抜き出してファイルにすることは出来ます。(本来の使い方)<br>uudeview はインタラクティブに使うのにはよさそうだけどなあ。今回の問題にうまく使えるのかなあ。<br><br>あと、perl コマンドありがとう! これは<br>perl -pe で(バックスラッシュ円問題のため中略)/ie'<br>という意味だとして、これは Subject や From フィールドなんかが base64 エンコードされていた場合にデコードできるけど、<br>それをデコードするなら単に nkf -m で OK なのです。<br>今回の SPAM は、<br>ヘッダ → Subject フィールドにはエンコードされてない生文字があるものなので<br>本文 → 全体が MIME エンコードされていてこれをデコードして SPAM 判定させたい<br>という状況です。<br><br>か・わはーらさん、<br>画像の広告のみにするとは考えたなあ。SPAM フィルタに OCR 組み込まないと(T_T)<br>ちなみに本文はどんなものですか?