Edycja pliku exe ukrywanie hasła

0

Witam

Napisałem mały programik który wysyła na serwer FTP plik z raportem.
Po kompilacji dostaje plik exe.
Gdy go edytowałem znalazłem dane potrzebne do logowania na serwer.
Jak mogę zaszyfrować te dane, lub jak można zmusić kompilator aby plik wynikowy exe był nie czytelny.?

0

Kompilatora nie zmusisz. Możesz zaszyfrować te dane jakimś algorytmem a potem w programie będziesz musiał wpisać hasło do odszyfrowania tych danych. Tylko czy w takim razie nie lepiej żeby user musiał podać dane do logowania do ftp po prostu?

0

Jak nie zakładasz że ktoś będzie dłużej reversował ten program. Tylko coś w stylu że brat/kolega/siostra otworzy w notatniku, i zobaczy passy, to XORowane hasło w stringu będzie ok. W przeciwnym wypadku użyj jakiegoś bardziej skompilowanego algorytmu szyfrowania.

0

@Shalom skoro dane są hardcodowane to domyślam się, że FTP jest "centralny" (należy do twórcy) i chodzi o to, aby dane nie dostały się w macki użyszkodnika.
Można by to zaszyfrować jakoś, ale na dobrą sprawę co by nie zrobić to i tak będzie się to dało wyciągnąć z pamięci. Ostatecznie użytkownik może użyć Wiresharka i wyjdzie na jedno (no chyba, że autor użyje FTPS).
@wojno Nie wiem jaki jest cel i przeznaczenie tych raportów, ale może lepszym rozwiązaniem będzie postawienie skryptu na HTTP i wysyłanie raportów do niego, a skrypt będzie je składował na serwerze? W tym przypadku możesz też zrobić jakąś weryfikację po stronie serwera (np. jakaś suma kontrolna przesyłana jako argument aby upewnić się, że request przyszedł z programu; sprawdzanie poprawności pliku raportu).

0

Program który napisałem otwiera inny program w wierszu poleceń który generuje raport raport.txt.

Następnie ten raport jest wysyłany na serwer FTP.

char password[] = "hasmo";
char localFile[] = "C:\\raport.txt";
char remoteFile[] = "raport.txt"; 
FtpPutFile(ftp, localFile, remoteFile, FTP_TRANSFER_TYPE_BINARY, 0);

Gdy edytuje plik exe to w tym pliku mogę znaleźć jawnie hasło jak również C:\raport.txt i na jaki adres wysyłane.

A co by trzeba zrobić żeby nie dało się rozszyfrować hasła, loginu, nawet adresu.
Wpisywanie haseł przez użytkownika nie wchodzi w grę.

0

Przecież jak ktoś będzie chciał dane do tego FTP to i tak wyśledzi snifferem, ewentualnie znajdzie odszyfrowane w pamięci. Nie możesz zrobić publicznego konta FTP?

1

A co by trzeba zrobić żeby nie dało się rozszyfrować hasła, loginu, nawet adresu.
Wpisywanie haseł przez użytkownika nie wchodzi w grę.

Nie ma takiej możliwości. Skoro program będzie potrafił te dane odszyfrować (a musi skoro chce ich użyć) to znaczy że można przeanalizować kod programu i złamać algorytm. Można też zapiąć się debugerem na tym programie i zwyczajnie poczekać aż zdekoduje dane ;] Z innej strony można też monitorować co program wysyła przez sieć oraz do jakich plików na dysku pisze.

0

A gdyby wysyłać te pliki pocztą. Jest to bezpieczniejsze?

0

Napisz po ludzku jakiś RESTowy serwis po stronie serwera i nie kombinuj.

1

Tak tylko uzupełnie, że serwer FTP też można skonfigurować tak, żeby pozwalał tylko i wyłącznie na zapis plików (ale już nie listowanie czy odczyt). W takim wypadku możesz nawet hasło plaintextem dać i będzie OK.

Nie wiem ofc jaką appkę piszesz i jakie założenia co do bezpieczeństwa masz, ale FTP brzmi mało szyfrowanie; może lepiej jakieś FTPS, HTTPS, etc (+weryfikacja certu ofc; może być niepodpisany jeśli sam go generujesz).

1 użytkowników online, w tym zalogowanych: 0, gości: 1