Files
pc-unlocker/README.md
T
duffyduckandClaude Opus 4.8 cbd7e74b1c NTFS-Dirty-Bit-Reparatur, Release-Skript und Projekthygiene
- 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>
2026-10-22 12:38:20 +02:00

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.