Página 1 de 3
DBF: criptografia total e permanente
Enviado: 02 Dez 2009 11:48
por Dr.Microso
Senhores, salve!
Vários DBFs com fórmulas e outros dados de sigilo empresarial...
Está descartado a princípio a utilização de outro formato de aquivo, há várias razões para permanecer no DBF mesmo.
Alguém usa ou tem referência de recurso que criptografe totalmente o DBF e permita sua leitura apenas pelo programa manipulador?
Os dados deverão permanecer criptografados sempre, ou seja, nem a estrutura do arquivo pode ficar visível!
Atualmente os mesmos DBFs encontram-se até renomeados para ocultar que tipo de arquivo são.
Grato!
---
Nota da Moderação (Maligno):
O presente tópico foi movido da seção "Ferramentas de Apoio", uma vez que seu conteúdo não atende os objetivos daquela seção, onde só devem constar interlocuções relacionadas à softwares que dão apoio ao trabalho de programação. O teor deste tópico dá a perceber uma relação com a linguagem XBase-Clipper.
Re: DBF: criptografia total e permanente
Enviado: 02 Dez 2009 14:19
por anacatacombs
Esse negocio de criptografia é complicado !
É dificil existir alguma função 100% segura. Alguns alteram o header do arquivo...
E você mesmo desenvolver uma função de criptografia, e criar os campos do banco de dados de uma forma genérica, ou que induza o sujeito ao erro.
Espero ter ajudado .
[]'s
Ana
Re: DBF: criptografia total e permanente
Enviado: 02 Dez 2009 17:29
por alaminojunior
Em se tratando de DBF é (creio eu) impossível ter uma segurança 100 %. Pois as tabelas ficarão desprotegidas durante o manuseio, e basta finalizar a aplicação no Taskmgr que vai toda a segurança pelo ralo.
Re: DBF: criptografia total e permanente
Enviado: 02 Dez 2009 17:46
por anacatacombs
É Ala, pelo menos a estrutura do arquivo.
Mas se o colega utilizar uma função de criptografia, ele pode descriptografar apenas na hora de manipular os dados, sem precisar mexer no que já está no banco.
É um trabalho e tanto.
Re: DBF: criptografia total e permanente
Enviado: 02 Dez 2009 18:09
por vailton
O ADS (pelo menos) em [x]Harbour me parece que possui criptografia não é? Eu nunca usei mas já ouvi comentários a respeito disto. Inclusive uma empresa de Campinas usa isto pra proteger alguns dados em rede ou monousuario... mas era tão sigiloso que eles nunca me mostraram como fazer. Se alguem possuir o ADS aê e que puder perguntar para o suporte se esta informação procede, então já teremos uma ideia de alguma solução.
Re: DBF: criptografia total e permanente
Enviado: 02 Dez 2009 19:24
por Dr.Microso
Ana, olá!
Grato por ser a primeira a dar ressônancia ao assunto. Ajudou sim, qualquer comentário inicial já é uma ajuda...
Concordo contigo também Alamino, se pararmos para pensar, não só o DBF mas praticamente o que é 100% garantido nesta área?
Tentamos apenas dificultar, conscientes da coisa como é....
Na verdade, tenho conseguido este intento (até agora...) através de um utilitário + uma LIB em C (desde 1992), que faz exatamente o que o título do tópico propõe: o utilitário criptografa o DBF apenas uma vez e seu acesso (normal, sem perda de velocidade), só por uma chamada a uma função específica dentro do programa. Blindagem comprovada por mais de 16 anos, mas que acorrenta-me pelo calcanhar desde então, porque:
- não posso trabalhar em Pmode devido a incompatibilidade desta LIB vital, o que força-me a malabarismos constantes no Rmode.
- por conseqüência, não posso migrar este aplicativo (Clipper 5.2e + Blinker + SIX) a outras tecnologias da linguagem (xBase++, Harbour, xHarbour, etc.).
Detalhe: a empresa Croata e a equipe responsável pela LIB foram pulverizados do mapa no conflito dos balcans de 1994, enterrando de vez a possibilidade de uma update do recurso para Pmode, daí a necessidade de alternativas similares que creio, existam.
Grato a todos.
Re: DBF: criptografia total e permanente
Enviado: 16 Dez 2009 03:23
por rochinha
Amiguinho,
Tempos atrás apresentei meu método de segurança que por mais simplório que parece me tornou mais sossegado diante da segurança que me proporcionou.
Como voce disse, voce necessita de uma segunraça que seja fornecida por seu sistema e somente o mesmo possa ultrapassá-la.
Pois bem, diante de funções de encriptação existente em algumas bibliotecas como a SIX com Encript() e Decript() e pelo fato de usar Harbour não pude implementar a solução existente, pelo fato de criptografar justamente os campos chave de indexação.
Esta funções implementam o uso de uma string que somada a encriptação fornece maior segurança, mas não me serviram.
Usar o velho método de mudar bytes iniciais das tabelas resultada em segurança somente em modo monousuário e no multiusuário ia por ágra abaixo a solução.
Migrar para outras plataformas de dados não era nem cogitado, portanto busquei, tentei, testei e encontrei a que me forneceu solução momentânea e plausível.
Voce encontrará a solução
neste post e verá que a solução é muito simples de implementar e melhorar.
A tabela continuará visivel e aberta, mas o campo criptografado somente será visivel através de sua função contrária, que residirá em seu sistema e utilizará o método que voce criar para criptografar e des-criptografar.
Funções de codificação e decodificação:
Código: Selecionar todos
function codifica( _pass_ )
_senha_ := ''
for i = 1 to len(alltrim(_pass_))
_senha_ := _senha_ + chr(asc(substr(_pass_,i,1))+9)
next
return _senha_
function decodifica( _pass_ )
_senha_ := ''
for i = 1 to len(alltrim(_pass_))
_senha_ := _senha_ + chr(asc(substr(_pass_,i,1))-9)
next
return _senha_
Funções de criptografia:
Código: Selecionar todos
function FEncripta( _oque_, _chave_ )
return iif(lEncripta, _chave_ + Codifica( alltrim( _oque_ ) ), _oque_ )
function FDecripta( _oque_ )
return iif(lEncripta, iif( _chave_ $ _oque_, Decodifica( StrTran( _oque_, _chave_, "" ) ), _oque_ ), _oque_ )
Exemplo de criptografia:
Código: Selecionar todos
...
dbRLock()
CLIENTES->NOME := FEncripta( alltrim( M->NOME ), "CHAVE" )
dbRUnLock()
dbCommit()
...
Exemplo de recuperação de dado criptografado:
Então o passo para criptografar a base de dados é rodar um laço do inicio ao fim da tabela criptografando o/os campo(s) necessário(s) e depois reorganizar.
Para fazer a pesquisa em um campo criptografado que seja chave de indice, o dado passado deverá ser criptografado.
Com esta minha solução ponho por água abaixo o que o Alamino afirmou que possa ocorrer e combato o que a Ana colocou que fica trabalhoso, lógico que tudo no maior respeito as suas afirmações.
A criptografia acontece somente a nivel de variável, ou seja, não fisicamente.
Re: DBF: criptografia total e permanente
Enviado: 16 Dez 2009 12:20
por gvc
Estive pensando no seu caso e imaginei o seguinte:
- Crie uma função de criptografia e decriptografica para todos os tipos de campos.
- Prepare a criação da estrutura em um array e rode a criptografica no nome dos campos antes de criar.
- Crie os arquivos com os novos nomes.
- Para criar os indices, vc deverá usar esses novos nomes ou uma função para traduzir os nomes internos do sistema com o nome dos campos.
- Crie os indices usando a decriptografia dos campos chaves.
- Quando for atualizar os dados, vc criptografa.
- Quando for ler para tela ou relatório, vc decriptografa.
Vai dar mais trabalho, mas o trabalho de criptografia será interno ao seu sistema, não dependendo de lib's externas.
Ex. Vc pode criar uma função assim:
ret_campo('produto', 'nome') // ret_campo(<arquivo>, <campo>)
Dentro da sua função ret_campo, vc teria a tradução do nome do campo [nome] que esta dentro do arquivo produto. Vc pode trocar o nome do arquivo tb, qdo vc o abrir, use o alias para dar um apelido que vc consiga usar no sistema.
Qdo vc lê o campo, já pode traduzir o conteúdo tb e retornar o valor correto para a chamada.
Assim vc tem o nome dos campos e os conteúdos criptografados.
Re: DBF: criptografia total e permanente
Enviado: 25 Dez 2009 11:17
por rubens
Você conhece as libs EDBF.LIB e ENCRYPT.LIB? Já tentou usar?
Com elas é provável que você consiga fazer o que foi proposto neste tópico tb.
A EDBF protege/desprotege os arquivos e a Encrypt gera caractares ASCII conforme a chave que voce enviar. Daí com um pouco de adaptação você conseguirá resolver.
Pode fazer verificações nos arquivos antes de abrir e depois que fechá-los e caso alguem feche o aplicativo enquanto estiver em execução para "decriptar" os dados dos campos será outra conversa...
Rubens
Re: DBF: criptografia total e permanente
Enviado: 31 Mai 2010 15:13
por Dr.Microso
Caros colegas, salve!
Quero a princípio agradecer todos que se dignaram a participar deste tópico com suas sugestões e códigos.
A necessidade era extrema, todas as dicas foram testadas somadas ainda à outras pesquisas paralelas e testes que durou meses...
Encontrei inúmeras vias, algumas
fechavam a lacuna, mas criavam outra(s)...
Interessante é que o longo percurso acabou fechando em 2 melhores soluções (
até a data deste post) inicialmente aqui citadas:
ADS-Advantage Database Server (grato por citar,
Vailton)
Além de suprir a necessidade, esbanja recursos, sendo um excelente
SGBD que contempla além do Clipper, várias outras plataformas como o xHarbour.
SIx Driver RDD v3.00 (grato por citar a existência da função na LIB,
Rochinha)
Muito simples de usar, na verdade o
NG que acompanha a biblioteca é bem didático. Parece-me que foi implantada também no xHarbour...
Se por acaso chegar à este post com a mesma necessidade, lhe asseguro que qualquer uma das 2 soluções lhe atenderá muito bem. Se encontrar algo no contexto/melhor, por favor não deixe de registrar aqui, porque a
"roda" não para...
Grato a todos.
Re: DBF: criptografia total e permanente
Enviado: 31 Mai 2010 17:57
por MARCELOG
Olá pessoal,
a situação de criptografia é interessante na medida em que a "lógica" da mesma não é prontamente conhecida.
E toda boa criptografia, pelo menos em meu modesto entendimento, deve contemplar a descriptografia.
O xHarbour possui funções de criptografia e descritografia para sequência de caracteres.
Logo, o tratamento das informações é muito fácil, criptografe na gravação dos dados e descriptografe na leitura.
O dbf sempre vai conter um monte de caracteres que, para o ser humano comum, vai ser difícil entender (mas não impossível).
Já com relação a estrutura do dbf, para comportar criptografia, somente vai poder ser campos caractere ou memo.
Dessa forma, para confundir o bisbilhoteiro, crie nomes óbvios mas com conteúdo diferente.
Por exemplo, crie o campo nome, mas não coloque nele os caracteres que se referem ao nome. Ao contrário, insera nesse campo qualquer outra informação.
Mas tudo tem um preço!
Primeiro, a velocidade do processamento, que vai envolver pelo menos duas funções a mais vai ficar comprometida em face do volume de informação.
A chave de criptografia, que pode ser uma palavra (não recomendado), ou sequência caracteres deve ser bem guardada.
Essa palavra ou sequência é a chave do sistema inteiro.
Por outro lado, a estrutura real do dbf também deve ser bem guardada.
Outa alternativa é programar em aramaico antigo, deve ter umas 10 pessoas no mundo que poderiam decifrar as informações e isso reduz bem as possibilidades de bibilhotagem indevida né.
MarceloG
Re: DBF: criptografia total e permanente
Enviado: 31 Mai 2010 20:59
por JoséQuintas
Bom, tudo depende da finalidade.
Diria que um banco de dados externo pode ser até mais interessante.
Nada de criptografia, nem perda de tempo, basta a base de dados ficar fora da empresa.
Mas tudo depende da finalidade de uso, e do que estiver disponível.
DBF: criptografia total e permanente
Enviado: 18 Out 2011 10:55
por Gilberto M Silva
Caros colegas,
alguem sabe onde posso encontrar a lib encrypt.lib para baixar, preciso criptografar um arquivo DBF com um registro só
para atender as exigencias do PAF-ECF.
Grato.
DBF: criptografia total e permanente
Enviado: 18 Out 2011 11:40
por rochinha
Amiguinho,
Esta duvida é pertinente e necessária para o
PAFissionais.
Qual a necessidade desta biblioteca em especifico? algum algoritmo em especial.
Pois se é para criptografar e voce usa
Clipper pode sacar de usar as funções de criptografia da
SIX. Ela possui funções para criptografia de conteudos em campos.
No Harbour voce encontrará a
hbCrypt.lib só não posso dizer se o código dela seria compatível com
Clipper.
Já na Borland 5.5 voce encontra a
Crypt32.lib
De uma olhada neste script e veja se te serve e voce pode automatiza-lo com seu aplicativo.
CEncrypt.vbs
Código: Selecionar todos
'******************************************************************************
'
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
' EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
' WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
'
' Copyright (C) 1999- 2002. Microsoft Corporation. All rights reserved.
'
'******************************************************************************
'
' CEncrypt.vbs
'
' This is a sample script to illustrate how to use the CAPICOM's EncryptedData
' to encrypt/decrypt text file.
'
' Note: For simplicity, this script does not handle exception.
'
'******************************************************************************
Option Explicit
Const ForReading = 1, ForWriting = 2
' Command.
Const Unknown = 0
Const Encrypt = 1
Const Decrypt = 2
' CAPICOM's constants.
Const CAPICOM_ENCRYPTION_ALGORITHM_RC2 = 0
Const CAPICOM_ENCRYPTION_ALGORITHM_RC4 = 1
Const CAPICOM_ENCRYPTION_ALGORITHM_DES = 2
Const CAPICOM_ENCRYPTION_ALGORITHM_3DES = 3
Const CAPICOM_ENCRYPTION_ALGORITHM_AES = 4
Const CAPICOM_ENCRYPTION_KEY_LENGTH_MAXIMUM = 0
Const CAPICOM_ENCRYPTION_KEY_LENGTH_40_BITS = 1
Const CAPICOM_ENCRYPTION_KEY_LENGTH_56_BITS = 2
Const CAPICOM_ENCRYPTION_KEY_LENGTH_128_BITS = 3
Const CAPICOM_ENCRYPTION_KEY_LENGTH_192_BITS = 4
Const CAPICOM_ENCRYPTION_KEY_LENGTH_256_BITS = 5
' Command line arguments.
Dim Command : Command = Unknown
Dim Password : Password = Null
Dim Algorithm : Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_RC2
Dim KeyLength : KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_MAXIMUM
Dim Verbose : Verbose = False
Dim FileNames()
' First make sure the script is executed by CScript.exe.
If InStr(1, UCase(Wscript.FullName), "CSCRIPT.EXE", vbTextCompare) = 0 Then
Wscript.Echo "This script can only be executed by CScript.exe." & vbCRLF & vbCRLF &_
"You can either:" & vbCRLF & vbCRLF & _
"1. Set CScript.exe as the default (Run CScript //h:cscript), or" & vbCRLF & _
"2. Run CScript.exe directly as in, CScript " & Wscript.ScriptName & "."
Wscript.Quit(-1)
End If
' Parse the command line.
ParseCommandLine
' Now process the command.
Select Case Command
Case Encrypt
DoEncryptCommand FileNames, Algorithm, KeyLength, Password
Case Decrypt
DoDecryptCommand FileNames, Password
End Select
Wscript.Quit(0)
' End Main
'******************************************************************************
'
' Subroutine: DoEncryptCommand
'
' Synopsis : Encrypt content of text file FileNames(0).
'
' Parameter : FileNames - Array of filenames.
'
' Algorithm - Encryption algorithm
'
' KeyLength - Key size.
'
' Password - Secret password.
'
'******************************************************************************
Sub DoEncryptCommand (FileNames, Algorithm, KeyLength, Password)
Dim Content
Dim Message
Dim EncryptedData
' Create the EncryptedData object.
Set EncryptedData = CreateObject("CAPICOM.EncryptedData")
' Set algorithm, key size, and encryption password.
EncryptedData.Algorithm.Name = Algorithm
EncryptedData.Algorithm.KeyLength = KeyLength
EncryptedData.SetSecret Password
' Display main title.
Wscript.Stdout.Writeline "Encrypting text file " & FileNames(0) & "."
Wscript.Stdout.Writeline
' Display more detail for verbose operation.
If Verbose Then
DisplayDetail EncryptedData
End If
' Load content of text file to be encrypted.
LoadFile FileNames(0), Content
' Now encrypt it.
EncryptedData.Content = Content
Message = EncryptedData.Encrypt
' Finally, save encrypted message to FileNames(1).
SaveFile FileNames(1), Message
Wscript.Stdout.Writeline "Successful - Encrypted message saved to " & FileNames(1) & "."
' Free resources.
Set EncryptedData = Nothing
End Sub ' End DoEncryptCommand
'******************************************************************************
'
' Subroutine: DoDecryptCommand
'
' Synopsis : Decrypt an encrypted file.
'
' Parameter : FileNames - Array of filenames.
'
' Password - Secret password.
'
'******************************************************************************
Sub DoDecryptCommand (FileNames, Password)
Dim Message
Dim EncryptedData
' Create the EncryptedData object.
Set EncryptedData = CreateObject("CAPICOM.EncryptedData")
' Set decryption password.
EncryptedData.SetSecret Password
' Display main title.
Wscript.Stdout.Writeline "Decrypting encrypted text file " & FileNames(0) & "."
Wscript.Stdout.Writeline
' Load the encrypted message.
LoadFile FileNames(0), Message
' Now decrypt it.
EncryptedData.Decrypt(Message)
' Display more detail for verbose operation.
If Verbose Then
DisplayDetail EncryptedData
End If
' Finally, save decrypted content to FileNames(1).
SaveFile FileNames(1), EncryptedData.Content
Wscript.Stdout.Writeline "Successful - Decrypted content saved to " & FileNames(1) & "."
' Free resources.
Set EncryptedData = Nothing
End Sub ' End DoDecryptCommand
'******************************************************************************
'
' Subroutine: LoadFile
'
' Synopsis : Read content of a text file.
'
' Parameter : FileName - Input text filename.
'
' Buffer - String buffer to receive the text file content.
'
'******************************************************************************
Sub LoadFile (FileName, Buffer)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FileExists(FileName) Then
Wscript.Stdout.Writeline "Error: File " & FileName & " not found."
Wscript.Quit(-5)
End If
Dim ts
Set ts = fso.OpenTextFile(FileName, ForReading)
Buffer = ts.ReadAll
End Sub ' End LoadFile
'******************************************************************************
'
' Subroutine: SaveFile
'
' Synopsis : Save string to file.
'
' Parameter : FileName - Output filename.
'
' Buffer - String buffer to be saved.
'
'******************************************************************************
Sub SaveFile (FileName, Buffer)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim ts
Set ts = fso.OpenTextFile(FileName, ForWriting, True)
ts.Write Buffer
End Sub ' End SaveFile
'******************************************************************************
'
' Subroutine: DisplayDetail
'
' Synopsis : Display detail information.
'
' Parameter : EncryptedData - EncryptedData object.
'
'******************************************************************************
Sub DisplayDetail (EncryptedData)
Dim AlgoNames(4)
AlgoNames(0) = "RC2"
AlgoNames(1) = "RC4"
AlgoNames(2) = "DES"
AlgoNames(3) = "3DES"
AlgoNames(4) = "AES"
Wscript.Stdout.Writeline "Algorithm : " & AlgoNames(EncryptedData.Algorithm.Name)
Wscript.Stdout.Write "Key length: "
Select Case EncryptedData.Algorithm.KeyLength
Case CAPICOM_ENCRYPTION_KEY_LENGTH_40_BITS
Wscript.Stdout.Writeline "40 bits"
Case CAPICOM_ENCRYPTION_KEY_LENGTH_56_BITS
Wscript.Stdout.Writeline "56 bits"
Case CAPICOM_ENCRYPTION_KEY_LENGTH_128_BITS
Wscript.Stdout.Writeline "128 bits"
Case CAPICOM_ENCRYPTION_KEY_LENGTH_192_BITS
Wscript.Stdout.Writeline "192 bits"
Case CAPICOM_ENCRYPTION_KEY_LENGTH_256_BITS
Wscript.Stdout.Writeline "256 bits"
Case Else
Wscript.Stdout.Writeline "Maximum"
End Select
Wscript.Stdout.Writeline
End Sub ' End DisplayDetail
'******************************************************************************
'
' Subroutine: ParseCommandLine
'
' Synopsis : Parse the command line, and set the options accordingly.
'
' Parameter : None
'
'******************************************************************************
Sub ParseCommandLine
' Constants for command line parsing states.
Const ARG_STATE_COMMAND = 0
Const ARG_STATE_OPTIONS = 1
Const ARG_STATE_ALGORITHM = 2
Const ARG_STATE_LENGTH = 3
Const ARG_STATE_FILENAME = 4
Const ARG_STATE_PASSWORD = 5
Const ARG_STATE_END = 6
' Parse command line.
Dim Arg
Dim ArgState : ArgState = ARG_STATE_COMMAND
For Each Arg In Wscript.Arguments
Select Case ArgState
Case ARG_STATE_COMMAND
Select Case UCase(Arg)
Case "ENCRYPT"
Command = Encrypt
Case "DECRYPT"
Command = Decrypt
Case Else
DisplayUsage
End Select
ArgState = ARG_STATE_OPTIONS
Case ARG_STATE_OPTIONS
Select Case UCase(Arg)
Case "-ALG", "/ALG"
ArgState = ARG_STATE_ALGORITHM
Case "-LENGTH", "/LENGTH"
ArgState = ARG_STATE_LENGTH
Case "-V", "/V"
Verbose = True
Case "-?", "/?"
DisplayUsage
Case Else
If Left(Arg, 1) = "-" OR Left(Arg, 1) = "/" Then
DisplayUsage
Else
ReDim FileNames(0)
FileNames(0) = Arg
End If
ArgState = ARG_STATE_FILENAME
End Select
Case ARG_STATE_ALGORITHM
If Left(Arg, 1) = "-" OR Left(Arg, 1) = "/" Then
DisplayUsage
Else
Select Case UCase(Arg)
Case "RC2"
Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_RC2
Case "RC4"
Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_RC4
Case "DES"
Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_DES
Case "3DES"
Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_3DES
Case "AES"
Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_AES
Case Else
DisplayUsage
End Select
End If
ArgState = ARG_STATE_OPTIONS
Case ARG_STATE_LENGTH
If Left(Arg, 1) = "-" OR Left(Arg, 1) = "/" Then
DisplayUsage
Else
Select Case UCase(Arg)
Case "40"
KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_40_BITS
Case "56"
KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_56_BITS
Case "128"
KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_128_BITS
Case "192"
KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_192_BITS
Case "256"
KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_256_BITS
Case "MAX"
KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_MAXIMUM
Case Else
DisplayUsage
End Select
End If
ArgState = ARG_STATE_OPTIONS
Case ARG_STATE_FILENAME
If Left(Arg, 1) = "-" OR Left(Arg, 1) = "/" Then
DisplayUsage
Else
ReDim Preserve FileNames(UBound(FileNames) + 1)
FileNames(UBound(FileNames)) = Arg
End If
ArgState = ARG_STATE_PASSWORD
Case ARG_STATE_PASSWORD
If Left(Arg, 1) = "-" OR Left(Arg, 1) = "/" Then
DisplayUsage
Else
Password = Arg
End If
ArgState = ARG_STATE_END
Case Else
Wscript.Stdout.Writeline "Internal script error: Unknown argument state (" & CStr(ArgState) & ") encountered."
Wscript.Quit(-3)
End Select
Next
' Make sure we are in good state.
If ArgState <> ARG_STATE_END Then
DisplayUsage
End If
End Sub ' ParseCommandLine
'******************************************************************************
'
' Subroutine: DisplayUsage
'
' Synopsis : Display the usage screen, and then exit with a negative error
' code.
'
' Parameter : None.
'
'******************************************************************************
Sub DisplayUsage
Select Case Command
Case Unknown
Wscript.Stdout.Writeline "Usage: CEncrypt Command [Options] InFile OutFile Password"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline "Command:"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline " Encrypt -- Encrypt a text file"
Wscript.Stdout.Writeline " Decrypt -- Decrypt an encrypted text file"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline "For help on a specific command, enter ""CEncrypt Command -?"""
Case Encrypt
Wscript.Stdout.Writeline "Usage: CEncrypt Encrypt [Options] ContentFile EncryptedFile Password"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline "The Encrypt command is used to encrypt a text file based on a secret password."
Wscript.Stdout.Writeline "Encrypting protects the data from being read by others except those who know"
Wscript.Stdout.Writeline "the secret password."
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline "Options:"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline " -alg <algorithm> -- RC2, RC4, DES, 3DES, or AES (default to RC2)"
Wscript.Stdout.Writeline " -length <key length> -- 40, 56, 128, 192, 256, or MAX (default to MAX,"
Wscript.Stdout.Writeline " and ignored for DES or 3DES)"
Wscript.Stdout.Writeline " -v -- Verbose operation"
Wscript.Stdout.Writeline " -? -- This help screen"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline " ContentFile -- Text file to be encrypted"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline " EncryptedFile -- Encrypted text file"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline "Note: All non-fatal invalid options for this specific command will be ignored."
Wscript.Stdout.Writeline
Case Decrypt
Wscript.Stdout.Writeline "Usage: CEncrypt Decrypt [Options] EncryptedFile ContentFile Password"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline "The Decrypt command is used to decrypt an encrypted text file."
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline "Options:"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline " -v -- Verbose operation"
Wscript.Stdout.Writeline " -? -- This help screen"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline " EncryptedFile -- Encrypted text file"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline " ContentFile -- Decrypted text file"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline "Note: All non-fatal invalid options for this specific command will be ignored."
Wscript.Stdout.Writeline
Case Else
Wscript.Stdout.Writeline "Internal script error: Unknown help state (Command = " & CStr(Command) & ")."
Wscript.Quit(-2)
End Select
Wscript.Quit(-1)
End Sub ' End DisplayUsage
DBF: criptografia total e permanente
Enviado: 18 Out 2011 17:24
por Gilberto M Silva
Rochinha, me tire uma dúvida, o PAF-ECF diz que:
Os dados 'bababa' devem ser armazenados em arquivo criptografado e inacessivel ao usuario do PAF-ECF
pois bem, em nenhum momento especifica o nivel de criptografia. Então pergunto. usando o attrib +r +h +s dados.dbf para ocultar e quando usar o dbf attrib -s -h -r, não deixa de ser um tipo de criptografia, certo? porque para nivel de analise o arquivo esta inacessivel. Meu intuito é satisfazer as exigencias do PAF.