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.
