Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Submit
ToolsExploitsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

FeedsContactPrivacyยฉ 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
nullorigin โ€” Research-only AI watermark robustness toolkit: local reverse proxy strips C2PA/EXIF/XMP, Unicode, image/audio stego, OOXML/PDF metadata, and scans Trojan Source. | Kitploit
Tools/GitHubGitHub/rakib-nyc/nullorigin
Static Code Analysis (SAST)Web Proxies & InterceptionSteganographyPrivacyLearning & EducationAI SecurityAdversarial Attack
GitHubrakib-nyc/nullorigin

nullorigin

Research-only AI watermark robustness toolkit: local reverse proxy strips C2PA/EXIF/XMP, Unicode, image/audio stego, OOXML/PDF metadata, and scans Trojan Source.

View Repository
4682 months agoNot yet reviewed

Most Popular

View all โ†’

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools โ†’
Share

NullOrigin ๐Ÿ›ก๏ธ

Universal AI Provenance & Watermark Sanitization Middleware Research artifact โ€” for watermarking robustness evaluation only.

CI License: Apache 2.0 Python 3.10+ Tests Code style: ruff


๐Ÿ”ฌ Research use only

NullOrigin is a research artifact. It is published to support academic and independent study of watermarking robustness, and for no other purpose.

Watermarking schemes are security claims, and security claims are only meaningful once someone has tried to break them. The literature this project implements โ€” Kirchenbauer et al. on KGW, Krishna et al. on paraphrase attacks, Boucher & Anderson on Trojan Source โ€” exists because researchers published working attacks so that defenders could measure real robustness instead of assuming it. That is the tradition this repository belongs to.

Intended uses

  • Measuring how much a watermark's detectability degrades under a stated attack
  • Reproducing and extending published robustness results
  • Evaluating provenance metadata leakage in your own documents before you share them
  • Auditing source code for Trojan Source and homoglyph attacks (CVE-2021-42574, CVE-2021-42694)
  • Teaching how these schemes work, and where they hold up

Not intended, and not supported

  • Passing generated work off as your own where a person or institution has asked you not to
  • Defeating provenance signals on content you intend to misrepresent
  • Removing attribution from work that is not yours
  • Circumventing any platform, licence, or academic-integrity policy

Nothing here is a technical control on how the code runs. It is a statement of the terms on which it is offered, and of what its author will and will not support. The software is provided "AS IS", without warranty of any kind โ€” see LICENSE.

Read Scope and honest limitations before drawing any conclusion from a number this tool prints. Several of the schemes it targets cannot be verified against a public detector, and the README says so rather than implying otherwise.


Contents

  • Research use only
  • Scope and honest limitations
  • Theoretical foundations
  • Installation
  • Quickstart
  • Docker
  • Deploying beyond localhost
  • CLI
  • Benchmarking
  • Semantic fidelity
  • Configuration
  • Troubleshooting
  • Architecture
  • Testing
  • Citing and reuse
  • Project status
  • References
  • Legal notice & attribution

โš ๏ธ Scope and honest limitations

Read this before drawing conclusions from any number this tool prints.

LayerWhat it actually does
Invisible charactersFully effective. Zero-width, bidi-control, variation-selector, and Unicode Tags-block payloads are removed completely, with a count reported. Cross-script homoglyph confusables (Cyrillic/Greek rendering as ASCII) are folded.
Document metadata (.docx)Fully effective. Author, last editor, revision count, timestamps, template, and application version are cleared from docProps, with formatting preserved byte-for-byte.
C2PA / EXIF / XMPFully effective. The image is rebuilt from raw pixel samples into a fresh container, so signed JUMBF manifests and all metadata are gone. Verified by test against tagged fixtures.
KGW statistical watermarkDepends entirely on the rewrite backend. With no local model configured, the statistical watermark survives โ€” the tool says so rather than implying otherwise.
SynthID-Text / SynthID-Image / Tree-RingNot verifiable here. These use private keys and proprietary decoders. NullOrigin applies the perturbations the literature describes, but no claim is made that they defeat the real detectors, because there is no public detector to measure against.
AudioSeal / SynthID-AudioNot verifiable here, for the same reason.

About the KGW detector

KGWStatisticalDetector is a mathematically faithful, self-consistent implementation of the Kirchenbauer et al. green/red-list scheme over whitespace tokens. It is not a decoder for any vendor's production watermark โ€” those key on a private secret and the model's own BPE vocabulary.

Its purpose is to make the benchmark real: KGWWatermarkEmbedder plants a genuine watermark, the pipeline attacks it, and the matching detector measures the actual reduction. That is a true measurement of the attack against this scheme. It does not transfer to a vendor's watermark.


๐Ÿ“– Theoretical foundations

Text โ€” KGW green/red list

The vocabulary $V$ is partitioned at each step $t$ by a hash seeded on the preceding context:

$$s_t = \text{Hash}(w_{t-k}, \dots, w_{t-1})$$

into a green list $G_t$ of size $\gamma|V|$ and a red list $R_t$. A bias $\delta > 0$ is added to green logits:

$$\tilde{l}{t,v} = \begin{cases} l{t,v} + \delta, & v \in G_t \\ l_{t,v}, & v \in R_t \end{cases}$$

Detection counts green hits. Under $H_0$ they are $\text{Binomial}(T, \gamma)$, so:

$$z = \frac{|S_G| - \gamma T}{\sqrt{T\gamma(1-\gamma)}}$$

with $z > 4.0$ ($p < 3\times10^{-5}$) flagged as synthetic.

Why paraphrasing attacks it: the watermark lives entirely in local n-gram transitions. Rewriting the surface form with an unwatermarked model reseeds every position. This is the standard robustness attack in the watermarking literature.

Why length matters: $z$ grows as $\sqrt{T}$. A 100-token passage at a 0.70 green fraction only reaches $z \approx 3.9$ โ€” under threshold. Detection needs a few hundred tokens, and so do meaningful benchmark fixtures.

Image โ€” C2PA and frequency-domain embedding

  • C2PA / JUMBF: signed manifests in JPEG APP11 segments, PNG tEXt/iTXt chunks, or WebP/AVIF c2pa boxes. Because the signature covers the pixel data, re-encoding from a bare sample buffer removes it without parsing JUMBF at all.
  • SynthID-Image: shifts in DCT/DWT coefficients. Attacked by soft-thresholding the high-frequency detail subbands.
  • Tree-Ring: a circularly symmetric pattern in the initial diffusion latent, surviving as coherent structure in the Fourier phase. Attacked by randomizing phase in mid-frequency annuli while preserving magnitude โ€” which is why the image stays visually identical.

Audio โ€” AudioSeal / SynthID-Audio

Sub-threshold phase modulation and low-amplitude spectral additions. Attacked by phase randomization above the speech fundamental, band-stop notch shifting in non-critical bands, and psychoacoustic re-quantization.


๐Ÿ“ฆ Installation

Requirements

Python3.10, 3.11, or 3.12
OSLinux, macOS (Intel and Apple Silicon), Windows via WSL2
OptionalOllama or any OpenAI-compatible server โ€” required for text de-watermarking
OptionalDocker 20.10+ with Compose v2

From source

git clone https://github.com/rakib-nyc/nullorigin.git
cd nullorigin
Download Tool