Build server password now obfuscated in config file. Obfuscation is per-machine so passing the file to someone else won't reveal the password.

This commit is contained in:
Scott Duensing 2023-01-22 21:13:19 -06:00
parent 7d116c6706
commit 6ac1f11291
4 changed files with 60 additions and 2 deletions

View file

@ -39,6 +39,7 @@
char *utilCreateString(char *format, ...);
char *utilCreateStringVArgs(char *format, va_list args);
char *utilDeobfuscateASCII(char *obfuscated);
void utilEnsureBufferSize(unsigned char **buffer, int *length, int wanted);
gboolean utilFileExists(char *filename);
gboolean utilFileOpen(WindowDataT *self, char *extension, char *what);
@ -46,6 +47,7 @@ gboolean utilFileSaveAs(WindowDataT *self, char *extension, char *what);
WindowDataT *utilGetWindowData(GtkWidget *window);
gboolean utilGetWidgetsFromMemory(char *resource, char *name[], GtkWidget **widgets[], gpointer userData);
gboolean utilMkDirP(const char *dir, const mode_t mode);
char *utilObfuscateASCII(char *clearText);
gboolean utilQuestionDialog(GtkWidget *parent, char *title, char *question);
void utilSetDirty(WindowDataT *self, gboolean dirty);
void utilWindowRegister(gpointer windowData);

View file

@ -185,7 +185,7 @@ static void loadConfig(ProjectDataT *self) {
case 6: // Password
DEL(self->buildPassword);
self->buildPassword = strdup(line);
self->buildPassword = utilDeobfuscateASCII(line);
break;
default: // Oops
@ -564,7 +564,9 @@ static void saveConfig(ProjectDataT *self) {
fprintf(out, "%d\n", self->buildHTTPPort);
fprintf(out, "%d\n", self->buildSSHPort);
fprintf(out, "%s\n", self->buildUser);
fprintf(out, "%s\n", self->buildPassword); //***TODO*** This is hardly secure.
temp = utilObfuscateASCII(self->buildPassword);
fprintf(out, "%s\n", temp);
DEL(temp);
fclose(out);
} else {
//***TODO*** Something bad happened.

View file

@ -70,6 +70,33 @@ char *utilCreateStringVArgs(char *format, va_list args) {
}
char *utilDeobfuscateASCII(char *obfuscated) {
char *deobfuscated = NULL;
char *hostname;
int i;
int j;
int c;
// Valid ASCII 32 - 126 (94 chars)
hostname = strdup(g_get_host_name());
// Decrypt.
j = 0;
deobfuscated = (char *)malloc((strlen(obfuscated) + 1) * sizeof(char));
for (i=0; i<strlen(obfuscated); i++) {
c = obfuscated[i] - hostname[j] - 32;
while (c < 0) c += 94;
deobfuscated[i] = c + 32;
j++;
if (j >= strlen(hostname)) j = 0;
}
deobfuscated[i] = 0;
return deobfuscated;
}
void utilEnsureBufferSize(unsigned char **buffer, int *length, int wanted) {
unsigned char *temp = NULL;
@ -268,6 +295,33 @@ gboolean utilMkDirP(const char *dir, const mode_t mode) {
}
char *utilObfuscateASCII(char *clearText) {
char *obfuscated = NULL;
char *hostname;
int i;
int j;
int c;
// Valid ASCII 32 - 126 (94 chars)
hostname = strdup(g_get_host_name());
// Obfuscate.
j = 0;
obfuscated = (char *)malloc((strlen(clearText) + 1) * sizeof(char));
for (i=0; i<strlen(clearText); i++) {
c = clearText[i] + hostname[j] - 32;
while (c > 94) c -= 94;
obfuscated[i] = c + 32;
j++;
if (j >= strlen(hostname)) j = 0;
}
obfuscated[i] = 0;
return obfuscated;
}
gboolean utilQuestionDialog(GtkWidget *parent, char *title, char *question) {
GtkWidget *dialog;
int response;