Senha do hb_ZipFile()

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Linguagemclipper
Usuário Nível 3
Usuário Nível 3
Mensagens: 240
Registrado em: 16 Abr 2016 17:33
Localização: Maceió/AL
Contato:

Senha do hb_ZipFile()

Mensagem 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.
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Senha do hb_ZipFile()

Mensagem 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.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Senha do hb_ZipFile()

Mensagem por Kapiaba »

imagem:
PBACKUP2.png
Regards, saludos.
Avatar do usuário
vailton
Colaborador
Colaborador
Mensagens: 390
Registrado em: 17 Nov 2005 19:08
Localização: Brasil
Contato:

Senha do hb_ZipFile()

Mensagem por vailton »

Lindona demais esta tela, hein Kapi?

Xonei nela, parabéns pelo visual do projeto.
Vailton Renato
"No dia mais claro, na noite mais escura... o bug sucumbirá ante a minha presença"

E-mail/MSN: contato@vailton.com.br
Skype: vailtom
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Senha do hb_ZipFile()

Mensagem 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.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Senha do hb_ZipFile()

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Linguagemclipper
Usuário Nível 3
Usuário Nível 3
Mensagens: 240
Registrado em: 16 Abr 2016 17:33
Localização: Maceió/AL
Contato:

Senha do hb_ZipFile()

Mensagem 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?
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Senha do hb_ZipFile()

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Senha do hb_ZipFile()

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Senha do hb_ZipFile()

Mensagem por JoséQuintas »

teste.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Senha do hb_ZipFile()

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Linguagemclipper
Usuário Nível 3
Usuário Nível 3
Mensagens: 240
Registrado em: 16 Abr 2016 17:33
Localização: Maceió/AL
Contato:

Senha do hb_ZipFile()

Mensagem 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.
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.
carlos_dornelas
Usuário Nível 3
Usuário Nível 3
Mensagens: 400
Registrado em: 25 Ago 2004 21:54

Senha do hb_ZipFile()

Mensagem 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
Avatar do usuário
Linguagemclipper
Usuário Nível 3
Usuário Nível 3
Mensagens: 240
Registrado em: 16 Abr 2016 17:33
Localização: Maceió/AL
Contato:

Senha do hb_ZipFile()

Mensagem 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
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.
Responder