하드 드라이브 충돌로 인해 복구된 이메일 파일에서 첨부 파일을 복구하려고 합니다. 파일은 본질적으로 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