Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
apxutil — Ein Werkzeug zur Manipulation von Schneider Electric PLC-Archivdateien | Kitploit
Tools/GitHubGitHub/finngineering/apxutil
Embedded-System-SicherheitSchwachstellenanalyseExploitationReverse EngineeringSCADA/ICS-SicherheitHardware-SicherheitBinäranalyseFirmware-Analyse
GitHubfinngineering/apxutil

apxutil

Ein Werkzeug zur Manipulation von Schneider Electric PLC-Archivdateien

Repository anzeigen
10521vor 8 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Ein Werkzeug zur Bearbeitung von Schneider Electric SPS-Archivdateien

Dieses Werkzeug kann SPS-"Archiv"-Dateien extrahieren und wieder zusammenbauen, die von mehreren Schneider Electric SPS (unter anderem M580, M340 und Quantum) verwendet werden. Die Archivdateien mit der Erweiterung .sta sind eigentlich ZIP-Archive, die einige Dateien enthalten. Innerhalb des Archivs ist die wirklich wichtige Datei Station.apx. Der Inhalt dieser Datei wird bei einem (vollständigen) Programm-Download/-Upload zur/von der SPS übertragen. Natürlich enthält sie den eigentlichen ausführbaren Code des SPS-Programms. Sie enthält aber auch alle notwendigen Informationen, um das SPS-Programm in Control Expert Classic (oder Unity Pro) zu bearbeiten. Das .apx-Dateiformat ist proprietär und es sind nur wenige Informationen darüber verfügbar. Einige Informationen sind von Liras en la red und Team82 verfügbar, aber diese Arbeit geht tiefer als das, was sie veröffentlicht haben. Mit diesem Werkzeug können die verschiedenen "Abschnitte" aus der Station.apx extrahiert (und bei Bedarf dekomprimiert) werden, um sie zu untersuchen. Das Werkzeug kann die Station.apx auch aus zuvor extrahierten – und möglicherweise modifizierten – Abschnittsdaten und Metadaten wieder zusammensetzen. Und diese zusammengesetzte Datei öffnet sich in Control Expert Classic / Unity Pro fehlerfrei, sofern die vorgenommenen Änderungen die "Abschnittslogik" nicht verletzen.

Motivation

Es gab nie einen großen Plan hinter diesem Projekt. Ich verwende ab und zu Schneider Electric SPS und war daran interessiert, wie sie auf einer grundlegenderen Ebene funktionieren (oder nicht). Es stellte sich heraus, dass diese Untersuchung komplex genug war, um mich zu unterhalten (vermutlich wie das Lösen von Kreuzworträtseln für normale Menschen), und am Ende hatte ich dieses Werkzeug entwickelt.

Warnung

Das Werkzeug gibt sein Bestes, um die Dateien, mit denen es arbeitet, zu extrahieren und wieder zusammenzusetzen. Der Benutzer sollte sich jedoch bewusst sein, dass das Werkzeug entwickelt wurde mit:

  • Einem begrenzten Verständnis des .apx- (und .sta-) Dateiformats
  • Begrenzter Eingabevalidierung, d.h. es wird eher abstürzen oder etwas falsch machen, als ohne Versuch aufzugeben
  • Überschreiben vorheriger Dateien ohne Rückfrage
  • Begrenzten Tests verschiedener SPS- und Programmier-Softwareversionen
  • Begrenzten Tests der Code-Funktionalität

Die Verwendung neu zusammengesetzter Dateien auf einer echten SPS kann zu Problemen führen, insbesondere wenn Sie die Abschnitte oder Metadaten geändert haben. Es ist sogar möglich, dass die SPS dadurch unbrauchbar wird. Laden Sie daher modifizierte Archivdateien auf eigenes Risiko auf die SPS.

Verwendung

Das Werkzeug wird über die Befehlszeile mit dem Python-Interpreter verwendet:

python apxutil.py -h

usage: apxutil.py [-h] [-f filaname-apx] [-F filaname-sta] [-e dir] [-E dir] [-a manifestpath] [-A manifestpath] [-d]
                  [-x] [-B] [-r]

Tool to manipulate Schneider Electric .sta and .apx files

options:
  -h, --help            show this help message and exit
  -f, --apxfile filaname-apx
                        .apx file to read or write
  -F, --stafile filaname-sta
                        .sta file to read or write
  -e, --extract-apx dir
                        extract contents of the Station.apx file
  -E, --extract-sta dir
                        extract contents of the .sta file
  -a, --assemble-apx manifestpath
                        create Station.apx file based on apx_manifest.ini
  -A, --assemble-sta manifestpath
                        create a .sta file from files in sta_manifest.ini
  -d, --decompress      decompress Station.apx sections that are compressed
  -x, --hexdump         print hexdump of Station.apx with header information
  -B, --include-apd     include Station.apd when creating .sta archive
  -r, --restart-offsets
                        restart offsets at 0 for each section in hexdump print (useful for diffing)

Die Hilfe sollte weitgehend selbsterklärend sein. Im Allgemeinen arbeiten Kurznotationen mit Großbuchstaben an .sta-Dateien und Kleinbuchstaben an .apx-Dateien. Einige Anwendungsbeispiele sind unten angegeben.

Um den Inhalt einer .sta-Datei in das Verzeichnis "extracted" zu extrahieren, würden Sie verwenden:

python apxutil.py -F archive.sta -E extracted

Um den Inhalt von Station.apx in das Verzeichnis "contents" zu extrahieren, würden Sie verwenden:

python apxutil.py -f extracted/BinAppli/Station.apx -e contents -d

Die Option "-d" bedeutet, dass komprimierte Abschnitte dekomprimiert werden, kann aber weggelassen werden, wenn (alle) Rohdaten der Abschnitte gewünscht werden.

Um Station.apx wieder zusammenzusetzen, würden Sie verwenden:

python apxutil.py -f extracted/BinAppli/Station.apx -a contents

Dadurch wird die Station.apx basierend auf der apx_manifest.ini im Verzeichnis contents zusammengesetzt, wobei Abschnittsdaten komprimiert werden, falls sie zuvor dekomprimiert wurden. Abschnittsgrößen und CRC werden neu berechnet und nicht aus der apx_manifest.ini gelesen.

Um eine .sta-Datei wieder zusammenzusetzen, würden Sie verwenden:

python apxutil.py -F modified-archive.sta -A extracted

Dadurch wird standardmäßig die Datei Station.apd weggelassen (die hauptsächlich eine Integritätsprüfung für den Station.apx-Dateikopf zu sein scheint). Wenn Sie diese einschließen möchten, fügen Sie die Option "-B" hinzu. Dies kann jedoch dazu führen, dass Control Expert Classic die Projektarchivdatei nicht öffnen kann.

Um den Inhalt der Station.apx-Datei direkt "anzuzeigen", kann der folgende Befehl verwendet werden:

python apxutil.py -F modified-archive.sta -x

Dies gibt einen "kanonischen Hexdump" der Station.apx-Datei aus, d.h. Sie sehen die Offsets, Hex-Daten und ASCII-Daten, 16 Bytes auf einmal, einschließlich der Metadaten. Die Option "-d" kann verwendet werden, um komprimierte Abschnitte zu dekomprimieren (aber Vorsicht: die Offsets ergeben in diesem Fall wenig Sinn). Die Option "-r" kann verwendet werden, um den Offset für jeden Abschnitt bei 0 neu zu starten. Dies ist nützlich, wenn Sie Änderungen vorgenommen haben und diese ohne Offsets "diffen" möchten.

APX-Dateiformatstruktur

Wenn Sie das APX-Dateiformat verstehen möchten (auf dem Niveau von mir und diesem Werkzeug), ist der beste Weg wirklich, sich den Quellcode von apxutil.py anzusehen. Der Code sollte auch mit wenig Programmiererfahrung nicht zu schwer zu lesen sein. Er könnte jedoch echte Programmierer übel machen. Auf jeden Fall wird hier ein Überblick auf hoher Ebene über das Dateiformat gegeben. Die APX-Datei beginnt mit einem 32-Byte-Dateikopf. Der Rest der Datei ist in verschiedene Abschnitte unterteilt, jeder mit einer ähnlichen Struktur. Jeder Abschnitt beginnt mit einem Abschnittskopf, dessen Länge vom Abschnittstyp abhängt (definiert am Anfang des Kopfes). Auf den Abschnittskopf folgt ein RTE (Kopf). Nach dem RTE kommen die Abschnittsdaten (falls vorhanden). Und nach den Abschnittsdaten beginnt der nächste Abschnitt (Kopf). Es scheint, dass der Abschnittskopf eher mit dem Station.apx-Format zusammenhängt und der RTE eher mit der Ausführungsumgebung (RunTime Environment oder RealTime Environment?), aber die Unterscheidung ist nicht eindeutig.

Tool herunterladen