C/C++知识点之RTSP C++认证实现
小标 2019-01-10 来源 : 阅读 2579 评论 0

摘要:本文主要向大家介绍 C/C++知识点之RTSP C++认证实现了,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍 C/C++知识点之RTSP C++认证实现了,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

C/C++知识点之RTSP C++认证实现

返回的认证报文:

WWW-Authenticate: Digest realm="a4143773bd55", nonce="df9be0ee05ebcb26a4318ea8ba01881b", stale="FALSE"\r\n

在其他的博客中对HTTP进行了认证,指定了其他的一些参数例如md5,auth等参数


int CRtspCommandHandler::HandleUnAuthCommand(char* pszCmdContext, int &nContextLen, const char* pRecvBuffer)

{

std::string strRecvBuf = pRecvBuffer;

std::string strRealm = "realm=\"";

int nRealmLen = strRealm.length();

int nIndexOfRealm = strRecvBuf.find(strRealm, 0);

if (-1 == nIndexOfRealm) return -1;


int nIndexEndOfRealm = strRecvBuf.find("\",", nIndexOfRealm);

if (-1 == nIndexEndOfRealm) return -1;

std::string strRealmValue = strRecvBuf.substr(nIndexOfRealm + nRealmLen, nIndexEndOfRealm - nIndexOfRealm - nRealmLen);


std::string strNonce = "nonce=\"";

int nNonceLen = strNonce.length();

int nIndexOfNonceValueStart = strRecvBuf.find(strNonce, 0);

if (-1 == nIndexOfNonceValueStart) return -1;


int nIndexOfNonceValueEnd = strRecvBuf.find("\",", nIndexOfNonceValueStart);

if (-1 == nIndexOfNonceValueEnd) return -1;

std::string strNonceValue = strRecvBuf.substr(nIndexOfNonceValueStart + nNonceLen, nIndexOfNonceValueEnd - nIndexOfNonceValueStart - nNonceLen);


char* pszAlg = "";

char* pszQop = "";

char* pszNonceCount = NULL;

char* pszCNonce = NULL;


char szNonce[128] = { 0 };

sprintf(szNonce, "%s", strNonceValue.c_str());

char szUserName[128] = { 0 };

sprintf(szUserName, "%s", "admin");

char szRealm[32] = { 0 };

sprintf(szRealm, "%s", strRealmValue.c_str());

char szPassword[32] = { 0 };

sprintf(szPassword, "%s", "admin12345");

char pszMethod[32] = { 0 };

sprintf(pszMethod, "%s", "DESCRIBE");

char pszURI[128] = { 0 };

sprintf(pszURI, "%s", "rtsp://192.168.0.150:554/h264/ch1/main/av_stream");

HASHHEX szHA1;

HASHHEX szHA2 = "";

HASHHEX szResponse;

DigestCalcHA1(pszAlg, szUserName, szRealm, szPassword, szNonce,

pszCNonce, szHA1);

DigestCalcResponse(szHA1, szNonce, pszNonceCount, pszCNonce, pszQop,

pszMethod, pszURI, szHA2, szResponse);

std::string strResponse = szResponse;

boost::asio::streambuf request;

std::ostream request_stream(&request);

request_stream << "DESCRIBE " << pszURI << " RTSP/1.0\r\n";

request_stream << "CSeq: " << "4\r\n";

request_stream << "Accept: " << "application/sdp\r\n";

request_stream << "User-Agent: " << "LibVLC/2.1.5 (Live555 Streaming Media v2014.0)\r\n";

request_stream << "Authorization: Digest username=\"" << "admin" << "\","

<< "realm=\"" << strRealmValue << "\","

<< "nonce=\"" << strNonceValue << "\","

<< "uri=\"" << pszURI << "\","

<< "response=\"" << strResponse << "\"\r\n";

request_stream << "\r\n";


request.sgetn(pszCmdContext, request.size());

nContextLen = strlen(pszCmdContext);

}


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 2 不喜欢 | 0
看完这篇文章有何感觉?已经有2人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved