mirror of
https://github.com/jorhelp/Ingram.git
synced 2026-10-16 21:20:40 +08:00
2e766ce234
fix(dahua): restore independent requests for DigestAuth snapshot
Ingram-master 新版引入 self.session 持久会话以复用 keep-alive,
但 Dahua 设备 HTTP Server 存在奇葩行为:有 cookie 时忽略
Authorization header。
根因:
verify() 用 self.session.post(RPC2_Login) → session 内部残留 cookie
exploit() 用同一 self.session.get(snapshot, auth=DigestAuth)
→ 大华设备优先看无效 cookie → 忽略 Digest Auth → 401 无快照
修复:
1. 3 个 Dahua RPC2_Login POC 的 verify() 回退为独立 requests.post
2. base._snapshot() 有 auth 时用独立 requests.get,无 auth 保留 session
fix(dahua): restore independent requests for DigestAuth snapshot
Ingram-master introduced self.session to reuse TCP connections via
keep-alive, but Dahua HTTP servers ignore Authorization headers
when a cookie is present.
Root cause:
verify() posts RPC2_Login via self.session → cookie leaks into session
exploit() reuses same session for DigestAuth snapshot request
→ server sees stale cookie → ignores Digest Auth → returns 401
Fix:
1. 3 Dahua RPC2_Login POCs use independent requests.post for verify()
2. base._snapshot() uses independent requests.get when auth is present,
keeps self.session for auth-less requests (preserves keep-alive)