Concluded·9 Jun 2026 · 2 min read
EtherNet/IP and S7comm: capturing tag and DB writes
EtherNet/IP · CIP · cpppo · S7comm · python-snap7 · Docker · tshark
Same method as the Modbus lab, two more protocols. The point is to check whether a modern vendor fieldbus changes the read/write-without-auth result. It does not, so this lab documents the setup and the decodes for both.
Lab setup
Two sims on a dedicated docker network, each a stand-in for a real controller:
- EtherNet/IP (Rockwell family) —
cpppo, a pure-Python CIP/ENIP implementation, serving named tags on TCP 44818:python -m cpppo.server.enip --address 0.0.0.0:44818 MOTOR_CMD=INT SETPOINT=INT LEVEL=INT - S7comm (Siemens family) —
python-snap7Server sharing one data block (DB1) on TCP 102 (security/s7-server.py), seeded soDB1.DBW0 = 4200(42.0 Hz on a Hz x 100 scale).
Capture runs on the network bridge; the client writes come from a peer container.
Rockwell — EtherNet/IP
The CIP client opens a session and writes a tag. RegisterSession is a handshake, not a login — no credential is exchanged.
python -m cpppo.server.enip.client --address enip-plc:44818 SETPOINT=6000 SETPOINT
Siemens — S7comm
The client connects (rack 0, slot 1), reads DB1.DBW0, writes 1500, reads back, restores
(security/s7-write.py). Client output from the run:
BEFORE DB1.DBW0 = 4200 (42.0 Hz)
WROTE DB1.DBW0 = 1500 (15.0 Hz)
AFTER DB1.DBW0 = 1500 (15.0 Hz)
RESTORED DB1.DBW0 = 4200 (42.0 Hz)
The S7comm exchange, decoded:

Same shape, side by side
Both writes reach a control register with no authentication and travel in cleartext. The trust model is identical to Modbus:
Mitigation
CIP Security (Rockwell) and S7 access-protection levels exist and are worth enabling, but they are optional, uneven across a mixed fleet, and off by default. The boundary that holds across every controller, new or legacy, is the network: segment the cell, permit only the writes that must happen, and monitor for the rest.
Harness
The cpppo commands, s7-server.py, s7-write.py, and the enip.pcap / s7.pcap
captures are in the modbus-copilot repo
security/. Isolated lab, own equipment only.
Why this matters, in plain terms: your expensive PLC is just as naked.
Newsletter
New essays, by email.
SCADA, cloud, AI, and the plant floor — a short email when something new is published. No noise, unsubscribe anytime.