
Panthera(P.)uncia - Subdomain Center और Exploit Observer के लिए आधिकारिक CLI उपयोगिता।
Puncia दो A.R.P. Syndicate इंटेलिजेंस API के लिए आधिकारिक कमांड-लाइन क्लाइंट है — इसे किसी डोमेन, ब्रांड, या भेद्यता ID पर इंगित करें और सेकंडों में संरचित JSON प्राप्त करें, ब्राउज़र की आवश्यकता नहीं:
$ puncia subdomain arpsyndicate.io
╭──────────────────────────────────────────────────────────────────────╮
│ Panthera(P.)uncia v0.38 │
│ subdomain recon · brand impersonation · exploit intel · sbom analysis│
│ A.R.P. Syndicate — https://www.arpsyndicate.io │
╰──────────────────────────────────────────────────────────────────────╯
[
"advisories.arpsyndicate.io",
"asm.arpsyndicate.io",
"blog.arpsyndicate.io",
...
]
$ puncia sbom bom.json ./out
puncia ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% (128/128) 0:00:41
कृपया ध्यान दें कि हालांकि ये परिणाम कभी-कभी काफी गलत और अविश्वसनीय हो सकते हैं, उनकी स्व-सुधार क्षमताओं के कारण ये समय-समय पर काफी भिन्न हो सकते हैं।
आक्रामक रेट-लिमिट को API कुंजी के साथ टाला जा सकता है: https://www.arpsyndicate.io/pricing.html
pip3 install punciapip3 install .pip3 install puncia
# subdomain footprint of a target (shadow IT / attack surface / takeover recon)
puncia subdomain example.com
# lookalike / typosquat / brand-impersonation domains
puncia replica example.com
# what's known about a CVE
puncia exploit CVE-2021-44228
puncia <mode> <query> [output] [--match M] [--domain D] [--limit N] [--offset N]
[--crawl] [--api-key K] [--concurrency N]
[--timeout S] [--retries N] [--quiet]
पूर्ण संदर्भ के लिए puncia --help चलाएं। परिणाम stdout पर प्रिंट होते हैं; बैनर, प्रगति बार, चेतावनियां और त्रुटियां सभी stderr पर जाती हैं, इसलिए puncia subdomain example.com > out.json हमेशा साफ, वैध JSON देता है।
एग्ज़िट कोड: 0 सफलता · 1 अनुरोध या इनपुट त्रुटि · 2 उपयोग त्रुटि।
(PAID) API कुंजी संग्रहीत करें (storekey) - puncia storekey <api-key>
~/.puncia पर 0600 अनुमतियों के साथ संग्रहीत। $PUNCIA_API_KEY इसे ओवरराइड करता है, जो आमतौर पर CI में आप जो चाहते हैं।(FREEMIUM) डोमेन क्वेरी करें, डोमेन द्वारा क्लस्टर (subdomain / cuttlefish इंजन) - puncia subdomain <domain> <output-file>
subdomain/replica/keyword हर पेज को वॉक करते हैं और आपके लिए उन्हें मर्ज करते हैं। बजाय इसके स्वयं ठीक एक कच्चा पेज प्राप्त करने के लिए --offset पास करें (--limit के साथ या बिना), उदाहरण के लिए एक फिर से शुरू करने योग्य या स्ट्रीमिंग वॉक के लिए:
puncia subdomain bigco.com --limit 50000 --offset 0
# stderr prints: note: more results available — continue with --offset 50000
puncia subdomain bigco.com --limit 50000 --offset 50000
import asyncio
import puncia
async def main():
# Without an API key (ratelimited)
print(await puncia.query_api("exploit", "CVE-2021-3450"))
print(await puncia.query_api("subdomain", "arpsyndicate.io"))
# With an API key
await puncia.store_key("ARPS-xxxxxxxxxx")
api_key = await puncia.read_key()
print(await puncia.query_api("subdomain", "arpsyndicate.io", apikey=api_key))
print(await puncia.query_api("replica", "arpsyndicate.io", match="exact", apikey=api_key))
print(await puncia.query_api("enrich", "CVE-2021-3450", apikey=api_key))
print(await puncia.query_api("noncve", "exploitable", apikey=api_key))
# Static endpoints (unauthenticated, unlimited)
print(await puncia.query_api("subdomain", "^HEALTH"))
print(await puncia.query_api("exploit", "^STATS"))
# Live crawl, with the outcome surfaced via a callback
await puncia.query_api(
"subdomain", "bigco.com", apikey=api_key, crawl=True,
on_crawl=lambda h: print("crawl status:", h.get("X-Crawl-Status")),
)
# Write straight to disk
await puncia.query_api("subdomain", "arpsyndicate.io", "out.json", apikey=api_key)
asyncio.run(main())
विफलताएं puncia.PunciaError उठाती हैं; एक खाली परिणाम ({} / []) जैसा है वैसा ही लौटाया जाता है बजाय इसके कि इसे त्रुटि माना जाए। कई क्वेरी में एक सत्र का पुन: उपयोग करें session= और एक साझा limiter= पास करके, ठीक वैसे ही जैसे process_bulk() करता है।
from puncia import PunciaError, query_api
try:
data = await query_api("exploit", "CVE-2021-3450", apikey=api_key)
except PunciaError as exc:
print(f"lookup failed: {exc}")
git clone https://github.com/ARPSyndicate/puncia && cd puncia
pip install --upgrade pip # editable installs need pip >= 21.3
pip install -e ".[dev]"
pytest # 42 offline tests, no API calls or network access
टेस्ट सूट पूरी तरह से ऑफ़लाइन है — यह URL निर्माण, आउटपुट-पथ कंटेनमेंट, SBOM पार्सिंग, बल्क प्लानिंग और रेटलिमिटर टाइमिंग को नेटवर्क को छुए बिना कवर करता है, इसलिए इसे किसी भी वातावरण में चलाना सुरक्षित है।
--limit--offset--crawl संग्रहीत परिणामों को एक लाइव डिस्कवरी पास के साथ पूरक करता है। किसी दिए गए डोमेन को वास्तव में केवल हर ~6 घंटे में एक बार फिर से क्रॉल किया जाता है — उस विंडो के भीतर के अनुरोध तुरंत कैश्ड क्रॉल परिणाम प्राप्त करते हैं। Puncia stderr पर परिणाम की रिपोर्ट करता है:
crawl: fresh, 12 newly discovered name(s) (साथ ही partial / cooldown / disabled)।
puncia subdomain bigco.com --crawl
(FREEMIUM) रेप्लिका डोमेन क्वेरी करें, ब्रांड द्वारा क्लस्टर (replica / octopus इंजन) - puncia replica <domain> --match <prefix|exact|substring> <output-file>
(FREEMIUM) कीवर्ड द्वारा क्वेरी करें, कीवर्ड द्वारा क्लस्टर (keyword / ammonites इंजन) - puncia keyword <keyword> --match <exact|prefix> <output-file>
--domain के साथ एक डोमेन तक सीमित करें:
puncia keyword blog --domain bandcamp.comएक्सप्लॉइट और भेद्यता आइडेंटिफायर क्वेरी करें (exploit)
puncia exploit ^WATCHLIST_IDES <output-file>puncia exploit ^WATCHLIST_INFO <output-file>puncia exploit ^WATCHLIST_TECH <output-file>puncia exploit ^STATS <output-file>puncia exploit ^HEALTH <output-file>puncia exploit <eoidentifier> --match <substring|prefix|exact> <output-file>(FREEMIUM) CVE/GHSA आइडेंटिफायर समृद्ध करें (enrich) - puncia enrich <cve-id/ghsa-id> <output-file>
enrich=true केवल CVE-/GHSA- आइडेंटिफायर के लिए प्रभावी होता है; यह पूर्ण अपस्ट्रीम एडवाइज़री रिकॉर्ड को EPSS + VEDAS स्कोरिंग के साथ मर्ज करता है।(PAID) VEDAS समूह द्वारा गैर-CVE आइडेंटिफायर (noncve) - puncia noncve <browser/china/russia/europe/exploitable> <output-file>
(FREE) Subdomain Center सेवा स्वास्थ्य (^HEALTH) - puncia subdomain ^HEALTH <output-file>
एकाधिक क्वेरी (bulk/sbom)
puncia bulk <json-file> <output-directory>
{
"subdomain": [
"domainA.com",
"domainB.com"
],
"replica": [
"domainA.com",
"domainB.com"
],
"keyword": [
"keywordA",
"keywordB"
],
"exploit": [
"eoidentifierA",
"eoidentifierB"
],
"enrich": [
"eoidentifierA",
"eoidentifierB"
]
}
puncia sbom <json-file> <output-directory>बल्क और SBOM रन क्वेरी को डी-डुप्लिकेट करते हैं, समानांतरता को --concurrency (डिफ़ॉल्ट 10) पर सीमित करते हैं, और — जब कोई API कुंजी मौजूद नहीं होती — तो स्वचालित रूप से फ्री-टियर बजट के भीतर रहने के लिए अनुरोधों की गति नियंत्रित करते हैं।
(FREEMIUM) बाहरी आयात