A web-based application for analyzing network data usage statistics from Windows ESE databases. This tool reads data from the System Resource Usage Monitor (SRUDB) database and provides detailed visualizations and summaries of application network usage.
- Data Import: Load network statistics from Windows SRUDB.dat files
- Date Range Filtering: Analyze data for custom time periods
- Summary View: Display total and per-application data usage with unit conversion (bytes, KB, MB, GB)
- Detailed Graphs: Visualize application-specific usage over time with interactive charts
- Multiple Time Intervals: View data aggregated by daily, weekly, monthly, or yearly intervals
- Dark Theme UI: Modern, responsive web interface with ApexCharts visualization
- Python 3.11+
- Windows OS (for SRUDB.dat access)
- Clone or download the repository
- Install dependencies:
pip install -r requirements.txt
or
pip install pandas libesedb-python flaskOr using uv:
uv sync- Start the Application:
python app.pyThe application will be available at http://localhost:5000
-
Prepare Data:
- Copy SRUDB.dat from
C:\Windows\System32\sru\SRUDB.datto a safe location ⚠️ Warning: Always work with a copy to avoid system interference
- Copy SRUDB.dat from
-
Analyze Data:
- Enter the path to your SRUDB.dat copy
- Select a start and end date
- Click "SUBMIT" to view the summary
- Click on any application card to see detailed usage graphs
DataUsageMonitor/
├── app.py # Flask web application entry point
├── oper.py # Core logic and data operations
├── pyproject.toml # Project dependencies and metadata
├── requirements.txt # Python package dependencies
├── templates/ # HTML templates
│ ├── index.html # Main input form
│ ├── table.html # Summary results view
│ └── graph.html # Detailed usage graphs
├── static/ # Static assets
│ └── js/
│ └── apexcharts.js # Chart initialization scripts
└── .gitignore # Git ignore rules
Contains all data processing functions:
string_to_ole_timestamp()- Converts HTML datetime input to OLE timestamp formatint_to_timestamp()- Converts OLE timestamps back to readable datesblob_to_string()- Decodes binary blobs from database (UTF-16 LE/BE, Latin-1)convert_table_to_data()- Extracts network statistics from ESE databaseSruconvert_table_to_data()- Extracts application ID mappings from databasesummarize_app_usage_from_data()- Aggregates usage by applicationgenGraph()- Generates time-series data for chartinggenpoints()- Creates timestamp intervals for data aggregation
Flask application with two main routes:
GET/POST /- Main form and summary table viewGET /details- Detailed per-application usage graphs
- Backend: Flask 3.1.2+
- Data Processing: Pandas 2.3.3+
- Database: libesedb-python (ESE/Jet database support)
- Frontend: HTML5, CSS3, JavaScript
- Charts: ApexCharts
ApexCharts code uses the MIT License (see templates/ApexCharts/license.txt)
- OLE timestamp format represents dates as the number of days since December 30, 1899
- The application requires read access to SRUDB.dat but does not modify it
- Data is stored in memory during the session for quick access


