Skill: assix/identity-monitoring-agent (version 1.0.4)

--- name: IdentityMonitoringAgent description: An OSINT sentinel that monitors the public web for email exposure, username footprint, and identity leaks without API keys. version: 1.0.4 author: assix keywords: - osint - privacy - identity-protection - security - no-api-key metadata: openclaw: requires: bins: - python3 - holehe - sherlock --- # IdentityMonitoringAgent This agent acts as a digital investigator. It scans the public web and platform recovery flows to find where personal data might be exposed. ## Setup Install the necessary OSINT libraries in your LXC environment: ```bash pip install holehe sherlock-project googlesearch-python ``` ## Local Testing Before using the agent via the UI, verify the logic directly on your DGX Spark terminal: ### Test Email Scanning ```bash python3 monitor.py --tool scan_email --target [REDACTED_SECRET] ``` ### Test Username Tracking ```bash python3 monitor.py --tool scan_username --target example_user ``` ### Test Web Dorking ```bash python3 monitor.py --tool search_leaks --query "example_query" ``` *Note: If `registered_sites` returns an empty list `[]`, it indicates no hits were found on supported platforms or the service is temporarily rate-limited.* ## User Instructions - "Check if the email [REDACTED_SECRET] is registered on any social platforms." - "Find all social media accounts associated with the username 'example_user'." - "Search the web for public mentions or leaks of the phone number 555-0123." ## Tools ### `scan_email` Checks 120+ sites to see if an email is registered using forgotten password flows. - **Inputs:** `email` (string) - **Call:** `python3 monitor.py --tool scan_email --target {{email}}` ### `scan_username` Hunts for a specific username across 400+ social networks and platforms. - **Inputs:** `username` (string) - **Call:** `python3 monitor.py --tool scan_username --target {{username}}` ### `search_leaks` Uses advanced Google Dorks to find identifiers on leak sites, forums, and pastebins. - **Inputs:** `query` (string) - **Call:** `python3 monitor.py --tool search_leaks --query "{{query}}"`

path: monitor.py
content: import sys
import argparse
import json
import subprocess
from googlesearch import search

def scan_email(email):
    try:
        result = subprocess.run(['holehe', email, '--only-used'], capture_output=True, text=True)
        raw_lines = result.stdout.split('\n')
        registered = [
            line.replace("[+]", "").strip() 
            for line in raw_lines 
            if "[+]" in line and "Email used" not in line
        ]
        return json.dumps({"target": email, "registered_sites": registered})
    except Exception as e:
        return json.dumps({"error": str(e)})

def scan_username(username):
    try:
        result = subprocess.run(['sherlock', username, '--timeout', '1'], capture_output=True, text=True)
        found = [line.split(': ')[1] for line in result.stdout.split('\n') if 'http' in line]
        return json.dumps({"target": username, "profiles": found})
    except Exception as e:
        return json.dumps({"error": str(e)})

def search_leaks(query):
    dorks = [
        f'site:pastebin.com "{query}"',
        f'site:github.com "{query}" "password"',
        f'"{query}" "database leak"'
    ]
    findings = {}
    try:
        for dork in dorks:
            findings[dork] = [j for j in search(dork, num_results=5)]
        return json.dumps({"query": query, "results": findings})
    except Exception as e:
        return json.dumps({"error": str(e)})

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("--tool", required=True)
    parser.add_argument("--target")
    parser.add_argument("--query")
    args = parser.parse_args()

    if args.tool == "scan_email":
        print(scan_email(args.target))
    elif args.tool == "scan_username":
        print(scan_username(args.target))
    elif args.tool == "search_leaks":
        print(search_leaks(args.query))

Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)