python zip 암호 화 파일 해독 방법
우 리 는 q 라 는 txt 파일 을 만 든 후에 그것 을 압축 하고 압축 할 때 비밀 번 호 를 설정 하 는 것 을 기억 합 니 다.
저 는 비밀 번 호 를 123456 으로 설정 합 니 다.그 다음 에 저희 가 작성 도 구 를 열 고 코드 를 쓰기 시 작 했 습 니 다.저 는 pycharm 을 사 용 했 습 니 다.여러분 이 사용 하 시 는 것 을 추천 합 니 다.
python 의 zipfile 모듈 에 사용 할 것 입 니 다.zip 파일 암호 해독 기 를 작성 하려 면 zipfile 라 이브 러 리 의 사용 방법 을 배 워 야 합 니 다.파 이 썬 해석 기 를 켜 면,우 리 는...
help(zipfile)명령 으로 이 라 이브 러 리 를 더 알 아 보고 Zip File 류 의 extractall 방법 을 중점적으로 살 펴 보 세 요.이런 종류 와 이 방법 은 우리 가 암호 로 보 호 된 Zip 파일 을 해독 하 는 데 매우 유용 하 다.extractant 에 주의 하 십시오.
zip 파일 라 이브 러 리 의 사용법 을 테스트 하기 위해 스 크 립 트 를 만 듭 니 다.라 이브 러 리 를 가 져 온 후 암호 로 보 호 된 Zip 파일 의 파일 이름 으로 새 Zipfile 클래스 를 예화 합 니 다.이 Zip 파일 의 압축 을 풀 려 면 extractall 방법 을 사용 하고 선택 가능 한 매개 변수 pwd 에 암 호 를 입력 합 니 다.
.py 파일 을 만 들 고 루트 디 렉 터 리 에 압축 파일 을 같은 디 렉 터 리 에 넣 습 니 다.프로젝트 구조 디 렉 터 리.
우리.py 파일 의 코드:
import zipfile
zipFile = zipfile.ZipFile("q.zip","r")//
zipFile.extractall(pwd="123456")//
이 코드 는 사실 비밀 번 호 를 가지 고 우리 가 방금 압축 한 파일 을 압축 하 는 것 이다.인터넷 의 대부분 튜 토리 얼 은 이렇게 쓰 여 있 지만 내 가 있 는 곳 에서 python 3.6 을 사용 하면 운행 할 때 잘못 보고 한 것 을 발견 할 수 있다.어쨌든 오 류 는 pwd 가 받 은 데 이 터 는 bytes 형식 이 어야 하지만 str 형식 을 얻 었 습 니 다.어차피 형식 이 틀 렸 습 니 다.비밀 번 호 를 bytes 형식 으로 바 꾸 겠 습 니 다.우리 의 py 파일 의 코드 는 다음 과 같 습 니 다.
import zipfile
zipFile = zipfile.ZipFile("q.zip","r")
password = '123456'
zipFile.extractall(pwd=str.encode(password) )
이때 우 리 는 다시 프로젝트 를 운행 한다.이번 에는 잘못 보고 하지 않 았 다.
우 리 는 우리 의 프로젝트 루트 디 렉 터 리 아래 에 파일 이 하나 더 있 는 것 을 볼 수 있다.바로 우리 가 이전에 압축 한 그 파일 이다.
zipfile 에 대해 더 알 고 싶 은 파트너 는 여 기 를 클릭 하여 링크 를 열 수 있 습 니 다.
다음 에 우 리 는 이 스 크 립 트 를 잘못된 비밀번호 로 실행 하면 어떤 상황 이 발생 합 니까?스 크 립 트 에 이상 한 코드 를 추가 하여 잘못된 정 보 를 표시 합 니 다.
import zipfile
zipFile = zipfile.ZipFile("q.zip","r")
try:
password = '123s456'
zipFile.extractall(pwd=str.encode(password))
except Exception as ex:
print(ex)
이때 우리 의 py 파일 코드,그리고 우 리 는 비밀 번 호 를 고의로 잘못 써 서 테스트 하고 실행 결 과 를 살 펴 보 았 다.여기 서 우 리 는 잘못된 정 보 를 볼 수 있다.바로 우리 에 게 비밀번호 오 류 를 알려 주 는 것 이다.
우 리 는 암호 가 정확 하지 않 아서 던 진 이상 으로 사전 파일(다음 zidian.text)에 Zip 파일 의 암호 가 있 는 지 시험 할 수 있 습 니 다.Zip File 류 를 예화 한 후에 사전 파일 을 열 고 사전 의 모든 단 어 를 옮 겨 다 니 며 테스트 합 니 다.extractall 0 함수 의 실행 에 오류 가 없 으 면 메 시 지 를 인쇄 하여 정확 한 암 호 를 출력 합 니 다.그러나 extractall()함수 가 암호 오류 의 이상 을 던 지면 이 이상 을 무시 하고 사전 의 다음 암 호 를 계속 테스트 합 니 다.
먼저 zidian.text 파일 을 만 듭 니 다.
다음은 zidian.text 파일 에서 비밀번호 사전 을 작성 합 니 다.줄 마다 비밀번호 가 있 습 니 다.빨간색 부분 은 우리 의 정확 한 비밀번호 입 니 다.
그리고 우리 의 암호 사전 을 항목 에 넣 습 니 다.
이어서 저희 스 크 립 트 를 계속 수정 하 겠 습 니 다.
import zipfile
zipFile = zipfile.ZipFile("q.zip","r")
#
passFile = open('zidian.txt')
for line in passFile.readlines():
# ( )
password = line.strip('
')
try:
zipFile.extractall(pwd=str.encode(password))
print('========= :'+password+'
')
#
exit(0)
except Exception as ex:
#
pass
이제 운행 결 과 를 보도 록 하 겠 습 니 다.하하,우 리 는 zip 파일 의 비밀 번 호 를 성공 적 으로 풀 었 습 니 다.여기까지 우 리 는 우리 사전 에 비밀번호 만 있 으 면 우 리 는 풀 수 있다 는 것 을 알 수 있 습 니 다.
우 리 는 계속해서 우리 의 프로젝트 를 최적화 시 켰 다.
import zipfile
def extractFile(zFile,password):
try:
zFile.extractall(pwd=str.encode(password))
#
return password
except:
return
def main():
zFile = zipfile.ZipFile("q.zip","r")
#
passFile = open('zidian.txt')
for line in passFile.readlines():
# ( )
password = line.strip('
')
guess = extractFile(zFile,password)
if (guess):
print("========= :"+password+"
")
exit(0)
if __name__=='__main__':
main()
이렇게 하면 많이 좋아진다!다음은 여섯 자리 숫자 비밀 번 호 를 모두 만 드 는 코드 를 붙 여 드 리 겠 습 니 다.
f = open('zidian.txt','w')
for id in range(1000000):
password = str(id).zfill(6)+'
'
f.write(password)
f.close()
실행 에 성공 한 후에 우 리 는 우리 의 zidian.txt 가 이미 생 성 되 었 음 을 볼 수 있 습 니 다.000000 에서 999999 까지 모두 생 성 되 었 습 니 다.그러면 우 리 는 6 자리 숫자 암호 의 zip 파일 만 있 으 면 우 리 는 모두 풀 수 있 습 니 다!
총결산
위 에서 말 한 것 은 소 편 이 여러분 에 게 소개 한 python 이 zip 암호 화 파일 을 해독 하 는 방법 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.