CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

ics-s7comm

Siemens S7 PLC attack — TCP/102 ISO-TP+S7-COMM, snap7 / python-snap7 enumeration, DB/M/E/A area read+write, PLC stop/start/run, password bypass (S7-300/400 vs S7-1200/1500 differences), CVE chain (e.g., Stuxnet's legacy primitives, CVE-2019-10936).

Quality

79%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Critical

Do not install without reviewing

Fix and improve this skill with Tessl

tessl review fix ./packages/decepticon/decepticon/skills/standard/exploit/ics-ot/s7comm/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

76%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A tight, highly actionable S7 attack runbook with excellent token efficiency and concrete snap7/nmap code for nearly every task area. Its weaknesses are the absence of validation checkpoints around destructive operations (write/read-back verification, pre-stop target confirmation), which caps workflow clarity, and two hint-level sections (CVE PoC, TIA Portal) lacking executable detail.

Suggestions

Add explicit validation checkpoints for destructive operations: after db_write/write_area, re-read the area to confirm the write landed; before plc_stop, verify the target is in-scope (re-run enumeration against the exact IP/rack/slot) as a hard gate.

Make the CVE-2019-10936 section executable: include the crafted COTP/S7 request bytes or a minimal Python socket snippet instead of relying solely on an external PoC repo link that may rot.

Either give the TIA Portal section concrete commands (e.g., mssql client syntax against port 1433, project-file search paths) or move it and the Stuxnet primitives into a separate reference file to keep SKILL.md a lean overview.

DimensionReasoningScore

Conciseness

The body is lean throughout: a two-line protocol fact, compact copy-paste snippets, a dense comparison table, and bullet primitives — no padding, no explanations of concepts Claude already knows. The one explanatory line ('S7 memory areas: DB (data block), M (memory bits), E (input), A (output)...') is domain-specific decoding (German-derived area codes) that earns its tokens. This matches 'Lean and efficient; every token earns its place.'

5 / 5

Actionability

Most sections are executable: the nmap s7-info one-liner, snap7 connect/get_cpu_info, db_read with util.get_bool/get_int/get_real decode and set_real/db_write round-trip, plc_stop/hot_start/cold start, and write_area with the 0x84 area code. Two sections are high-level hints rather than executable guidance — the CVE-2019-10936 section just names a PoC repo ('github.com/Nibblesec/s7-info-leak') without the crafted packet, and the TIA Portal section lists actions ('Steal the project file', 'port 1433 with default sa') without commands. That fits 'Mostly executable guidance; concrete code or commands with minor gaps,' one notch below fully copy-paste-ready coverage.

4 / 5

Workflow Clarity

The sections imply a sensible sequence (discover → read/write → stop/start → auth bypass → advanced primitives → OPSEC), and the OPSEC section does flag destructive risk ('plc_stop() halts whatever the PLC controls... Confirm scope authorization for stop-class testing'). But the destructive/batch cap applies: db_write, write_area, logic tampering, and plc_stop have no validation checkpoints — no read-back verification after writes, no target-confirmation step before stop-class actions, no verify-before-persist loop. Per the guideline that a skill with destructive operations and missing validation cannot score above 3, this is capped at 3 ('Steps listed but validation gaps').

3 / 5

Progressive Disclosure

The body (~105 lines) is a single cohesive runbook with clear per-task sections, and no bundle files exist — there is nothing nested or buried, and the closing References section points one level out to canonical sources (snap7 docs, Wireshark dissector, CISA advisories, Langner). Minor gap: the Stuxnet primitives, CVE detail, and TIA Portal sections are self-contained inline material that could be split into reference files if the skill grows. This lands on 'Good structure; most content is appropriately placed; minor organization gaps' rather than 5, since the under-50-line simple-skill exception does not apply.

4 / 5

Total

16

/

20

Passed

Description

75%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A highly specific, well-scoped description that clearly communicates the 'what' with concrete attack primitives, protocol details, and named CVEs. Its single weakness is the missing explicit 'Use when...' trigger guidance in the description field itself, which caps completeness.

Suggestions

Append an explicit trigger clause to the description, e.g. 'Use when attacking or auditing Siemens S7 PLCs over TCP/102, or when the user mentions S7-300/400/1200/1500, snap7, s7comm, or Stuxnet-style PLC attacks.'

Fold a few of the natural trigger terms currently only in metadata.when_to_use (e.g. 'TIA Portal', 'Step 7') into the description itself so the when-guidance travels with the description.

State the authorized-engagement framing in the description (e.g. 'for authorized pentest/CTF engagements') so the when-clause also scopes legitimate use.

DimensionReasoningScore

Specificity

The description enumerates multiple concrete capabilities — 'snap7 / python-snap7 enumeration', 'DB/M/E/A area read+write', 'PLC stop/start/run', 'password bypass (S7-300/400 vs S7-1200/1500 differences)' — covering the attack surface comprehensively. This matches the anchor 'Lists multiple specific concrete actions; comprehensive coverage'; nothing is vague or padded, and the level-4 anchor ('minor gaps in coverage') understates a list this complete.

5 / 5

Completeness

The 'what' is explicit and detailed (enumeration, read/write, stop/start, password bypass, CVE chain), but the description contains no 'Use when...' clause or equivalent explicit trigger guidance — it only implies when via topic name. Per the judging guidelines this caps completeness at 3: 'Has a clear what but when is missing or only weakly implied.' It cannot score 4 without an explicit when clause, and is clearly above 2 since the what is concrete.

3 / 5

Trigger Term Quality

Strong natural keywords a user would say when needing this skill: 'Siemens S7 PLC', 's7comm', 'snap7', 'S7-300/400', 'S7-1200/1500', 'Stuxnet', 'CVE-2019-10936'. A few natural variations are absent from the description itself — e.g. 'TIA Portal', 'Step 7', 'iso-on-tcp' (they appear only in the separate metadata.when_to_use field) — so it fits 'Good keyword coverage; a few natural terms missing' rather than the comprehensive-synonym anchor.

4 / 5

Distinctiveness Conflict Risk

The niche is unambiguous — Siemens S7 over TCP/102 ISO-TP+S7-COMM with named CVEs and PLC families — so it would rarely trigger for the wrong skill. This matches 'Clear niche with distinct triggers; minimal conflict risk'; the level-4 anchor's 'minor overlap risk' doesn't apply since no sibling skill domain shares these terms.

5 / 5

Total

17

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

Total

15

/

16

Passed

Repository

PurpleAILAB/Decepticon

Path

packages/decepticon/decepticon/skills/standard/exploit/ics-ot/s7comm/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.