Tag Cloud

CRM 2011 (161) CRM 4.0 (144) C# (116) JScript (109) Plugin (92) Registry (90) Techpedia (77) PyS60 (68) WScript (43) Plugin Message (31) Exploit (27) ShellCode (26) FAQ (22) JavaScript (21) Killer Codes (21) Hax (18) VB 6.0 (17) Commands (16) VBScript (16) Quotes (15) Turbo C++ (13) WMI (13) Security (11) 1337 (10) Tutorials (10) Asp.Net (9) Safe Boot (9) Python (8) Interview Questions (6) video (6) Ajax (5) VC++ (5) WebService (5) Workflow (5) Bat (4) Dorks (4) Sql Server (4) Aptitude (3) Picklist (3) Tweak (3) WCF (3) regex (3) Config (2) LINQ (2) PHP (2) Shell (2) Silverlight (2) TSql (2) flowchart (2) serialize (2) ASHX (1) CRM 4.0 Videos (1) Debug (1) FetchXml (1) GAC (1) General (1) Generics (1) HttpWebRequest (1) InputParameters (1) Lookup (1) Offline Plug-ins (1) OutputParameters (1) Plug-in Constructor (1) Protocol (1) RIA (1) Sharepoint (1) Walkthrough (1) Web.config (1) design patterns (1) generic (1) iframe (1) secure config (1) unsecure config (1) url (1)

Pages

Wednesday, August 10, 2011

JPG Information





/* 

DESCRIPTION: Extracts any information after the actual end of a JPEG file.

*/



#include

#include

#include

using namespace std;



unsigned long int szFile;

char * buffer;



int main(int argc, char* argv[])

{

char *buffer;

int dataBegin;

char SOI[] = { 0xFF, 0xD8 }; //Start of Image

char COMM[] = { 0xFF, 0xFE }; //Comments Follow

char EOI[] = { 0xFF, 0xD9 }; //End of Image

ifstream fin;

ofstream fout;

if(argc != 3 ) {

cout << "Usage: " << argv[0] << " file.jpg outputfile.ext" << endl;

exit(EXIT_SUCCESS);

}



fin.open(argv[1], ios::binary | ios::in | ios::ate);

if(!fin.is_open()) {

cerr << "Error while opening input file!" << endl;

exit(EXIT_FAILURE);

}

szFile = (unsigned long int) fin.tellg();

if(szFile < 4) {

cerr << "Not a valid jpg image file!" << endl;

exit(EXIT_SUCCESS);

}



buffer = new char[szFile];

fin.seekg (0, ios::beg);

fin.read (buffer, szFile);

fin.close();



if(buffer[0] != (char) 0xFF || buffer[1] != (char) 0xD8) {

cerr << "Not a valid jpeg image file!" << endl;

exit(EXIT_SUCCESS);

}



bool comments = false;

for(unsigned long int i = 2; i < szFile-1; i++) {

if(buffer[i] == COMM[0] && buffer[i+1] == COMM[1]) {

cout << "Jpeg Comments: "; comments = true;

}



if(buffer[i] == EOI[0] && buffer[i+1] == EOI[1]) {

if(comments){

//end comments section;

comments=false;

cout << endl;

}

cout << "Jpeg Image Size: " << i+1 << " bytes" << endl;

dataBegin = i + 2;

break;

}

if(comments) cout << (char)buffer[i];

}



fout.open(argv[2], ios::out | ios::binary);

if(!fout.is_open()) {

cerr << "Error while opening output file!" << endl;

exit(EXIT_FAILURE);

}

for(unsigned long int i = dataBegin; i < szFile; i++) {

fout.put(buffer[i]);

}

fout.close();

cout << "Done Writing " << szFile - dataBegin << " bytes to " << argv[2] << endl;



delete[] buffer;

exit(EXIT_SUCCESS);

}

No comments: