MCPcopy Create free account
hub / github.com/CScorza/IntelOSINT / _scan_tls_chain

Method _scan_tls_chain

IntelOSINT.py:12127–12192  ·  view source on GitHub ↗
(self, domain)

Source from the content-addressed store, hash-verified

12125 return out
12126
12127 def _scan_tls_chain(self, domain):
12128 out = {}
12129 if not domain:
12130 return out
12131 try:
12132 r = requests.get(
12133 f"https://api.ssllabs.com/api/v3/analyze?host={urllib.parse.quote(domain)}&fromCache=on&all=done",
12134 timeout=12,
12135 headers={"User-Agent": "Mozilla/5.0"}
12136 )
12137 if r.status_code != 200:
12138 out["TLS Chain"] = f"SSLLabs HTTP {r.status_code}"
12139 return out
12140 data = self._safe_response_json(r)
12141 if not isinstance(data, dict):
12142 out["TLS Chain"] = "Dati SSLLabs non validi"
12143 return out
12144 if data.get("status") and data.get("status") not in ("READY", "READY",):
12145 out["TLS Scan Stato"] = str(data.get("status"))
12146 return out
12147 endpoints = data.get("endpoints") or []
12148 if not endpoints:
12149 out["TLS Scan Stato"] = "Nessun endpoint disponibile"
12150 return out
12151
12152 ep = endpoints[0]
12153 ep_url = ep.get("ipAddress") or ""
12154 if ep_url:
12155 out["TLS Scan Endpoint"] = str(ep_url)
12156 details = ep.get("details") or {}
12157 cert = details.get("cert") or {}
12158 if cert:
12159 if cert.get("subject"):
12160 subj = ", ".join([f"{k[0]}={k[1]}" for k in cert.get("subject", [])]) if isinstance(cert.get("subject"), list) else str(cert.get("subject"))
12161 out["TLS SSL Labs Subject"] = subj
12162 if cert.get("issuer"):
12163 iss = ", ".join([f"{k[0]}={k[1]}" for k in cert.get("issuer", [])]) if isinstance(cert.get("issuer"), list) else str(cert.get("issuer"))
12164 out["TLS SSL Labs Issuer"] = iss
12165 if cert.get("notAfter"):
12166 out["TLS SSL Labs Valid To"] = str(cert.get("notAfter"))
12167 if cert.get("notBefore"):
12168 out["TLS SSL Labs Valid From"] = str(cert.get("notBefore"))
12169 if cert.get("sha1Fingerprint"):
12170 out["TLS SSL Labs SHA1"] = str(cert.get("sha1Fingerprint"))
12171 if cert.get("sha256Fingerprint"):
12172 out["TLS SSL Labs SHA256"] = str(cert.get("sha256Fingerprint"))
12173
12174 chain = details.get("chain") or []
12175 chain_items = []
12176 for idx, c in enumerate(chain[:8], start=1):
12177 if not isinstance(c, dict):
12178 continue
12179 name = c.get("label") or f"Cert {idx}"
12180 issuer = c.get("issuer") or {}
12181 if isinstance(issuer, dict):
12182 issuer_name = issuer.get("O") or issuer.get("CN") or ""
12183 else:
12184 issuer_name = str(issuer)

Callers 1

Calls 1

_safe_response_jsonMethod · 0.95

Tested by

no test coverage detected