username-osint
Use when investigating a username across platforms on an authorized investigation. Covers username enumeration, profile correlation, timeline building, and operational security. Also use when attribut
Files1
View on GitHubSKILL.mdskills/osint/username-osint/SKILL.md
GitHubUsernames are reused everywhere: one handle can link a forum, a code repo, and a gaming profile into one person. This skill covers the authorized investigation method: enumerating where a username exists, correlating profiles, and building the timeline. Work within your authorization and the platforms' terms; this is for investigations, not doxxing.
Quick Workflow
- Define the authorization and the question: what are you trying to establish.
- Enumerate platforms: where the exact username (and close variants) exists.
- Collect profiles: bio, links, dates, and connections, with timestamps.
- Correlate: shared emails, avatars, writing style, and time zones across profiles.
- Build the timeline: account creation order and activity patterns.
- Verify: rule out impersonators and name collisions.
- Document every source with capture dates.
- Report confidence per link, not just conclusions.
1. Enumeration
# Username enumeration (sherlock/maigret style tooling, authorized use)
# Check the exact handle and common variants across platforms
python3 - << 'PY'
handle = "target_handle"
variants = [handle, handle + "_", handle + "01", handle.replace("_", "")]
print("check each variant on: github, twitter/x, reddit, telegram,")
print("instagram, tiktok, forums, gaming platforms, code sites")
print("record: exists, profile URL, creation hints, bio, links")
PY
# For each hit, capture the profile consistently:
# - bio text and any linked sites or emails
# - avatar image (hash it for cross platform comparison)
# - follower/following counts and notable connections
# - earliest visible activity
echo "screenshots with timestamps; URLs in the case notes"
2. Correlation
#!/usr/bin/env python3
"""Profile correlator: scores links between two profiles."""
def score(p1, p2):
s = 0
reasons = []
if p1.get("avatar_hash") == p2.get("avatar_hash"):
s += 3; reasons.append("same avatar")
if p1.get("bio_link") == p2.get("bio_link"):
s += 3; reasons.append("same linked site")
if p1.get("email") and p1["email"] == p2.get("email"):
s += 4; reasons.append("same email")
if abs(p1.get("tz_hint", 0) - p2.get("tz_hint", 0)) < 2:
s += 1; reasons.append("similar activity hours")
return s, reasons
print("threshold: 5+ with at least one strong signal before claiming same person")
Edge cases
- Common username with many owners. Disambiguate with the correlation signals; never assume.
- The subject uses different personas deliberately. Note the separation; linking them may be the finding or may be wrong.
- Platform terms restrict automation. Respect rate limits and terms; manual review for the sensitive links.
Escalation
- Criminal investigation: preserve chain of custody and involve counsel before deeper collection.
- Need real identity: OSINT suggests, it does not prove; legal process is the escalation path.
Detection and defender view
For investigators this is attribution; for defenders it is understanding exposure: what employee usernames reveal, and how attackers profile targets. Organizations defend with social media guidance, unique work handles, and monitoring for impersonation. The durable rule for everyone: usernames are identifiers, treat them as public.
Key references
- OSINT collection methodology guides.
- Platform terms of service for automation limits.
See also
osint-username-enumeration: Use it instead for the full enumeration workflow, with Sherlock and Maigret tooling, false-positive killing, and handle-history analysis.ctf-osint-challenges-username-hunting: Use it instead for the competition version, framed around finding a flag from a username or handle.