Sophie

Sophie

distrib > Mandriva > 2009.1 > x86_64 > by-pkgid > a7167227f608b3ff6afb40e40399a91d > files > 6

steghide-0.5.1-9mdv2009.0.src.rpm


http://sourceforge.net/mailarchive/forum.php?thread_id=8587063&forum_id=6018

diff -Naur steghide-0.5.1/src/Arguments.cc steghide-0.5.1.oden/src/Arguments.cc
--- steghide-0.5.1/src/Arguments.cc	2003-10-11 23:25:04.000000000 +0200
+++ steghide-0.5.1.oden/src/Arguments.cc	2006-01-08 09:49:34.000000000 +0100
@@ -20,6 +20,7 @@
 
 #include <cstring>
 #include <iostream>
+#include <fstream>
 #include <string>
 
 #include "MCryptPP.h"
@@ -28,6 +29,8 @@
 #include "error.h"
 #include "msg.h"
 
+using namespace std;
+
 // the global Arguments object
 Arguments Args ;
 
@@ -320,11 +323,44 @@
 	return found ;
 }
 
+bool Arguments::parse_PassphraseFile (ArgIt& curarg)
+{
+       bool found = false ;
+
+       if (*curarg == "-pf" || *curarg == "--passphrase-file") {
+               if (Passphrase.is_set()) {
+                       throw ArgError (_("the passphrase is already set.")) ;
+               }
+
+               if (++curarg == TheArguments.end()) {
+                       throw ArgError (_("the \"%s\" argument must be followed by the passphrase filename."), (curarg - 1)->c_str());
+               }
+
+               string s;
+               if( *curarg == "-" ) { // - means standard input
+                 cin >> s;
+               } else {
+                 ifstream passphraseFile(curarg->c_str());
+                 if( !passphraseFile ) {
+                   throw ArgError (_("the passphrase could not be read from file \"%s\"."), curarg->c_str());
+                 }
+                 passphraseFile >> s;
+                 passphraseFile.close();
+               }
+               Passphrase.setValue (s);
+               found = true ;
+               curarg++ ;
+       }
+
+       return found ;
+}
+
 bool Arguments::parse_Passphrase (ArgIt& curarg)
 {
 	bool found = false ;
 
-	if (*curarg == "-p" || *curarg == "--passphrase") {
+	found = parse_PassphraseFile( curarg );
+	if (!found && (*curarg == "-p" || *curarg == "--passphrase")) {
 		if (Passphrase.is_set()) {
 			throw ArgError (_("the passphrase argument can be used only once.")) ;
 		}
diff -Naur steghide-0.5.1/src/Arguments.h steghide-0.5.1.oden/src/Arguments.h
--- steghide-0.5.1/src/Arguments.h	2003-10-11 23:23:57.000000000 +0200
+++ steghide-0.5.1.oden/src/Arguments.h	2006-01-08 09:50:25.000000000 +0100
@@ -124,6 +124,7 @@
 	bool parse_ExtFn (ArgIt& curarg) ;
 	bool parse_CvrFn (ArgIt& curarg) ;
 	bool parse_StgFn (ArgIt& curarg) ;
+	bool parse_PassphraseFile (ArgIt& curarg) ;
 	bool parse_Passphrase (ArgIt& curarg) ;
 	bool parse_Checksum (ArgIt& curarg) ;
 	bool parse_Compression (ArgIt& curarg) ;
diff -Naur steghide-0.5.1/src/Session.cc steghide-0.5.1.oden/src/Session.cc
--- steghide-0.5.1/src/Session.cc	2003-09-29 12:07:10.000000000 +0200
+++ steghide-0.5.1.oden/src/Session.cc	2006-01-08 09:52:28.000000000 +0100
@@ -260,6 +260,8 @@
 		"   -cf <filename>        embed into the file <filename>\n"
 		" -p, --passphrase        specify passphrase\n"
 		"   -p <passphrase>       use <passphrase> to embed data\n"
+		" -pf, --passphrase-file  read passphrase from the specified file\n"
+		"   -pf <filename>        \n"
 		" -sf, --stegofile        select stego file\n"
 		"   -sf <filename>        write result to <filename> instead of cover-file\n"
 		" -e, --encryption        select encryption parameters\n"
@@ -279,6 +281,8 @@
 		"   -sf <filename>        extract data from <filename>\n"
 		" -p, --passphrase        specify passphrase\n"
 		"   -p <passphrase>       use <passphrase> to extract data\n"
+		" -pf, --passphrase-file  read passphrase from the specified file\n"
+		"   -pf <filename>        \n"
 		" -xf, --extractfile      select file name for extracted data\n"
 		"   -xf <filename>        write the extracted data to <filename>\n"
 		" -f, --force             overwrite existing files\n"
@@ -288,6 +292,8 @@
 		"\noptions for the info command:\n"
 		" -p, --passphrase        specify passphrase\n"
 		"   -p <passphrase>       use <passphrase> to get info about embedded data\n"
+		" -pf, --passphrase-file  read passphrase from the specified file\n"
+		"   -pf <filename>        \n"
 
 		"\nTo embed emb.txt in cvr.jpg: steghide embed -cf cvr.jpg -ef emb.txt\n"
 		"To extract embedded data from stg.jpg: steghide extract -sf stg.jpg\n")) ;