Página 1 de 1

Senha do hb_ZipFile()

Enviado: 30 Mar 2022 18:48
por Linguagemclipper
Olá pessoal!

Coloquei uma senha usando hb_ZipFile()
HB_ZIPFILE(cBAKFILE, aBACKUP, nLEVEL, bZIP, lOVERWRITE, cSEN1)

Acontece que na hora de descompactar, ele descompacta acertando ou não a senha. Entretanto, se errar a senha os arquivos extraídos não abrem, se acertar abre.
A senha fica dentro de cada arquivo ao invés do zip. Eu queria que nem abrisse o zip sem a senha.

HB_UNZIPFILE(cBACKUP, bUNZIP, ,cSEN1 ,".\", aEXTRACT )

Tem alguma forma ou outra função que a senha fique no zip? Não quero que abra o zip sem a senha.

Senha do hb_ZipFile()

Enviado: 31 Mar 2022 14:00
por Kapiaba
Boa tarde, dê uma olhada no fonte: PROC996.PRG e veja se clareia suas ideias:

https://mega.nz/file/II9GTBLZ#h4aAe8VgD ... 3ekImYvOFg

Dúvidas, pergunte, porfa.

Regards, saludos.

Senha do hb_ZipFile()

Enviado: 31 Mar 2022 14:04
por Kapiaba
imagem:
PBACKUP2.png
Regards, saludos.

Senha do hb_ZipFile()

Enviado: 31 Mar 2022 14:43
por vailton
Lindona demais esta tela, hein Kapi?

Xonei nela, parabéns pelo visual do projeto.

Senha do hb_ZipFile()

Enviado: 31 Mar 2022 15:03
por Kapiaba
Lindona demais esta tela, hein Kapi?

Xonei nela, parabéns pelo visual do projeto.
Vailton Renato
Obrigado meu amado mestre. Fontes inclusos e free, pode usar sem moderação.

Forte abraço.

Regards, saludos.

Senha do hb_ZipFile()

Enviado: 31 Mar 2022 15:20
por JoséQuintas
Que eu saiba o ZIP sempre deixa listar o conteúdo, com ou sem senha.
A senha se refere a descompactar cada arquivo.
Inclusive, como já percebeu, cada arquivo dentro do ZIP pode ter uma senha diferente.
Talvez, quem sabe, a opção seria ter um zip dentro de outro zip. e desta forma só veria o nome do zip interno sem o conteúdo dele.

Senha do hb_ZipFile()

Enviado: 31 Mar 2022 16:06
por Linguagemclipper
JoséQuintas escreveu:Que eu saiba o ZIP sempre deixa listar o conteúdo, com ou sem senha.
A senha se refere a descompactar cada arquivo.
Inclusive, como já percebeu, cada arquivo dentro do ZIP pode ter uma senha diferente.
Talvez, quem sabe, a opção seria ter um zip dentro de outro zip. e desta forma só veria o nome do zip interno sem o conteúdo dele.
Listar é uma coisa, mas ele descompacta tudo acertando a senha ou não.
Se errar a senha cada arquivo já descompactado vai pedir senha para ser aberto/executado... mas, pede!
Se acertar a senha ele não pede senha.
O que ocorreu? Os DBFs foram descompactados com senha errada, mostra a barra de progresso de descompactuação e tudo mais, se eu der 2 cliques neles pede senha, o hb_unzip diz que falhou a descompactação, enquanto que, se eu acerto a senha, o hb_unzip diz que descompactou com sucesso e se der 2 cliques neles abre uma janela para eu escolher o programa que abre o DBF.
Para mim, se errasse a senha deveria parar por aí, nem descompactaria.
Como é que funciona afinal?

Senha do hb_ZipFile()

Enviado: 31 Mar 2022 16:37
por JoséQuintas
zip -a arquivo1.dbf
zip -a arquivo1.dbf -senha abcd
zip -a arquivo1.dbf -senha 123

Será que isso cria o mesmo arquivo 3 vezes um com cada senha?
De repente é uma coisa assim que está fazendo, e por isso funciona com ou sem senha, mas não funciona com senha errada, porque nenhum arquivo atende a senha errada.

Senha do hb_ZipFile()

Enviado: 31 Mar 2022 16:40
por JoséQuintas
Adicional:

Nunca testei descompactar pelo hb_unzip, só uso o Windows mesmo.
Se hb_unzip descompactar sem senha, significa que ele quebra qualquer zip, o que acho difícil, por isso minha suspeita.

Senha do hb_ZipFile()

Enviado: 31 Mar 2022 16:42
por JoséQuintas
teste.png

Senha do hb_ZipFile()

Enviado: 31 Mar 2022 16:52
por JoséQuintas
Linguagemclipper escreveu:O que ocorreu? Os DBFs foram descompactados com senha errada, mostra a barra de progresso de descompactuação e tudo mais, se eu der 2 cliques neles pede senha, o hb_unzip diz que falhou a descompactação, enquanto que, se eu acerto a senha, o hb_unzip diz que descompactou com sucesso e se der 2 cliques neles abre uma janela para eu escolher o programa que abre o DBF.
Para mim, se errasse a senha deveria parar por aí, nem descompactaria.
Como é que funciona afinal?
?

Além do mais, com certeza barra de progresso não faz parte do hb_unzip, mas sim de uma rotina do programador.
Tudo indica que foi o programador.

Senha do hb_ZipFile()

Enviado: 01 Abr 2022 23:25
por Linguagemclipper
Resolví criando uma pasta temporária. Se o Hb_unzip der sucesso eu copio para a pasta do sistema e apago a pasta, se der falha eu só apago a pasta temporária.

Senha do hb_ZipFile()

Enviado: 02 Abr 2022 10:18
por carlos_dornelas
Eu utilizo há vários anos assim e nunca tive problemas... porém nao utilizo a barra de progresso...

if hb_zipfile( vNome_zip,aARQ, 9, ,.t.,xsnh,.F.,.F., )

if hb_unzipfile(arq,,.f.,xsnh, , )

xharbour 0.99

[]s

Antonio Carlos

Senha do hb_ZipFile()

Enviado: 05 Abr 2022 11:59
por Linguagemclipper
JoséQuintas escreveu:
Linguagemclipper escreveu:O que ocorreu? Os DBFs foram descompactados com senha errada, mostra a barra de progresso de descompactuação e tudo mais, se eu der 2 cliques neles pede senha, o hb_unzip diz que falhou a descompactação, enquanto que, se eu acerto a senha, o hb_unzip diz que descompactou com sucesso e se der 2 cliques neles abre uma janela para eu escolher o programa que abre o DBF.
Para mim, se errasse a senha deveria parar por aí, nem descompactaria.
Como é que funciona afinal?
?

Além do mais, com certeza barra de progresso não faz parte do hb_unzip, mas sim de uma rotina do programador.
Tudo indica que foi o programador.
Quintas e Carlos, a barra de progresso é o 2º parâmetro do HB_UNZIPFILE() e é normalmente um codeblock.
PEDAÇO DO MEU CÓDIGO COMO DEIXEI:

Código: Selecionar todos

// EXTRAI ARQUIVOS DO BACKUP COMPACTADO
DBCLOSEALL() // FECHA TODOS OS BANCOS DE DADOS PORVENTURA ABERTOS
			
aEXTRACT := hb_GetFilesInZip( cBACKUP )
nTOTAL := LEN(aEXTRACT) 
bUNZIP := {|cFILE, nPos| PRESBAR(cFILE, nPOS, nTOTAL)}  // BARRA DE PROGRESSO: nome do arquivo, número de ordem atual, total de arquivos.
						
// CRIA SUBPASTA TEMP
cDIRTMP := CURDRIVE()+":\"+CURDIR()+"\"+DTOS(DATE())+"\"
cCURDIR := CURDRIVE()+":\"+CURDIR()+"\"
IF ISDIR(cDIRTMP)
        // SE JÁ EXISTIR O TEMP, APAGA TUDO.
	aFILES := DIRECTORY(cDIRTMP+"*.*")
	AEval( aFiles, { |aFile| FILEDELETE( cDIRTMP+aFile[1] ) } )								
ELSE
        // CRIA O TEMP
	nERRO := MAKEDIR( cDIRTMP )
ENDIF			
lUNZIP := HB_UNZIPFILE(cBACKUP, bUNZIP, ,cSEN1 ,cDIRTMP, aEXTRACT )
IF lUNZIP
        // ARQUIVOS FORAM EXTRAÍDOS E ESTÃO DESBLOQUEADOS SEM SENHA
	MSGRODA("SUCESSO! Copiando os arquivos para a pasta do sistema...", "W+/BG")
	// COPIA OS ARQUIVOS DESCRIPTOGRAFADOS PARA A PASTA ATUAL
	// SE ARQUIVO EXISTIR, SOBRESCREVE SEM AVISO					
	AEval( aFiles, { |aFile| FILECOPY( cDIRTMP+aFile[1], cCURDIR+aFILE[1] ) } )					
	ALERT("RESTAURAÇÃO DO BACKUP REALIZADO COM SUCESSO!")					
ELSE
	ALERT("FALHA NA RESTAURAÇÃO DO BACKUP. ERROU A SENHA?")
       // PORÉM OS ARQUIVOS FORAM DESCOMPACTADOS NA PASTA TEMP E ESTÃO BLOQUEADOS COM A SENHA
ENDIF
			
// APAGA A SUBPASTA TEMP
IF ISDIR(cDIRTMP)					
	AEval( aFiles, { |aFile| FILEDELETE( cDIRTMP+aFile[1] ) } )					
	nERRO := DirRemove( cDIRTMP )              // APAGA DIRETÓRIO TEMPORÁRIO
ENDIF
Morreu o galo... rs