Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
jdvrif — Steganografie-Tool für JPG-Bilder | Kitploit
Tools/GitHubGitHub/cleasbycode/jdvrif
Verschlüsselungs-/EntschlüsselungstoolsDatenexfiltrationForensikSteganografieKryptographiePrivatsphäre
GitHubcleasbycode/jdvrif

jdvrif

Steganografie-Tool für JPG-Bilder

Repository anzeigen
69135vor 5 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
# jdvrif

***jdvrif*** (*JPG Data Vehicle*) ist ein schnelles, einfach zu bedienendes Steganografie-Kommandozeilenwerkzeug zum Verbergen und Extrahieren beliebiger Dateitypen über ein **JPG**-Bild. ***Nur Linux***.

Ihre Datendatei wird mit ***libdeflate/zlib*** komprimiert, dann mit ***XChaCha20-Poly1305*** (***libsodium*** secretstream) unter einem Schlüssel verschlüsselt, der durch ***Argon2id*** aus einer zufällig generierten ***Wiederherstellungs-PIN*** abgeleitet wird, und schließlich in das Trägerbild eingebettet. Die PIN wird einmalig am Ende von ***conceal*** angezeigt und nirgendwo gespeichert: Ohne sie kann die verborgene Datei nicht wiederhergestellt werden.

Im ***Standard-Verbergungsmodus*** können Sie jeden Dateityp verbergen, wobei das fertige Bild auf ***2GiB*** begrenzt ist. Die anderen Plattform-Verbergungsmodi und die kompatiblen Social-Media-Seiten (*unten aufgeführt*) haben ihre eigenen ***deutlich kleineren*** Größenbeschränkungen und weitere Anforderungen.

Es gibt eine [***Web-Edition***](https://cleasbycode.co.uk/jdvrif/app/) von ***jdvrif***, die Sie sofort nutzen können – eine praktische Alternative zum Herunterladen und Kompilieren des CLI-Quellcodes. Web-Datei-Uploads sind auf **20MiB** begrenzt.

Eine experimentelle ***Rust***-Portierung [***jdvrif-rs***](https://github.com/CleasbyCode/jdvrif-rs) ist ebenfalls für Interessierte dieser Sprache verfügbar. Sie ist formatkompatibel: Jeder der beiden Builds kann die Bilder des anderen wiederherstellen.

***jdvrif*** leitet sich teilweise von der ***[implementierten Technik](https://www.vice.com/en/article/bj4wxm/tiny-picture-twitter-complete-works-of-shakespeare-steganography)*** des Sicherheitsforschers ***[David Buchanan](https://www.da.vidbuchanan.co.uk/)*** ab.

![Demo Image](https://raw.githubusercontent.com/CleasbyCode/jdvrif/main/demo_image/jrif_043b7c551.jpg)  
*Demo-Bild: **„A place of concealment"** / ***PIN: 7912872750612437051****

## Wie jdvrif Daten verbirgt

Anders als die gängige [***LSB***](https://ctf101.org/forensics/what-is-stegonagraphy/)-Steganografiemethode (*Least Significant Bit*), bei der Daten in den Pixeln eines Trägerbilds verborgen werden, versteckt ***jdvrif*** Daten größtenteils in ***Anwendungssegmenten*** eines ***JPG***-Bilds (ICC, EXIF, XMP usw.).

| Verbergungsmodus | Wohin die Daten gelangen | Wo das Ausgabebild geteilt werden kann |
| --- | --- | --- |
| *(keine Option)* | APP2/ICC-Profilesegmente | X-Twitter, Tumblr, Mastodon, Pixelfed, PostImage, ImgBB, ImgPile, Flickr |
| ***-b*** | gerahmte EXIF-/Photoshop-/XMP-Segmente | nur ***Bluesky*** |
| ***-r*** | JPEG-DCT-Koeffizienten (***QIM***) | nur ***Reddit*** |
| ***-x*** | JPEG-DCT-Koeffizienten (***J-UNIWARD/STC***) | nur ***X-Twitter*** |

Die beiden Plattform-Ausnahmen von der standardmäßigen Segment-Speichermethode sind ***Reddit*** und ***X-Twitter***. Beide haben ihren eigenen Verbergungsmodus, und keiner dieser Modi verwendet überhaupt Metadatensegmente: ***-r*** und ***-x*** tragen die Nutzlast stattdessen in den DCT-Koeffizienten des ***JPG***-Bilds.

***Reddit*** kodiert hochgeladene Bilder neu und verwirft dabei die Metadatensegmente, auf die der Standardmodus angewiesen ist, sodass ***-r*** der einzige Modus ist, der dort funktioniert. ***X-Twitter*** bewahrt ein einzelnes, kleines ICC-Segment, sodass der Standardmodus auf dieser Plattform weiterhin funktioniert – allerdings nur für eine winzige Nutzlast.

Für den ***Reddit***-Verbergungsmodus (***-r***) verwenden wir die [***QIM-Steganografiemethode***](https://www.google.com/search?q=QIM+steganography+method&sourceid=chrome&ie=UTF-8&source=chrome.ctxt) (*JPEG-DCT-Domain Quantization Index Modulation*), da dies die einzige Speichermethode ist, die derzeit für ***Reddit*** funktioniert. Das Trägerbild wird auf Baseline Q75 4:2:0 transkodiert, und die Nutzlast wird in seinen Luminanz-DCT-Blöcken getragen.

Um die Speicherkapazität für die ***Reddit***-Plattform zu maximieren, verwenden Sie ein Trägerbild mit großen Abmessungen, **2048x2048**, **4096x4096**, **8192x8192 (max)** usw.

Die Qualität des Trägerbilds ist für diese Methode nicht wichtig und sollte bei den größten Abmessungen niedrig gehalten werden, um die Dateigröße des Trägerbilds möglichst gering zu halten.

Während die ***X-Twitter***-Plattform die von ***jdvrif*** bereitgestellte Standardmethode verwenden kann, bei der Daten in APP2/ICC-Segmenten verborgen werden, beschränkt ***X-Twitter*** dies auf ein einzelnes ICC-Segment mit einer maximalen Größe von nur **~10KiB**.

Um mehr als diese **~10KiB** zu übertragen, verwende den Verbergungsmodus der ***X-Twitter***-Plattform (***-x***). Er verzichtet vollständig auf Metadatensegmente — es wird nichts in ein ICC-Profil geschrieben — und nutzt stattdessen die [***adaptive J-UNIWARD-Steganographiemethode mit Syndrome-Trellis Coding (STC)***](https://www.google.com/search?q=adaptive+J-UNIWARD+steganography+method+with+Syndrome-Trellis+Coding+(STC)). Das Cover wird auf progressives 4:2:0 in seiner quellabgeleiteten Qualität (begrenzt auf **Q97**) transkodiert.

Um die Speicherkapazität für die ***X-Twitter***-Plattform zu maximieren, verwende ein hochwertiges/detailliertes Cover-Bild mit großen Abmessungen, **1024x1024**, **2048x2048**, **4096x4096 (max)** usw.

Die Träger ***-r*** und ***-x*** verschlüsseln deine Daten und binden ihre Position über ***Argon2id*** an deine Wiederherstellungs-PIN, aber das Einbetten verändert dennoch die DCT-Statistik des Bildes, sodass dedizierte Steganalyse aufdecken kann, dass ein Bild versteckte Daten enthält.

Mit ***jdvrif v9.0*** erstellte ***-r***- und ***-x***-Bilder bleiben wiederherstellbar, aber ***v9.0*** kann keine mit ***v9.1*** erstellten ***-r***- oder ***-x***-Bilder wiederherstellen.

Beide DCT-Modi tragen weit weniger Daten als der Standardmodus, daher solltest du mit ***capsize*** ein Cover-Bild vermessen, bevor du eine Nutzlast wählst (siehe [Kapazität prüfen](#checking-capacity-with-capsize)).

## Voraussetzungen & Kompilierung (Linux)

Zum Bauen sind **CMake 3.20 oder neuer**, `flock` aus **util-linux** und entweder **Ninja** (bevorzugt) oder **Make** erforderlich. Der Compiler muss **GCC 14 oder neuer** sein, oder **Clang 18 oder neuer** in Kombination mit einer C++23-Standardbibliothek, die Funktionen wie `std::format` und `std::print` implementiert. Die benötigten nativen Bibliotheken sind **libsodium**, **libjpeg-turbo** (*sowohl die `turbojpeg`- als auch die `libjpeg`-APIs*), **zlib** und **libdeflate**. **OpenMP** ist optional: Wenn vorhanden, parallelisiert es den ***-x***-J-UNIWARD-Kostendurchlauf.

```console
$ sudo apt update
$ sudo apt install g++ cmake ninja-build util-linux libsodium-dev libturbojpeg0-dev libjpeg-dev zlib1g-dev libdeflate-dev

$ g++ --version   # confirm the reported version is 14 or newer

$ chmod +x compile_jdvrif.sh
$ ./compile_jdvrif.sh

$ sudo cp jdvrif /usr/bin
```

Wenn Ihre Distribution GCC 14 als versioniertes Paket bereitstellt, installieren Sie `g++-14` und bauen Sie mit `CXX=g++-14 ./compile_jdvrif.sh`.

Der Wrapper legt abhängigkeitsverfolgte Objektdateien unter `src/build/` ab, sodass spätere Aufrufe nur das neu bauen, was sich geändert hat, und er ersetzt die veröffentlichte `jdvrif`-Binärdatei erst nach einem vollständigen, erfolgreichen Build. Setzen Sie `JDVRIF_JOBS=<count>`, um das Parallelitätslimit zu ändern (Standard: CPU-Anzahl, begrenzt auf 8), `JDVRIF_BUILD_DIR=<path>`, um einen separaten Build-Cache zu verwenden, oder `BUILD_MODE=sanitize` für einen ASan/UBSan-Build.

## Verwendung

```console
$ jdvrif

Usage: jdvrif conceal [-b|-r|-x] <cover_image> <secret_file>
       jdvrif recover <cover_image>
       jdvrif capsize [-r|-x] <cover_image>
       jdvrif --info
```

Führen Sie `jdvrif --info` aus, um die vollständige integrierte Anleitung zu Modi, Plattformoptionen und Größenbeschränkungen zu erhalten.

```console
$ jdvrif conceal your_cover_image.jpg your_secret_file.doc

Platform compatibility for output image:-

 ✓ X-Twitter
 ✓ Tumblr
 ✓ Mastodon
 ✓ Pixelfed
 ✓ PostImage
 ✓ ImgBB
 ✓ ImgPile
 ✓ Flickr

Recovery PIN: [***2166776980318349924***]

Important: Keep your PIN safe, so that you can extract the hidden file.


Saved "file-embedded" JPG image: jrif_4e87c566c.jpg (143029 bytes).

Complete!

$ jdvrif recover jrif_4e87c566c.jpg

PIN: *******************

Extracted hidden file: your_secret_file.doc (6165 bytes).

Complete! Please check your file.

```

jdvrif ***Modus***-Argumente:

  ***conceal*** - Komprimiert, verschlüsselt und bettet Ihre geheime Datendatei in ein ***JPG***-Titelbild ein.  
  ***recover*** - Entschlüsselt, dekomprimiert und extrahiert die versteckte Datendatei aus einem ***JPG***-Titelbild (*Wiederherstellungs-PIN erforderlich*).  
  ***capsize*** - Meldet die Trägerkapazität eines Titelbilds für den ***-r***- oder ***-x***-Modus. Es wird kein Bild gespeichert.

Anforderungen an das Titelbild:

● Nur JPEG, mindestens **400x400** Pixel und entweder Graustufen oder YCbCr-Farbe — CMYK/YCCK-Bilder müssen zuerst in RGB konvertiert werden.

● Die Standard- und ***-b***-Maximalabmessungen sind **4096x4096px**; ***-r*** verwendet **8192x8192px**, während ***-x*** ebenfalls auf **4096x4096px** begrenzt ist.

● Der Standardmodus (*keine Option*) lehnt außerdem Titelbilder ab, deren geschätzte JPEG-Qualität über **Q97** liegt; speichern Sie das Bild mit geringerer Qualität erneut, wenn es abgelehnt wird.

Anforderungen an die geheime Datendatei:

● Der eingebettete Dateiname darf höchstens **20 Bytes** lang sein, nicht mit `.` oder `-` beginnen und nicht mit einem Leerzeichen oder `.` enden und muss gültiges UTF-8 ohne Steuer- oder bidirektionale Formatierungszeichen sowie ohne eines der Zeichen `/ \ : * ? " < > |` sein. Der Name wird im Bild gespeichert und bei ***recover*** wiederhergestellt.

● Ihre Datendatei wird vor der Verschlüsselung komprimiert, außer bei erkannten, bereits komprimierten Dateitypen (`.zip`, `.7z`, `.mp4`, `.jpg`, `.png` usw.). Im Standard- und im ***-b***-Modus überspringen diese Typen die Komprimierung nur, wenn sie größer als **10MiB** sind; in den Modi ***-r*** und ***-x*** überspringen sie sie immer. Für alles andere, das für ein kleines Plattformlimit bestimmt ist, sollten Sie es selbst vorher komprimieren (*zip, rar, 7z usw.*), damit Sie seine genaue gespeicherte Größe kennen.

## Kompatible Plattformen

\******************   
Hinweis: ***Bluesky*** speichert Bilder jetzt standardmäßig als ***WEBP***. 

Um ein Bild als ***JPG*** zu speichern, damit Sie versteckte Daten weiterhin mit ***jdvrif*** wiederherstellen können:-  

Klicken Sie zuerst im Beitrag auf das Bild, um es zu öffnen, und klicken Sie dann mit der rechten Maustaste auf das Bild. Wählen Sie im Menü ***Bild in neuem Tab öffnen***.  

Wechseln Sie zum neuen Tab und gehen Sie in der Adressleiste an das Ende der Adresse, fügen Sie ***@jpg*** hinzu und drücken Sie die Eingabetaste.  
Klicken Sie mit der rechten Maustaste auf das Bild und wählen Sie im Menü ***Bild speichern unter...***  

Ihr Bild sollte nun als ***JPG*** heruntergeladen werden, das dann mit ***jdvrif*** funktioniert.
         
Wenn Sie ein Tool zum Verbergen von Daten mit ***WEBP***-Bildern für Beiträge auf ***Bluesky*** möchten, können Sie mein ***WEBP***-Steganografie-CLI-Tool ***[wbpdv](https://github.com/CleasbyCode/wbpdv)*** verwenden  
\******************

*Beitragsgrößenlimit gemessen an der ***kombinierten*** Größe des ***Titelbilds*** + der ***komprimierten Datendatei:****  

● ***Flickr*** (**200MiB**), ***ImgPile*** (**100MiB**), ***ImgBB*** (**32MiB**), ***PostImage*** (**32MiB**), ***Pixelfed*** (**15MiB**).

*Größenlimit gemessen ***nur*** an der ***Größe der komprimierten Datendatei:****  

● ***Mastodon*** (**~6MiB**), ***Tumblr*** (**~64KiB**), ***X-Twitter*** (**~10KiB / Standardmethode**).  

Wenn Ihr Titelbild beispielsweise bei ***Mastodon*** **1MiB** groß ist, können Sie dennoch eine Datendatei bis zum Größenlimit von **~6MiB** einbetten.

**Sonstige: Plattformen mit eigenem Verbergemodus:**

● ***Bluesky*** (***-b-Option***). Das fertige "*dateieingebettete*" ***JPG*** darf **2.000.000 Bytes (~1,9MiB)** nicht überschreiten, sodass das Titelbild und die komprimierte Datendatei sich ein Budget teilen. Die komprimierte Datendatei allein darf **~171KiB** nicht überschreiten. Ein Titelbild, das bereits 2.000.000 Bytes groß ist, lässt überhaupt keinen Platz mehr, halten Sie das Titelbild daher mindestens um die Größe Ihrer komprimierten Datendatei unter dem Limit. Das Skript "***create_bsky_post.py***" ist erforderlich, um diese Bilder auf ***Bluesky*** zu posten. *Weitere Informationen zu diesem Skript weiter unten auf der Seite.*

● ***Reddit*** (***-r-Option***). Das Titelbild und die Datendatei dürfen jeweils nicht größer als **20MiB** sein, aber die tatsächliche Trägerkapazität des Titelbilds ist ***viel kleiner*** und hängt von seinen Abmessungen ab. Verwenden Sie `jdvrif capsize -r`, um sie zu messen.

● ***X-Twitter*** (***-x-Option***). Das Titelbild und die Datendatei dürfen jeweils höchstens **5MiB** groß sein, und das Titelbild darf **4096x4096** Pixel nicht überschreiten. Die tatsächliche Trägerkapazität ist ***deutlich kleiner*** und hängt von der Bildqualität und den Dimensionsgrößen ab. Verwende `jdvrif capsize -x`, um sie zu messen.

Im Standardmodus und in den ***-b***-Modi wird das Titelbild vor der Verwendung zusätzlich verlustfrei optimiert und darf danach **4MiB** nicht überschreiten.

Für Plattformen wie ***X-Twitter***, ***Reddit*** & ***Tumblr***, die kleine Datenmengenlimits haben, solltest du dich auf Daten konzentrieren, die sich gut komprimieren lassen, wie z. B. Textdateien usw.

https://github.com/user-attachments/assets/af330d09-f65d-4f75-8290-883078be34b3

https://github.com/user-attachments/assets/fc454d42-0240-4864-b44b-ce5ef7cfd94c

## Kapazität mit capsize prüfen

***capsize*** bereitet das Titelbild genau so vor, wie es ***conceal*** tun würde, und meldet dann, wie viel verschlüsselte Nutzlast es tragen kann. Es wird nichts auf die Festplatte geschrieben. Verwende ***-r*** für den ***Reddit***-Träger und ***-x*** für den ***X-Twitter***-Träger (***-x*** ist der Standard, wenn keine Option angegeben wird).

```console
$ jdvrif capsize -r basic_img_large_dims.jpg

Reddit capacity check for conceal -r mode only.

Cover Image: 384KiB, 8192x8192, Baseline YCbCr 4:2:0, Standard Q75 quantization (C3).

Theoretical C3 capacity limit for this cover image:                    436906 bytes (~426KiB).
Conservative maximum compressed capacity with a 20-character filename: 436792 bytes (~426KiB).
Recommended  maximum compressed capacity with a 20-character filename: 435768 bytes (~425KiB).
```

Die angegebene Zahl ist die gesamte verschlüsselte ***Envelope***-Kapazität, nicht ein rohes Limit für die Secret-Datei: Der Dateiname, die Verschlüsselungs- und Wiederherstellungs-Metadaten verbrauchen 95 bis 114 Bytes für eine Single-Frame-Nutzlast, und größere Nutzlasten fügen Framing-Overhead hinzu. Ziele nicht auf das theoretische Limit — halte die komprimierte Nutzlast, wo die Kapazität es erlaubt, mindestens **1KiB** unter dem konservativen Maximum. Die von ***conceal*** durchgeführte Größenprüfung ist die maßgebliche.

## Plattformoptionen für den Conceal-Modus

Um kompatible "*datenverbergende*" ***JPG***-Bilder für die Veröffentlichung auf der Plattform ***Reddit*** zu erstellen, musst du die Option ***-r*** zusammen mit dem ***conceal***-Modus verwenden.
  ```console
  $ jdvrif conceal -r my_image.jpg hidden.doc
```

  Diese Bilder sind nur für die Veröffentlichung auf ***Reddit*** kompatibel. Ihre eingebettete Datendatei geht verloren, wenn sie auf einer anderen Plattform veröffentlicht wird.  
  
Wenn Sie ein Bild von ***Reddit*** speichern/herunterladen, stellen Sie sicher, dass Sie auf das Bild innerhalb des Beitrags klicken, um es vollständig zu erweitern, bevor Sie es speichern.  

https://github.com/user-attachments/assets/ead3c34c-dd9a-4018-9ea3-0746fbdfdb8b

Um kompatible "*datenverbergende*" ***JPG***-Bilder für die Veröffentlichung auf der Plattform ***X-Twitter*** mit der J-UNIWARD-Steganographiemethode zu erstellen, müssen Sie die Option ***-x*** mit dem Modus ***conceal*** verwenden.
  ```console
  $ jdvrif conceal -x my_image.jpg hidden.doc
```

  Diese Bilder sind nur für das Posten auf ***X-Twitter*** kompatibel. Deine eingebettete Datendatei geht verloren, wenn du sie auf einer anderen Plattform postest.  
  
Wenn du ein Bild von ***X-Twitter*** speicherst/herunterlädst, stelle sicher, dass du auf das Bild innerhalb des Posts klickst, um es vor dem Speichern vollständig zu vergrößern.  

Um kompatible "*dateieingebettete*" ***JPG***-Bilder für das Posten auf der Plattform ***Bluesky*** zu erstellen, musst du die Option ***-b*** mit dem ***conceal***-Modus verwenden.
  ```console
  $ jdvrif conceal -b my_image.jpg hidden.doc
```

  Diese Bilder sind nur für die Veröffentlichung auf ***Bluesky*** kompatibel. Ihre eingebettete Datendatei wird entfernt, wenn sie auf einer anderen Plattform veröffentlicht wird.
 
 Sie müssen außerdem das Python-Skript [create_bsky_post.py](https://github.com/CleasbyCode/jdvrif/blob/main/src/bsky/create_bsky_post.py) (zu finden im Ordner ***src/bsky*** des Repos) verwenden, um das Bild auf ***Bluesky*** zu veröffentlichen.
 Es funktioniert nicht, wenn Sie Bilder über die Browser-Website oder die mobile App auf ***Bluesky*** veröffentlichen.  

 Um das Skript zu verwenden, müssen Sie ein [***App-Passwort***](https://bsky.app/settings/app-passwords) von Ihrem ***Bluesky***-Konto erstellen. Übergeben Sie Ihre Anmeldedaten über die Umgebung und nicht über die Befehlszeile, wo sie für andere lokale Benutzer über Tools wie `ps` sichtbar wären:

  ```console
  $ pip install -r bsky/requirements.txt

  $ export ATP_AUTH_HANDLE='you.bsky.social'
  $ read -rsp 'Bluesky app password: ' ATP_AUTH_PASSWORD && export ATP_AUTH_PASSWORD

  $ python3 bsky/create_bsky_post.py \
      --image jrif_4e87c566c.jpg \
      --alt-text "alt-text here [optional]" \
      "standard post text here [required]"

  $ unset ATP_AUTH_PASSWORD
```

  Siehe [src/bsky/README.md](https://github.com/CleasbyCode/jdvrif/blob/main/src/bsky/README.md) für den vollständigen Satz an Optionen (*mehrere Bilder, Antworten, Zitat-Posts, Link-Karten*) und dafür, wogegen der gehärtete Fork des Skripts schützt.

https://github.com/user-attachments/assets/1daef508-d304-491f-bfe2-2cdbb5d62081

## Tests

Die Testskripte in `src/tests` nehmen jeweils das auszuführende Binary entgegen:

```console
$ bash tests/run_golden_tests.sh --bin ./jdvrif        # recover pre-built images with known PINs
$ bash tests/run_roundtrip_tests.sh --bin ./jdvrif     # fresh conceal/recover round-trips
$ bash tests/run_security_smoke.sh --bin ./jdvrif      # negative-path and boundary checks
$ bash tests/run_reddit_tests.sh --bin ./jdvrif        # -r QIM carrier
$ bash tests/run_twitter_tests.sh --bin ./jdvrif       # -x J-UNIWARD/STC carrier
$ bash tests/run_io_security_tests.sh --bin ./jdvrif   # input-size bounds, PIN signal/job-control handling
$ bash tests/run_jpeg_safety_tests.sh                  # JPEG parser/decoder safety (builds its own test binary)
$ bash tests/run_bsky_tests.sh                         # Bluesky posting helper
```

## Software und Assets von Drittanbietern

  ### Kernanwendungen

  - [libsodium](https://github.com/jedisct1/libsodium) — kryptografische Zufallsgenerierung, Argon2id-
  Schlüsselableitung und XChaCha20-Poly1305-Geheimnisströme. Dynamisch als Systembibliothek gelinkt.
      
      Lizenz: [ISC License](https://github.com/jedisct1/libsodium/blob/master/LICENSE)
    
      Copyright (c) 2013–2026 Frank Denis.
    
 - [libjpeg-turbo](https://github.com/libjpeg-turbo/libjpeg-turbo) — JPEG-Verarbeitung und verlustfreie Transformation. Dynamisch als Systembibliothek gelinkt.

      Diese Software basiert teilweise auf der Arbeit der Independent JPEG Group.

      Lizenzen: [Independent JPEG Group License, Modified BSD 3-Clause License,
      und zlib License](https://github.com/libjpeg-turbo/libjpeg-turbo/blob/2.1.5/LICENSE.md).

      Copyright © 1991–2020 Thomas G. Lane und Guido Vollbeding.
   
      Copyright © 2009–2023 D. R. Commander. Alle Rechte vorbehalten.
   
      Copyright © 2015 Viktor Szathmáry. Alle Rechte vorbehalten.
   
  - [zlib](https://github.com/madler/zlib) — Streaming-Kompression und -Dekompression mit zlib. Dynamisch als Systembibliothek gelinkt.

    Lizenz: [zlib License](https://github.com/madler/zlib/blob/develop/LICENSE)
    
    Copyright (C) 1995–2026 Jean-loup Gailly und Mark Adler.

  - [libdeflate](https://github.com/ebiggers/libdeflate) — Schnelle Kompression des gesamten Puffers im zlib-Format. Dynamisch als Systembibliothek gelinkt.

    Lizenz: [MIT](https://github.com/ebiggers/libdeflate/blob/master/COPYING)
    
    Copyright 2016 Eric Biggers.
    
    Copyright 2024 Google LLC.

  ### Eingebundener Code und eingebundene Assets

  - [Compact ICC Profiles](https://github.com/saucecontrol/Compact-ICC-Profiles) — eingebettetes, Adobe-
  kompatibles ICC-Profil.

    Lizenz: [CC0 1.0 Universal](https://github.com/saucecontrol/Compact-ICC-Profiles/blob/master/license)

  ### Optionaler Bluesky-Posting-Helfer

  - Bryan Newbold / ATProto Hacker Cookbook — create_bsky_post.py — Grundlage für den [geforften](https://gist.github.com/CleasbyCode/1eb678ca1fa1975b1c1e20aeec33637e) Bluesky-Posting-Helfer (src/bsky/create_bsky_post.py). 
    Zur Referenz siehe die [Cookbook-Kopie](https://github.com/bluesky-social/cookbook/blob/main/python-bsky-post/create_bsky_post.py)

    Lizenz: [CC0 1.0 Universal](https://github.com/bluesky-social/cookbook/blob/main/LICENSE-CC0).

  - Requests — HTTP- und Bluesky-API-Anfragen.

    Lizenz: [Apache 2.0](https://github.com/psf/requests/blob/main/LICENSE) / [NOTICE](https://github.com/psf/requests/blob/main/NOTICE)
    
    Copyright 2019 Kenneth Reitz.

  - Beautiful Soup 4 — Parsen von HTML- und Open-Graph-Metadaten.

    Lizenz: [MIT](https://pypi.org/project/beautifulsoup4/)
    
    Copyright (c) Leonard Richardson.

  - Pillow — Bildvalidierung, Abmessungen und Handhabung des Seitenverhältnisses.

    Lizenz: [MIT-CMU](https://github.com/python-pillow/Pillow/blob/main/LICENSE)
    
    PIL Copyright © 1997–2011 Secret Labs AB und © 1995–2011 Fredrik Lundh und Mitwirkende.
    
    Pillow Copyright © 2010 Jeffrey „Alex“ Clark und Mitwirkende.
    
##
Tool herunterladen