Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pyzipper as pz
- import os
- import multiprocessing
- from multiprocessing import Process, Pipe
- from time import sleep
- from timeit import timeit
- from datetime import datetime
- def checkzip(nome, i_index, f_index, passo, seq, conn):
- pid = os.getpid()
- ziper = pz.AESZipFile(nome, 'r', compression=pz.ZIP_DEFLATED, encryption=pz.WZ_AES)
- sequence = seq[i_index: f_index: passo]
- print('PID>>', pid, flush=True)
- for x in sequence:
- try:
- ziper.pwd = str.encode(x)
- ziper.testzip()
- conn.send(x)
- conn.close()
- del(sequence)
- return x
- except:
- continue
- else:
- conn.send('}{')
- conn.close()
- return
- def ret_perm(t_min, t_max, nome):
- chars = ''
- for c_index in range(26):
- chars += chr(c_index+97)
- for index in range(t_max):
- sequencias = [x for x in chars]
- for subindex in range(index):
- sequencias = [x + i for i in chars for x in sequencias]
- if len(sequencias[-1]) >= t_min:
- resultado = mapper(sequencias, nome)
- if 'ok' in str(resultado):
- return
- else:
- continue
- else:
- continue
- else: return
- def mapper(sequencias, nome) -> bool:
- processos = os.cpu_count()
- parent_conn, child_conn = Pipe()
- t_g= len(sequencias)
- t_c= len(sequencias[-1])
- timer = datetime.strftime(datetime.now(), "%H:%M:%S")
- print( f'{timer} \n>> Processando {t_g} Combinacoes de {t_c} digitos')
- container = dict()
- inicial = 0
- for n in range(processos):
- container[n] = Process( target=checkzip, args=( nome,inicial,-1,processos,sequencias,child_conn))
- inicial += 1
- for processo in container.values():
- processo.start()
- senha = str(parent_conn.recv())
- if '}' not in senha:
- timer = datetime.strftime(datetime.now(), "%H:%M:%S")
- print(f'{timer} \n>> Senha encontrada: {senha}' )
- for processo in container.values():
- processo.terminate()
- return 'ok'
- wait = multiprocessing.connection.wait()
- else:
- if '}{' in senha:
- timer = datetime.strftime(datetime.now(), "%H:%M:%S")
- print(f'{timer}\nNenhuma combinacao de {t_c} digitos correspondeu.\nEsvaziando Buffer! aguarde...')
- sleep(10)
- return 'continue'
- if __name__ == '__main__':
- timer = timeit( 'ret_perm(4, 5, "master.zip")', setup='from __main__ import ret_perm', number=1 )
- if timer < 60.0:
- print( f'Tempo de Execução: {timer:.2f} Segundos' )
- elif timer >= 3600.0:
- print( f'Tempo de Execução: {timer/60:.2f} Horas' )
- else:
- print( f'Tempo de Execução: {timer/60:.2f} Minutos' )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement