Não permitir visualização de código no binário
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
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
Curtidas 0
Respostas
Massuda
16/03/2005
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.
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.
GOSTEI 0
Moonlight
16/03/2005
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:
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.
#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.
GOSTEI 0