Our Products

Our rigorously-tested protocol libraries provide industry-leading reliability, performance, and security.

Protocol Libraries

Our protocol libraries are written in safe Rust and compile to native code, offering the raw performance of C/C++, but with state-of-the-art memory and thread-safety guarantees.

We provide model-generated bindings for C/C++, .NET Core, and Java.

View The Libraries Learn about Rust
14:02:31.384 aegis> fuzz dnp3 outstation 10.0.0.12:2000014:02:31.544 seed 0x5e1f  model dnp3-2012  cases 5000014:02:31.637 TX 05 64 11 C4 01 00 0A 00 C3 D2                C1 C1 01 3C 02 06 3C 03 06 5A 9E14:02:31.730 RX 05 64 0A 44 0A 00 01 00 8B 2F14:02:31.929 #0412 g12v1 count=0xFF          ok14:02:32.128 #0413 g30v5 qual=0x17 range=0xFFFF14:02:32.221 TX 05 64 18 C4 01 00 0A 00 F1 0714:02:32.339 RX timeout 2000ms14:02:32.432 !! #0413 no response, link reset14:02:32.631 #0414 fir=0 fin=1 seq=15        ok14:02:32.724 TX 05 64 0B C4 01 00 0A 00 2E 6114:02:32.817 RX 05 64 1A 44 0A 00 01 00 9C 44                IIN 82 00  restart14:02:33.016 #0415 g50v1 len=0x0000          ok14:02:33.215 #0416 crc mismatch injected     ok14:02:33.506 !! #0417 count exceeds range14:02:33.599 TX 05 64 14 C4 01 00 0A 00 77 B314:02:33.692 RX 05 64 0A 44 0A 00 01 00 8B 2F14:02:33.891 #0418 g2v2 qual=0x28 idx=0xFFFF ok14:02:34.090 #0419 fragment 2049 bytes       ok14:02:34.144 aegis> fuzz modbus server 10.0.0.31:50214:02:34.555 TX 00 01 00 00 00 FF 01 10 00 00 7F FF14:02:34.899 RX 00 01 00 00 00 03 01 90 0314:02:35.098 #0420 exception 0x03            ok14:02:35.297 !! #0421 connection closed by peer14:02:31.384 aegis> fuzz dnp3 outstation 10.0.0.12:2000014:02:31.544 seed 0x5e1f  model dnp3-2012  cases 5000014:02:31.637 TX 05 64 11 C4 01 00 0A 00 C3 D2                C1 C1 01 3C 02 06 3C 03 06 5A 9E14:02:31.730 RX 05 64 0A 44 0A 00 01 00 8B 2F14:02:31.929 #0412 g12v1 count=0xFF          ok14:02:32.128 #0413 g30v5 qual=0x17 range=0xFFFF14:02:32.221 TX 05 64 18 C4 01 00 0A 00 F1 0714:02:32.339 RX timeout 2000ms14:02:32.432 !! #0413 no response, link reset14:02:32.631 #0414 fir=0 fin=1 seq=15        ok14:02:32.724 TX 05 64 0B C4 01 00 0A 00 2E 6114:02:32.817 RX 05 64 1A 44 0A 00 01 00 9C 44                IIN 82 00  restart14:02:33.016 #0415 g50v1 len=0x0000          ok14:02:33.215 #0416 crc mismatch injected     ok14:02:33.506 !! #0417 count exceeds range14:02:33.599 TX 05 64 14 C4 01 00 0A 00 77 B314:02:33.692 RX 05 64 0A 44 0A 00 01 00 8B 2F14:02:33.891 #0418 g2v2 qual=0x28 idx=0xFFFF ok14:02:34.090 #0419 fragment 2049 bytes       ok14:02:34.144 aegis> fuzz modbus server 10.0.0.31:50214:02:34.555 TX 00 01 00 00 00 FF 01 10 00 00 7F FF14:02:34.899 RX 00 01 00 00 00 03 01 90 0314:02:35.098 #0420 exception 0x03            ok14:02:35.297 !! #0421 connection closed by peer

Smart Fuzzing

Fuzzing is an automated testing technique that subjects software to malformed input. Within the context of protocols, this means having a conversation with a client or server and periodically sending bad messages. Our Aegis fuzzing platform is a smart fuzzer that uses a model of the protocol under test to send intelligently malformed messages. Aegis currently includes modules for testing both the client and server sides of DNP3, IEC 104, and Modbus.

Aegis Fuzzer Learn about Fuzzing
READRESPONSECONFIRM

Conformance Testing

dnp3c is our open source DNP3 conformance project. It runs the outstation tests of the DNP3 IED Certification Procedure unattended in CI, so every commit is checked for conformance. The same tests run from the command line for testing at the bench, and every run writes a report and packet captures anyone can read.

dnp3c Source Code