python :: 파일을 base64로 인코딩/디코딩
2010/06/03 20:33
몇몇 이메일 서버는 파일 첨부를 막은 경우가 있습니다. 선배가 다니는 회사의 사내 이메일 서버가 그렇더라구요. 그런데도 불가피하게 파일을 첨부해야한다면, base64로 인코딩해서 나오는 텍스트를 메일로 보내면 해결됩니다. 원래 이메일의 파일 첨부는 base64로 인코딩되어서 전달되니까요. 메일 수신자는 텍스트를 base64로 디코딩하면 파일을 얻을 수 있죠.
저런 이유로 예전에 심심풀이로 python으로 만든 프로그램입니다. 간혹 포렌식 문제를 풀 때 이 프로그램이 도움이 되곤 했네요.
사용법은 간단합니다. 인코딩할 때는 -e 옵션을 주고, 디코딩할 때는 -d 옵션을 줍니다. 인/디코딩 옵션 뒤에는 원본 파일 혹은 텍스트 파일의 경로를 입력합니다. 그 뒤에 -o 옵션을 입력한 다음에 출력할 파일의 경로를 입력하면 됩니다.
(예제)
$Base64EnDecoder.py -e summary.doc -o summary.txt
$Base64EnDecoder.py -d summary.txt -o summary.doc
Base64EnDecoder.py
#!/usr/bin/python
import sys
import base64
def error_handle():
print '[+] use: $python Base64EnDecoder.py -e [file] -o [file]'
print '[+] use: $python Base64EnDecoder.py -d [file] -o [file]'
sys.exit(1)
if len(sys.argv) != 5:
error_handle()
try:
input = open(sys.argv[2], 'rb').read()
except:
print '[*] error: file does NOT exist.'
sys.exit(1)
try:
if sys.argv[1] == '-e':
data = base64.b64encode(input)
elif sys.argv[1] == '-d':
data = base64.b64decode(input)
else:
print '[*] error: input option is \'-e\' or \'-d\'.'
error_handle()
except:
print '[*] error: incorrect padding'
sys.exit(1)
if sys.argv[3] == '-o':
output = open(sys.argv[4], 'wb')
output.write(data)
else:
print '[*] error: output option is \'-o\'.'
error_handle()
"0x08 과거의 글모음 / 내 머리 속의 노트" 분류의 다른 글
| 블로그(텍스트큐브) 서버를 직접 만들어보기 - OS & Package 설치 | 2011/02/16 |
| C/Linux :: 리눅스에서 파일 덤프... dump.c | 2010/12/05 |
| C/Linux :: ls -l 을 수행하는 ll.c | 2010/10/30 |
| python :: Socket Communication with Thread | 2010/10/10 |
| 리눅스(우분투)에서 부경대학교 무선랜 접속하기 | 2010/07/19 |
Trackback Address:http://hisjournal.net/blog/trackback/319
관리자만 볼 수 있는 댓글입니다.