Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
A Python module to simulate SCADA and RTU communication over protocol 60870-5-104 to research ICT behavior in power grids.
Table of contents
This software provides an object-oriented high-level python module to simulate scada systems and remote terminal units communicating via 60870-5-104 protocol.
The python module c104 combines the use of lib60870-C with state structures and python callback handlers.
Example remote terminal unit
import c104
# server and station preparation
server = c104.Server(ip="0.0.0.0", port=2404)
# add local station and points
station = server.add_station(common_address=47)
measurement_point = station.add_point(io_address=11, type=c104.Type.M_ME_NC_1, report_ms=5000)
command_point = station.add_point(io_address=12, type=c104.Type.C_RC_TA_1)
server.start()
Example scada unit
import c104
client = c104.Client()
# add RTU with station and points
connection = client.add_connection(ip="127.0.0.1", port=2404, init=c104.Init.INTERROGATION)
station = connection.add_station(common_address=47)
measurement_point = station.add_point(io_address=11, type=c104.Type.M_ME_NC_1)
command_point = station.add_point(io_address=12, type=c104.Type.C_RC_TA_1)
client.start()
See examples folder for more detailed examples.
This software is licensed under the GPLv3 (https://www.gnu.org/licenses/gpl-3.0.en.html).
See LICENSE file for the complete license text.
This project is build on top of lib60870-C v2 from MZ Automation GmbH, which is licensed under GPLv3.
The library is used for 60870-5-104 protocol based communication.
This project is build on top of mbedtls from the Mbed TLS Contributors, which is licensed under Apache-2.0.
The library is used to add transport layer security to the 60870-5-104 protocol based communication.
This project is build on top of pybind11 from Wenzel Jakob, which is licensed under a BSD-style license.
The library is used to wrap c++ code into a python module and allow seamless operability between python and c++.
This project is build on top of catch2 from the Catch2 Authors, which is licensed under BSL-1.0.
The library is used as testing framework for test-automation.
Please adjust the version number to the latest version or use a specific version according to your needs.
python3 -m pip install c104
python3 -m pip install c104@git+https://github.com/fraunhofer-fit-dien/iec104-python.git
You need the build requirements, listed under "How to build".
Read more about the Classes and their Properties in our read the docs documentation.
Add feature requests and report bugs using GitHub's issues
Create pull requests
Install dependencies
sudo apt-get install build-essential python3-pip python3-dev python3-dbg
python3 -m pip install --upgrade pip
Clone repository
git clone --depth=1 --branch=main https://github.com/Fraunhofer-FIT-DIEN/iec104-python.git
cd iec104-python
git submodule update --init
Build wheel
python3 -m pip wheel .
/bin/bash ./bin/linux-build.sh
Install dependencies
sudo apt-get install google-perftools valgrind
sudo pip3 install yep
Copy pprof binary
cd /usr/bin
sudo wget https://raw.githubusercontent.com/gperftools/gperftools/master/src/pprof
sudo chmod +x pprof
Execute profiler script
./bin/profiler.sh
Install dependencies
Option 1: Build as wheel
python3 -m pip wheel .
Option 2: Build pyd via Powershell
cmake -DCMAKE_BUILD_TYPE=Release -G "Visual Studio 17 2022" -B cmake-build-release -A x64 -DPython_EXECUTABLE=C:\PATH_TO_PYTHON\python.exe
&"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\MSBuild.exe" /m /p:Platform=x64 /p:Configuration=Release c104.sln /t:Rebuild
Set a valid PATH_TO_PYTHON, if you have multiple python versions.
Set a valid path to MSBuild.exe unless msbuild is already in path.
Build c104 module
Install dependencies
python3 -m pip install -r ./docs/requirements.txt
Build doxygen xml
doxygen Doxyfile
Build sphinx html
python3 bin/build-docs.py
Track all changes in our CHANGELOG documentation.
FAQs
A Python module to simulate SCADA and RTU communication over protocol 60870-5-104 to research ICT behavior in power grids.
We found that c104 demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.