log4shell.tools scans text for Log4Shell exploitation attempts — the JNDI lookup payloads attackers fire at vulnerable Apache Log4j 2 instances (CVE-2021-44228). Paste a suspicious request header, a single log line, or a whole log file, and the scanner flags every ${jndi:...} attempt, names the protocol used, and explains the risk.
Crucially, it also catches the obfuscated payloads that bypass naïve grep — tricks like ${${lower:j}ndi:...} and ${${::-j}${::-n}${::-d}i:...} — by safely de-obfuscating Log4j lookups to reveal their intent. This is a detection-only tool: it never resolves a lookup, contacts a host, or executes anything.
What Log4Shell is
CVE-2021-44228 is a critical remote-code-execution flaw in Apache Log4j 2 (versions 2.0-beta9 through 2.14.1). Log4j supported a 'lookup' feature that would resolve ${jndi:ldap://…} strings even when they appeared in logged data — a username, a User-Agent, a chat message. An attacker simply gets the application to log a malicious string; the vulnerable Log4j then reaches out over JNDI/LDAP and loads a remote Java object, executing attacker code. It scored CVSS 10.0 and is one of the most widespread vulnerabilities ever.
Catching obfuscated payloads
Attackers quickly learned to hide the literal word jndi using Log4j's own lookup syntax. ${lower:J} resolves to j; ${::-j} emits the default value j; nesting them spells out jndi without it ever appearing in the raw text. A scanner that only greps for jndi: misses these. This tool resolves those lookup forms first, then matches — so the obfuscated and the plain attempts both light up, with the de-obfuscated form shown next to the original.
What to do if you find a hit
A hit in your logs means someone attempted exploitation — not necessarily that they succeeded. Check whether the affected service ran a vulnerable Log4j version (use the version checker), whether outbound LDAP/RMI was possible from that host, and whether the payload's callback domain was reached. Then patch to Log4j 2.17.1+ and review for post-exploitation activity. Treat confirmed-vulnerable, internet-exposed hits as incidents.