Skip to main content

Linux CLI for administering Rapid SCADA BaseDAT configuration files

Project description

rapidscada-admin

CI PyPI Python License: MIT

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.dat without 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:

  1. Verify schema — required fields (UserID, Enabled, Name, Password, RoleID) must be present
  2. Create backup — timestamped .bak file alongside the original
  3. Write temporary file — changes go to a temp file first
  4. Re-read temporary file — parse the file we just wrote
  5. Validate — check schema, duplicates, integrity
  6. Atomic replaceos.replace() ensures no partial writes
  7. 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:

  1. Fork the repository
  2. Create a feature branch
  3. Add tests for new functionality
  4. Run pytest and ruff check before submitting
  5. Open a pull request

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rapidscada_admin-1.0.0.tar.gz (9.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rapidscada_admin-1.0.0-py3-none-any.whl (4.3 kB view details)

Uploaded Python 3

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

Hashes for rapidscada_admin-1.0.0.tar.gz
Algorithm Hash digest
SHA256 e5e19fad347b60eb1ff5978c8440446bd3f04fe4666fe0b5d20437ff2c472c0e
MD5 90ab8cb951db099d7dad6a7a512b5b86
BLAKE2b-256 7cb3a5cf7bf9f49f4e5caf135fb28805cc24d1b92e10279a56f1ab7ce123d835

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidscada_admin-1.0.0.tar.gz:

Publisher: release.yml on Shadow21AR/rapidscada-admin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidscada_admin-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for rapidscada_admin-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 13ff2e933bffdcefb30040729ab9478463277eb33a0e73af09700f0bbe579b0f
MD5 50b881610105ab647704117be2dab2b1
BLAKE2b-256 f1732500659cff81378f474ddb3df0d8373daca6a2537e4beb058e31fb4f8138

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidscada_admin-1.0.0-py3-none-any.whl:

Publisher: release.yml on Shadow21AR/rapidscada-admin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page