Important
| Direct Download - Windows Build |
The current Windows version of the Python Reverse Engineering Inspector is available as a GitHub Actions artifact for direct download.
This build is only available for a limited time.
Business Anwendung für statische Python Codeanalyse,
- Reverse Engineering, Abhängigkeitsanalyse, Komplexitätsauswertung, Risikoerkennung und Bytecode Inspektion.
- Version 1.0.0
Social Media & Contact
| Deutsch | English |
|---|
- Projektübersicht
- Funktionsumfang
- Statische Analyse und Sicherheitsmodell
- Projekt und Symbolanalyse
- Abhängigkeitsanalyse
- Funktionsaufrufe
- Komplexitätsanalyse
- NumPy und SciPy
- Risikoanalyse
- Bytecode Inspektion
- Benutzeroberfläche
- Deutsch und Englisch
- SQLite Verlauf
- Exportformate
- Windows Testumgebung
- Windows Build
- Manuelle Installation
- Projektstruktur
- Technische Anforderungen
- Analysierte und ausgeschlossene Verzeichnisse
- Projektstatus
Der BylickiLabs Python Reverse Engineering Inspector, kurz BPREI, ist eine Desktop Anwendung zur statischen Untersuchung vollständiger Python Projekte.
- Die Anwendung liest Python Quellcode ein, analysiert die interne Struktur und stellt technische Zusammenhänge in mehreren spezialisierten Bereichen dar.
- Dazu gehören Module, Klassen, Funktionen, Methoden, Imports, Abhängigkeiten, direkte Funktionsaufrufe, Komplexitätswerte, statistische Auffälligkeiten, ausgewählte Risikomuster und Python Bytecode.
- Das untersuchte Zielprojekt wird nicht importiert und nicht ausgeführt.
- Die Analyse basiert primär auf dem Python Abstract Syntax Tree.
- Die grafische Oberfläche wird mit PySide6 umgesetzt.
- NumPy und SciPy werden funktional für statistische Codeauswertungen eingesetzt.
- Die Analyse basiert primär auf dem Python Abstract Syntax Tree.
Aktuell implementiert sind:
🔹 Analyse kompletter Projektverzeichnisse
🔹 Unterstützung für .py und .pyw
🔹 Projekt Explorer
🔹 Quellcode Anzeige
🔹 Erkennung von Klassen
🔹 Erkennung von Funktionen und Methoden
🔹 Erkennung asynchroner Funktionen und Methoden
🔹 Parameteranalyse
🔹 Decorator Analyse
🔹 Import Analyse
🔹 Klassifizierung von Abhängigkeiten
🔹 Analyse direkter Funktionsaufrufe
🔹 AST basierte Komplexitätsbewertung
🔹 NumPy Projektmetriken
🔹 SciPy Z Score Ausreißererkennung
🔹 Risk Pattern Analyse
🔹 Bytecode Disassemblierung
🔹 SQLite Analyseverlauf
🔹 JSON Export
🔹 CSV Export
🔹 HTML Export
🔹 Markdown Export
🔹 Deutsche Benutzeroberfläche
🔹 Englische Benutzeroberfläche
🔹 Sprachwechsel während der Laufzeit
🔹 GitHub Button
🔹 LinkedIn Button
🔹 Facebook Button
🔹 ausführlicher Info Dialog
🔹 Analyse im Hintergrund über QThread
🔹 Abbruch laufender Analysen
BPREI führt das analysierte Python Projekt nicht aus.
- Der Quellcode wird mit
ast.parse()in einen Abstract Syntax Tree umgewandelt und anschließend strukturell ausgewertet. - Dadurch können Projektbestandteile untersucht werden, ohne Module des Zielprojekts mit
importzu laden.- Die Bytecode Ansicht verwendet
compile()ausschließlich zur Erzeugung von Codeobjekten. Diese Codeobjekte werden anschließend mit dem Python Moduldisdisassembliert. Eine Ausführung des kompilierten Zielcodes findet innerhalb dieser Funktion nicht statt.
- Die Bytecode Ansicht verwendet
- Syntaxfehler einzelner Dateien werden in den Analyseinformationen gespeichert, damit nicht automatisch das gesamte Projekt wegen einer einzelnen fehlerhaften Datei verworfen wird.
Der Projekt Analyzer untersucht jede erkannte Python Datei und erfasst unter anderem:
🔹 relativen Dateipfad
🔹 absoluten Dateipfad
🔹 Gesamtzahl der Zeilen
🔹 Codezeilen
🔹 Kommentarzeilen
🔹 Leerzeilen
🔹 Klassen
🔹 Funktionen
🔹 Methoden
🔹 asynchrone Funktionen
🔹 asynchrone Methoden
🔹 Parameter
🔹 Decorators
🔹 Startzeile
🔹 Endzeile
🔹 übergeordnete Symbole
🔹 direkte Funktionsaufrufe
🔹 Komplexitätswert
Im Projekt Explorer kann eine Datei oder ein Symbol ausgewählt werden. Der zugehörige Quellcode wird angezeigt und bei Symbolen springt die Ansicht direkt zur entsprechenden Codeposition.
Imports werden automatisch analysiert und in drei Kategorien eingeordnet:
🔹 Standardbibliothek
🔹 Projektintern
🔹 Drittanbieter
Für jede erkannte Abhängigkeit speichert BPREI:
🔹 Modulname
🔹 Kategorie
🔹 Anzahl der Verwendungen
🔹 Dateien, in denen die Abhängigkeit vorkommt
Projektinterne Abhängigkeiten werden anhand der vorhandenen Projektstruktur erkannt.
- Module der Python Standardbibliothek werden über
sys.stdlib_module_namesklassifiziert.- Alle übrigen erkannten Imports werden als Drittanbieter Abhängigkeiten behandelt.
BPREI analysiert direkte Aufrufe innerhalb von Funktionen und Methoden.
- Für einen Aufruf werden gespeichert:
🔹 aufrufendes Symbol
🔹 aufgerufenes Ziel
🔹 Datei
🔹 Codezeile
Dadurch kann nachvollzogen werden, welche Funktionen und Methoden innerhalb eines Projekts miteinander verbunden sind.
- Verschachtelte Funktionsdefinitionen und Klassendefinitionen werden bei der direkten Aufrufanalyse bewusst separat behandelt und nicht automatisch dem äußeren Funktionskörper zugerechnet.
BPREI berechnet für Funktionen und Methoden einen AST basierten Komplexitätswert.
- In die Bewertung fließen unter anderem folgende Strukturen ein:
🔹 if
🔹 for
🔹 async for
🔹 while
🔹 bedingte Ausdrücke
🔹 assert
🔹 Comprehensions
🔹 boolesche Verknüpfungen
🔹 Exception Handler
🔹 try mit else
🔹 match Fälle
Note
Die Anwendung zeigt unter anderem:
🔹 durchschnittliche Komplexität
🔹 Median
🔹 95. Perzentil
🔹 Standardabweichung
🔹 maximale Komplexität
🔹 statistisch auffällige Symbole
Der Wert ist eine projektinterne AST basierte Bewertungsmetrik und wird nicht als vollständiger Ersatz für eine spezialisierte formale Codeanalyse verstanden.
NumPy und SciPy sind funktionale Bestandteile der Anwendung.
NumPy wird zur Verarbeitung der Komplexitätswerte und zur Berechnung folgender Kennzahlen eingesetzt:
🔹 Mittelwert mit numpy.mean()
🔹 Median mit numpy.median()
🔹 95. Perzentil mit numpy.percentile()
🔹 Standardabweichung mit numpy.std()
🔹 Maximum mit numpy.max()
SciPy wird für die statistische Ausreißererkennung eingesetzt.
Mit
scipy.stats.zscore()werden Z Scores für die Komplexitätswerte der analysierten Funktionen und Methoden berechnet.
- Ein Symbol wird aktuell als statistische Auffälligkeit aufgenommen, wenn sein Z Score mindestens
2.0beträgt.- Für diese Auswertung müssen mindestens drei analysierbare Funktionen oder Methoden vorhanden sein.
Die Risk Pattern Analyse sucht nach ausgewählten Konstruktionen, die bei einer manuellen Codeprüfung besondere Aufmerksamkeit verdienen können.
Note
Aktuell erkannt werden:
🔹 eval()
🔹 exec()
🔹 compile()
🔹 os.system()
🔹 pickle.load()
🔹 pickle.loads()
🔹 yaml.load()
🔹 tempfile.mktemp()
🔹 Aufrufe über subprocess
🔹 shell=True bei Subprocess Aufrufen
🔹 verify=False bei erkannten HTTP Aufrufen
🔹 möglicherweise fest hinterlegte Secrets
Bei möglichen fest hinterlegten Secrets werden unter anderem Variablennamen wie diese berücksichtigt:
password, passwd, pwd, secret, token, api_key, apikey, access_token, private_key, client_secret
Gespeicherte Nachweise für erkannte String Secrets werden maskiert.
- Die Risikoanalyse ist eine statische Mustererkennung. Ein Treffer bedeutet nicht automatisch, dass eine konkrete Sicherheitslücke vorliegt. Der Kontext des Codes muss weiterhin bewertet werden.
Die Bytecode Ansicht verwendet das Python Modul
dis.
- Der ausgewählte Quellcode wird mit folgenden Eigenschaften kompiliert:
compile(
source,
filename,
"exec",
dont_inherit=True,
optimize=0,
)Anschließend werden das Haupt Codeobjekt und enthaltene untergeordnete Codeobjekte rekursiv disassembliert.
- Damit lassen sich unter anderem Python Instruktionen von:
🔹 Modulen
🔹 Funktionen
🔹 Methoden
🔹 verschachtelten Codeobjekten
untersuchen.
Die Benutzeroberfläche basiert auf PySide6 und verwendet ein dunkles Business Design.
Note
Vorhandene Hauptbereiche:
- Dashboard
- Projekt Explorer
- Abhängigkeiten
- Funktionsaufrufe
- Komplexität
- Risikoanalyse
- Bytecode
- Verlauf
Das Dashboard zeigt zentrale Projektmetriken in separaten Karten.
- Der Header enthält Funktionen zum Öffnen eines Projekts, Starten und Abbrechen einer Analyse sowie zum Exportieren.
- Danach folgen optisch getrennt die Social Media Buttons für GitHub, LinkedIn und Facebook.
- Ein weiterer vertikaler Separator trennt den Social Media Bereich von Info und Sprachumschaltung.
Die Anwendung besitzt eine zentrale Lokalisierung mit vollständigen deutschen und englischen Übersetzungsschlüsseln.
- Aktuell enthalten beide Sprachen jeweils 102 übereinstimmende Schlüssel.
- Der Sprachwechsel erfolgt direkt während der Laufzeit.
Note
Beim Umschalten werden unter anderem aktualisiert:
🔹 Navigation
🔹 Buttons
🔹 Tabellenüberschriften
🔹 Dashboard Beschriftungen
🔹 Symboltypen
🔹 Abhängigkeitskategorien
🔹 Risikobeschreibungen
🔹 Statusmeldungen
🔹 Dialoge
🔹 Verlauf
🔹 Info Dialog
BPREI speichert Zusammenfassungen abgeschlossener Analysen in einer lokalen SQLite Datenbank.
Standardpfad unter dem Benutzerprofil:
~/.bprei/bprei_history.sqlite3
Gespeichert werden:
🔹 Analysezeitpunkt
🔹 Projektname
🔹 Projektpfad
🔹 Anzahl Dateien
🔹 Anzahl Klassen
🔹 Anzahl Funktionen
🔹 Anzahl Methoden
🔹 Anzahl Abhängigkeiten
🔹 Anzahl Risikobefunde
🔹 durchschnittliche Komplexität
Die Verlaufsansicht zeigt standardmäßig bis zu 100 der zuletzt gespeicherten Analysen.
BPREI unterstützt vier Exportformate:
Exportiert die vollständige strukturierte
AnalysisResultDatenstruktur.
Exportiert Symbole und Risikobefunde.
- Potenziell problematische Tabellenwerte mit führendem
=,+,-,@, Tabulator oder Wagenrücklauf werden vor dem Schreiben neutralisiert.
Erzeugt einen eigenständigen HTML Bericht mit dunklem Design, Projektmetriken und Risikobefunden.
Erzeugt einen Markdown Analysebericht mit Projektinformationen, Metriken und Risikobefunden.
- CSV, HTML und Markdown verwenden die aktuell aktive Sprache der Benutzeroberfläche.
- JSON exportiert die strukturierten internen Daten.
Note
Das Projekt enthält:
start_windows.bat
Das Skript:
- wechselt in das Projektverzeichnis
- erstellt bei Bedarf eine eigene
.venv - aktiviert die virtuelle Umgebung
- aktualisiert
pip - installiert beziehungsweise prüft die Pakete aus
requirements.txt - startet
main.py
Damit kann die Anwendung in einer isolierten virtuellen Python Umgebung getestet werden.
Start:
start_windows.bat
Das Projekt enthält zusätzlich:
build_windows.bat
Das Skript:
- erstellt bei Bedarf die
.venv - aktiviert die virtuelle Umgebung
- aktualisiert
pip - installiert die Projektabhängigkeiten
- installiert PyInstaller
- erstellt einen Windows Build ohne Konsolenfenster
- sammelt NumPy und SciPy vollständig für den Build ein
Verwendeter PyInstaller Name:
BylickiLabs-Python-Reverse-Engineering-Inspector
Die Ausgabe wird unter:
dist\
erstellt.
PyInstaller verwendet hier den normalen Verzeichnis Build. Dadurch befindet sich die ausführbare Anwendung zusammen mit den benötigten Laufzeitkomponenten im erzeugten Anwendungsverzeichnis.
- Dieses Verzeichnis kann auf einen anderen Datenträger, beispielsweise einen USB Stick, kopiert werden. Auf einem kompatiblen Windows System können die mitgelieferten Komponenten anschließend direkt aus diesem Verzeichnis genutzt werden, ohne die Python Pakete erneut über
pipinstallieren zu müssen.
Aufgrund der im Quellcode verwendeten Python Syntax wird Python 3.10 oder neuer benötigt.
py -m venv .venv.venv\Scripts\activatepython -m pip install --upgrade pip
pip install -r requirements.txtpython main.pyBylickiLabs_Python_Reverse_Engineering_Inspector/
│
├── main.py
├── requirements.txt
├── start_windows.bat
├── build_windows.bat
├── README.md
│
└── src/
├── __init__.py
├── config.py
├── localization.py
├── models.py
│
├── analyzers/
│ ├── __init__.py
│ ├── project_analyzer.py
│ └── bytecode_analyzer.py
│
├── services/
│ ├── __init__.py
│ ├── database.py
│ └── exporter.py
│
└── ui/
├── __init__.py
└── main_window.py
Note
Die aktuelle requirements.txt enthält:
PySide6>=6.8
numpy>=2.0
scipy>=1.13
Zusätzlich wird für den automatischen Windows Build PyInstaller durch
build_windows.batinstalliert.
- Kerntechnologien:
🔹 Python
🔹 PySide6
🔹 AST
🔹 NumPy
🔹 SciPy
🔹 SQLite
🔹 dis
🔹 PyInstaller für den Windows Build
BPREI sucht rekursiv nach
.pyund.pywDateien.
- Folgende Verzeichnisse werden aktuell von der Projektanalyse ausgeschlossen:
.git
.hg
.svn
.idea
.vs
.vscode
__pycache__
.pytest_cache
.mypy_cache
.venv
venv
env
node_modules
build
dist
.tox
Dadurch werden typische Versionsverwaltungsdaten, Entwicklungsumgebungen, virtuelle Umgebungen, Cache Daten und Build Ausgaben nicht als Bestandteil des Zielprojekts analysiert.
Aktuelle Anwendungsversion:
1.0.0
Anwendungsname:
BylickiLabs Python Reverse Engineering Inspector
Kurzname:
BPREI
Entwickler:
Thorsten Bylicki / BylickiLabs
Die geprüfte Projektversion enthält eine syntaktisch valide Python Codebasis.
- Die deutsche und englische Lokalisierung besitzen jeweils 102 identische Übersetzungsschlüssel.
- Project Overview
- Feature Set
- Static Analysis and Security Model
- Project and Symbol Analysis
- Dependency Analysis
- Function Calls
- Complexity Analysis
- NumPy and SciPy
- Risk Analysis
- Bytecode Inspection
- User Interface
- German and English
- SQLite History
- Export Formats
- Windows Test Environment
- Windows Build
- Manual Installation
- Project Structure
- Technical Requirements
- Analyzed and Excluded Directories
- Project Status
The BylickiLabs Python Reverse Engineering Inspector, short BPREI, is a desktop application for static inspection of complete Python projects.
- The application reads Python source code, analyzes the internal structure and presents technical relationships in several specialized areas.
- These include modules, classes, functions, methods, imports, dependencies, direct function calls, complexity values, statistical anomalies, selected risk patterns and Python bytecode.
- The inspected target project is not imported and is not executed.
- The analysis is primarily based on the Python Abstract Syntax Tree.
- The graphical interface is implemented with PySide6.
- NumPy and SciPy are functionally used for statistical code analysis.
- The analysis is primarily based on the Python Abstract Syntax Tree.
Currently implemented:
🔹 Complete project directory analysis
🔹 Support for .py and .pyw
🔹 Project Explorer
🔹 Source code view
🔹 Class detection
🔹 Function and method detection
🔹 Async function and method detection
🔹 Parameter analysis
🔹 Decorator analysis
🔹 Import analysis
🔹 Dependency classification
🔹 Direct function call analysis
🔹 AST based complexity scoring
🔹 NumPy project metrics
🔹 SciPy Z Score anomaly detection
🔹 Risk Pattern analysis
🔹 Bytecode disassembly
🔹 SQLite analysis history
🔹 JSON export
🔹 CSV export
🔹 HTML export
🔹 Markdown export
🔹 German interface
🔹 English interface
🔹 Runtime language switching
🔹 GitHub button
🔹 LinkedIn button
🔹 Facebook button
🔹 Detailed About dialog
🔹 Background analysis with QThread
🔹 Cancellation of running analyses
BPREI does not execute the inspected Python project.
- The source code is converted into an Abstract Syntax Tree with
ast.parse()and then evaluated structurally. - This allows project components to be inspected without loading target modules through
import.- The Bytecode view uses
compile()exclusively to create code objects. These code objects are then disassembled with the Python moduledis. The compiled target code is not executed within this function.
- The Bytecode view uses
- Syntax errors in individual files are stored in the analysis information so that the entire project is not automatically discarded because of a single invalid file.
The Project Analyzer inspects every detected Python file and records, among other things:
🔹 relative file path
🔹 absolute file path
🔹 total line count
🔹 code lines
🔹 comment lines
🔹 blank lines
🔹 classes
🔹 functions
🔹 methods
🔹 async functions
🔹 async methods
🔹 parameters
🔹 decorators
🔹 start line
🔹 end line
🔹 parent symbols
🔹 direct function calls
🔹 complexity value
A file or symbol can be selected in the Project Explorer. The corresponding source code is displayed and, for symbols, the view jumps directly to the relevant code position.
Imports are analyzed automatically and assigned to three categories:
🔹 Standard Library
🔹 Internal
🔹 Third Party
For each detected dependency BPREI stores:
🔹 module name
🔹 category
🔹 number of uses
🔹 files containing the dependency
Internal dependencies are identified from the available project structure.
- Python Standard Library modules are classified through
sys.stdlib_module_names.- All remaining detected imports are treated as Third Party dependencies.
BPREI analyzes direct calls inside functions and methods.
- For each call the following information is stored:
🔹 caller symbol
🔹 called target
🔹 file
🔹 source line
This makes it possible to understand which functions and methods are connected within a project.
- Nested function definitions and class definitions are intentionally handled separately during direct call analysis and are not automatically attributed to the outer function body.
BPREI calculates an AST based complexity value for functions and methods.
- The score includes structures such as:
🔹 if
🔹 for
🔹 async for
🔹 while
🔹 conditional expressions
🔹 assert
🔹 comprehensions
🔹 boolean operations
🔹 exception handlers
🔹 try with else
🔹 match cases
Note
The application displays, among other things:
🔹 average complexity
🔹 median
🔹 95th percentile
🔹 standard deviation
🔹 maximum complexity
🔹 statistically unusual symbols
The value is an internal AST based project metric and is not intended as a complete replacement for specialized formal code analysis.
NumPy and SciPy are functional parts of the application.
NumPy is used to process complexity values and calculate the following metrics:
🔹 mean with numpy.mean()
🔹 median with numpy.median()
🔹 95th percentile with numpy.percentile()
🔹 standard deviation with numpy.std()
🔹 maximum with numpy.max()
SciPy is used for statistical anomaly detection.
scipy.stats.zscore()calculates Z Scores for the complexity values of the analyzed functions and methods.
- A symbol is currently included as a statistical anomaly when its Z Score is at least
2.0.- At least three analyzable functions or methods are required for this evaluation.
Risk Pattern analysis searches for selected constructs that may deserve additional attention during manual code review.
Note
Currently detected:
🔹 eval()
🔹 exec()
🔹 compile()
🔹 os.system()
🔹 pickle.load()
🔹 pickle.loads()
🔹 yaml.load()
🔹 tempfile.mktemp()
🔹 calls through subprocess
🔹 shell=True in subprocess calls
🔹 verify=False in recognized HTTP calls
🔹 possible hardcoded secrets
Possible hardcoded secrets include variable names such as:
password, passwd, pwd, secret, token, api_key, apikey, access_token, private_key, client_secret
Stored evidence for detected string secrets is masked.
- Risk analysis is static pattern detection. A finding does not automatically mean that a concrete security vulnerability exists. The code context must still be evaluated.
The Bytecode view uses the Python module
dis.
- The selected source code is compiled with the following properties:
compile(
source,
filename,
"exec",
dont_inherit=True,
optimize=0,
)The main code object and contained child code objects are then recursively disassembled.
- This allows inspection of Python instructions from:
🔹 modules
🔹 functions
🔹 methods
🔹 nested code objects
inspect.
The user interface is based on PySide6 and uses a dark business design.
Note
Available main areas:
- Dashboard
- Project Explorer
- Dependencies
- Function Calls
- Complexity
- Risk Analysis
- Bytecode
- History
The Dashboard presents central project metrics in separate cards.
- The header contains controls for opening a project, starting and cancelling an analysis and exporting results.
- Visually separated Social Media buttons for GitHub, LinkedIn and Facebook follow.
- A second vertical separator separates the Social Media area from Info and language switching.
The application uses centralized localization with complete German and English translation keys.
- Both languages currently contain 102 matching keys.
- Language switching happens directly during runtime.
Note
When switching languages, the following elements are updated, among others:
🔹 navigation
🔹 buttons
🔹 table headers
🔹 Dashboard labels
🔹 symbol types
🔹 dependency categories
🔹 risk descriptions
🔹 status messages
🔹 dialogs
🔹 history
🔹 About dialog
BPREI stores summaries of completed analyses in a local SQLite database.
- Default location inside the user profile:
~/.bprei/bprei_history.sqlite3
Stored information:
🔹 analysis timestamp
🔹 project name
🔹 project path
🔹 file count
🔹 class count
🔹 function count
🔹 method count
🔹 dependency count
🔹 risk finding count
🔹 average complexity
The History view displays up to 100 of the most recently stored analyses by default.
BPREI supports four export formats:
Exports the complete structured
AnalysisResultdata structure.
Exports symbols and risk findings.
- Potentially problematic spreadsheet values starting with
=,+,-,@, tab or carriage return are neutralized before writing.
Creates a standalone HTML report with a dark design, project metrics and risk findings.
Creates a Markdown analysis report with project information, metrics and risk findings.
- CSV, HTML and Markdown use the currently active interface language.
- JSON exports the structured internal data.
Note
The project contains:
start_windows.bat
The script:
- changes to the project directory
- creates its own
.venvwhen required - activates the virtual environment
- upgrades
pip - installs or verifies the packages from
requirements.txt - starts
main.py
This allows the application to be tested in an isolated virtual Python environment.
Start:
start_windows.bat
The project additionally contains:
build_windows.bat
The script:
- creates the
.venvwhen required - activates the virtual environment
- upgrades
pip - installs the project dependencies
- installs PyInstaller
- creates a Windows build without a console window
- collects NumPy and SciPy completely for the build
PyInstaller name used:
BylickiLabs-Python-Reverse-Engineering-Inspector
The output is written to:
dist\
created.
PyInstaller uses the normal directory build here. This means that the executable application is located together with the required runtime components inside the generated application directory.
- This directory can be copied to another storage device, for example a USB drive. On a compatible Windows system the bundled components can then be used directly from this directory without reinstalling the Python packages through
pip.
Because of the Python syntax used in the source code, Python 3.10 or newer is required.
py -m venv .venv.venv\Scripts\activatepython -m pip install --upgrade pip
pip install -r requirements.txtpython main.pyBylickiLabs_Python_Reverse_Engineering_Inspector/
│
├── main.py
├── requirements.txt
├── start_windows.bat
├── build_windows.bat
├── README.md
│
└── src/
├── __init__.py
├── config.py
├── localization.py
├── models.py
│
├── analyzers/
│ ├── __init__.py
│ ├── project_analyzer.py
│ └── bytecode_analyzer.py
│
├── services/
│ ├── __init__.py
│ ├── database.py
│ └── exporter.py
│
└── ui/
├── __init__.py
└── main_window.py
Note
The current requirements.txt contains:
PySide6>=6.8
numpy>=2.0
scipy>=1.13
PyInstaller is additionally installed by
build_windows.batfor the automated Windows build.
- Core technologies:
🔹 Python
🔹 PySide6
🔹 AST
🔹 NumPy
🔹 SciPy
🔹 SQLite
🔹 dis
🔹 PyInstaller for the Windows build
BPREI recursively searches for
.pyand.pywfiles.
- The following directories are currently excluded from project analysis:
.git
.hg
.svn
.idea
.vs
.vscode
__pycache__
.pytest_cache
.mypy_cache
.venv
venv
env
node_modules
build
dist
.tox
This keeps common version control data, development environments, virtual environments, cache data and build output outside the target project analysis.
Current application version:
1.0.0
Application name:
BylickiLabs Python Reverse Engineering Inspector
Short name:
BPREI
Developer:
Thorsten Bylicki / BylickiLabs
The inspected project version contains a syntactically valid Python codebase.
- The German and English localization each contain 102 identical translation keys.
