-
Notifications
You must be signed in to change notification settings - Fork 16
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5aa9e55
commit ebc18a9
Showing
3 changed files
with
369 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,331 @@ | ||
--- | ||
description: >- | ||
ExifTool is a command-line application for reading, writing, and editing meta | ||
information in files. | ||
--- | ||
|
||
# ExifTool | ||
|
||
## URL | ||
|
||
[https://example.com](https://exiftool.org) | ||
|
||
## Description | ||
|
||
ExifTool is a platform-independent Perl library and command-line application designed for reading, writing, and editing meta information in various file formats. It supports a wide array of metadata types, including EXIF, GPS, IPTC, XMP, JFIF, and more, from numerous digital camera brands. ExifTool can handle many file types, such as images, audio, and video files, making it a versatile tool for managing metadata. It is especially useful for photographers, archivists, and digital forensics professionals who need to analyze metadata in their files. ExifTool can extract detailed information, perform batch processing, rename files based on metadata, and even geotag images. | ||
|
||
## Using ExifTool for OSINT Research: Code Examples and Applications | ||
|
||
ExifTool can be a helpful utility for open source researchers. It allows for the extraction and analysis of metadata from various file types, which can reveal hidden information about digital media. Below are ways to use ExifTool tailored specifically for open source investigations, complete with code examples and explanations. | ||
|
||
*** | ||
|
||
### 1. **Extracting Metadata to Identify File Origin** | ||
|
||
```bash | ||
exiftool image.jpg | ||
``` | ||
|
||
This command displays all metadata from `image.jpg`. This can help identify the camera model, software used, and other details that may point to the file's origin or authenticity. | ||
|
||
*** | ||
|
||
### 2. **Extracting GPS Coordinates from Images** | ||
|
||
```bash | ||
exiftool -gpslatitude -gpslongitude suspect_image.jpg | ||
``` | ||
|
||
This extracts GPS latitude and longitude data from suspect\_image.jpg. Obtained coordinates can be used in external mapping services to visualize the location. | ||
|
||
This command extracts GPS latitude and longitude data from `suspect_image.jpg`. Open source researchers can use these coordinates to pinpoint the exact location where the photo was taken. | ||
|
||
After obtaining the GPS coordinates, you can input them into mapping services like Google Maps to visualize the location. | ||
|
||
*** | ||
|
||
### 3. **Analyzing Timestamps to Build Timelines** | ||
|
||
```bash | ||
exiftool -AllDates suspect_image.jpg | ||
``` | ||
|
||
This retrieves date and time metadata (e.g., CreateDate, ModifyDate), useful for establishing timelines of events. | ||
|
||
This command retrieves all date and time metadata tags from the image, such as `CreateDate`, `ModifyDate`, and `DateTimeOriginal`. This information can help establish a timeline of events. | ||
|
||
*** | ||
|
||
### 4. **Comparing Metadata Across Multiple Files** | ||
|
||
```bash | ||
exiftool -T -FileName -CreateDate -Model *.jpg > metadata_report.txt | ||
``` | ||
|
||
This command generates a tab-delimited report (`metadata_report.txt`) for all `.jpg` files in the directory, listing filenames, creation dates, and camera models. Open source researchers can look for patterns or inconsistencies across multiple files. | ||
|
||
*** | ||
|
||
### 5. **Identifying Software Used for Editing** | ||
|
||
```bash | ||
exiftool -Software suspect_image.jpg | ||
``` | ||
|
||
This command extracts the `Software` tag, indicating any software used to edit or process the image. Detecting editing software can suggest whether an image has been manipulated. | ||
|
||
*** | ||
|
||
### 6. **Detecting Metadata Anomalies** | ||
|
||
```bash | ||
exiftool -G1 -a -s suspect_image.jpg | ||
``` | ||
|
||
This command displays all metadata tags, including duplicates, with group names (`-G1`), and in short format (`-s`). Anomalies or inconsistencies in metadata can indicate tampering or provide investigative leads. | ||
|
||
*** | ||
|
||
### 7. **Extracting Thumbnail Images** | ||
|
||
```bash | ||
exiftool -b -ThumbnailImage suspect_image.jpg > extracted_thumbnail.jpg | ||
``` | ||
|
||
Extracting the embedded thumbnail can reveal the original image before any edits were made, which is useful if the main image has been altered but the thumbnail hasn't. | ||
|
||
*** | ||
|
||
### 8. **Retrieving Metadata from Documents** | ||
|
||
```bash | ||
exiftool suspect_document.pdf | ||
``` | ||
|
||
For documents, this command extracts metadata from `suspect_document.pdf`, potentially revealing the author's name, creation date, software used, and more. | ||
|
||
*** | ||
|
||
### 9. **Extracting Metadata from Video Files** | ||
|
||
```bash | ||
exiftool -Title -CreationDate -Duration suspect_video.mp4 | ||
``` | ||
|
||
This command retrieves specific metadata from `suspect_video.mp4`, such as the title, creation date, and duration, aiding in video analysis during investigations. | ||
|
||
*** | ||
|
||
### 10. **Filtering Files with Specific Metadata Attributes** | ||
|
||
```bash | ||
exiftool -if '$Make eq "Apple"' -FileName *.jpg | ||
``` | ||
|
||
This command processes all `.jpg` files and lists filenames where the `Make` tag equals "Apple". This is useful for identifying images taken with specific devices. | ||
|
||
*** | ||
|
||
### 11. **Searching for Files Created in a Specific Timeframe** | ||
|
||
```bash | ||
exiftool -if '$CreateDate ge "2024:01:01 00:00:00" and $CreateDate le "2024:12:31 23:59:59"' -FileName *.jpg | ||
``` | ||
|
||
This command lists all images taken within the year 2024, helping to narrow down files relevant to a specific period. | ||
|
||
*** | ||
|
||
### 12. **Automating Metadata Extraction for Web Downloads** | ||
|
||
When downloading media from the web, you can automate metadata extraction: | ||
|
||
```bash | ||
wget -O downloaded_image.jpg http://example.com/image.jpg && exiftool downloaded_image.jpg | ||
``` | ||
|
||
This command downloads an image and immediately extracts its metadata, streamlining the process during an investigation. | ||
|
||
*** | ||
|
||
### 13. **Extracting Hidden Metadata from Social Media Images** | ||
|
||
**Note:** Many social media platforms strip metadata from images. However, some may retain certain metadata. | ||
|
||
```bash | ||
exiftool social_media_image.jpg | ||
``` | ||
|
||
This command attempts to extract any remaining metadata from an image downloaded from social media. While limited, any recovered data could be valuable. | ||
|
||
*** | ||
|
||
### 14. **Examining File System Metadata** | ||
|
||
```bash | ||
stat suspect_file.jpg | ||
``` | ||
|
||
While not an ExifTool command, `stat` provides file system metadata such as last access time, modification time, and inode change time, which can complement ExifTool's metadata in open source investigations. | ||
|
||
*** | ||
|
||
### 15. **Extracting Metadata from Audio Files** | ||
|
||
```bash | ||
exiftool -Artist -Album -Track suspect_audio.mp3 | ||
``` | ||
|
||
This command retrieves metadata from `suspect_audio.mp3`, which can reveal artist information, album names, and track numbers, helpful in tracking the distribution of audio files. | ||
|
||
*** | ||
|
||
### 16. **Generating KML Files for Geospatial Analysis** | ||
|
||
```bash | ||
exiftool -p kml.fmt -q -n images/ > photos.kml | ||
``` | ||
|
||
This command creates a KML file (`photos.kml`) from images in the `images/` directory that can be loaded into Google Earth or other GIS software to visualize photo locations. | ||
|
||
**Note:** You'll need to create a `kml.fmt` formatting file as per ExifTool documentation. | ||
|
||
*** | ||
|
||
### 17. **Verifying File Authenticity with Checksums** | ||
|
||
```bash | ||
exiftool -MD5Checksum suspect_file.jpg | ||
``` | ||
|
||
This command calculates the MD5 checksum of `suspect_file.jpg`, which can be used to verify file integrity or compare against known hashes. | ||
|
||
*** | ||
|
||
### 18. **Identifying Embedded Files or Steganography** | ||
|
||
```bash | ||
exiftool -ee -b suspect_file.jpg > embedded_data.bin | ||
``` | ||
|
||
The `-ee` option extracts embedded data streams. This command attempts to extract any embedded files or data within `suspect_file.jpg`, which may be hidden intentionally. | ||
|
||
*** | ||
|
||
### 19. **Extracting Metadata from Emails** | ||
|
||
While ExifTool primarily handles files, you can save emails as `.eml` files and extract headers: | ||
|
||
```bash | ||
exiftool email.eml | ||
``` | ||
|
||
This command extracts metadata from `email.eml`, including headers that reveal sender IP addresses, email clients, and routing information. | ||
|
||
*** | ||
|
||
### 20. **Checking for Metadata Inconsistencies** | ||
|
||
```bash | ||
exiftool -warning suspect_image.jpg | ||
``` | ||
|
||
This command checks for any warnings or errors in the metadata structure of `suspect_image.jpg`. Inconsistencies may indicate manipulation or corruption. | ||
|
||
*** | ||
|
||
## Additional Tips for Open Source Researchers | ||
|
||
* **Combine Tools:** Use ExifTool in conjunction with other tools like `strings`, `binwalk`, or `foremost` for comprehensive analysis. | ||
* **Script Automation:** Create scripts to automate metadata extraction from large datasets. | ||
* **Stay Ethical:** Always ensure your activities comply with legal and ethical guidelines, respecting privacy and data protection laws. | ||
|
||
*** | ||
|
||
## Cost | ||
|
||
* [x] Free | ||
* [ ] Partially Free | ||
* [ ] Paid | ||
|
||
|
||
|
||
## Level of difficulty | ||
|
||
<table><thead><tr><th data-type="rating" data-max="5"></th></tr></thead><tbody><tr><td>3</td></tr></tbody></table> | ||
|
||
## Requirements | ||
|
||
Requires Perl 5.004 or later for the Perl version.  | ||
|
||
The Windows executable version does not require Perl.  | ||
|
||
The MacOS package installs the ExifTool command-line application and libraries. | ||
|
||
## Limitations | ||
|
||
* **Incomplete Metadata Removal**: May not completely remove all metadata from some file types, leaving behind sensitive information. | ||
* **Limited Support for Some File Formats**: Has limited or no support for newer, obscure, or proprietary formats. | ||
* **Command-Line Complexity**: Operates via command line, which can be challenging for users unfamiliar with it. | ||
* **No Native Graphical User Interface (GUI)**: Lacks a built-in GUI; third-party GUIs may not support all features. | ||
* **Risk of Data Loss or Corruption**: Incorrect use can corrupt files or lead to data loss; backups are essential. | ||
* **Potential Conflicts with Antivirus Software**: May be flagged or blocked by some antivirus programs. | ||
* **Cannot Detect Metadata Tampering**: Unable to verify the authenticity or integrity of metadata. | ||
* **Performance Limitations with Large Files or Datasets**: Processing large files or many files can be slow and resource-intensive. | ||
* **Steep Learning Curve for Advanced Features**: Advanced functionalities require in-depth knowledge of metadata standards. | ||
* **Not a Comprehensive Forensic Tool**: Lacks features like secure logging and tamper-proof operations needed for forensic analysis. | ||
* **Limited Detection of Hidden or Embedded Data**: May not detect data hidden outside standard metadata fields or steganography. | ||
* **No Built-in Reporting or Visualization Tools**: Outputs data in text formats; lacks features for generating reports or visualizations. | ||
* **Legal and Ethical Considerations**: Unauthorized metadata access or modification may violate privacy laws and ethical guidelines. | ||
* **Metadata Standard Variations**: Inconsistent implementation across devices can lead to misinterpretation of metadata. | ||
* **Multilingual and Encoding Issues**: May struggle with non-UTF-8 encodings or special characters, leading to garbled text. | ||
* **No Undo Functionality**: Does not provide an undo feature; accidental changes may be irreversible without backups. | ||
* **Complex Licensing for Redistribution**: Redistribution may have licensing implications under GNU GPL or Perl Artistic License. | ||
* **Limited Support for Encrypted or Password-Protected Files**: Cannot access metadata without necessary credentials. | ||
* **Possibility of Overwriting Important Data**: Risk of unintentionally overwriting existing important metadata. | ||
* **No Real-Time Monitoring**: Cannot automatically detect or monitor metadata changes in real-time. | ||
* **Limited Support for Network Locations**: May have difficulty accessing files over complex network paths. | ||
* **No Native Support for Windows Shortcuts or Mac Aliases**: Does not process metadata from `.lnk` files or Mac aliases. | ||
|
||
## Ethical Considerations Specific to Open Source Research | ||
|
||
* **Data Protection Laws:** Be aware of regulations like GDPR, CCPA, and others that govern the handling of personal information. | ||
* **Responsible Disclosure:** If you discover sensitive information, handle it responsibly and consider notifying affected parties if appropriate. | ||
|
||
*** | ||
|
||
## Conclusion | ||
|
||
ExifTool can be a useful addition to an open source researcher's toolkit, enabling the extraction and analysis of metadata that can uncover critical information. By applying the commands and techniques outlined above, you can enhance your investigative capabilities while adhering to ethical standards. | ||
|
||
For further learning and community support: | ||
|
||
* **Official Website:** [https://exiftool.org/](https://exiftool.org/) | ||
|
||
## Guide | ||
|
||
Kris Occhipinti (Director). (2010, December 12). _**Working with jpg Metadata Comments—Exiftool—BASH - Linux Command Line**_ \[Video recording]. [https://www.youtube.com/watch?v=WchknYwbFJY](https://www.youtube.com/watch?v=WchknYwbFJY) | ||
|
||
spartaco80. (2015). _**exiftool1line—Useful one-line ExifTool commands**_**.** [https://sourceforge.net/projects/exiftool1line/files/](https://sourceforge.net/projects/exiftool1line/files/) | ||
|
||
Harvey, P. (2024). _**ExifTool FAQ**_. [https://exiftool.org/faq.html](https://exiftool.org/faq.html) | ||
|
||
Harvey, P. (2021). _**Common ExifTool Mistakes**_**.** [https://exiftool.org/mistakes.html](https://exiftool.org/mistakes.html) | ||
|
||
## Tool provider | ||
|
||
Phil Harvey  | ||
|
||
(will respond to inquiries in the [https://exiftool.org/forum/](https://exiftool.org/forum/)) | ||
|
||
## Advertising Trackers | ||
|
||
* [ ] This tool has not been checked for advertising trackers yet. | ||
* [ ] This tool uses tracking cookies. Use with caution. | ||
* [x] This tool does not appear to use tracking cookies. | ||
|
||
| Page maintainer | | ||
| --------------- | | ||
| Martin Sona | | ||
| | | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# Table of contents | ||
|
||
* [ExifTool](README.md) | ||
* [JSON](json.md) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
--- | ||
description: This is the JSON codeblock for this tool | ||
--- | ||
|
||
# JSON | ||
|
||
{% code overflow="wrap" %} | ||
```json | ||
{ | ||
"url": "https://exiftool.org", | ||
"tags": ["metadata-extraction", "photo-management", "exif", "gps", "iptc", "xmp", "geotagging", "image-processing", "file-renaming", "batch-processing", "digital-forensics", "photography", "free", "metadata"] | ||
} | ||
|
||
``` | ||
{% endcode %} | ||
|
||
Keep the codeblock updated with accurate information. Only edit the **values** (words to the right of the `:` on each line, in dark blue font). Do not change the key names (left side, slightly light blue) or any of the other formatting. Every line should end in a comma except the last line. Every key and value should be enclosed in quotation marks. See below for an explanation of each line.  | ||
|
||
## name, description (optional) | ||
|
||
If omitted, the name and description will be copied from the page title and page description of the main content. If present, the JSON values override the main content. | ||
|
||
## url | ||
|
||
A hyperlink directly to the tool, for quick-access from the category page. Be sure to use the secure (http**S**) version if possible. | ||
|
||
## tags | ||
|
||
This list of tags will determine which category pages the tool appears on. Tags should be lowercase with dashes between words and no spaces: e.g., "facial-recognition". Seperate tags with a comma `,`. | ||
|
||
If a tool is completely free to use, include the tag "free". | ||
|
||
If the tool is focused on one specific country (or a limited number of them), tag it with the name of the country as well as "international". | ||
|