Shot for Vogue. Rizzoli. W Magazine. Fashion editorial. Commercial. High-end retouching workflows with files moving from my camera card through five different systems before they hit a layout or a client's server.
Then I stopped shooting and started pentesting. AI paid better. The skills transferred in ways I didn't fully expect.
When photographers I knew heard I'd made the switch, the question was always the same: "What do you even do now?" The curiosity was genuine. These were people who understood craft, who cared about process, who thought carefully about their equipment and workflow. They just couldn't picture where red team fit in their mental map of my career.
I built ImagePayloadInjection partly as the answer.
Because every RAW file they'd ever handed to a retoucher, uploaded to a client portal, or submitted to a magazine was carrying metadata those systems parsed. And parsing is where things get interesting.
The Attack Surface Photographers Don't See
A CR2 from a Canon shoots out of the camera already containing EXIF data: camera model, lens, focal length, ISO, shutter speed, GPS coordinates if enabled, timestamps, even copyright strings. That data sits in structured binary fields that every piece of software touching the image must parse to display or process it.
Parse enough complex binary data and eventually something breaks. Or bends.
The fashion industry workflow is a perfect propagation chain: photographer β retoucher (Capture One, Lightroom, Photoshop) β art director β client review platform β publisher's CMS β web CDN. Each handoff involves new software parsing the same file. A payload embedded in EXIF field data on a file entering that chain at step one can ride it the whole way through.
ImageTragick (CVE-2016-3714) was the canonical example β a bug in ImageMagick that let attackers execute arbitrary code just by getting a target to process a crafted image. ImageMagick runs on enormous amounts of infrastructure because images need processing: resizing, format conversion, thumbnail generation. The photography industry's whole backend runs on it.
That was 2016. The pattern hasn't changed.
What the Toolkit Does
Metadata Injection
EXIF fields accept strings. Some parsers trust those strings. ImagePayloadInjection crafts images with payloads embedded in standard EXIF fields β artist, copyright, ImageDescription, UserComment β formatted to trigger vulnerable parsers while leaving the visual image completely intact.
The image looks clean. Downloads clean. Opens fine in Preview or Photos. Gets processed by the target system's image pipeline, and that's when the payload executes.
# Inject payload into EXIF UserComment field
inject_exif_payload(
image_path="clean_photo.jpg",
field="UserComment",
payload=payload_bytes,
encode_as="utf-8-unicode"
)
Detection difficulty: high. AI content scanners analyze pixel data. EXIF data is invisible to visual classifiers. Signature-based detection requires knowing the specific payload signature, which changes.
Steganography
Least-significant-bit steganography hides data in the pixel values themselves. Change the last bit of each RGB channel and the visual difference is below the threshold of human perception. In a 24-megapixel fashion image, there's room for substantial payloads.
JPEG compression is the complication β it's lossy and destroys naΓ―ve steganography. The toolkit handles JPEG by targeting DCT coefficient manipulation instead of raw pixel values, which survives the compression cycle.
RAW files are the cleanest surface. Uncompressed sensor data. No lossy compression. No quantization tables to work around. The shooting I did at that level produced files with enormous data capacity for concealment.