Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/birkenfeld/ads_forwarder_rs
Forwards and multiplexes Beckhoff ADS connections and scans/mangles NetIDs.
https://github.com/birkenfeld/ads_forwarder_rs
ads rust
Last synced: 2 months ago
JSON representation
Forwards and multiplexes Beckhoff ADS connections and scans/mangles NetIDs.
- Host: GitHub
- URL: https://github.com/birkenfeld/ads_forwarder_rs
- Owner: birkenfeld
- Created: 2018-01-10T10:28:59.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2023-11-20T08:38:12.000Z (about 1 year ago)
- Last Synced: 2024-10-10T16:09:43.298Z (3 months ago)
- Topics: ads, rust
- Language: Rust
- Homepage:
- Size: 240 KB
- Stars: 3
- Watchers: 4
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
ADS forwarder
=============Forwards and multiplexes Beckhoff ADS connections and scans/mangles NetIDs.
What it is good for
-------------------ADS is the protocol Beckhoff PLCs and IPCs use for communication with TwinCAT or
custom control applications.The ADS forwarder is meant to be used in the following two situations:
* Multiple applications want to connect from a single machine to the same PLC.
(Since Beckhoff allows only one TCP connection from each IP, this is only
possible using a router/multiplexer, which this tool provides.)* The ADS target (usually a PLC) is in another network, behind a "gateway"
computer.The forwarder listens to the ADS TCP communication port (48898) on the local
machine and applications can connect there instead of the actual PLC. UDP
messages (on port 48899) are also forwarded.How to build/install
--------------------* Install Rust and Cargo (e.g. via rustup). Version 1.48+ is required.
* Call `cargo build --release` to build.
* The executable is in `target/release/ads_forwarder`.
* The `Makefile` is very simple instructions and simply installs this to
`/usr/bin`.Usage notes
-----------```
USAGE:
ads_forwarder_rs [FLAGS] [target]FLAGS:
-d, --dump Hexdump TCP and UDP packets
-F, --forward Forward connections (only scan otherwise)
-h, --help Prints help information
-p, --print Print ADS headers
-s, --summarize Summarize TCP packets
-U, --udp-only Forward only UDP
-V, --version Prints version information
-v, --verbose Show debug log messagesARGS:
Interface, IP, AMS NetID or hostname to scan (default all interfaces)
```The important option is `-F`: by default the tool only scans for available PLCs.
Without `target`, all interfaces of the system are scanned (using UDP
broadcast). Specify an interface, IP/hostname or NetID to disambiguate.Principle of operation
----------------------In order to achieve its goal, the forwarder does not need a route to itself on
the target PLC; it will set routes on the fly (this currently needs the default
password to be unchanged).For each client that connects to the forwarder, the forwarder invents a unique
NetID and sets a route to itself for this NetID. In this manner, ADS replies
can be distributed to their original requester.