python 을 사용 하여 위 챗 이미지 아래.dat 파일 을.png 로 복호화 하 는 방법

청소 소프트웨어 로 컴퓨터 쓰레기 를 청소 할 때 위 챗 에 많은 그림 이 저장 되 어 있 는 것 을 발 견 했 습 니 다.경로 에 들 어가 보 니 모두.dat 형식 으로 된 파일 입 니 다.
微信图片储存的格式
접미사 이름 을 직접.dat 에서.jpg 와.png 로 바 꾸 려 고 했 지만 열 리 지 않 았 습 니 다.일이 그리 간단 하지 않 은 것 같 았 습 니 다.그리고 바로 어머니 를 찾 아 코드 를 찾 았 습 니 다.다음은 한 걸음 한 걸음 살 펴 보 겠 습 니 다.
위 챗 클 라 이언 트 가 저장 하 는 경 로 는 보통 이 렇 습 니 다.찾 을 수 있 을 거 라 고 믿 습 니 다.
F:\Users\Tencent Files\WeChat Files\wxid_\FileStorage\Image\2020-11
在这里插入图片描述
안에.dat 형식의 물건 이 저장 되 어 있 는 것 을 발견 할 수 있 습 니 다.위 챗 에 저 장 된 이 형식 은 16 진법 으로 저장 되 어 있 기 때문에 16 진법 을 볼 수 있 는 소프트웨어 가 필요 합 니 다.있 으 면 더 좋 습 니 다.없 으 면 마이크로소프트 에서 나 온 텍스트 편집기,공식 링크 를 추천 합 니 다.https://www.ultraedit.com/
在这里插入图片描述
그것 으로 우리 의.dat 파일 을 열 수 있 습 니 다.열 면 이 모양 을 볼 수 있 습 니 다.그림 에 빨간색 이 표 시 된 위 치 를 주의 하 세 요.바로 이 파일 의 시작 부분 입 니 다.어느.dat 파일 을 열 어도 시작 하 는 네 개의 수 는 똑 같 습 니 다.(당신 의 4 개의 수 는 나의 것 과 다 를 수 있 습 니 다.아주 정상 적 입 니 다.마치 마이크로 신호 와 같 지만 당신 의.dat 파일 은 모두 특정한 4 개의 숫자 로 시작 합 니 다)이 네 개의 수 는 자 물 쇠 를 푸 는 열쇠 에 해당 한다.
在这里插入图片描述
우 리 는 16 진 을 열 수 있 는 소프트웨어 로.jpg 를 열 었 을 때.jpg 의 형식 이 모두 FFD 8 로 시작 되 고 똑 같이.png 의 것 도 FFD 8 이라는 것 을 발견 할 수 있 습 니 다.
在这里插入图片描述
네 자리 열쇠 로 FFD 8 과 다른 연산 을 하면 잠 금 해제 비밀 번 호 를 얻 을 수 있 습 니 다.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
이 또는 연산 의 결 과 는 16 진법 의 네 자리 이지 만 우 리 는 마지막 두 자리 만 필요 하 다.그래서 결국 16 진법 의 두 자릿수 를 얻 었 다.그것 을 기억 해라,뒤에 쓸 것 이다.
준비 작업 은 여기까지 입 니 다.다음은 코드,python 언어 입 니 다.
당신 이 고 쳐 야 할 곳 은 세 가지 가 있 습 니 다.(코드 에 해당 하 는 주석 이 있 습 니 다)
두 경로:.dat 의 경 로 를 복호화 후 파일 을 저장 할 경 로 를 모두 자신의 것 으로 바 꿉 니 다.
하나의 값:내 비밀번호 대신 당신 의 비밀번호(두 자릿수)를 사용 하 세 요.

import os

def imageDecode(dat_dir,dat_file_name):
 dat_read = open(dat_dir, "rb")
 if not os.path.exists(target_path):
 os.makedirs(target_path)
 out=target_path+"\\"+dat_file_name+".png"
 png_write = open(out, "wb")
 for now in dat_read:
 for nowByte in now:
 newByte = nowByte ^ xor_value
 png_write.write(bytes([newByte]))
 dat_read.close()
 png_write.close()

def findFile(dat_path):
 fsinfo = os.listdir(dat_path)
 for dat_file_name in fsinfo:
 temp_path = os.path.join(dat_path, dat_file_name)
 if not os.path.isdir(temp_path):
 #print('    : {}' .format(temp_path))
 imageDecode(temp_path,dat_file_name)
 else:
 pass
  
if __name__=='__main__':

 #   .dat       
 dat_path = r'F:\Users\Tencent Files\WeChat Files\wxid\FileStorage\Image\2020-04'
 
 #      png        
 target_path = r'F:\Users\Tencent Files\WeChat Files\image'
 
 #         ,             B2, xor_value = 0xB2,0x  16  
 xor_value = 0xB2
 
 findFile(dat_path)
 print("end")
실행 한 후에 출력 은 모두 하나의 그림 이 있 고 직관 적 이 며 명료 하면 자신 이 원 하 는 그림 을 저장 하고 필요 하지 않 은 것 을 정리 할 수 있 습 니 다.
在这里插入图片描述
마지막 으로 저 는 복호화 전후의 공간 점용 상황 을 비교 해 보 았 습 니 다.공간 을 차지 하 는 것 이 똑 같 습 니 다.왜 텐 센트 가.dat 파일 로 저장 해 야 하 는 지 모 르 겠 습 니 다.
左图为.dat,右图为.png
참고:https://www.jb51.net/article/200924.htm
python 을 사용 하여 위 챗 이미지 아래.dat 파일 을.png 로 복호화 하 는 방법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 python 위 챗 이미지.dat 파일 을.png 로 복호화 하 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 을 바 랍 니 다!

좋은 웹페이지 즐겨찾기