{"id":"dc8641ca-0bfc-42da-b932-cea9bd742da4","slug":"clawhub-freedompixels-security-health-check","name":"Security Health Check","description":"检查邮箱泄露和密码强度，生成安全评分报告。","canonicalUrl":"https://www.xpersona.co/agent/clawhub-freedompixels-security-health-check","sourceUrl":"https://clawhub.ai/freedompixels/security-health-check","homepage":"https://clawhub.ai/freedompixels/skills/security-health-check","source":"CLAWHUB","vendor":{"slug":"clawhub","label":"Clawhub","url":"https://clawhub.ai/freedompixels/skills/security-health-check"},"protocols":["OPENCLEW"],"capabilities":[],"trustScore":null,"trustConfidence":"unknown","artifactCount":0,"benchmarkCount":0,"lastRelease":"2.1.5","freshnessAt":"2026-10-09T21:08:15.245Z","freshnessLabel":"Oct 9, 2026","securityReviewed":true,"openapiReady":false,"stats":[{"label":"Trust score","value":"Unknown"},{"label":"Compatibility","value":"OpenClaw"},{"label":"Freshness","value":"Oct 9, 2026"},{"label":"Vendor","value":"Clawhub"},{"label":"Artifacts","value":"0"},{"label":"Benchmarks","value":"0"},{"label":"Last release","value":"2.1.5"}],"factsPreview":[{"factKey":"vendor","category":"vendor","label":"Vendor","value":"Clawhub","href":"https://clawhub.ai/freedompixels/skills/security-health-check","sourceUrl":"https://clawhub.ai/freedompixels/skills/security-health-check","sourceType":"profile","confidence":"medium","observedAt":"2026-10-09T21:08:15.245Z","isPublic":true},{"factKey":"protocols","category":"compatibility","label":"Protocol compatibility","value":"OpenClaw","href":"https://www.xpersona.co/api/v1/agents/clawhub-freedompixels-security-health-check/contract","sourceUrl":"https://www.xpersona.co/api/v1/agents/clawhub-freedompixels-security-health-check/contract","sourceType":"contract","confidence":"medium","observedAt":"2026-10-09T21:08:15.245Z","isPublic":true},{"factKey":"traction","category":"adoption","label":"Adoption signal","value":"2K downloads","href":"https://clawhub.ai/freedompixels/security-health-check","sourceUrl":"https://clawhub.ai/freedompixels/security-health-check","sourceType":"profile","confidence":"medium","observedAt":"2026-10-09T21:08:15.245Z","isPublic":true},{"factKey":"latest_release","category":"release","label":"Latest release","value":"2.1.5","href":"https://clawhub.ai/freedompixels/security-health-check","sourceUrl":"https://clawhub.ai/freedompixels/security-health-check","sourceType":"release","confidence":"medium","observedAt":"2026-09-20T14:24:15.487Z","isPublic":true},{"factKey":"handshake_status","category":"security","label":"Handshake status","value":"UNKNOWN","href":"https://www.xpersona.co/api/v1/agents/clawhub-freedompixels-security-health-check/trust","sourceUrl":"https://www.xpersona.co/api/v1/agents/clawhub-freedompixels-security-health-check/trust","sourceType":"trust","confidence":"medium","observedAt":null,"isPublic":true}],"highlights":["2K downloads","Trust evidence available"],"agentCard":{"name":"Security Health Check","description":"检查邮箱泄露和密码强度，生成安全评分报告。","source":"CLAWHUB","sourceId":"clawhub:s17cmvaw2cy01v6y6fpq1h7yts84k0r0:security-health-check","homepage":"https://clawhub.ai/freedompixels/skills/security-health-check","repository":"https://clawhub.ai/freedompixels/security-health-check","documentation":"https://www.xpersona.co/agent/clawhub-freedompixels-security-health-check","protocols":["OPENCLEW"],"examples":[{"kind":"example","language":"python","snippet":"import hashlib\nimport requests\n\ndef check_hibp(password: str) -> dict:\n    sha1 = hashlib.sha1(password.encode()).hexdigest().upper()\n    prefix, suffix = sha1[:5], sha1[5:]\n    \n    try:\n        r = requests.get(\n            f\"https://api.pwnedpasswords.com/range/{prefix}\",\n            headers={\"Add-Padding\": \"true\"},\n            timeout=10\n        )\n        r.raise_for_status()\n        hashes = r.text.strip().split(\"\\n\")\n        for h in hashes:\n            h_suffix, count = h.split(\":\")\n            if h_suffix == suffix:\n                return {\"leaked\": True, \"count\": int(count), \"suffix\": suffix}\n        return {\"leaked\": False, \"count\": 0, \"suffix\": suffix}\n    except requests.RequestException as e:\n        return {\"error\": str(e)}"},{"kind":"example","language":"python","snippet":"import math\nimport re\n\ndef analyze_password_strength(password: str) -> dict:\n    if not password:\n        return {\"score\": 0, \"level\": \"empty\", \"entropy_bits\": 0}\n    \n    pool = 0\n    if re.search(r'[a-z]', password): pool += 26\n    if re.search(r'[A-Z]', password): pool += 26\n    if re.search(r'[0-9]', password): pool += 10\n    if re.search(r'[!@#$%^&*(),.?\":{}|<>]', password): pool += 32\n    \n    entropy = math.log2(pool ** len(password)) if pool > 0 else 0\n    \n    # 评分 0-100\n    score = min(100, int(entropy / 80 * 100))\n    \n    if score < 20: level = \"极弱\"\n    elif score < 40: level = \"弱\"\n    elif score < 60: level = \"中等\"\n    elif score < 80: level = \"强\"\n    else: level = \"极强\"\n    \n    # 破解时间估算（假设 10^10 次/秒）\n    seconds_to_crack = (pool ** len(password)) / 2 / 10**10\n    crack_time = format_crack_time(seconds_to_crack)\n    \n    return {\n        \"score\": score,\n        \"level\": level,\n        \"entropy_bits\": round(entropy, 2),\n        \"crack_time\": crack_time,\n        \"pool_size\": pool,\n        \"length\": len(password)\n    }\n\ndef format_crack_time(seconds: float) -> str:\n    if seconds < 1: return \"瞬间\"\n    units = [(\"秒\", 60), (\"分钟\", 60), (\"小时\", 24), (\"天\", 365), (\"年\", 100), (\"世纪\", 1000)]\n    val = seconds\n    for name, div in units:\n        if val < div: return f\"{val:.1f} {name}\"\n        val /= div\n    return f\"{val:.1f} 千年\""}]}}