Stream verstecken
-
Hallo,
nochmal zum mitschreiben.
1. Leite nie von
ofstreamundifstreamab. Das führt zu nichts. Bevorzuge immerhas-astattis-aBeziehung.
2. Verwende die Funktionenopenundclosenicht. Nutze RAII aus!
3. Dasoin ofstream steht für output. Was solltest du anderes mit einem ofstream machen, als etwas auszugeben? Was ich sagen will,std::ios::outist total überflüssig, es heist nicht umsonst ofstream. Analoges gilt fürifstream.
-
Jetzt bin ich völlig konfus...
class file_ifstream : public std::ifstream
{
//private:
std::ifstream codedfs;
public:
file_ifstream(const string& InFile1) : codedfs(InFile1.c_str(), std::ios::binary) {}
};file_ifstream codedfs(InFile1);
while(!codedfs.eof())
{Die while schlaufe bricht gleich ab da die Datei nicht richtig eingelesen wurde.
Ich möchte InFile1 ins memory einlesen, verändern(tmp unsichtbar) und mit einer anderen normalen ifstream Datei vergleichen.
Danke
-
Wieso zur Hölle willst du von den Streams erben? Was ist dein Ziel? Du verwirrst hier alle.
-
Na weil ich sowas wie unten brauche. Es funktioniert ja wenn ich ofstream tmp auf die Hd schreibe und wieder als ifstream öffne aber genau das will ich ja nicht.
while(!codedfs.eof())
Byte = codedfs.get();
tfs.close();
etc.
Danke
-
Nur hat das was du da machst rein garnichts damit zu tun.
Sag doch mal WAS du erreichen möchtest und nicht wie du es erreichen möchtest.
Eimne Datei kannst du jedenfalls nicht für den Nutzer unsichtbar anlegen, das geht nicht, höchstens oberflächlich verstecken.
-
-
Ethon schrieb:
Nur hat das was du da machst rein garnichts damit zu tun.
Du meinst du hast keine Ahnung?
Na ich werde dann halt mal cooky451s Vorschlag probieren.
-
mike4 schrieb:
Ethon schrieb:
Nur hat das was du da machst rein garnichts damit zu tun.
Du meinst du hast keine Ahnung?
Na ich werde dann halt mal cooky451s Vorschlag probieren.Nein, du hast keine Ahnung.
Du versteckst hier den Stream vor anderen Nutzern des Codes (den Tipp hast du bekommen, da du einige Poster verwirrt hast) und keine Datei vor Nutzern des Programms.Bei cookys Vorschlag wird die Datei unter Linux unter /tmp mit nem Schrottnamen angelegt, unter Windows in den Pfad für temporäre Dateien.
Wenn du ganz viel Glück hast wird bei kleinen Daten nie eine Datei angelegt und alles im RAM angelegt, aber darauf darfst du dich unter keinen Umständen verlassen, weiß nicht ob da irgendein OS eine entsprechende API anbietet.Die einzige Möglichkeit eine Datei richtig zu verstecken ist das Schreiben eines modifizierten Festplatten-/Dateisystemtreibers oder eines Rootkits. Da Beides nicht in Frage kommt, schreib die Datei einfach nie auf die Platte und gut.
-
Juhu damit scheint es zu klappen: stringstream
-
DocShoe schrieb:
Unter Windows kannst du die Datei nicht verstecken. Ein Benutzer mit ausreichenden Rechten und passenden Tools kann zu jedem Prozess auflisten, welche Ressourcen der Prozess benutzt, und dazu gehören nun auch einmal Dateien.
Wenn der Dateiname (inkl. Pfad) frei wählbar ist kannst du ihn in dem Windows Ordnergewühl "verstecken". Mit genügend vielen kryptischen Unterverzeichnissen unter "c:\Dokumente und Einstellungen" kann man selbst hart gesottene Schnüffler abschrecken :D.
Für unversierte Benutzer reicht es wahrscheinlich schon, das "Hidden" Flag der Datei zu setzen und die Windows Explorer Optionen so einstellen, dass er keine versteckte Dateien mehr anzeigt. Das Verstecken einer Datei funktioniert mit derSetFileAttributesund dem FlagFILE_ATTRIBUTE_HIDDEN.Du bist wohl einer von denen die Adminrechte für ihr Programm brauchen weil sie alles im Installationsordner spoeichern?