National Cyber Warfare Foundation (NCWF)

Photon for fast OSINT crawling and attack surface inventory


0 user ratings
2026-09-19 21:30:04
milo
Red Team (CNA)
"Photon

Photon is a high-speed Python crawler built for OSINT, enumerating URLs, parameters, emails, subdomains, and exposed secrets from a target during authorized reconnaissance.








Tools0md3v/Photon — fast OSINT-focused web crawler written in Python, GPL-3.0 licensed, ~13.2k stars
CategoryWeb crawler / OSINT reconnaissance
Primary UseMapping a target's external footprint — URLs, parameterized endpoints, JavaScript files, subdomains, emails, and exposed keys — during scoped assessments
Safe UseRun only against systems you own or have written authorization to test; ideal for bug bounty scopes, internal asset inventories, and defensive exposure audits of your own domains
Telemetry NotePhoton generates measurable HTTP traffic patterns against the target; rate limiting via its --delay option reduces footprint, and WAF/CDN logs will show rapid sequential crawling from the operator's egress IP

Photon, hosted at s0md3v/Photon, is one of the more widely adopted open-source crawlers in the OSINT corner of GitHub, and its 13,000-plus star count reflects how often reconnaissance workflows reach for it. Written in Python and released under GPL-3.0, it positions itself as an “incredibly fast crawler designed for OSINT,” which is a fair summary of what it actually delivers: broad, automated extraction of externally visible information from a web application, organized into structured output you can feed into later phases of an assessment. The project's topic tags — crawler, osint, information-gathering, spider — accurately frame its niche as a reconnaissance utility rather than an exploitation tool.


What Photon extracts is the core of its value proposition. During a crawl it collects in-scope and out-of-scope URLs, parameterized endpoints of the form example.com/gallery.php?id=2, emails and social media accounts, files such as pdf, png, and xml, authentication and API keys with hashes, JavaScript files along with the endpoints referenced inside them, and subdomains with related DNS data. There is also a custom regex option, letting an operator define arbitrary string patterns to match during the crawl. The breadth here is deliberate: each of these categories maps to a classic reconnaissance deliverable, from attack-surface mapping to credential-exposure triage.


Architecturally, the README describes smart thread management and what the author calls refined logic as the source of Photon's speed. Crawling is inherently resource-intensive, and the tool's mitigation is twofold: configurable operational parameters — timeout, delay, seeds, and regex-based URL exclusions — that let you constrain how aggressively it works, and a --wayback plugin that pulls historical URLs from archive.org to use as seed input. The Wayback trick is genuinely clever for authorized work: it surfaces endpoints that existed in the past but may no longer be linked, which is exactly the kind of forgotten functionality that assessors and asset owners alike should be reviewing.


The plugin system is small but telling. Beyond wayback, the README lists a dnsdumpster integration for dumping DNS-related data and an Exporter plugin that formats results as json. The contribution section asks for more plugins and additional “APIs” for what the author calls ninja mode, which suggests the architecture exposes extension points rather than hardcoding every data source. For a team building an internal reconnaissance pipeline, the json export path matters most: it means Photon output can be ingested into tooling downstream without screen-scraping or ad-hoc parsing.


Deployment is straightforward and container-friendly. The README documents a lightweight Python-Alpine Docker image of roughly 103 MB, built locally from the repository, with results accessible either through the Docker volume or by mounting the loot directory directly. The second invocation pattern in the documentation mounts the current working directory into the container's per-target output folder, which keeps results organized by domain. For consultants working from disposable assessment VMs, this containerized workflow is a reasonable hygiene practice: the crawler runs in an isolated environment and its output stays in a predictable location.


One point worth flagging for anyone reading the repository: the README in its current state contains some stray, clearly unintended text — fragments about tab-key focus and file attachment that belong to a web editor, plus a third-party advertising link unrelated to the project. This looks like accidental paste damage or repository noise rather than anything malicious, but it is a useful reminder of the trust boundary around README content generally. Evaluate the code and the wiki, not just the marketing prose on the repository front page, before running any tool against real infrastructure.


From a defensive standpoint, Photon is as interesting read as it is to run. Nearly everything it collects — exposed emails, orphaned JavaScript endpoints, leaked API keys, historical URLs from archive.org — is information a blue team can enumerate about its own organization first. Running Photon against your own public domains on a schedule is a legitimate exposure audit: if it returns a hardcoded auth token in a script or a storage bucket reference that should have been rotated, you have found a problem before someone else does. The tool is effectively a free, continuous attack-surface inventory generator when pointed inward.


Operationally, the controls the README advertises are what make Photon usable in professional engagements. Scope discipline comes from the seed and exclusion options — you can constrain the crawler to authorized paths and skip anything matching an out-of-scope pattern. The timeout and delay options let you throttle request rates so that a crawl against a fragile staging environment or a rate-limiting WAF does not degrade the target. These are the same knobs any polite, authorized crawler should expose, and their presence signals that the tool was built with scoped use in mind rather than indiscriminate scraping.


Update handling is a small but practical detail: Photon supports a --update flag with what the README calls seamless updates, preserving saved data across upgrades. Given how fast reconnaissance tooling rots as sites and APIs change shape, self-updating capability reduces the chance an operator runs stale extraction logic that misses newly common patterns. The project's development board and wiki — covering usage, compatibility and dependencies, and a “Photon Library” section — round out the documentation to a level where a new user can get productive quickly.


Where Photon fits in a broader workflow is best understood as the front of the funnel. It does not test anything; it enumerates. The parameterized URLs it collects feed fuzzers and manual review, the JavaScript endpoints feed API mapping exercises, the subdomain and DNS data feeds scope expansion discussions with the client, and the secret-key findings feed incident-response-style rotation decisions. Teams that try to use it as anything more than a collector will be disappointed, but teams that pipe its json output into a tracker or ticketing system get a repeatable reconnaissance artifact with an audit trail.


The licensing is worth a moment of attention for commercial consultancies: GPL-3.0 means that if you build derivative tooling on top of Photon's code and distribute it, source disclosure obligations apply. Using the tool as-is internally for client work is unproblematic, but embedding or modifying it into a proprietary product requires legal review. This is common in the Python security-tooling ecosystem, and Photon is no exception to it.


In sum, Photon earns its popularity by doing one thing — fast, structured, comprehensive crawling for OSINT purposes — and doing it with enough configurability and output discipline to slot into professional practice. For authorized assessments, bug bounty scoping, and defensive self-audits of publicly exposed web assets, it remains one of the more practical reconnaissance utilities in the Python security toolchain, provided operators respect scope, throttle appropriately, and treat its findings as the beginning of analysis rather than the end of it.



Official project repository for s0md3v/Photon.

Download Tool

Educational analysis for authorized security professionals. Use only in controlled, authorized environments.






Source: OffensiveSec
Source Link: https://www.offsecblog.com/2026/09/photon-for-fast-osint-crawling-and.html


Comments
new comment
Nobody has commented yet. Will you be the first?
 
Forum
Red Team (CNA)



Copyright 2012 through 2026 - National Cyber Warfare Foundation - All rights reserved worldwide.