解析美拍视频视频地址

Sinsyth| 阅读:152 发表时间:2018-11-16 13:06:11 技术干货

测试采集美拍的数据时无意中发现美拍的视频地址是一段加了混淆字符串的base64代码。如下图

微信截图_20181116125835

于是好奇之下研究了下解密算法

通过解密代码可以发现视频地址字符串是base64加密的,只不过在其中插入了一些混淆字符。只要清除混淆字符即可通过base64解密得到视频地址

首先说说加密的原理:

1、先用base64对视频地址进行加密。

2、在视频地址前面加上一个4位字符串,字符串要满足以下条件:

①必须是四位16进制的字符串。

②字符串的10进制必须也是一个四位整数。(这个四位整数很重要,用来确定随机字符串的插入位置和个数的)

③插入加密地址前的是四位16进制的字符串的倒序。

3、通过开头加上的4位字符串确定随机字符串以及插入的位置。(前后相应位置都加上一段随机字符串)


看着原理是不是一头大?不用急,现在慢慢来解析一下:

现在用图上的字符串来说明一下解密的过程,然后就能反推加密原理:


base64混淆加密后的地址:19d0aHRHp4Y0cDovL212dmlkZW8xMC5tZWl0dWRhdGEuY29tLzViNTM1ZDFkNmQyYW

YyMjE1Lm1wND9rPTY5YzkzYjViNTFhMWIwYjZiOGU2ZWM1ODQ1MDNiZWJiJnQ9NWJmM7ELjQxNjk=


①首先前面4位16进制的字符串为19d0,因为是倒序添加的,所以实际上为0d91。

②0d91对应的10进制为3473。

③通过3473推算,前面添加的随机字符串位置为第3个字符开始,添加4个随机字符串;后台添加的随机字符串位置为倒数第7个添加3个随机字符串。

得出上面的混淆加密的随机字符为(用*号替代):(要去除前四位 )

aHR****0cDovL212dmlkZW8xMC5tZWl0dWRhdGEuY29tLzViNTM1ZDFkNmQyYWYyMjE1Lm1wND9rPTY5YzkzYj

ViNTFhMWIwYjZiOGU2ZWM1ODQ1MDNiZWJiJnQ9NWJmM***jQxNjk=


去掉*号的内容即为真实的base64加密地址:

aHR0cDovL212dmlkZW8xMC5tZWl0dWRhdGEuY29tLzViNTM1ZDFkNmQyYWYyMjE1Lm1wND9rPTY5Yz

kzYjViNTFhMWIwYjZiOGU2ZWM1ODQ1MDNiZWJiJnQ9NWJmMjQxNjk=

然后就可以通过普通的base64解密方法来解密视频地址了。

-----------------------------------------

附赠PHP解析代码:

微信截图_20181116125342

/**
 * 获取美拍视频真实链接
 * https://www.sinsyth.com
 * V1.2.0
 */
function trueurl($oiurl){
	$str=substr($oiurl,0,4);
	$oiurl = substr($oiurl,4);
	$nums = hexdec(strrev($str));
	$nmkk = str_split($nums);
	$oilen = strlen($oiurl);
	$truebse=substr($oiurl,0,$nmkk[0]).
	substr($oiurl,$nmkk[0]+$nmkk[1],$oilen-$nmkk[0]-$nmkk[1]-$nmkk[2]-$nmkk[3]).
	substr($oiurl,-$nmkk[2]);
	return base64_decode($truebse);
}


*文章为网络作者独立观点,不代表Sinsyth的立场
本文由Sinsyth Online发表并编辑,转载此文章须经作者同意,并请附上出处及本页链接。如有侵权,请联系本站删除。