Skip to content
Limited Edition DevTools

IPs-LE

Find every IP address, CIDR block and MAC address in a tree, normalized and classified.

FreeOpen sourceMITNo network access

The command-line tool and its MCP server are written and tested. The VS Code extension is not written yet, so there is nothing to install from the Marketplace or Open VSX — those links appear here when it ships rather than before.

No editor in the loop? ips-le mcp runs the same engine as an MCP server, so an agent can call extract_ips over stdio, with no editor and no Node, and cargo install ips-le puts the same check in a terminal. Every way to install it.

ips-le network.yaml
network.yaml:1:7  0.0.0.0  0.0.0.0  reserved
network.yaml:2:11  2001:0db8:0000:0000:0000:0000:0000:0001  2001:db8::1  documentation
network.yaml:3:11  169.254.169.254  169.254.169.254  link-local
network.yaml:5:5  10.0.0.0/8  10.0.0.0/8  private
network.yaml:6:5  192.168.0.0/16  192.168.0.0/16  private
network.yaml:7:8  010.1.1.1  refused OctalHazard
network.yaml:8:16  10.20.30.40  10.20.30.40  private
6 addresses in 1 file
1 refused
exit 0
A real run against a service config with binds, an allow-list and a connection string. The summary above is what a person reads; the same findings go to stdout as JSON, which is what a script reads.

What IPs-LE does

A regex over dotted quads finds no IPv6 at all, calls 1.2.3 an address, and reports 2001:0db8::0001 and 2001:db8::1 as two different things when they are one. IPs-LE finds every IP address, CIDR block and MAC address in a tree, normalizes IPv6 per RFC 5952, and says what each one is: loopback, private, link-local, cgnat, multicast, broadcast, reserved, documentation, unique-local or global. The scan runs over the bytes of every file, so an address inside a connection string or a rotated log is found too. It never resolves a name, never geolocates and never opens a socket.

What people use it for

Audit an allow-list

Filter to private and loopback and see what a config makes reachable that the change request never mentioned.

Surface an SSRF bypass

A leading-zero octet is octal to some resolvers and decimal to others, so 010.1.1.1 is refused by name rather than resolved to either.

Make a diff stop lying

Four spellings of one IPv6 address sort as four entries in raw text and as one after normalization.

Install IPs-LE

Command lineComing soon

cargo install ips-le

Not on crates.io yet — v0.1.0 builds from the repository today, and this command starts working the day it publishes. Follow the repository.

VS CodeComing soon

ext install nolindnaidoo.ips-le

The extension is not written yet, so this id resolves to nothing on the Marketplace. It is the id it will take. Follow the repository.

Cursor / VSCodiumComing soon

cursor --install-extension OffensiveEdge.ips-le

Same again for the forks, which resolve Open VSX rather than the Marketplace. Follow the repository.

Zed

ips-le mcp

Works in Zed today — add the command above as a custom MCP server from the agent panel, and extract_ips appears in its tool list. There is no one-click listing in Zed's extension registry yet.

AI agents

ips-le mcp

Runs IPs-LE's engine as an MCP server over stdio, so an agent can call extract_ips with no editor and no Node. The binary is the server — there is nothing else to install.

Where it ships

One engine, 6 places to get it. The ids differ by registry — copy the one for the editor you use.

Where IPs-LE lives

The other 15

Extract string values from JSON, YAML, CSV, TOML, INI, and .env — for i18n.

Extract numeric values from JSON, YAML, CSV, TOML, INI, and .env.

Pull every file path out of JS/TS imports, JSON, HTML, CSS, TOML, CSV, and .env files.

Extract and analyze colors from CSS, SCSS, LESS, Stylus, HTML, JS/TS, and SVG.

Extract URLs from documentation, configs, and code.

Extract date and time data from logs, configs, and code.

Extract every quantity with its unit, normalised to one base unit so two configs can be compared.

Find every UUID, ULID, NanoID, ObjectId and Snowflake, and decode the time inside it.

Find, test, and validate the regular expressions in any file — match reports and built-in ReDoS screening.

Check whether a page is actually scrapeable before you burn hours debugging.

Find where the same dependency is constrained differently across a repository’s manifests.

Audit translation catalogues for missing keys, placeholder drift and structural mismatches.

Detect and sanitize credentials, tokens, API keys, and private keys locally — before you commit.

Spot missing keys across your .env files — automatic checks, a status bar counter, and a markdown report.

Find the Unicode that hides meaning — Trojan Source controls, invisibles, homoglyphs, mixed scripts.