/*
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);
}
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
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment