Szyfrowanie archiwum GG

0

Na wstępie zaznaczam, że zdaję sobie sprawę z tego że:
a) są lepsze sposoby na zaszyfrowanie pliku( aczkolwiek ten wystarczy przed wścibską osobą bez wiedzy informatycznej)
b) przedstawiony przeze mnie program "wypluwa" o jeden znak za dużo.

#include <iostream>
#include <fstream>
#include <string>
#include <Windows.h>

using namespace std;

const N = // jakakolwiek liczba pomiędzy 100 a 200

void Decode(std::string iPath )
{
	std::ifstream iFile;
	std::ofstream oFile;

	unsigned char temp;

	iFile.open(iPath,ios::binary);
	oFile.open("d"+iPath,ios::binary);

	while(iFile)
	{
	
	
	temp=iFile.get();
	
	temp=temp^N;

	oFile << temp;
	}
	

	iFile.close();
	oFile.close();

}




int main()
{
	string userinput;
	
	while(userinput != "exit")
	{	
		cin>>userinput;
		Decode(userinput);
	}
	
	

	system("PAUSE");
	return 0;
}

Drugie uruchomienie ( przynajmniej w założeniu) ma odwracać skutki pierwszego (czyli odkodować plik) . Moją "ofiarą" zostało archiwum GG 10* i tu pojawił się problem - po zakodowaniu , odkodowaniu i usunięciu dwóch dodatkowych znaków archiwum nie chce się włączyć ani w czytniku SQLite, ani w okienku GG, ani za pomocą programu Archive.db Tools 1.7.2. Dodam, że po otwarciu w notatniku widać wszystkie moje rozmowy. Niesamowite...

*W Windows 7:
C:\Users[Nazwa profilu]\AppData\Roaming\Gadu-Gadu 10[numer] żeby dojść trzeba włączyć wyświetlanie plików ukrytych

0

Stworz nowy profil albo chociaz nowe archiwum z jakas testowa rozmowa, zrob kopie zapasowa, potraktuj tak samo jak to ktore probujesz odzyskac(2x uruchomienie programu, usuniecie 2 ostatnich znakow) i porownaj pliki(np cmd - comp lub fc).

A znak za duzo wypluwa z bardzo prostego powodu - w petli nawet jak nie dasz rady odczytac znaku to i tak dopisujesz do pliku wyjsciowego zmienna temp.

0
cyriel napisał(a)

Stworz nowy profil albo chociaz nowe archiwum z jakas testowa rozmowa, zrob kopie zapasowa, potraktuj tak samo jak to ktore probujesz odzyskac(2x uruchomienie programu, usuniecie 2 ostatnich znakow) i porownaj pliki(np cmd - comp lub fc).

Zrobiłem dokładnie tak jak mówisz - z tym że napisałem własny program do porównywania plików :) . Dzięki za komendy w cmd, wygląda na to że odkryłem koło na nowo ;).

cyriel napisał(a)

A znak za duzo wypluwa z bardzo prostego powodu - w petli nawet jak nie dasz rady odczytac znaku to i tak dopisujesz do pliku wyjsciowego zmienna temp.

No to to oczywyste. Ale zmiana tego nie ma sensu bo już mleko zostało rozlane. Zresztą nie to jest chyba przyczyną problemu, może jest nią to?

http://pl.wikipedia.org/wiki/BOM_%28informatyka%29

0

Właśnie otworzyłem w programie notepad++, widać że "przemielona" wersja archiwum nie ma znaków "NUL" które wypełniają przestrzeń pliku w oryginalnej wersji. Dlaczego? No i jaki jest możliwie najprostszy sposób cofnięcia tego?

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