CLI: -o optional, unauffaelliger Default-Dateiname wie im Web
hide ohne -o vergibt jetzt automatisch Screenshot_YYYYMMDD_HHMMSS.png (gleiche Konvention wie das Web-Frontend). Expliziter -o-Name geht weiter. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -39,9 +39,18 @@ import argparse
|
||||
import os
|
||||
import struct
|
||||
import sys
|
||||
from datetime import datetime
|
||||
|
||||
from PIL import Image
|
||||
|
||||
# Unauffälliger Default-Dateiname (Screenshot-Stil passt zu PNG; echte
|
||||
# Kamerafotos sind JPG). Identisch zum Web-Frontend.
|
||||
CARRIER_PREFIX = "Screenshot"
|
||||
|
||||
|
||||
def default_carrier_name() -> str:
|
||||
return datetime.now().strftime(f"{CARRIER_PREFIX}_%Y%m%d_%H%M%S.png")
|
||||
|
||||
# --- Schlüsseldatei ---------------------------------------------------------
|
||||
KEY_MAGIC = b"SPK1"
|
||||
KEY_VERSION = 1
|
||||
@@ -228,6 +237,7 @@ def cmd_hide(args):
|
||||
if not plaintext:
|
||||
sys.exit("[!] Leere Nachricht.")
|
||||
|
||||
out_path = args.output or default_carrier_name()
|
||||
key = read_key(args.key)
|
||||
if key["role"] != ROLE_SEND:
|
||||
sys.exit("[!] Das ist ein Empfangsschlüssel (recv.key). Zum Senden "
|
||||
@@ -242,11 +252,11 @@ def cmd_hide(args):
|
||||
ciphertext = otp_xor(plaintext, key["material"], offset)
|
||||
header = struct.pack(STEGO_FMT, STEGO_MAGIC, STEGO_VERSION,
|
||||
key["stream_id"], offset, len(ciphertext))
|
||||
embed(args.carrier, header + ciphertext, args.output)
|
||||
embed(args.carrier, header + ciphertext, out_path)
|
||||
advance_send_offset(args.key, offset + len(plaintext))
|
||||
|
||||
print(f"[+] Verschlüsselt ({len(plaintext)} B) ab Sende-Offset {offset}.")
|
||||
print(f"[+] Versteckt in: {args.output}")
|
||||
print(f"[+] Versteckt in: {out_path}")
|
||||
print(f"[+] Sende-Offset im Schlüssel weitergezählt -> "
|
||||
f"{offset + len(plaintext)}")
|
||||
print("[i] Als DATEI/Dokument verschicken, nicht als Foto!")
|
||||
@@ -302,7 +312,9 @@ def build_parser():
|
||||
h.add_argument("-i", "--infile")
|
||||
h.add_argument("-k", "--key", required=True, help="Dein send.key.")
|
||||
h.add_argument("-c", "--carrier", required=True, help="Trägerbild.")
|
||||
h.add_argument("-o", "--output", required=True, help="Stego-PNG.")
|
||||
h.add_argument("-o", "--output",
|
||||
help="Stego-PNG (Default: unauffälliger Screenshot_-Name "
|
||||
"mit Zeitstempel).")
|
||||
h.set_defaults(func=cmd_hide)
|
||||
|
||||
r = sub.add_parser("reveal", help="Nachricht extrahieren + entschlüsseln.")
|
||||
|
||||
Reference in New Issue
Block a user