Software Requirements and Installation

This section describes the software dependencies required to install and run NetSim Cyber. These dependencies are required for launching the NetSim Cyber application, running protocol simulators, executing Python-based payload modifiers, and supporting real-time packet interception and attack emulation.

Before using NetSim Cyber, ensure that the required runtime components, Python packages, workspace folders, and administrator permissions are correctly configured. Incorrect dependency versions or missing permissions may prevent the application, protocol simulators, or Threat Agent from working correctly.

NetSim Cyber requires the following software components:

  • NetSim Cyber application

  • Python runtime

  • Required Python modules

  • .NET runtime

  • Administrator privileges

  • NetSim Cyber workspace and PythonUserCode folder

  • Protocol-specific simulator dependencies, if applicable

Requirement Purpose Required For
NetSim Cyber Main application for scenario creation, simulation, and attack emulation All users
Python Runtime Executes Python-based payload modifiers and simulator utilities Payload modification, custom attacks, simulator tools
Python Modules Supports GUI tools, plotting, and simulator interfaces PMU/PDC UI, Modbus GUI, custom tools
.NET Runtime Supports NetSim Cyber application components NetSim Cyber GUI and core services
Administrator Privileges Allows packet capture, routing changes, and traffic injection Real-time traffic handling and attack emulation
Workspace Folder Stores scenario files and user scripts Project-specific simulation and attack logic
PythonUserCode Folder Stores Layer 3, Layer 4, and Layer 5 packet modification scripts Custom and protocol-aware attacks

Software requirement summary

Dependency Summary

NetSim Cyber depends on specific runtime components and supporting libraries. These dependencies must be installed before running protocol-based experiments.

The exact version requirements may vary depending on the NetSim Cyber release. Users should always follow the dependency versions provided with the installed NetSim Cyber version.

Dependency Required Version Installation Scope Used By Symptom if Missing or Incorrect
Python Runtime Python 3.14.x, 64-bit Install for all users Python plugin bridge, payload modifiers, simulator utilities Failed to load UserCodePyPlugin.dll
PySide6 Latest compatible version System-wide Python installation PMU/PDC UI and custom simulator GUIs GUI fails to launch, ImportError
pyqtgraph Latest compatible version System-wide Python installation Plotting and simulator visualization tools Graphs not rendered, ImportError
.NET Runtime Version required by NetSim Cyber installer System-wide NetSim Cyber application Application fails to start
Administrator Privileges Windows administrator access Run-time permission Packet capture, route updates, traffic injection Traffic not intercepted or route changes fail

NetSim Cyber dependency summary

Important: The Python runtime version must match the version expected by NetSim Cyber. Installing a different Python version, or installing Python only for the current user, may prevent the Python plugin bridge from loading correctly.

Python Runtime

NetSim Cyber uses Python for payload modification, custom attack scripts, protocol simulator utilities, and selected user-interface components. The Python runtime must be installed correctly before using these features.

Required Python Version

NetSim Cyber requires the Python version specified for the installed release. For NetSim Cyber v15.1, the required version is:

Python 3.14.x, 64-bit

The Python version must match the version used to build the NetSim Cyber Python plugin bridge. If the installed Python version does not match the expected version, NetSim Cyber may fail to load the Python plugin.

Typical error: Failed to load UserCodePyPlugin.dll

Installation Scope

Python must be installed using the Install for all users option.

This is important because some NetSim Cyber components may run under system-level processes or require access outside the current user profile. A current-user-only Python installation may not be visible to those components.

Mandatory installation path: C:/Program Files/Python314/

Avoid installing on local user: C:/Users/<UserName>/AppData/Local/Programs/Python/

Fresh Python Installation

Use the following procedure to install Python for NetSim Cyber.

  1. Download the required 64-bit Python installer.

  2. Run the installer as Administrator.

  3. On the first installer screen, enable:

    • Install launcher for all users

    • Add Python to PATH

  4. Select Customize installation.

  5. Continue through the optional features screen.

  6. On the advanced options screen, enable:

    • Install for all users

Python Installer: Choose Install Python 3.14 for all users

  • Confirm that the installation path is: C:/Program Files/Python314/

  1. Complete the installation.

  2. Open Command Prompt as Administrator.

  3. Run:

    • python –version

    • Expected output: Python 3.14.x

Existing Python Installation

If Python is already installed on the system, check whether it matches the version required by NetSim Cyber.

Open Command Prompt as Administrator and run: python --version

Then run: where python

The output should point to the system-wide Python installation: C:/Program Files/Python314/python.exe

If the output points to a user profile path or a different Python version, install the required Python version system-wide.

Multiple Python Versions

Some systems may already contain multiple Python installations, such as Python installed by Anaconda, Visual Studio, or another software package. In such cases, ensure that the system PATH resolves to the Python version required by NetSim Cyber.

To check this, run: where python

The first path in the list should correspond to the required Python installation.

Note: If multiple Python versions are installed, NetSim Cyber may load the wrong version if the system PATH is not configured correctly. Ensure that the required Python version appears first in the system PATH.

Python Modules

After installing the required Python runtime, install the Python modules used by NetSim Cyber simulator tools and user interfaces.

Open Command Prompt as Administrator before running the installation commands. This ensures that the packages are installed into the system-wide Python environment.

Installing PySide6

The PySide6 package is required by selected NetSim Cyber simulator GUIs, such as PMU/PDC user interfaces and custom simulator windows.

Install command: pip install PySide6

Verification command: pip show PySide6

Error if missing: ImportError: No module named PySide6

Possible effect:

  • PMU simulator UI may not open.

  • PDC simulator UI may not open.

  • Custom simulator GUI may fail to launch.

Installing pyqtgraph

The pyqtgraph package is required for graphing, plotting, and visual display of simulator outputs.

Install command: pip install pyqtgraph

Verification command: pip show pyqtgraph

Error if missing: ImportError: No module named pyqtgraph

Possible effect:

  • Graphs may not render.

  • Simulator measurement plots may not open.

  • Modbus or other protocol visualization tools may fail.

Installing Modules Using the Correct Python

If multiple Python versions are installed, use the full Python path to ensure packages are installed into the correct environment.

Example:

"C:/Program Files/Python314/python.exe" -m pip install PySide6

"C:/Program Files/Python314/python.exe" -m pip install pyqtgraph

Python Module Used By Install Command Verification Command
PySide6 PMU/PDC UI, custom simulator GUI pip install PySide6 pip show PySide6
pyqtgraph Plotting and visualization tools pip install pyqtgraph pip show pyqtgraph

Python module requirements

.NET Runtime

NetSim Cyber requires the .NET Runtime version specified for the installed release. The .NET Runtime supports application-level components used by the NetSim Cyber GUI and core services.

For NetSim Cyber v15.1, use the .NET Runtime version provided or required by the NetSim Cyber installer.

In most installations, this dependency is handled automatically by the NetSim Cyber installer. Users normally do not need to install .NET separately unless the application fails to start or the installer specifically requests it.

Verifying .NET Runtime Installation

Open Command Prompt and run: dotnet --list-runtimes

The installed .NET runtime versions will be displayed.

If the required runtime is missing, install the required version and restart the system before launching NetSim Cyber again.

Symptoms of Missing .NET Runtime

If the required .NET Runtime is missing or corrupted, the following symptoms may occur:

  • NetSim Cyber application does not start.

  • Application window closes immediately after launch.

  • Windows displays a missing runtime message.

  • NetSim Cyber service or GUI components fail to initialize.

Note: The required .NET Runtime should be verified against the NetSim Cyber release notes or installer package. Do not replace it with a different runtime version unless specified by TETCOS support or the installation guide.

Administrator Privileges

NetSim Cyber must be run with administrator privileges for packet capture, route updates, traffic forwarding, and packet injection to work correctly.

Administrator access is required for operations such as:

  • Capturing live packets from network interfaces.

  • Injecting or forwarding modified packets.

  • Updating route tables.

  • Running NetSimCyberClient.exe.

  • Enabling or modifying network forwarding behavior.

  • Accessing system-wide Python and runtime components.

  • Opening restricted protocol ports.

Running NetSim Cyber as Administrator

To run NetSim Cyber as Administrator:

  1. Right-click the NetSim Cyber shortcut.

  2. Select Run as administrator.

  3. Accept the User Account Control prompt.

Configuring NetSim Cyber to Always Run as Administrator

To avoid repeating this step every time:

  1. Right-click the NetSim Cyber shortcut.

  2. Select Properties.

  3. Open the Compatibility tab.

  4. Enable Run this program as an administrator.

  5. Click Apply.

  6. Click OK.

If the option should apply to all users:

  1. Click Change settings for all users.

  2. Enable Run this program as an administrator.

  3. Click Apply.

  4. Click OK.

Running NetSim Cyber Client as Administrator

NetSimCyberClient.exe should also be run as Administrator on source and destination systems when automatic route configuration is used.

To launch it:

  1. Right-click NetSimCyberClient.exe.

  2. Select Run as administrator.

  3. Confirm that it connects to the NetSim Cyber system.

Important: If NetSim Cyber or NetSimCyberClient.exe is not run as Administrator, traffic may not be routed through the Threat Agent, and attacks may not be applied even if the simulation appears to run.

Verification and Troubleshooting

After installing the required software components, verify the environment before running any attack scenario.

Installation Verification Checklist

Use the following checklist before starting NetSim Cyber experiments.

Check Command / Action Expected Result
Verify Python version python --version Required Python version is displayed
Verify Python path where python Path points to system-wide Python installation
Verify PySide6 pip show PySide6 Package details are displayed
Verify pyqtgraph pip show pyqtgraph Package details are displayed
Verify .NET Runtime dotnet --list-runtimes Required runtime is listed
Verify administrator mode Launch NetSim Cyber as Administrator No permission-related startup errors
Verify workspace creation Open or create a workspace Workspace folder is created successfully
Verify PythonUserCode folder Check workspace contents L3, L4, and L5 modifier folders are present

Installation verification checklist

Workspace and PythonUserCode Folder Verification

NetSim Cyber uses a workspace folder to store scenario-specific files, topology information, and user-defined packet modification scripts. A typical workspace contains a PythonUserCode folder. This folder includes subfolders for different layers of packet modification.

Folder Entry-Point Function Layer Purpose
L3-ipv4-packet-modifier modify_ipv4_header() Layer 3 Modify IPv4 header fields
L4-tcp-packet-modifier modify_tcp_header() Layer 4 Modify TCP header fields
L5-payload-modifier modify_payload() Layer 5 Modify application-layer payload

PythonUserCode folder structure

The L5-payload-modifier folder contains protocol-specific and custom payload modifier files.

File Description
payload_modifier_modbus.pyd Pre-built Modbus TCP attack logic
payload_modifier_dnp3.pyd Pre-built DNP3 attack logic
payload_modifier_goose_sv.pyd Pre-built IEC 61850 GOOSE / Sampled Values attack logic
payload_modifier_synchrophasor_2011.pyd Pre-built IEEE C37.118-2011 Synchrophasor attack logic
payload_modifier_synchrophasor_2005.pyd Pre-built IEEE C37.118-2005 Synchrophasor attack logic
payload_modifier_custom.py Editable template for custom protocol attack logic

Layer 5 payload modifier files

Important: The .pyd files are compiled binaries and should not be edited. To create a custom attack, edit payload_modifier_custom.py in the workspace folder.

Administrator Permission Issues

If NetSim Cyber is not run with administrator privileges, the following issues may occur:

  • Route table updates fail.

  • Traffic does not pass through NetSim Cyber.

  • Packets are not captured.

  • Packets are not injected.

  • NetSimCyberClient.exe does not configure routes.

  • The Threat Agent does not receive matching traffic.

Solution:

  1. Close NetSim Cyber.

  2. Relaunch NetSim Cyber as Administrator.

  3. Relaunch NetSimCyberClient.exe as Administrator on source and destination systems.

  4. Recheck routing and traffic flow.

Troubleshooting Summary

Problem Likely Cause Recommended Action
Failed to load UserCodePyPlugin.dll Wrong Python version or user-only Python installation Install required 64-bit Python for all users
Simulator GUI does not open Missing PySide6 Run pip install PySide6
Graphs do not display Missing pyqtgraph Run pip install pyqtgraph
NetSim Cyber does not start Missing or incorrect .NET Runtime Verify using dotnet --list-runtimes
Packets are not intercepted NetSim Cyber not run as Administrator or wrong route configuration Relaunch as Administrator and verify routes
Attack does not affect destination Traffic filter mismatch or wrong protocol selected Check source, destination, port, and attack protocol
Client does not connect to gateway Firewall or discovery port blocked Allow required ports and run client as Administrator
Python command opens wrong version Multiple Python versions in PATH Update system PATH or use full Python path

Common installation and runtime issues

Workspace and PythonUserCode Folder

Workspace

On first launch, NetSim Cyber prompts the user to create a default Workspace. A Workspace is a folder under:

It holds the network topology, simulation configuration, and the PythonUserCode scripts for that scenario. Additional workspaces can be created at any time from the Your Work tab in the NetSim Cyber interface by clicking the book icon to open the list of workspaces.

From the list of workspaces, click the book icon with the plus (+) sign, enter a workspace name, and click Create to create a new workspace.

PythonUserCode Folder

Each Workspace contains a PythonUserCode folder with three sub-folders, one for each layer of the network stack where packet-level attack logic can be applied:

Folder Entry-point Function Layer
L3-ipv4-packet-modifier/ modify_ipv4_header() IPv4 header fields
L4-tcp-packet-modifier/ modify_tcp_header() TCP header fields
L5-payload-modifier/ modify_payload() Application-layer payload bytes

The scripts in these folders are copied from the NetSim Cyber installation directory when the Workspace is created, so each Workspace starts with a clean set of templates. NetSim loads the scripts from the Workspace at simulation start and calls the entry-point function once for every packet passing through the attacker node.

L5-payload-modifier in Detail

The L5-payload-modifier folder includes pre-built compiled modules for common industrial protocols and an editable template for custom protocols:

File Description
payload_modifier_modbus.pyd Pre-built Modbus attack logic.
payload_modifier_dnp3.pyd Pre-built DNP3 attack logic.
payload_modifier_goose_sv.pyd Pre-built IEC 61850 GOOSE / Sampled Values attack logic.
payload_modifier_synchrophasor_2011.pyd Pre-built IEEE C37.118-2011 Synchrophasor attack logic.
payload_modifier_synchrophasor_2005.pyd Pre-built IEEE C37.118-2005 Synchrophasor attack logic.
payload_modifier_custom.py Blank template for any custom protocol attack.

Note: To write a custom attack, edit payload_modifier_custom.py inside the Workspace's PythonUserCode/L5-payload-modifier/ folder. The .pyd files are compiled binaries and should not be modified.

.NET Runtime

Required Version

NetSim Cyber v15.1 requires .NET Runtime 10.0.3.

Note: This dependency is automatically handled during NetSim installation. Users do not need to install .NET separately.

Run as Administrator by Default

NetSim Cyber 15.1 must be run with administrator privileges for features such as traffic simulation and packet injection to work correctly. Follow the steps below to configure this once so it applies automatically on every launch.

Right-click the NetSim Cyber 15.1.x64 shortcut or executable and select Properties.

Go to the Compatibility tab.

Under Settings, check Run this program as an administrator.

Click Apply, then OK.

Note: Use Change settings for all users at the bottom of the dialog to apply this setting for all users on the machine.