CLI genkey: flache, beschreibende Schlüsseldateinamen (einheitlich zum Web)
Statt Ordnern <base>_meine_seite/ mit send.key/recv.key erzeugt genkey jetzt
vier flache Dateien <base>_{meine,partner}_seite__{send,recv}.key. So trägt der
Name Seite+Rolle -> im Browser hoch/runtergeladen überschreibt der aktualisierte
Schlüssel sauber die richtige Datei (kein generisches send.key mehr).
Interop-Runner + mjs + README an das neue Schema angepasst.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -258,28 +258,39 @@ def extract(stego_path: str) -> dict:
|
||||
# --------------------------------------------------------------------------- #
|
||||
def cmd_genkey(args):
|
||||
size = args.size
|
||||
mine = args.output + "_meine_seite"
|
||||
theirs = args.output + "_partner_seite"
|
||||
for d in (mine, theirs):
|
||||
if os.path.exists(d) and not args.force:
|
||||
sys.exit(f"[!] {d} existiert schon. --force zum Überschreiben.")
|
||||
os.makedirs(d, exist_ok=True)
|
||||
base = args.output
|
||||
# Flache, beschreibende Dateinamen (einheitlich zum Web-Frontend): der
|
||||
# Name trägt Seite + Rolle -> im Browser hoch- und wieder runtergeladen
|
||||
# überschreibt er sauber die richtige Datei.
|
||||
mine_send = f"{base}_meine_seite__send.key"
|
||||
mine_recv = f"{base}_meine_seite__recv.key"
|
||||
their_send = f"{base}_partner_seite__send.key"
|
||||
their_recv = f"{base}_partner_seite__recv.key"
|
||||
for path in (mine_send, mine_recv, their_send, their_recv):
|
||||
if os.path.exists(path) and not args.force:
|
||||
sys.exit(f"[!] {path} existiert schon. --force zum Überschreiben.")
|
||||
parent = os.path.dirname(base)
|
||||
if parent:
|
||||
os.makedirs(parent, exist_ok=True)
|
||||
|
||||
# Zwei unabhängige Ströme: sid_out = ich->Partner, sid_in = Partner->ich
|
||||
sid_out, sid_in = os.urandom(8), os.urandom(8)
|
||||
mat_out, mat_in = os.urandom(size), os.urandom(size)
|
||||
|
||||
# Meine Seite: sende mit Strom OUT, empfange Strom IN
|
||||
write_key(os.path.join(mine, "send.key"), ROLE_SEND, sid_out, 0, mat_out)
|
||||
write_key(os.path.join(mine, "recv.key"), ROLE_RECV, sid_in, 0, mat_in)
|
||||
write_key(mine_send, ROLE_SEND, sid_out, 0, mat_out)
|
||||
write_key(mine_recv, ROLE_RECV, sid_in, 0, mat_in)
|
||||
# Partnerseite (spiegelverkehrt): sendet mit Strom IN, empfängt Strom OUT
|
||||
write_key(os.path.join(theirs, "send.key"), ROLE_SEND, sid_in, 0, mat_in)
|
||||
write_key(os.path.join(theirs, "recv.key"), ROLE_RECV, sid_out, 0, mat_out)
|
||||
write_key(their_send, ROLE_SEND, sid_in, 0, mat_in)
|
||||
write_key(their_recv, ROLE_RECV, sid_out, 0, mat_out)
|
||||
|
||||
print(f"[+] Schlüsselpaar erzeugt ({size} Bytes je Richtung, echter Zufall).")
|
||||
print(f" {mine}/ <- DU behältst diesen Ordner")
|
||||
print(f" {theirs}/ <- gib DIESEN Ordner dem Partner (Stick, persönlich)")
|
||||
print("[i] Jede Seite hat send.key (zum Senden) + recv.key (zum Empfangen).")
|
||||
print(" DU behältst:")
|
||||
print(f" {mine_send} (zum Senden)")
|
||||
print(f" {mine_recv} (zum Empfangen)")
|
||||
print(" Dem PARTNER geben (Stick, persönlich):")
|
||||
print(f" {their_send}")
|
||||
print(f" {their_recv}")
|
||||
print("[i] send.key nur an EINEM Gerät gleichzeitig benutzen.")
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user