Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Steganographie

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
25.03.2007, 15:56 Uhr
SearchAndDestroy



moin moin allerseits,

unsere Klasse hat in der eben vergangennen Woche ein neues Projekt bekommen was uns doch in staunen versetzte denn es hat keiner irgend eine Ahnung wie wir das anpacken sollen.

Das Projekt heißt, wie im Titel schon gennant, Steganographie.

Unsere Aufgabenstellung lautet wie folgt:

Erstellen Sie ein Programm, um die Steganographie zu nutzen mit folgenden Anforderungen:

- Ändern des LSB eines Farbbytes.
- Vor dem Verstecken überprüfen des Bildes, ob es geeignet ist.
- Vor dem Entpacken überprüfen, ob das Bild Daten enthält.
- Speichern des ursprünglichen Dateinamens.
- Abfragen, ob das Originalbilderhalten oder gelöscht werden soll.
- Verstecken und vollständige Wiederherstellung (exakte Größe) einer Datei.
- Keiner Veränderung der Größe des Zielbildes
- Parametereingabe entweder im Programmablauf oder bei Programmaufruf mit Parameterübergabe, z.b. stegano.exe entpack bild.bmp datei.nam
- /? bei Programmaufruf erklärt die Möglichkeiten der Parameterübergabe.
- NUR BMP Unterstützung



das währs dann.
Ganz schön happig wie ich finde, da wir das Fach erst seit ein paar Monaten haben.

Ich bitte euch darum mir/uns Hilfestellungen zu geben wie wir das ganze anpacken können.
Wie z.b. auslesen und umgehen mit dem BMP Code, usw.
Ich währe auch nicht abgeneigt ein paar Programmschnipsel einzusehen um zu sehen wie das umgesetzt wurde.


DANKE schon einmal.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.03.2007, 20:45 Uhr
0xdeadbeef
Gott
(Operator)


Seid froh, dass es nur um Bitmaps geht, damit ist das prinzipiell denkbar einfach. Ihr agiert auf der Bitmap selbst (evtl. vorhandene Dateiheader usw. dürfen nicht verändert werden), dazu sollte es in der verwendeten Systembibliothek (In diesem Fall wohl WinAPI, oder ggf. MFC - ich erinnere mich da an eine Klasse CBitmap) Einlesefunktionen geben. Daraus solltet ihr ein char-Array bekommen (wahrscheinlich zweidimensional, aber das lässt sich ja einfach umcasten), und darin könnt ihr die Nachricht verstecken.

Den Algorithmus müsst ihr euch wohl selbst ausdenken, meine erste Idee dazu wäre halt einfach:

1. Nachricht verschlüssen
2. Länge der verschlüsselten Nachricht vorne dran schreiben
3. Die so entstandene Endnachricht bitweise in die LSBs der Bitmap schreiben.

Also grob über den Daumen:

C++:
void stegano_encrypt(std::vector<char> &dest, std::vector<char> const &bitmap, std::string const &message) {
  std::string enc_message = encrypt_message(message);
  std::size_t bm_ix;

  if(enc_message.size() * 8 > bitmap.size() - sizeof(std::size_t) * 8) {
    throw message; // Nachricht zu lang
  }

  for(bm_ix = 0; bm_ix < sizeof(std::size_t) * 8; ++bm_ix) {
    dest.push_back((bitmap[bm_ix] & ~1) | (eng_message.size() >> bm_ix & 1));
  }

  for(std::string::const_iterator i = enc_message.begin(); i != enc_message.end(); ++i) {
    for(int j = 0; j < 8; ++j) {
      dest.push_back((bitmap[bm_ix] & ~1) | (*i >> j & 1));
      ++bm_ix;
    }
  }
}


...und beim entschlüsseln dann halt umgekehrt. (Code völlig ungetestet, nur zur Illustration)

Ach so, und prinzipiell ist zu Steganoghraphie auf Bitmaps zu sagen - das funktioniert nicht besonders gut, wenn die bitmap große gleichfarbige Bereiche enthält (dann sind die Fluktuationen leicht zu erkennen)
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 25.03.2007 um 20:48 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.03.2007, 22:10 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


da wär jpg ganz interessant, da kann man die fluktuationen dann auf den huffman schieben
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.03.2007, 22:27 Uhr
0xdeadbeef
Gott
(Operator)


JPEG ist da allerdings äußerst interessant. Allerdings ist es da auch deutlich komplizierter, die Nachricht einzubinden, weil das LSB eines Datenbytes per Schmetterlingseffekt nachher alles mögliche bewirken kann, von daher ist für ein Schulprojekt BMP schon eine sinnvolle Wahl. Macht die Sache deutlich einfacher.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: