Linux CLI for administering Rapid SCADA BaseDAT configuration files
Project description
rapidscada-admin
A Linux command-line utility for administering Rapid SCADA v6 BaseDAT configuration files.
What is Rapid SCADA?
Rapid SCADA is an open-source industrial automation and SCADA system. It stores configuration — users, roles, rights, and other tables — in binary BaseDAT (.dat) files. Editing these files normally requires the Windows Administrator application. This tool fills the gap for Linux environments.
Why this tool?
- Automate user management from shell scripts and Ansible playbooks
- Inspect and modify
user.datwithout the Windows GUI - Validate file integrity before and after changes
- Export/import user data as JSON for backup and migration
- No third-party dependencies — pure Python standard library
Supported platforms
- Linux (primary target)
- macOS / Windows (should work, but untested)
Requires Python 3.11+.
Installation
From PyPI
pip install rapidscada-admin
Or with pipx (recommended for CLI tools):
pipx install rapidscada-admin
From source
git clone https://github.com/Shadow21AR/rapidscada-admin.git
cd rapidscada-admin
pip install .
For development:
pip install -e ".[dev]"
Verify installation
rapidscada-admin --version
Usage
Every command takes the .dat file path as a positional argument. No files are hardcoded.
rapidscada-admin <command> <subcommand> <file> [options]
User management
# List all users
rapidscada-admin users list user.dat
# Show one user
rapidscada-admin users show user.dat --user admin
# Add a user
rapidscada-admin users add user.dat \
--name operator \
--password 'S3cur3P@ss!' \
--role 2 \
--description "Shift operator"
# Delete a user
rapidscada-admin users delete user.dat --user operator
# Rename a user
rapidscada-admin users rename user.dat --old-name operator --new-name op2
# Change password
rapidscada-admin users passwd user.dat --user admin --password 'NewP@ssw0rd!'
# Enable / disable account
rapidscada-admin users enable user.dat --user admin
rapidscada-admin users disable user.dat --user admin
Export and import
# Export all users to JSON
rapidscada-admin users export user.dat > users.json
# Import users from JSON
rapidscada-admin users import user.dat --input users.json
Password hashing
Compute a Rapid SCADA password hash without modifying any file:
rapidscada-admin hash --password secret
rapidscada-admin hash --user-id 11 --password scada
Validation
Check a BaseDAT file for corruption, schema errors, and duplicate entries:
rapidscada-admin verify user.dat
Exit code 0 means valid, 1 means errors found.
Safety
Every mutating command follows a 7-step safety protocol:
- Verify schema — required fields (
UserID,Enabled,Name,Password,RoleID) must be present - Create backup — timestamped
.bakfile alongside the original - Write temporary file — changes go to a temp file first
- Re-read temporary file — parse the file we just wrote
- Validate — check schema, duplicates, integrity
- Atomic replace —
os.replace()ensures no partial writes - Report — print the backup location
A malformed .dat file can prevent Rapid SCADA from starting. Always verify before and after operations.
Limitations
- Only supports BaseDAT format version 4.x (Rapid SCADA v6)
- Does not support editing the Windows Administrator application's in-memory state
- Password hashing uses MD5 (matching the Rapid SCADA protocol — not a general security recommendation)
- Does not validate RoleID values against
role.dat(role table is not yet supported)
Contributing
Contributions are welcome. Please:
- Fork the repository
- Create a feature branch
- Add tests for new functionality
- Run
pytestandruff checkbefore submitting - Open a pull request
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rapidscada_admin-1.0.0.tar.gz.
File metadata
- Download URL: rapidscada_admin-1.0.0.tar.gz
- Upload date:
- Size: 9.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e5e19fad347b60eb1ff5978c8440446bd3f04fe4666fe0b5d20437ff2c472c0e
|
|
| MD5 |
90ab8cb951db099d7dad6a7a512b5b86
|
|
| BLAKE2b-256 |
7cb3a5cf7bf9f49f4e5caf135fb28805cc24d1b92e10279a56f1ab7ce123d835
|
Provenance
The following attestation bundles were made for rapidscada_admin-1.0.0.tar.gz:
Publisher:
release.yml on Shadow21AR/rapidscada-admin
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rapidscada_admin-1.0.0.tar.gz -
Subject digest:
e5e19fad347b60eb1ff5978c8440446bd3f04fe4666fe0b5d20437ff2c472c0e - Sigstore transparency entry: 2172884799
- Sigstore integration time:
-
Permalink:
Shadow21AR/rapidscada-admin@7f16015dfcf60a75a12702ac652bf2ad3169a88b -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/Shadow21AR
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7f16015dfcf60a75a12702ac652bf2ad3169a88b -
Trigger Event:
push
-
Statement type:
File details
Details for the file rapidscada_admin-1.0.0-py3-none-any.whl.
File metadata
- Download URL: rapidscada_admin-1.0.0-py3-none-any.whl
- Upload date:
- Size: 4.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13ff2e933bffdcefb30040729ab9478463277eb33a0e73af09700f0bbe579b0f
|
|
| MD5 |
50b881610105ab647704117be2dab2b1
|
|
| BLAKE2b-256 |
f1732500659cff81378f474ddb3df0d8373daca6a2537e4beb058e31fb4f8138
|
Provenance
The following attestation bundles were made for rapidscada_admin-1.0.0-py3-none-any.whl:
Publisher:
release.yml on Shadow21AR/rapidscada-admin
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rapidscada_admin-1.0.0-py3-none-any.whl -
Subject digest:
13ff2e933bffdcefb30040729ab9478463277eb33a0e73af09700f0bbe579b0f - Sigstore transparency entry: 2172884837
- Sigstore integration time:
-
Permalink:
Shadow21AR/rapidscada-admin@7f16015dfcf60a75a12702ac652bf2ad3169a88b -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/Shadow21AR
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7f16015dfcf60a75a12702ac652bf2ad3169a88b -
Trigger Event:
push
-
Statement type: