The Scripter

Scripting

Write the Python Security Work Runs On

Built by working security engineers. You get a function to write and a test suite that runs in your browser — no home lab, no setup, nothing to install.

Guided by The Scripter

What it is

Scripting, defined

Almost every security job comes down to a version of the same task: take messy data and turn it into an answer someone can act on. Parse the log nobody else wants to parse. Turn a JSON export into the spreadsheet a stakeholder asked for. Write the detection rule as code. Collapse ten thousand alerts into the forty that matter. This is that skill, practiced against the input that breaks naive code.

The career

A skill you get hired for

Scripting is the multiplier on every other security skill. It's also the part of the interview loop most candidates underprepare for — the coding screen for security roles is rarely algorithm trivia, and almost always data wrangling under time pressure.

Builds toward

Security Automation Engineer

Typical salary

$140K/yr avg

Market demand

500K+ open US roles

Who you'd work alongside

  • Detection and response engineers
  • SOC analysts automating the work they do twice
  • Security engineers building internal tooling
  • Anyone preparing for a security engineering coding screen

The DefendTheOrg approach

How you'll learn it

Every lab gives you a function signature and says exactly what it must return. You write the body; a test suite runs it and tells you what happened. Python runs in your browser, so there's nothing to install and no environment to stand up:

Work against a real contract

The return shape, the ordering, what happens on empty input, what happens when a field is missing — all specified up front, the way a real ticket or a real interviewer specifies it. Guessing isn't part of the exercise.

Iterate with real feedback

Run as often as you like. You see the expected value, your value, anything you printed, and the traceback if it raised — the same loop you'd have in a terminal, minus the setup.

Survive the input that breaks things

Submitting also runs hidden tests: the malformed record, the empty list, the value that's zero rather than absent, the timestamp exactly on the boundary. They exist to catch the solution that only works on the happy path.

The Scripter

Stuck? Get walked through it.

Every Easy and Medium lab has a walkthrough from The Scripter — one hint at a time, with a chance to try each step yourself before the answer. You get three a week, and using one never touches your score. It teaches the reasoning, not the solution.

3 walkthroughs a weekHint → try → revealNever affects your score

Try it yourself

A taste of the real lab

This is a simplified, no-signup slice of a Scripting lab — make your call and see how it's graded. The real labs go deeper.

Root console login without MFA

Pick the expression that completes the rule.

def detect(events):
    alerts = []
    for e in events:
        ... # ConsoleLogin + Root checks
        mfa = e.get("additionalEventData", {}).get("MFAUsed")
        if ?:
            alerts.append(...)
    return alerts

Tests

MFAUsed is "No"
MFAUsed is "Yes"
Hidden test
Hidden test
Hidden test

Push yourself

Where Hard and Expert labs take you

Every skill scales from your first lab to genuinely hard reasoning. Difficulty isn't a bigger wall — it's deeper thinking.

Hard

Hard labs are stateful — sliding windows, sessions, first-match precedence over data that arrives out of order. The obvious algorithm is usually wrong at the boundaries, and the boundaries are the whole point.

Expert

Expert labs stack two of those problems and assume hostile input: chunked payloads with pieces missing, encodings designed to slip past a naive parser, ambiguity you have to resolve deliberately rather than accidentally.

Start scripting training

Hands-on labs built from real engagement data. Learn by doing — guided by The Scripter.