파일에서 구분된 텍스트 덩어리를 추출하고 munpack이 이를 디코딩하도록 하려면 어떻게 해야 합니까?

파일에서 구분된 텍스트 덩어리를 추출하고 munpack이 이를 디코딩하도록 하려면 어떻게 해야 합니까?

하드 드라이브 충돌로 인해 복구된 이메일 파일에서 첨부 파일을 복구하려고 합니다. 파일은 본질적으로 Base-64로 인코딩된 첨부 파일을 포함하여 메시지를 연결한 것입니다.

여기에서 검색한 결과 munpack을 사용하여 텍스트 블록을 관련 파일로 변환할 수 있으며 테스트에서 잘 작동하는 것으로 나타났습니다. 그러나 전체 파일을 가져와서 반복하면서 파일을 만나면 청크를 추출할 수는 없는 것 같습니다. 이것이 내가 어떻게 해야 할지 알아내려고 노력하는 것입니다.

이 게시물 두 특정 줄 사이의 텍스트 추출 관련 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는 이메일에 포함된 원본 텍스트 파일이고, "_31415927"은 사용자 정의 경계, emailfmt2.eml은 이메일 헤더입니다.

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 명령을 사용하여 거대한 "이메일"을 생성한 다음 Thunderbird가 이를 가져올 수 있는지 확인하세요. 또는 가져올 수 있는 여러 "이메일"로 분할하세요.

Thunderbird를 호출하지 않고 첨부 파일을 저장하기 위해 명령줄에서 이 작업을 수행할 수 있는지 아직도 궁금합니다.

답변1

각 텍스트 파일의 빈 폴더에서 다음과 같은 것을 실행하려면 uudeview가 필요한 것 같습니다.

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

관련 정보