- GUI: Dirty-Bit/Fast-Startup beim Mounten erkennen, Rueckfrage mit ntfsfix + erzwungenem Schreib-Mount, Button "NTFS reparieren" - release.py: Version hochzaehlen, CHANGELOG pflegen, commit+tag, ISO bauen und als Gitea-Release (tea) mit ISO-Anhang veroeffentlichen - out/ bleibt im Repo (out/.gitignore), ISOs ignoriert - .gitignore ergaenzt, versehentlich getrackte __pycache__ entfernt Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
98 lines
3.2 KiB
Markdown
98 lines
3.2 KiB
Markdown
# PC-Unlocker
|
|
|
|
Grafisches **Offline-Recovery-Tool** für lokale Benutzerkonten unter **Linux**
|
|
und **Windows**, ausgeliefert als bootfähige **Live-ISO**. Gedacht für IT-Admins
|
|
und das Zurücksetzen vergessener Passwörter auf Maschinen, zu denen man
|
|
physischen Zugang und die Berechtigung hat (eigener Rechner, verwaltete
|
|
Firmen-PCs, Konten ausgeschiedener Mitarbeiter).
|
|
|
|
Gleiche Kategorie wie `chntpw`, Trinity Rescue Kit oder System Rescue CD.
|
|
|
|
## Was es kann
|
|
|
|
| | Linux | Windows |
|
|
|---|---|---|
|
|
| Passwort leeren (blank) | ✅ | ✅ |
|
|
| Neues Passwort setzen | ✅ (SHA-512) | ❌ siehe Hinweis |
|
|
| Konto entsperren | ✅ | ✅ |
|
|
| Zu Admin machen | — | ✅ |
|
|
|
|
**Hinweis Windows:** Ein *neues* Passwort direkt in die SAM zu schreiben ist auf
|
|
modernen Windows-Versionen unzuverlässig (SYSKEY / geänderte Hash-Formate).
|
|
Verlässlicher Weg: **Passwort leeren**, anmelden, in Windows neu vergeben.
|
|
|
|
## Grenzen (bewusst)
|
|
|
|
Verschlüsselte Datenträger (**BitLocker**, **LUKS**) bleiben geschützt — das Tool
|
|
kann die Verschlüsselung nicht umgehen. Ohne den jeweiligen Schlüssel/Recovery-Key
|
|
ist die Partition nicht les- oder schreibbar.
|
|
|
|
## Bedienung
|
|
|
|
1. ISO auf USB-Stick schreiben (siehe unten) und Zielrechner davon booten.
|
|
2. Das Live-System startet automatisch in die GUI.
|
|
3. Partition wählen → **Öffnen / Mounten** → erkannte Konten erscheinen.
|
|
4. Konto wählen → gewünschte Aktion. Vor dem Beenden hängt das Tool alles sauber aus.
|
|
|
|
## ISO bauen
|
|
|
|
Einzige Voraussetzung auf dem Build-Host: **Docker**. Sonst muss nichts
|
|
installiert sein — `live-build` und alle Werkzeuge laufen im Container.
|
|
|
|
```bash
|
|
./build.sh
|
|
# Ergebnis: ./out/pc-unlocker.iso
|
|
```
|
|
|
|
Auf USB-Stick schreiben:
|
|
|
|
```bash
|
|
sudo dd if=out/pc-unlocker.iso of=/dev/sdX bs=4M status=progress conv=fsync
|
|
```
|
|
|
|
> Der Container läuft mit `--privileged`, weil `live-build` Loop-Devices und
|
|
> Mounts benötigt.
|
|
|
|
## Release veröffentlichen
|
|
|
|
`release.py` zählt die Version hoch, pflegt das CHANGELOG, committet + taggt,
|
|
baut die ISO und veröffentlicht sie als **Gitea-Release** mit der ISO als Anhang.
|
|
|
|
```bash
|
|
./release.py # Patch: 0.1.0 -> 0.1.1
|
|
./release.py --minor # 0.1.0 -> 0.2.0
|
|
./release.py --major # 0.1.0 -> 1.0.0
|
|
./release.py --no-build # vorhandene out/pc-unlocker.iso anhängen
|
|
./release.py --no-publish # nur lokal (bump, commit, tag, build)
|
|
./release.py --dry-run # nur anzeigen
|
|
```
|
|
|
|
Veröffentlichen pusht Release-Commit und Tag nach `origin` und ruft dann
|
|
`tea release create`. Einmalig nötig: `tea login add` für die Gitea-Instanz.
|
|
|
|
## App direkt testen (ohne ISO)
|
|
|
|
Auf einem Linux-Host mit `python3-tk`, `chntpw`, `ntfs-3g`:
|
|
|
|
```bash
|
|
sudo python3 app/pc_unlocker.py
|
|
```
|
|
|
|
## Projektstruktur
|
|
|
|
```
|
|
app/pc_unlocker.py GUI (tkinter)
|
|
app/puk/disks.py Datenträger auflisten/mounten
|
|
app/puk/linux.py /etc/shadow bearbeiten
|
|
app/puk/windows.py SAM via chntpw bearbeiten
|
|
config/ live-build Paketlisten + Autostart-Hook
|
|
build/Dockerfile Build-Container (Debian + live-build)
|
|
build/build-iso.sh Build-Logik im Container
|
|
build.sh Host-Einstieg: Docker bauen + ISO erzeugen
|
|
```
|
|
|
|
## Rechtlicher Hinweis
|
|
|
|
Nur auf Systemen einsetzen, die dir gehören oder für die du ausdrücklich
|
|
autorisiert bist. Der unbefugte Zugriff auf fremde Computer ist strafbar.
|