ChatGPT mit mittlerer Aufgabenstellung getestet

Aug 25, 2026 Last reply: 3 hours ago 9 Replies

Ich habe mal zum Test eine genaue und vollständige Aufgabenstellung formuliert und diese MS-Copilot vorgelegt:


---------------------------------------------------------------------------------------------------- Nachfolgend wird eine Programmieraufgabe beschrieben. Aufgabenstellung: Ein Skript für das Shell-Programm bash soll hergestellt werden. Dieses Skript soll jeweils eine Datei variabel verschlüsseln oder entschlüsseln. Das Skript soll 2 oder optional 3 Argumente entgegen nehmen. Das erste Argument soll die zu bearbeitende Datei angeben. Das zweite Arg soll 1 bis 6 Zeichen angeben, { die die Verschlüsselungs-Algorithmen kennzeichnen und gleichzeitig die Reihenfolge ihrer Verwendung anzeigen. Jeder Algorithmus kann mehr als 1-mal angegeben werden. Diese 1 bis 6 Zeichen sollen als Endung mit Punkt vorne an den Dateinamen (Arg1) des nun verschlüsselten Inhalts der Datei angehängt werden. Von diesem Inhalt soll ein Hash sha3_256 genommen und aufbewahrt werden. Diese Backup-Inhalte sind für die Aufbewahrung im Internet beabsichtigt. } Es sollen 3 Algorithmen zur Auswahl vorhanden sein. Mindestens 2 der 3 Algorithmen sollen kryptographische Qualität besitzen. Die Algorithmen sollen Argumente für eine Input-Datei und eine Output-Datei entgegen nehmen.



Das zweite Arg soll mit einem geeigneten Zeichen eine Entschlüsselung anzeigen. Das erste Arg enthält hierbei den Dateinamen mit der speziellen Endung aus 1 bis 6 Zeichen. Diese 1 bis 6 Zeichen sollen zur internen Steuerung verwendet werden. Vor dem Entschlüsselungsvorgang soll der zugehörige Hash auf Gleichheit geprüft werden.



Optional kann links als erstes Arg ein wählbares Arbeitsverzeichnis angegeben werden. Die bisherigen Arg1 und Arg2 werden dadurch zu Arg2 und Arg3.



Jemand, der den Dateinamen des verschlüsselten Inhalts betrachtet, soll durch die dort angegebenen 1 bis 6 Zeichen der Endung nicht die verwendeten Algorithmen erkennen können. Es soll hier folglich eine Verschleierung wirken. Der Aufwand dieser Verschleierung soll gering gehalten werden, weil bei Verwendung von mehr als einer Verschlüsselung hintereinander zu keinem Zeitpunkt der Erfolg eines Entschlüsselungs-Versuchs eines Angreifers erkennbar ist.



----------------------------------------------------------------------------------------------------



Prinzipiell hat ChatGPT seine Aufgabe korrekt erfüllt. Das war erwartbar, weil meine Anforderung vollständig und logisch stimmig ist. ChatGPT blieb daher nicht anderes übrig, als brauchbar zu antworten. Ich habe ChatGPT allerdings bewußt einige Freiheiten gelassen.



Vor konkreter Inbetriebnahme als Werkzeug in der Praxis muß seine Ausgabe allerdings einer gründlichen Untersuchung unterzogen werden, die wohl von allerlei Änderungen und Erweiterungen gefolgt werden muß, so scheint mir.


ChatGPT: ==================================================================================================== #!/usr/bin/env bash set -euo pipefail



# ------------------------------------------------------------ # konfigurierbare Zuordnung "verschleierter" Zeichen -> Algorithmen # mind. 2 kryptographisch, 1 optional nicht-kryptographisch # # Wir verwenden hier: # X -> AES-256-CBC (OpenSSL, symmetrisch, kryptographisch) # 7 -> CHACHA20 (OpenSSL, symmetrisch, kryptographisch) # _ -> gzip (Kompression, nicht kryptographisch) # # Die Zeichen X,7,_ verraten die Algorithmen nicht direkt. # ------------------------------------------------------------



# Pfad zu openssl und gzip OPENSSL_BIN=openssl GZIP_BIN=gzip



usage() { cat <<EOF Usage: Verschlüsseln: $0 [arbeitsverzeichnis] <datei> <seq>



<seq> = 1..6 Zeichen aus {X,7,_}, Reihenfolge = Reihenfolge der Algorithmen Ergebnis: <datei>.<seq> und Hash-Datei <datei>.<seq>.sha3

Entschlüsseln: $0 [arbeitsverzeichnis] <datei.muster> d <datei.muster> = Dateiname mit Endung .<seq>



'd' = Entschlüsselungsmodus Vor Entschlüsselung wird Hash aus <datei>.<seq>.sha3 geprüft.



Beispiele: $0 geheim.txt X7_ $0 geheim.txt.X7_ d $0 /tmp geheim.txt X7_ EOF exit 1 }



# ------------------------------------------------------------ # Algorithmus-Funktionen: jeweils in/out-Datei # ------------------------------------------------------------



algo_X_encrypt() { local in="$1" out="$2" pass="$3" "$OPENSSL_BIN" enc -aes-256-cbc -pbkdf2 -salt \ -in "$in" -out "$out" -pass pass:"$pass" }



algo_X_decrypt() { local in="$1" out="$2" pass="$3" "$OPENSSL_BIN" enc -d -aes-256-cbc -pbkdf2 \ -in "$in" -out "$out" -pass pass:"$pass" }



algo_7_encrypt() { local in="$1" out="$2" pass="$3" "$OPENSSL_BIN" enc -chacha20 -pbkdf2 -salt \ -in "$in" -out "$out" -pass pass:"$pass" }



algo_7_decrypt() { local in="$1" out="$2" pass="$3" "$OPENSSL_BIN" enc -d -chacha20 -pbkdf2 \ -in "$in" -out "$out" -pass pass:"$pass" }



algo__encrypt() { local in="$1" out="$2" "$GZIP_BIN" -c "$in" > "$out" }



algo__decrypt() { local in="$1" out="$2" gunzip -c "$in" > "$out" }



# ------------------------------------------------------------ # Hilfsfunktionen # ------------------------------------------------------------



calc_sha3() { local file="$1" hashfile="$2" "$OPENSSL_BIN" dgst -sha3-256 "$file" > "$hashfile" }



check_sha3() { local file="$1" hashfile="$2" if [ ! -f "$hashfile" ]; then echo "Fehler: Hash-Datei '$hashfile' fehlt." >&2 exit 1 fi local current stored current=$("$OPENSSL_BIN" dgst -sha3-256 "$file") stored=$(cat "$hashfile") if [ "$current" != "$stored" ]; then echo "Fehler: Hash-Prüfung fehlgeschlagen (Integrität verletzt)." >&2 exit 1 fi }



apply_encrypt_sequence() { local infile="$1" seq="$2" outfile="$3" pass="$4"



local tmp_in="$infile" local tmp_out



for ((i=0; i<${#seq}; i++)); do local c="${seq:i:1}" tmp_out="$(mktemp)"



case "$c" in X) algo_X_encrypt "$tmp_in" "$tmp_out" "$pass" ;; 7) algo_7_encrypt "$tmp_in" "$tmp_out" "$pass" ;; _) algo__encrypt "$tmp_in" "$tmp_out" ;; *) echo "Unbekanntes Algorithmus-Zeichen: '$c'" >&2 rm -f "$tmp_out" exit 1 ;; esac



# nächster Schritt: tmp_out wird zum neuen tmp_in if [ "$tmp_in" != "$infile" ]; then rm -f "$tmp_in" fi tmp_in="$tmp_out" done



mv "$tmp_in" "$outfile" }



apply_decrypt_sequence() { local infile="$1" seq="$2" outfile="$3" pass="$4"



local tmp_in="$infile" local tmp_out



# Entschlüsselung in umgekehrter Reihenfolge for ((i=${#seq}-1; i>=0; i--)); do local c="${seq:i:1}" tmp_out="$(mktemp)"



case "$c" in X) algo_X_decrypt "$tmp_in" "$tmp_out" "$pass" ;; 7) algo_7_decrypt "$tmp_in" "$tmp_out" "$pass" ;; _) algo__decrypt "$tmp_in" "$tmp_out" ;; *) echo "Unbekanntes Algorithmus-Zeichen: '$c'" >&2 rm -f "$tmp_out" exit 1 ;; esac



if [ "$tmp_in" != "$infile" ]; then rm -f "$tmp_in" fi tmp_in="$tmp_out" done



mv "$tmp_in" "$outfile" }



# ------------------------------------------------------------ # Argumente auswerten (inkl. optionalem Arbeitsverzeichnis) # ------------------------------------------------------------



if [ "$#" -lt 2 ] || [ "$#" -gt 3 ]; then usage fi



workdir="." file_arg="" seq_or_flag=""



if [ "$#" -eq 3 ]; then workdir="$1" file_arg="$2" seq_or_flag="$3" else file_arg="$1" seq_or_flag="$2" fi



cd "$workdir"



# ------------------------------------------------------------ # Modus bestimmen: Verschlüsseln vs. Entschlüsseln # ------------------------------------------------------------



if [ "$seq_or_flag" = "d" ]; then # Entschlüsselung enc_file="$file_arg"



if [ ! -f "$enc_file" ]; then echo "Fehler: Datei '$enc_file' nicht gefunden." >&2 exit 1 fi



# Dateiname und Sequenz aus Endung extrahieren: # erwartet: name.<seq>



base="${enc_file%.*}" seq="${enc_file##*.}"



if [ -z "$seq" ] || [ "${#seq}" -gt 6 ]; then echo "Fehler: ungültige Sequenz in Dateiendung." >&2 exit 1 fi



hashfile="${enc_file}.sha3" check_sha3 "$enc_file" "$hashfile"



# Passphrase abfragen (für kryptographische Algorithmen) read -r -s -p "Passphrase für Entschlüsselung: " pass echo



out_file="$base" # ursprünglicher Name ohne .<seq>



apply_decrypt_sequence "$enc_file" "$seq" "$out_file" "$pass"



echo "Entschlüsselt: $out_file"



else # Verschlüsselung plain_file="$file_arg" seq="$seq_or_flag"



if [ ! -f "$plain_file" ]; then echo "Fehler: Datei '$plain_file' nicht gefunden." >&2 exit 1 fi



if [ -z "$seq" ] || [ "${#seq}" -gt 6 ]; then echo "Fehler: Sequenz muss 1..6 Zeichen lang sein." >&2 exit 1 fi



# Passphrase abfragen (für kryptographische Algorithmen) read -r -s -p "Passphrase für Verschlüsselung: " pass echo



out_file="${plain_file}.${seq}"



apply_encrypt_sequence "$plain_file" "$seq" "$out_file" "$pass"



# Hash des verschlüsselten Inhalts berechnen und speichern hashfile="${out_file}.sha3" calc_sha3 "$out_file" "$hashfile"



echo "Verschlüsselt: $out_file" echo "Hash gespeichert in: $hashfile" fi ====================================================================================================



Was nun? Copilot oder ChatGPT? Das sind zwei verschiedene Paar Schuhe.

Wenn ich mir den Code, der rausfällt, dann so anschaue, dann hast du nun zwei Optionen: Du vertraust dieser KI blind und führst das einfach aus ODER du hast jetzt erstmal ein/zwei Stunden damit zu tun diesen Code zu reviewen.

Wenn ich mir deinen umfangreichen Prompt und das Resultat (welches ich auf jeden Fall noch Zeile für Zeile reviewen wollen würde BEVOR das zur Ausführung kommt) so anschaue, dann bestärkt mich das in meiner Meinung, dass ich einfache Skripte dann lieber selbst schreibe anstatt erst umfangreich einer KI zu beschreiben was ich haben will.

Gruß

Manuel

Am 25.08.2026 um 12:57 schrieb Helmut Schellong:

Ich habe mal zum Test die Aufgabe ein Mathematica-Script zu erzeugen, dass aus dem Line-In der Soundkarte das DCF77-Signal zu dekodioeren.

Die Aufgabe wurde von ChatGPT gelöst, aber nur nach 10 Maligen zurücksetzen eins Lösungsvorschlage und Neuanforderung.

Fürchterlich!

formatting link

:)

Im Grunde ist das genau mein Ansatz und möchte ich Dir voll zustimmen. Praktisch ist es nicht so einfach.

Ich habe etliche immer noch viel und regelmäßig genutzte Skripte für

4DOS auf Windows98. Die 4DOS Helpfiles sind hervorragend und eignen sich gleich gut als Lehrbuch und Nachschlagewerk. Damit war es kein Problem und kann ich noch heute auf Anhieb laufende Skripte schreiben.

Jetzt ziehe ich zunehmend zu Windows 10 um. Eine auch nur ansatzweise brauchbare Doku zu CMD finde ich nirgends, nur den ungeordneten Wust der Microsoft Website. Ein Skript zu lesen und zu verstehen ist weit einfacher, als es in korrekter und fehlerfreier Syntax zu schreiben. Also lasse ich meine alten Skripte mit bisher gutem Erfolg von ChatGPT übersetzen.

Korrekturlesen und ein erster Test an unkritischem Ort sind selbstverständlich.

Wikipedia: "Copilot nutzt das Large Language Model GPT-5 von OpenAI" Darauf kommt es mir an.

Nach etwa 10 s Ansicht wußte ich, daß das nach Ausführung unter Unix aussieht. Bereits die Shebang-Konstruktion... Ich muß unter FreeBSD mal testen, ob 'Shebang/usr/bin/env bash' und 'openssl' direkt nutzbar sind.

Bei jedem Skript-Aufruf den Key für jede verwendete Verschlüsselung per Hand einzugeben, ist ein NoGo. Außerdem ist nicht klar, wie ein Key (per 'read') inhaltlich aussehen muß. Das Merken des Hashes habe ich selbst viel besser gelöst. Ich bemerkte, daß die KI keine kreativen Eigenentwicklungen (stellenweise) vornahm, auch nicht als Reaktion auf entsprechende Diskussionen - weil die KI solches eben gar nicht kann. Etc.

Wirklich blind vertrauen werde ich anderen Quellen nie. Die sind oft direkt gar nicht lauffähig.

Zumal ich auch Fehler bei Copilot bemerkte. Beispielsweise, daß { ... } ein Subshell-Aufruf sein soll. Als ich stattdessen ( ... ) erwähnte, redete sich die KI heraus, daß in der klassischen Bourne-Shell { ... } nur eine Gruppierung ist, in der bash jedoch nicht, was ich jedoch nicht glaube, weil man auf eine cmd-Gruppierung mittels { } in Shells nicht wirklich verzichten kann.

Ich beherrsche etwa 20 Programmiersprachen mehr oder weniger gut. Schon deshalb bin ich in der Lage, einfach alles selbst kreativ zu entwickeln.

Du vergißt, daß das von mir ein Test der KI war. Ich wollte genau wissen, wie meine Aufgabenstellung umgesetzt wird. Das beeinflußt künftige Fragestellungen von mir.

Meine Beschreibung an die KI finde ich eher nicht umfangreich - etwa 17..22 Minuten.

Das zugrunde liegende Skript 'encode.bish' für meine eigene Shell ist etwa 5 Monate alt und ebenso lange in Gebrauch. Die Lösung der KI ist konzeptionell interessant, weil eine andere Handschrift, jedoch mir nicht so erfreulich und zufriedenstellend, wie der Inhalt meines eigenen Skripts.

Eine Nutzung von KI ist nicht selten anregend und hin und wieder lehrreich. Denn KI kennt die Daten der Welt, beispielsweise wohl alle rfc8888, somit alle Programmiersprachen, und kann das alles superschnell handhaben. Das sind die Vorteile einer Maschine!

Leo Baumann schrieb:

Ich kann ähnliches berichten: Im Carport habe ich einen in der Zeitfolge einstellbaren Eltako Treppenlichtautomaten gehabt, der auf Bewegungsmelder 3 Minuten Licht m,achen sollte, auf Taster ebenfalls, aber auch 2 stundne Dauerlicht, wenn der Taster länger als 2 Sekunden festgehalten wird. Inkl. Bestätigungsflackern zum ein-und Ausschalten.

Der Eltako wich nun einem Shelly Pro2, weil ich vom Haus aus den Bewegungsmelder abschaltbar haben wollt, weil wegen Wind und Carportdach und Blechwand und dauernd Wiedereinschalten des Lichts. (mal flapsig ausgetdrückt)

Da ich keinerlei Ahnung von Jacascript habe und mich auhc gar nicht in Javascript und Shellyprogrammierung einarbeiten wollte, habe ich detailliert beschrieben was ich wollte. Das habe ich Gemini und ChatGPT zu fressen gegeben. Nach dem 10. Versuch bei Gemini habe ich aufgegeben, nach 10 Versuchen hatte ChatGPT ein brauchbares Skript produziert, das nun seit einem knappen Jahr zufriedenstellend das macht was es soll.

Leo Baumann wrote on 25.08.2026 15:03:

Wir haben dann beide typische Nachteile einer KI kennengelernt. Ich bemerke auch immer wieder, daß die KI nicht wirklich kreativ sein kann.

Du bist doch immer vollständig logisch und korrekt. Warum schreibst Du dann ChatGPT; wenn Du doch ein ganz anderes Frontend benutzt hast, das GPT-5 als Backend benutzt?

Ist FreeBSD etwa kein Unix?

Dann war wohl Dein Prompt suboptimal.

Grüße Marc

Hätte ChatGPT eine semantisch _andere_ Aufgaben-Lösung präsentiert, bei Nutzung desselben Modells und desselben Herstellers? Ich halte das (bei meiner Vorgabe) für ausgeschlossen.

Ich wählte die Bezeichnung ChatGPT, weil die jeder semantisch gut kennt. Copilot ist microsoft-spezifisch und weit weniger bekannt, so daß ich in Zukunft Copilot und 'KI' zusätzlich nennen werde. Ist dadurch etwas gewonnen? Ich meine, nein.

Streng gesehen ist FreeBSD ein unixoides System, kein Unix. Auch Linux ist nicht das originale Unix. Das wahre Unix kam zu Beginn von AT&T, oder später Unix386-SystemV von SCO.

Wieso? Mein Prompt hat mit dem NoGo nichts zu tun. Es ist semantisch etwas anderes. Willst Du anregen, daß Vorgaben für die KI künftig aus 0 Zeichen bestehen? Also Vorgabe per direkter Übergabe aus dem Gehirn?

Ich werde weiterhin Copilot von MS verwenden. Es ist in den Browser eingebaut, liest den aktuell offenen Tab, nimmt direkt oder durch Upload Texte entgegen, bietet die Modi 'Smart' und 'Deeper' an.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required