Não permitir visualização de código no binário

16/03/2005

0

Olá pessoal,

Fiz uma rotina em C para dar o comando do backup do meu banco de dados Oracle. Está funcionando bem, só tem um problema. Se você abrir o executável em um editor de texto, ele mostra parte do código... principalmente a parte composta de strings. E o problema é que uma das partes que ele mostra é minha senha de conexão ao banco!

Esse programa vai ficar no servidor de banco de dados de vários locais, e não podemos correr o risco de que outros vejam nossa senha.

Alguém sabe como eu faria pra compilar o binário de uma forma que criptografasse tudo? Estou usando o gcc no Linux para compilar, mas qualquer forma de criptografar esse binário será bem vinda.

Agradeço


Moonlight

Moonlight

Responder

Posts

16/03/2005

Massuda

Uma solução bem simples seria você criptografar ´na mão´ a senha e incluí-la no programa, que teria apenas a rotina para descriptografar.

A solução preguiçosa seria usar o [url=http://upx.sourceforge.net/]UPX[/url] para compactar seu programa, assim pelo menos para o usuário típico sua senha estará escondida.


Responder

17/03/2005

Moonlight

Usei a solução da criptografia. Alias, prefiro chamar de mascaramento de string. Ficou bem legal. Posto abaixo pro caso de ser útil pra alguem um dia:


#include<stdio.h>
include<stdlib.h>

char linha0[30],linha1[30], linha2[30];
char senhacriptografada[30];
char senhadescriptografada[30];

void descriptografa(char pwdc[20]) {
  int i, j, k;
  int posicao, posicao1;
  char caracter, caracter1;

  for(i=0;pwdc[i]!=´\0´;i++) {
     caracter = pwdc[i];
     
     for(k=0;linha1[k]!=´\0´;k++) {
        if (linha1[k] == caracter) {
  posicao = k;
  break;
}
     }
     
     caracter1 = linha2[posicao];
 
     for(j=0;linha1[j]!=´\0´;j++) {
        if (linha1[j] == caracter1) {
          posicao1 = j;
          break;
        } 
     }
     
    senhadescriptografada[i] = linha0[posicao1];
  }
}



void criptografa(char pwd[20]) {
  int i, j, k;
  int posicao, posicao1;
  char caracter, caracter1;

  for(i=0;pwd[i]!=´\0´;i++) {
     caracter = pwd[i];
     for(k=0;linha0[k]!=´\0´;k++) {
        if (linha0[k] == caracter) {
  posicao = k;
  break;
}
     }
     
     caracter1 = linha1[posicao];
     for(j=0;linha2[j]!=´\0´;j++) {
        if (linha2[j] == caracter1) {
          posicao1 = j;
          break;
        } 
     }
     
    senhacriptografada[i] = linha1[posicao1];
  }
}


No caso, é preciso alimentar as strings linha0, linha1, linha2 com strings que contenham os caracteres da senha e outros caracteres tambem, pra criptografar. Os caracteres da string devem ser os mesmos, mas colocados em ordem diferente, e aparecer só uma vez cada.


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar