-
Notifications
You must be signed in to change notification settings - Fork 2
Description
#!/bin/bash
De-Gender Script (v3.0) – Recovery Mode Edition
Endlich wieder normales Deutsch für macOS!
Dieses Skript ist ausschließlich für den Terminal im macOS Recovery Modus gedacht.
Version 3.0 Änderungen
SIP Abfrage mit Ausführung hinzugefügt
Automatisch wird der Festplatten Name ermittelt
scan.sh Abfrage hinzugefügt
echo ""
echo "#######################################################"
echo "### Endlich wieder ein genderfreies Betriebssystem! ###"
echo "#######################################################"
echo ""
Sicherstellen, dass scan.sh vorher lief
echo "📦 Dieses Skript erfordert, dass 'scan.sh' im Live-System ausgeführt wurde, um 'catalog.db' aktuell zu halten."
read -rp "❓ Wurde 'scan.sh' bereits ausgeführt? (ja/nein): " answer
answer=$(echo "$answer" | tr '[:upper:]' '[:lower:]')
if [[ "$answer" != "ja" && "$answer" != "j" ]]; then
echo "⛔ Bitte führe 'scan.sh' zuerst aus."
exit 1
fi
Sicherstellen, dass wir im Recovery-Modus sind
if [ -f /usr/sbin/system_profiler ]; then
echo -e "
🚫 Dieses Skript darf nur im Recovery-Modus ausgeführt werden!"
exit 1
fi
macOS Version prüfen
sys_version=$(sw_vers | grep ProductVersion | sed -E 's/[^0-9]([0-9]+)./\1/')
if [ "$sys_version" -lt 13 ]; then
echo -e "
🚫 Diese macOS Version ($sys_version.x) wird nicht unterstützt."
exit 1
fi
Script-Pfad und Datei-Existenz prüfen
script_path="$(dirname "$(realpath "$0")")"
if [ ! -f "$script_path/catalog.db" ]; then
echo "⛔ Datei 'catalog.db' fehlt im Skriptverzeichnis."
exit 1
fi
echo "🔐 Dieses Script erfordert angepassten SIP-Status:"
echo "- Filesystem Protection muss deaktiviert sein"
echo "- Authenticated Root muss deaktiviert sein"
read -rp "❓ Hast du 'csrutil enable --without fs' und 'csrutil authenticated-root disable' bereits ausgeführt? (ja/nein): " sip_answer
sip_answer_lower=$(echo "$sip_answer" | tr '[:upper:]' '[:lower:]')
if [[ "$sip_answer_lower" != "ja" && "$sip_answer_lower" != "j" ]]; then
echo "
echo "➡️ Führe: csrutil enable --without fs"
csrutil enable --without fs
echo "➡️ Führe: csrutil authenticated-root disable"
csrutil authenticated-root disable
echo "✅ Änderungen vorgenommen. Bitte starte das System neu und führe das Script erneut aus."
exit 0
else
echo "✅ SIP-Anpassung bestätigt. Fahre mit dem Script fort..."
fi
Volume bestimmen
echo "📁 Ermittle System-Volume..."
sys_part=$(diskutil list |grep "APFS Volume" |sed 's/.*APFS\ Volume\ //g' |grep -v "VM" |grep -v "Recovery" |grep -v "Preboot" |grep -v "macOS Base System" |grep -v "- Data" |grep -v "Data" |awk '{print $1,$2}')
if [ -z "$sys_part" ]; then
echo "
diskutil list |grep "APFS Volume" |sed 's/.*APFS\ Volume\ //g' |grep -v "VM" |grep -v "Recovery" |grep -v "Preboot" |grep -v "macOS Base System" |grep -v "- Data"
read -rp echo -e "\nBitte wähle die System Festplatte aus. '/Volumes/' musst Du nicht mit eintippen, bloß den Volumenamen Z.B 'macOS'\n" sys_part
fi
if [ ! -d /Volumes/"$sys_part" ]; then
echo "⛔ Volume /Volumes/$sys_part nicht gefunden!"
exit 1
fi
mount -uw /Volumes/"$sys_part"
if [ ! -w /Volumes/"$sys_part" ]; then
echo "⛔ Konnte Volume nicht beschreibbar mounten. Prüfe SIP-Status!"
exit 1
fi
Bearbeiten
echo "⚙️ Starte Verarbeitung der Dateien..."
export LC_TYPE=C
export LANG=C
cd /Volumes/"$sys_part"
echo -e "\nBearbeite Dateien ..."
input="$script_path/catalog.db"
count=$( wc -l "$input" | sed 's/\ a.*//g' |xargs )
counter=1
if [ ! -f usr/share/degenderizer_brain.db ]; then
touch usr/share/degenderizer_brain.db
chmod 777 usr/share/degenderizer_brain.db
else
chmod 777 usr/share/degenderizer_brain.db
fi
while IFS= read -r line
do
line=$( echo "$line" | sed 's/^///' )
if [ -f "$line" ]; then
hash_value=$( md5 "$line" | sed 's/.*=//g' | xargs )
binary="0"
if ! grep -x "$line""=""$hash_value" usr/share/degenderizer_brain.db >/dev/null 2>&1; then
if [[ "$line" = *".loctable" ]] || [[ "$line" = *".strings" ]]; then
binary="1"
plutil -convert xml1 "$line" >/dev/null 2>&1
fi
sed -ib
-e 's/:INNEN//g'
-e 's/:IN//g'
-e 's/:innen//g'
-e 's/:in//g'
-e 's/:in|/|/g'
-e 's/:r|/r|/g'
-e 's/Aktuelle:r/Aktueller/g'
-e 's/aktuelle:n/aktuellen/g'
-e 's/Aktuelle:n/Aktuellen/g'
-e 's/ältere:r/älterer/g'
-e 's/ANDERE:R/ANDERER/g'
-e 's/angegebene:n/angegebenen/g'
-e 's/ausgewählte:r/ausgewählter/g'
-e 's/Beliebige:r/Beliebiger/g'
-e 's/Benutzer:in/Benutzer/g'
-e 's/Dein:e/Dein/g'
-e 's/dein:e/dein/g'
-e 's/deinem:deiner/deinem/g'
-e 's/deine:n/deinen/g'
-e 's/Delegierte:r/Delegierter/g'
-e 's/DEM:DER/DEM/g'
-e 's/dem:der/dem/g'
-e 's/den:die/den/g'
-e 's/Der:die/Der/g'
-e 's/Der:Die/Der/g'
-e 's/der:die/der/g'
-e 's/Der:die/Der/g'
-e 's/des:der/des/g'
-e 's/desselben:derselben/desselben/g'
-e 's/dessen:deren/dessen/g'
-e 's/diesem:dieser/diesem/g'
-e 's/Diese:n/Diesen/g'
-e 's/diese:n/diesen/g'
-e 's/Diese:r/Dieser/g'
-e 's/diese:r/dieser/g'
-e 's/dieses:dieser/dieses/g'
-e 's/ehemalige:r/ehemaliger/g'
-e 's/Ein:e/Ein/g'
-e 's/ein:e/ein/g'
-e 's/eine:n/einen/g'
-e 's/eines:einer/eines/g'
-e 's/einem:einer/einem/g'
-e 's/Eigentümer:in/Eigentümer/g'
-e 's/Empfohlene:r/Empfohlener/g'
-e 's/Entfernte:r/Entfernter/g'
-e 's/Erwachsene:r/Erwachsener/g'
-e 's/Erziehungsberechtigte:r/Erziehungsberechtigter/g'
-e 's/Erziehungsberechtigte:n/Erziehungsberechtigten/g'
-e 's/Gefangene:r/Gefangener/g'
-e 's/Gleiche:r/Gleicher/g'
-e 's/Hochgeladene:n/Hochgeladenen/g'
-e 's/jede:n/jeden/g'
-e 's/Jede:r/Jeder/g'
-e 's/jede:r/jeder/g'
-e 's/Jüngere:r/Jüngerer/g'
-e 's/Nächste:r/Nächster/g'
-e 's/NEUE:R/NEUER/g'
-e 's/Neue:r/Neuer/g'
-e 's/Selbe:r/Selber/g'
-e 's/Studierende:r/Studierender/g'
-e 's/Teilnehmende:r/Teilnehmender/g'
-e 's/Unbekanntem:unbekannter/Unbekanntem/g'
-e 's/Unbekannte:r/Unbekannter/g'
-e 's/Unterrichtende:r/Unterrichtender/g'
-e 's/Verwaltete:r/Verwalteter/g'
-e 's/vom:von/vom/g'
-e 's/Vorgesetzte:r/Vorgesetzter/g'
-e 's/Zahlungspflichtige:r/Zahlungspflichtiger/g'
"$line" >/dev/null 2>&1
echo -ne " $counter von $count\r"
((counter++))
rm "$line"b >/dev/null 2>&1
if [[ "$binary" = "1" ]]; then
plutil -convert binary1 "$line" >/dev/null 2>&1
fi
hash_value=$( md5 "$line" | sed 's/.*=//g' | xargs )
echo "$line""=""$hash_value" >> usr/share/degenderizer_brain.db
else
echo -ne " $counter von $count war bereits gepatcht und wurde übersprungen\n"
((counter++))
fi
fi
done < "$input"
chmod 444 usr/share/degenderizer_brain.db
rm Users/.localized >/dev/null 2>&1
Snapshot erstellen
echo -e "
📸 Erstelle Snapshot..."
if bless --mount /Volumes/"$sys_part" --bootefi --create-snapshot; then
echo "✅ Änderungen wurden erfolgreich manifestiert!"
echo "🔁 Starte den Mac neu mit: reboot"
else
echo "
fi