ファイルからすべてのBase64チャンクを削除します。

ファイルからすべてのBase64チャンクを削除します。

約20年間のUsenetアーカイブをarchive.orgにアップロードしようとしましたが、一部のアーカイブにBase64でエンコードされたトロイの木馬が含まれているため、最初のアーカイブの配置が拒否されています。処理するファイルが400GB程度あるため、手動での回復はできません。すべてのファイルはプレーンテキストのmbox形式です。私の最初の考えは、mboxファイルで「Content-Type:application / x-msdownload」を含むすべてのメッセージを見つけて置き換えることでした。これはかなり難しいかもしれません。今、より簡単な無差別アプローチは、すべてのBase64チャンクを削除することだと思います。

~からこの問題grepを使用してbase64チャンクを見つけることができることはわかりましたが、sedを使用して同じものを設定する方法がわからないので、質問します。ありがとうございます!

編集:これまでに試したこと

これによるとページ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$base64テキストを見つけるために必要な正規表現として推定されますが、sedで使用しようとすると、実際には機能しないか、少なくとも予想していたものとは異なります。

例:

cat clari.local.california.sfbay.biz.mbox | sed -e '#^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$#d' > clari.local.california.sfbay.biz.mbox.test

clari.local.california.sfbay.biz.mbox.testにはまだbase64テキストが含まれています。

ベストアンサー1

MUA(メールユーザーエージェントmutt)は、MIMEタイプごとにメールボックスからメッセージを削除できます。これをスクリプトとして書くこともできます。

エンコードされた添付ファイルを含むメッセージはmutt検索式と一致することがあります~M application。これはapplication通常、添付ファイルがエンコードされたことを示すMIMEタイプstringを含むすべてのメッセージと一致します(base64可能)。application/x-msdownload必要に応じて、明らかにより具体的なものを使用できます。

メールボックスが呼び出されると、messages.mboxコマンドライン文字列を含む添付ファイルを含むすべてのメッセージを次のように削除できます。application

mutt -e 'push <delete-pattern>"~M application"<enter><quit>"y"' -f messages.mbox

メールボックスからメッセージを削除する前に確認メッセージは表示されません(最後は、"y"終了する前にメッセージを削除するかどうかに関する質問に対する回答です)。muttメッセージを別のメールボックスに移動できます。

mutt -e 'push <tag-pattern>"~M application"<enter><tag-prefix><save-message>bad.mbox<enter>"y"<quit>"y"' -f messages.mbox

これは、指定された検索式に一致するすべてのメッセージを表示してメールボックスに保存し、元のメールボックスbad.mboxから削除して終了します。

おすすめ記事