Qt HTTP 摘要认证(海康球机摄像机ISAPI开发)
接到一个需求是开发下海康的球机,控制云台,给到我的是一个开发手册,当然了是海康的私有协议
ISAPI开发手册
https://download.csdn.net/download/qq_37059136/88547425关于开发这块读文档就可以理解了,海康使用的是摘要认证,当然了海康已经给出使用范例

通过libcurl就可以直接连接上海康的球机了.那么是不是就这样了呢,很显然并不是,要是真的就用这种方法怎么能显示出在座的牛逼之处呢,有简单方法我不用,哎,就是玩
关于HTTP的认证方式有很多,应该是4种,basic 跟 Digest 最为常见,别的也不多说了,basic太简单了不提也罢,本文的关键是Digest (摘要)认证
关于Digest 认证,首先了解下这东西的收发流程:
1.你给服务器发送了一条命令 :get也好 put也好随便什么也好
2.服务器给你返回一个401 未认证错误 以及附带给你将要在摘要认证中需要的参数
3.你拿到服务器返回的参数,根据摘要认证规则算出认证响应值在此发送给服务器
rfc7616 规则
https://datatracker.ietf.org/doc/html/rfc7616#section-3.3
4.服务器响应你的操作并返回正确
步骤可参考下图

那么知道流程了,具体该怎么操作呢,我知道你很急但是你先别急,先来看看这四个流程具体发送了社么报文(通过wireshark抓包)
1.首先客户端发送了一条get指令获取

2.客户端返回了一个401错误

这张图的知识点比较多了,主要看下面两个
WWW-Authenticate: Digest qop="auth", realm="IP Camera(AE424)", nonce="353334613a31313564353336613a06002d080ad3bdce5c80d6282269c72b", stale="FALSE"\r\n
<!DOCTYPE html>\r\n
<html><head><title>Document Error: Unauthorized</title></head>\r\n
<body><h2>Access Error: 401 -- Unauthorized</h2>\r\n
<p>Authentication Error</p>\r\n
</body>\r\n
</html>
首先下面的html告诉你本次get失败了,错误原因是Unauthorized(未经授权)
然后再看上面WWW-Authenticate,这段信息量很大
Digest 认证方式:摘要认证
qop="auth" 保护质量 一般为auth/auth-int或缺失
realm="IP Camera(AE424)" 领域
nonce 服务器随机数
stale 是否过期(上述摘要认证参数是否过期)
这几个参数可以在上面的rfc7616 规则里面通过ctrl+f 查找,看看具体怎么定义这几个参数的,下文中还有几个参数也需要在rfc7616规则中查找
3.计算出认证响应值后再次发送
可以看到本次发送的消息头里面添加了上次服务器返回的摘要认证参数,以及最重要的response参数
4.认证成功,服务器应答
好了上面的步骤跟报文都分析结束了,应该可以看出来,第三步发送的参数才是真正的关键点
下面开始讲下如何计算response 参数
首先给出三个公式

那么先来解答几个关键问题
1. 问:公式里面有算法MD5和MD5-sess,那么摘要认证应该用什么算法呢?
答:缺省状态下是MD5,而且现在只支持MD5
2.问:怎么理解上述图表?
答:上述图表给出三个东西,分别是 A1,A2,摘要计算(response 参数)
我们要求摘要计算(response 参数),那么得出公式
response=MD5(<A1>:<nonce>:<nc>:<cnonce>:<qop>:<A2>)
已知公式response,还需要知道A1跟A2
再根据图表
A1=MD5(<user>:<realm>:<password>)
A2=MD5(<request-method>:<uri-directive-value>)
那么很显然,只要我们搞定
<user> 用户名
<realm> 领域
<password> 密码
<request-method> 请求方式(get/put/pust等之一)
<uri-directive-value> uri跳转地址: http://192.168.1.64:80/ISAPI/PTZCtrl/channels/1/continuous 中/ISAPI/PTZCtrl/channels/1/continuous部分就是这里的<uri-directive-value>
<nonce> 服务器随机数
<nc> 客户端计数器 一般为1 十六进制00000001
<cnonce> 客户端随机数
<qop> 保护质量 一般为auth/auth-int或缺失
这几个参数就可以了,当然了还需搞定MD5算法(上述几个参数务必在rfc7616 规则里自行查看含义)
相关文章:
Qt HTTP 摘要认证(海康球机摄像机ISAPI开发)
接到一个需求是开发下海康的球机,控制云台,给到我的是一个开发手册,当然了是海康的私有协议 ISAPI开发手册https://download.csdn.net/download/qq_37059136/88547425关于开发这块读文档就可以理解了,海康使用的是摘要认证,当然了海康已经给出使用范例 通过libcurl就可以直接连…...
srs webrtc推拉流环境搭建(公网)
本地环境搭建 官方代码https://github.com/ossrs/srs 拉取代码: git clone https://github.com/ossrs/srs.gitcd ./configure make ./objs/srs -c conf/https.rtc.confsrs在公网上,由于srs是lite-ice端,导致他不会主动到srs获取自己的公网i…...
【Flutter】设计原则(2)深入解析 SOLID 原则的应用
【Flutter】设计原则(2)深入解析 SOLID 原则的应用 文章目录 一、前言二、SOLID原则三、在 Flutter 中应用单一职责原则1. 专注单一功能的 Widget2. 提高代码可维护性四、在 Flutter 中应用开闭原则1. 利用多态和基类实现可扩展的 Widget2. 增强应用的可扩展性和灵活性五、在…...
python爬虫概述及简单实践:获取豆瓣电影排行榜
目录 前言 Python爬虫概述 简单实践 - 获取豆瓣电影排行榜 1. 分析目标网页 2. 获取页面内容 3. 解析页面 4. 数据存储 5. 使用代理IP 总结 前言 Python爬虫是指通过程序自动化地对互联网上的信息进行抓取和分析的一种技术。Python作为一门易于学习且强大的编程语言&…...
ts视频文件转为mp4(FFmpeg)
有些视频资源下载下来之后发现是.ts的文件,除了用下载它时用的工具或是浏览器才能看,那有没有将ts文件转换成更加通用视频格式的方法。 几乎万能的音视频工具--ffmpeg登场 安装和环境配置可看这篇博客:FFmpeg指令行打开usb摄像头࿰…...
2023年咸阳市《网络建设与运维》赛题解析------四、安全配置
安全配置 说明:IP地址按照题目给定的顺序用“ip/mask”表示,IPv4 any地址用0.0.0.0/0,IPv6 any地址用::/0,禁止用地址条目,否则按零分处理。 1.FW1配置IPv4 nat,实现集团产品1段IPv4访问Internet IPv4,转换ip/mask为200.200.200.16/28,保证每一个源IP产生的所有会话将…...
什么是java枚举?为什么要用java枚举?
什么是java枚举? 原始的接口定义常量 public interface IConstants {String MON "Mon";String TUE "Tue";String WED "Wed";String THU "Thu";String FRI "Fri";String SAT "Sat";String SUN …...
USB复合设备构建CDC+HID鼠标键盘套装
最近需要做一个小工具,要用到USB CDCHID设备。又重新研究了一下USB协议和STM32的USB驱动库,也踩了不少坑,因此把代码修改过程记录一下。 开发环境: ST-LINK v2 STM32H743开发板 PC windows 11 cubeMX v6.9.2 cubeIDE v1.13.2 cub…...
准备篇(四)HTTP 基本原理
URI 和 URLURIURLURI vs URLHTTP 和 HTTPS超文本HTTPHTTP 请求与响应HTTPS你是否想过,在浏览器中敲入 URL 到 获取网页内容 之间发生了什么? 了解这些,有助于进一步了解爬虫的基本原理。 URI 和 URL URI(Uniform Resource Identifier),即统一资源标识符;URL(Universa…...
模板初阶笔记分享
有道云笔记...
使用Spring Boot实现大文件断点续传及文件校验
一、简介 随着互联网的快速发展,大文件的传输成为了互联网应用的重要组成部分。然而,由于网络不稳定等因素的影响,大文件的传输经常会出现中断的情况,这时需要重新传输,导致传输效率低下。 为了解决这个问题ÿ…...
读取PDF中指定数据写入EXCEL文件
使用Java读取文件夹中的PDF文件,再读取文件中的指定的字体内容,然后将内容写入到Excel文件中,其中包含一些正则判断,可以忽略,字体以Corbel字体为例。 所需要的maven依赖为: <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel…...
[黑马程序员SpringBoot2]——开发实用篇1
目录: 手工启动热部署自动启动热部署热部署范围配置关闭热部署功能第三方bean属性绑定松散绑定常用计量单位应用bean属性校验进制数据转换规则加载测试专用属性加载测试专用配置测试类中启动web环境发送虚拟请求匹配响应执行状态匹配响应体匹配响应体(json)匹配响应…...
Python------列表 集合 字典 推导式(本文以 集合为主)
推导式: 推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列 构建 另一个 新的数据序列(一个有规律的列表或控制一个有规律列表)的结构体。 共有三种推导ÿ…...
网工内推 | Linux运维,六险二金,最高30K,IE认证优先
01 上海域起 招聘岗位:Linux运维工程师 职责描述: 1.负责游戏产品运维相关的工作,流程文档、技术文档、功能脚本的编写整理 2.负责分析并排除系统、数据库、网络、应用等游戏产品运维中出现的故障及错误 3.负责对游戏产品项目进行线上部署、…...
服务器集群配置LDAP统一认证高可用集群(配置tsl安全链接)-centos9stream-openldap2.6.2
写在前面 因之前集群为centos6,已经很久没升级了,所以这次配置统一用户认证也是伴随系统升级到centos9时一起做的配套升级。新版的openldap配置大致与老版本比较相似,但有些地方配置还是有变化,另外,铺天盖地的帮助文…...
12-1- GAN -简单网络-线性网络
功能 随机噪声→生成器→MINIST图像。 训练方法 0 损失函数:gan的优化目标是一个对抗损失,是二分类问题,用BCELoss 1 判别器的训练,首先固定生成器参数不变,其次判别器应当将真实图像判别为1,生成图像判别为0 loss=loss(real_out, 1)+loss(fake_out, 0) 2 生成器的…...
Antv/G2 分组柱状图+折线图双轴图表
<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width,heightdevice-height"><title>分组柱状图折线图双轴图表</title><styl…...
springboot323基于Java的美妆购物网站的设计与实现
交流学习: 更多项目: 全网最全的Java成品项目列表 https://docs.qq.com/doc/DUXdsVlhIdVlsemdX 演示 项目功能演示: ————————————————...
vue项目本地开发完成后部署到服务器后报404
vue项目本地开发完成后部署到服务器后报404是什么原因呢? 一、如何部署 前后端分离开发模式下,前后端是独立布署的,前端只需要将最后的构建物上传至目标服务器的web容器指定的静态目录下即可 我们知道vue项目在构建后,是生成一系…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...
