Python을 이용하여 ZIP나 RAR 파일 암호를 풀도록 가르쳐 드릴게요.
1. 원리를 풀다
사실 원리는 매우 간단하다. 한마디로 요약하면'기적이 크게 일어났다'는 것이다. 파이썬은 두 개의 압축 파일 라이브러리가 있다.
zipfile
과rarfile
, 이 두 라이브러리가 제공하는 압축 해제 방법extractall()
은 암호를 지정할 수 있다. 그러면 먼저 암호 사전(수동 또는 프로그램)을 생성한 다음에 그 중의 암호를 순서대로 시도한다. 만약에 정상적으로 압축을 풀 수 있다면 암호가 정확하다는 것을 나타낸다.2. 실험 환경
본고가 채택한 가상 환경은
Pipenv
이다.창고
pipenv install rarfile
마지막으로 비밀번호가 있는 압축 패키지를 실험 환경에 넣으면 된다.3. 인코딩
원리를 알게 되면 인코딩은 매우 간단해질 것이다
비밀번호 노트 준비
암호본은 사실상 모든 가능한 암호를 포함하는 파일로 사용자가 수동으로 입력할 수도 있고 프로그램으로 입력할 수도 있다.글끝에 또 하나의 소개가 있을 것이다.
압축 파일 읽기
# ,
if filename.endswith('.zip'):
fp = zipfile.ZipFile(filename)
elif filename.endswith('.rar'):
fp = rarfile.RarFile(filename)
압력을 풀려고 시도하다먼저 암호를 사용하지 않고 압축을 풀려고 시도합니다. 성공하면 압축 파일에 암호가 없음을 나타냅니다.
fp.extractall(desPath)
fp.close()
print('No password')
return
폭력적 해독
try:
#
fpPwd = open('pwd.txt')
except:
print('No dict file pwd.txt in current directory.')
return
for pwd in fpPwd:
pwd = pwd.rstrip()
try:
fp.extractall(path=desPath, pwd=pwd.encode())
print('Success! ====>'+pwd)
fp.close()
break
except:
pass
fpPwd.close()
프로그램 입구
if __name__ == '__main__':
filename = sys.argv[1]
if os.path.isfile(filename) and filename.endswith(('.zip', '.rar')):
decryptRarZipFile(filename)
else:
print('Must be Rar or Zip file')
4. 사용
상기 코드를 사용하려면 명령줄에서
python main.py <filename>
를 실행하면 됩니다.예: python main.py test.zip
실행 결과:$ python main.py test.zip
Success! ====>323126
5. 확장
암호 노트는 어떻게 얻습니까?
이곳을 보면 세심한 동료들은 가장 핵심적인 것은 코드가 아니라 ** 암호본이라는 것을 반드시 발견할 것이다.이론적으로 암호본에 있는 암호가 충분하면 압축 패키지의 암호를 반드시 얻을 수 있다. 이것이 바로 속칭'충돌 라이브러리'**이다.
어떻게 해독 과정을 가속화합니까?
암호본의 문제를 해결하고 깊이 생각하는 동료들은 반드시 새로운 의문을 갖게 될 것이다. 암호본이 이렇게 방대하다면 어떻게 해독의 과정을 가속화시킬 수 있을까?여기에 두 가지 사고방식을 제시하다
다중 스레드 (프로세스) 해독
암호 노트가 많고 암호 수량이 방대할 때, 우리는 다중 스레드 (프로세스) 방식으로 암호를 읽을 수 있으며, 하나의 프로세스는 하나의 암호 노트를 읽고, 하나의 스레드는 세그먼트로 암호를 읽을 수 있다.물론python에 있다면 다선정을 사용하지 않는 것을 권장합니다. 왜냐하면python의 선정은 계륵이기 때문에 관심 있는 사람은 관련 자료를 읽을 수 있습니다.
GPU를 이용한 가속
위의 코드는 모두 CPU에서 실행됩니다. 다중 스레드 (프로세스) 를 켜도 CPU 자원만 사용하지만, 해결 과정을 가속화하려면 유휴 GPU 자원을 사용할 수 있습니다.
GPU 가속을 활용할 수 있는 이유를 설명하기 전에 계산 작업을 수행하기 위해 설계된 명확한 관점이 필요합니다.
그런데 왜 GPU 가속을 사용할 생각을 했을까요?이것은 두 가지 차이점을 말하자면 CPU는 비록 여러 핵이 있지만 총수는 두 자릿수를 초과하지 않고 모든 핵의 연산 능력이 매우 강하다는 것이다.GPU의 핵 수는 CPU를 훨씬 초과하지만 각 핵의 연산 능력은 CPU의 핵에 비해 훨씬 다르다.
우리는 간단하게 예를 들어 한 문제를 풀 수 있다. CPU는 박사과정생이고 GPU는 초등학생이다. CPU는 문제를 이해하고 문제를 푸는 절차와 해법을 정리하는데 GPU는 그 중에서 간단하지만 수량이 많은 간단한 연산을 책임지면 된다.
따라서 이론적으로 암호를 해독하는 과정에서 우리는 GPU를 사용하여 이 과정을 가속화시킬 수 있다.
사실 이런 도구도 등장했다. Hashcat은 가장 유명한 도구로 세계에서 가장 빠른 암호 복구 도구로 CPU/GPU 등을 기반으로 할 수 있다고 불린다.
파이썬을 이용하여 ZIP나 RAR 파일의 암호를 풀도록 가르쳐 드리는 이 글은 여기까지 소개되었습니다. 더 많은 파이썬의 압축 패키지 암호 풀기 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보시기 바랍니다. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.