ファイルから区切られたテキストの塊を抽出し、munpackにそれをデコードさせるにはどうすればよいですか?

ファイルから区切られたテキストの塊を抽出し、munpackにそれをデコードさせるにはどうすればよいですか?

ハードドライブの競合のために回復された電子メールファイルから添付ファイルを回復しようとしています。ファイルは、基本的にBase-64でエンコードされた添付ファイルを含むメッセージをリンクしたものです。

ここで検索した結果、munpackを使用してテキストブロックを関連ファイルに変換でき、テストでうまく機能することがわかりました。しかし、ファイル全体をインポートして繰り返しながらファイルに会えばチャンクを抽出することはできないようです。これが私が何をすべきかを理解しようとすることです。

この投稿 2 つの特定の行間のテキストの抽出 関連するBase-64でエンコードされたテキストチャンクを抽出してファイルに入れる方法が提案されているようです。

私の試みはcat test.txt | sed -n "/Content-Type: image/,/--=/p" > test2.txt 行を使用してから test2.txt で munpack を実行することでした。

私が使用している末尾の区切り記号(--または------または-=_)に応じて、ファイルの最初の画像のみを取得するか、test2.txtのコピーを取得します。

ここでは、他の検索やGoogle検索では結果が出ませんでした。

他の人も以前にこの問題を経験したことがあるようです。誰でも私に解決策を教えてもらえますか?

ティア、マット

PSファイルをThunderbirdにインポートしようとしましたが、メッセージとしてのみ表示されます。だからこのアプローチは試みられましたが、悲惨に失敗しました。

アップデート1:もちろんこれはパッチワークですが、次のように動作します。

cat test.txt | sed -n '/^Content-Type: image/,/--.*/ p' > test1.txt
cat test1.txt | sed 's/--.*/--_31415927/' > test2.txt
cat emailfmt2.eml test2.txt > test_images.eml

ここでtest.txtはEメールに含まれる元のテキストファイル、「_31415927」はカスタム境界、emailfmt2.emlはEメールヘッダーです。

Date: Sun, 01 Jul 2027 00:00:00 +0000
Subject: Test format
From: [email protected]
To: [email protected]
Content-Type: multipart/mixed; boundary="_31415927"

--_31415927
Content-Type: text/plain; charset="UTF-8"; format=flowed; delsp=yes

test format...

--_31415927

だから私がここでやっていることは、(理想的には)「イメージ」タグの間のすべてを収集し、別のボーダーマーカーをカスタムボーダーマーカーに置き換えることです。その後、この結果は電子メールテンプレート(emailfmt2.eml)に追加されます。

生成された.emlファイルをThunderbirdにインポートすると、すべてのアイテムが自動的に添付ファイルとして解析されます。少なくともT-birdはこの問題を処理できます。 (しかし、T-birdがGIFファイルを表示していないようです。または、少なくともGIFファイルをうまく処理するように設定していないようです)。

munpackがどのように機能するかを調べようとしたことはありませんが(そうでしょうか?)、今は始まりです。

アップデート2:上記で修正されたマイナーな編集/入力エラー。また、テストする必要がある区切り文字は次のとおりです。

--.*

一部のメッセージには「--Boundary[...]」などの境界があるためです。

10MBファイルのテストでは、ThunderbirdがGIF以外のコードを処理できることがわかりました。つまり、生成された偽の電子メールメッセージをJPEG、PDF、および.XPIファイルに正しくインポートします。

munpackがコマンドラインでこれらすべてを処理する方法(あなたが遭遇するすべてのファイルを保存する)を見つけることができない場合、残りのプロセスにはすべてのRunに対してすべての.txtファイルへのシンボリックリンクをフォルダに入れることが含まれていると思います。このファイルに対して上記のcat / sedコマンドを使用して巨大な「Eメール」を生成し、Thunderbirdがそれをインポートできることを確認してください。または、インポートできる複数の「Eメール」に分割します。

Thunderbirdを呼び出さずに添付ファイルを保存するためにコマンドラインでこれを行うことができるかどうかはまだ疑問に思います。

答え1

各テキストファイルの空のフォルダで次のようなものを実行するにはuudeviewが必要です。

for file in $(find /path/to/drive -iname "*.txt"); do
  uudeview -i -a -d +o "$file"
done

関連情報