Files
diw/base64Decoder.py

31 lines
209 KiB
Python
Raw Normal View History

import base64
import re
charBinData = b'<BINDATA Encoding="Base64" Id="2" Size="212563">0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAADAAAAAQAAAAAA AAAAEAAA/v ///wAAAAD+////AAAAAAAAAAAUAAAAFQAAAP////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// ///////////////////////////////////9/////v///wMAAAAEAAAABQAAAAYAAAAHAAAA CAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAA/v////3/ ///9////FwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAA IwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAA AAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAA PgAAAD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAEgAAABJAAAASgAAAEsA AABMAAAATQAAAE4AAABPAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAA WQAAAFoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAAAGYA AABnAAAAaAAAAGkAAABqAAAAawAAAGwAAABtAAAAbgAAAG8AAABwAAAAcQAAAHIAAABzAAAA dAAAAHUAAAB2AAAAdwAAAHgAAAB5AAAAegAAAHsAAAB8AAAAfQAAAH4AAAB/AAAAgAAAAFIA bwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAWAAUA//////////8CAAAAN6E9TJDcuUeb7Vna41KigAAAAAAAAAAAAAAAAAAA AAAAAAAA/v///wAAAAAAAAAAQwBvAG4AdABlAG4AdABzAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAgD///////////////8AAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAWiMAAAAAAAACAE8AbABlAFAAcgBlAHMA MAAwADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAACAQEA AAADAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAAA6HgIA AAAAAE8ATwBYAE0ATABDAGgAYQByAHQAQwBvAG4AdABlAG4AdABzAAAAAAAAAAAAAAAAAAAA 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 AQD///8AAQCMjIw
# 파일을 읽어들입니다.
with open('./chartBinData', 'rb') as file:
encoded_data = file.read()
# encoded_data 내에 존재하는 <BINDATA ...> ... </BINDATA> 태그를 찾아서 삭제
# <BINDATA ...> 태그는 base64 디코딩을 수행할 때 오류가 발생하므로 삭제합니다.
# <BINDATA ...> 태그와 그 내부 내용을 삭제합니다.
charBinData = re.sub(b'<BINDATA.*?>', b'', charBinData)
charBinData = charBinData.replace(b'</BINDATA>', b'')
# base64 디코딩을 수행합니다.
decoded_data = base64.b64decode(charBinData)
# print(decoded_data)
# 디코딩된 데이터 내용 중 xml 형식만 추출할 때 <c:chartSpace>, </c:chartSpace> 사이의 데이터만 추출.
start = decoded_data.find(b'<?xml')
# print(start)
end = decoded_data.find(b'</c:chartSpace>')
# print(end)
xml_data = decoded_data[start:end+len(b'</c:chartSpace>')]
# 디코딩된 데이터를 파일로 저장합니다.
with open('ext_BinData.xml', 'wb') as file:
file.write(xml_data)
print("Decoding complete. Decoded data saved to 'decoded_chartBinData'.")