Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/impulseadventure/jpegsnoop

JPEGsnoop: JPEG decoder and detailed analysis
https://github.com/impulseadventure/jpegsnoop

c corrupt decoder huffman image jpeg jpeg-decoder jpg mfc parser psd repair

Last synced: 4 days ago
JSON representation

JPEGsnoop: JPEG decoder and detailed analysis

Awesome Lists containing this project

README

        

===============================================================================
JPEGsnoop - README
by Calvin Hass
http://www.impulseadventure.com/photo/jpeg-snoop.html
===============================================================================

JPEGsnoop is a JPEG decoding and analysis utility written for Windows.
It reports all metadata contained within an image in addition to
the unique compression signatures that can be used to identify edited images.

JPEGsnoop is a portable application that does not require installation.

Contents:
1) Files
2) Acknowledgements

-------------------
1) FILES
-------------------

JPEGsnoop is written in Microsoft Visual Studio 2012 Pro (C++) using MFC.

The project is a SDI (Single Document Interface) with Document-View architecture.

Files are arranged as follows:

MFC User Interface
------------------
JPEGsnoopDoc.* - SDI Document class.
JPEGsnoopView.* - SDI View class (for top split window / textual output)
JPEGsnoopViewImg.* - SDI View class (for bottom split window / image output)
MainFrm.* - SDI Frame class. Contains status bar, toolbar and
code to support the splitter window.

Global Definitions
------------------
snoop.h - Global defines and debugging options. Primarily
used to denote current release version number.

Application
-----------
CntrItem.* - OLE container / RichEdit class
DbSigs.* - Compression signature database class
! Dib.* - DIB (Bitmap) class
DocLog.* - Document logging helper routines
FileTiff.* - TIFF export routines
General.*
! HyperlinkStatic.* - Hyperlink class for dialog box static controls
ImgDecode.* - Image Decoder (for Scan segment)
JfifDecode.* - JFIF Parser
JPEGsnoop.*
! Md5.* - MD5 hash routines, used for compression signature
! Registry.* - Windows Registry class
SnoopConfig.* - Application configuration class
stdafx.* - Windows precompiled headers (auto-created)
! UrlString.* - URL En/Decoding class
WindowBuf.* - File buffer / cache routines

UNUSED:
! CmdLine.* - Command-line processing
! OperationDlg.* - Progress dialog with cancel

NOTE: Files marked with "!" denote classes that have reused code from
other authors. Please see the acknowledgements section.

Supporting Dialog Boxes
-----------------------
AboutDlg.* - About dialog. Indicates version number and link to
website with updated releases.
DbManageDlg.* - Local signature database management dialog. This
dialog allows the user to view and delete the compression
signatures that have been saved locally.
DbSubmitDlg.* - Signature database submit dialog. This dialog provides an
opportunity for the user to describe a few characteristics
of the image signature that will be sent to the database.
DecodeDetailDlg.* - Detailed decode dialog. Asks the user for a starting MCU
coordinate and length to begin detailed decoding.
ExportDlg.* - Export JPEG dialog. Provides a few options in the JPEG
export process.
ExportTiffDlg.* - Export TIFF dialog. Provides a few options in the TIFF
export process.
FolderDlg.* - Generic folder select dialog.
LookupDlg.* - Lookup file offset from MCU dialog. User inputs MCU coordinate
and lookup returns file offset within scan segment.
ModelessDlg.* - Generic modeless dialog.
NoteDlg.* - Generic note dialog. This dialog is used to inform the
user of runtime messages or warnings.
OffsetDlg.* - File offset dialog. Provides the user with the ability to
specify a starting file offset for parsing/decoding.
OperationDlg.* - Progress dialog for lengthy operations.
OverlayBufDlg.* - File overlay dialog. This dialog presents the user with
the current hex values at a specific position within the file
and provides the user with the ability to overwrite one or
more bytes with new hex values.
SettingsDlg.* - Configuration settings dialog. Provides all major configuration
options to the user. The settings are saved in the registry.
TermsDlg.* - Terms and conditions dialog. The dialog presents the user with
the EULA and records whether the user accepted it.
UpdateAvailDlg.* - Release update available dialog. Informs the user of the
existence of a newer version of JPEGsnoop and offers the
option of launching a browser window to download the latest
version.

Compression Signature Database
------------------------------
Signatures.inl - The current built-in compression signatures database.
This file is currently generated from a PHP script
residing on the ImpulseAdventure.com website that
fetches the latest compression signatures from a
MySQL database.

-------------------
2) ACKNOWLEDGEMENTS
-------------------

I am very grateful to the following authors whose classes or concepts I have reused in
the development of JPEGsnoop.

FolderDlg.cpp
- MSDN Magazine

Dib.cpp
- MSDN?

HyperlinkStatic.cpp
- http://www.codeguru.com/cpp/controls/staticctrl/article.php/c5801
- Franz Wong (http://www.codeguru.com/member.php/2259/)

MD5.cpp
- By RSA

Registry.cpp
- http://www.codeproject.com/KB/system/registryvars.aspx
- Steve King
- License: CPOL "Code Project Open License" http://www.codeproject.com/info/cpol10.aspx

UrlString.cpp
- Stephane Erhardt
- http://www.codeguru.com/cpp/cpp/cpp_mfc/comments.php/c4029/?thread=9533

I also would like to give a special mention to Phil Harvey, the author of the
comprehensive ExifTool (http://www.sno.phy.queensu.ca/~phil/exiftool/). His work
in collating and documenting the vast set of EXIF tags has been incredibly helpful.