本篇文章给大家谈谈discuz穷举,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、100分求解,uchome的cookie里的uchome_auth是怎么生成的?
- 2、如何优化 Python 爬虫的速度
- 3、网站被挂马了怎么办
1、100分求解,uchome的cookie里的uchome_auth是怎么生成的?
AuthCode Function Code[php]
//定义默认函数初始值
//$string="admin";初始化$srting变量数值在
//$keyc中调用
function authcode($string='admin', $operation = 'DECODE', $key = '', $expiry = 0) {
$ckey_length = 4; // 随机密钥长度 取值 0-32;
// 加入随机密钥,可以令密文无任何规律,
//即便是原文和密钥完全相同,加密结果也会每次不同,增大破解难度。
// 取值越大,密文变动规律越大,密文变化 = //16 的 $ckey_length 次方
// 当此值为 0 时,则不产生随机密钥
$Mykey = md5(UC_KEY); //对UC_KEY进行一次md5加密
echo "\$Mykey -- $Mykey "; //输出
//$Mykey==c647d451bb5792d9cc1693a672380641
$key="";//定义key为empty
$key = md5($key ? $key : UC_KEY); //使用三原操作符,如果$key为
//空则对UC_KEY进行md5加密 否则对$key加密结果为$Mykey
echo "\$key -- $key ";//输出$key==c647d451bb5792d9cc1693a672380641
$key="abcdefghijklmnopqrstuvwsyz "; //定义$key=abcdefghijklmnopqrstuvwsyz 测试$keya结果
$keya = md5(substr($key, 0, 16));//用substr对$key进行截取得到从第一个到第16个字符
echo "\$keya is $keya ";//输出$keya=abcdefghijklmnop
$key="abcdefghijklmnopqrstuvwsyz123456";//定义$key
$keyb =md5(substr($key, 16, 16));//通过substr对$key进行截取
//截取方法为从第16位开始 向后截取到第32位结束
echo "\$keyb $keyb ";//
//$keyc 使用的2层的三原操作符,理解如下$keyc = $ckey_length 的时候
//返回($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length))
//否则返回empty
//上面的理解为$operation == 'DECODE';时候用substr截取$string变量的值,
//截取大小为从第0个到第$ckey_length个默认$ckey_length为4$keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';echo "\$keyc is $keyc ";
//输出按照我们初始的测试$keyc为admi$cryptkey = $keya.md5($keya.$keyc);//这个我估计不用说了
//就是单纯的字符串拼接和md5之后再拼接
echo "\$cryptkey is $cryptkey";$key_length = strlen($cryptkey);//计算$cryptkey的长度本例为64
echo "\$key_length is $key_length ";//base64_decode对encoded_data 进行解码,返回原始数据,
//失败则返回 FALSE。返回的数据可能是二进制的
$string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string; $string_length = strlen($string);
echo "\$satring is $string_length ";
$result = '';//range() 返回数组中从 low 到 high 的单元,包括它们本身。
如果 low high,
//则序列将从 high 到 low。//根据cuh的设置,说的白话一点就是生成一个0到255的纯数字数组
$box = range(0, 255);
echo "\$box is $box[1] ";
$rndkey = array(); //$i 输出0到255个整数
for($i = 0; $i = 255; $i++) { //ord()函数返回一个字符的askii码值;
//$rndkey[$i]根据$i /$key_length的余数然后用ord处理
//$cryptkey[$i % $key_length]返回$cryptkey
数组里的键值$i=2返回第二位
//$rndkey[$i]从数组的第$i位开始返回$rndkey[$i]的值
$rndkey[$i] = ord($cryptkey[$i % $key_length]); //echo "\$rndkey[$i] is $rndkey[2] "; }
for($j = $i = 0; $i 256; $i++) {
//$j是三个数相加与256取余
$j = ($j + $box[$i] + $rndkey[$i]) % 256;
$tmp = $box[$i];
$box[$i] = $box[$j];
$box[$j] = $tmp; //echo "\$j is $j "; }//如果$i小于设定的随机密钥长度则$i加1
for($a = $j = $i = 0; $i $string_length; $i++) {
//在上面基础上再加1 然后和256取余
$a = ($a + 1) % 256;
$j = ($j + $box[$a]) % 256;//$j加$box[$a]的值 再和256取余
$tmp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $tmp; // ^ 位运算符允许对整型数中指定的位进行置位。
//如果左右参数都是字符串,则位运算符将操作字符的 ASCII 值
//chr 返回相对应于 ascii 所指定的单个字符 。
//也就是说根据chr函数里生成的数的ascii来指定要输出的字符
$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256])); }//这么多吧!后边的我把函数给大家 就是算法的反复重用了,
//还调用了时间函数。//base64_encode() returns 使用 base64 对 data 进行编码。
//设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,
//例如电子邮件的主体。 //str_replace() 函数使用一个字符串替换字符串中的另一些字符。
/*str_replace(find,replace,string,count)find 规定要查找的值。
*replace 规定替换 find 中的值的值。
*0string 规定被搜索的字符串。
*count 一个变量,对替换数进行计数。
*/
if($operation == 'DECODE') {
if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() 0) substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
return substr($result, 26);
} else { return ''; }
} else { return $keyc.str_replace('=', '', base64_encode($result)); }
}echo authcode();
[/php]
authcode函数是照抄discuz的。
有不懂得可以来理下思绪,核心是RC4算法的扩展(Discuz加了对密钥$key的特殊处理),用异或实现加解密的双向转化,用base64_encode进行加解密,RC4算法是用3次循环来生成一个全随机但有内在规律的密码本。
$key(传入密钥)分三段:
$keya 参与加密运算,$key的前16位
$keyb 是校验数据完整性,17位开始的16位,$key的后16位
$keyc 是当前时间戳微秒数的后4位(加密时)也参与解密运算,并附加在最终返回结果的前面,所以解密时是先取消前4位。
程序逻辑的真实密钥是$keya.md5($keya.$keyc) (长度48)
RC4的三个核心循环:
循环一,生成一个256位的半随机有规律的数字,48位为一个循环,一共5.5个循环(256除以48)。
前16位固定,而后32位根据时间戳微秒数随机(和真实密钥相关,因为后32位为当前微秒数后四位)
为初始密码本
循环二,在上面基础的上,把48一个循环和前16位固定值打乱,生成一个全随即但有内在规律的真实密码本
循环三,异或置换出对应的密文或者明文
在这个过程中的关键是$key的值,没有传入密钥,你即便知道算法也无法破解(穷举除外。。。)
就好像一个门没钥匙一样,而authcode实现的正是这种类似钥匙可锁可开的效果。
2、如何优化 Python 爬虫的速度
从以下的五个方面去进行优化测试:
1、cpu瓶颈的话可以通过分布式的方式来解决 更多的结点去处理分发的任务就好了
2、本地带宽的瓶颈通过云服务器解决(一般都有100MB的方案提供) 定时定量的去购买使用可以节约成本(毕竟不是搜索引擎不会一直开着的)
3、目标服务器的带宽限制(基于IP的)通过跨区的服务器解决 云服务器提供商有多个机房的 分散节点所在的机房可以缓解问题 有提供动态ip的就更好了
4、目标服务器的访问限制,老渔哥提示搜一下反爬虫策略就差不多了解了 根据自己的编程能力来应对 给两个库投石问路 SeleniumPhantomJS 对于验证码相关的可以考虑购买服务(有外包的, 最高级别是人肉的一定可以搞定, 量要考虑一下价格不菲)真的不建议自己搞。
目标网站系统比较知名的话(discuz)可以网上搜搜 足够简单的话可以用opencv(有python绑定的版本而且跨平台) thredshold(二值化)处理颜色, eroded/dilate(腐蚀膨胀)处理噪点, findContours(查找轮廓)处理字符分割,穷举旋转和简单扭曲再匹配字库差不多就可以处理2010以前的简单二维码了(当然cpu开销还是很大的)
5、目标服务器的带宽上限限制 这么做的话你的爬虫就成了攻击了不讨论----以下内容常规的爬虫可能不会涉
3、网站被挂马了怎么办
网络中,总有那么一些网络流氓出于见不得人的目的给别人以打击,比如将别人的网站挂马、加上暗链等,挂马对于一个网站来说是非常严重的事情,网站管理员最好每天都打理一下自己的网站不管用的是服务器还是虚拟主机,都要看看自己的网站打开有没有什么异常。而一旦挂马就必须马上清楚恶意代码,否则轻则网站收录量减少,重则被k。 网站挂马了怎么办: 1.修改帐号密码 不管是商业或不是,初始密码多半都是admin。因此你接到网站程序第一件事情就是“修改帐号密码”。帐号密码就不要在使用以前你习惯的,换点特别的。尽量将字母数字及符号一起。此外密码最好超过15位。尚若你使用SQL的话应该使用特别点的帐号密码,不要在使用什么什么admin之类,否则很容易被入侵。 2.创建一个robots.txt Robots能够有效的防范利用搜索引擎窃取信息的骇客。 3.修改后台文件 第一步:修改后台里的验证文件的名称。 第二步:修改conn.asp,防止非法下载,也可对数据库加密后在修改conn.asp。 第三步:修改ACESS数据库名称,越复杂越好,可以的话将数据所在目录的换一下。 4.限制登陆后台IP 此方法是最有效的,每位虚拟主机用户应该都有个功能。你的IP不固定的话就麻烦点每次改一下咯,安全第一嘛。 5.自定义404页面及自定义传送ASP错误信息 404能够让骇客批量查找你的后台一些重要文件及检查网页是否存在注入漏洞。 ASP错误嘛,可能会向不明来意者传送对方想要的信息。 6.慎重选择网站程序 注意一下网站程序是否本身存在漏洞,好坏你我心里该有把秤。 7.谨慎上传漏洞 据悉,上传漏洞往往是最简单也是最严重的,能够让黑客或骇客们轻松控制你的网站。 可以禁止上传或着限制上传的文件类型。不懂的话可以找你的网站程序提供商。 8. cookie 保护 登陆时尽量不要去访问其他站点,以防止 cookie 泄密。切记退出时要点退出再关闭所有浏览器。 9.目录权限 请管理员设置好一些重要的目录权限,防止非正常的访问。如不要给上传目录执行脚本权限及不要给非上传目录给于写入权。 10.自我测试 如今在网上黑客工具一箩筐,不防找一些来测试下你的网站是否OK。 11.例行维护 a.定期备份数据。最好每日备份一次,下载了备份文件后应该及时删除主机上的备份文件。 b.定期更改数据库的名字及管理员帐密。 c.借WEB或FTP管理,查看所有目录体积,最后修改时间以及文件数,检查是文件是否有异常,以及查看是否有异常的账号。 网站被挂马一般都是网站程序存在漏洞或者服务器安全性能不达标被不法黑客入侵攻击而挂马的。 查看源文件与首页相关的CSS和JS文件。 这一招是最基础,最老土,但是最实用的一招了。查看首页代码多数人都明白。但是很多人并不在意CSS文件和JS文件。熟不知现在这两种挂马方式正在大行其道。 经常有站长反应自己的网站报病毒,但是首页里面并没有马。其实如果你细心一点看看,木马多数时间都隐藏在CSS和JS文件里面。定期修改ftp的用户与密码。 这个我想不用多解释了吧,这也是个习惯问题。现在的网站系统漏洞不多了。想入侵系统难,但是想爆出个FTP密码来相信不少人还是能作到的。奉劝那些用纯数字作密码的站长兄弟们修改一下自己的密码,因为现在新出的纯数字密码穷举器,九位的密码能在两个小时内破出来。 有很多网站,特别是ZF机关类网站多数情况下很少更新,而这些机关部门人员,如果你告诉他如何去查看源代码,估计那也是一件很难的事情。但是如果你让他看一下“文件创建时间”“文件修改时间”,这个他们应该会。如果经常几个月不更新网站,而“文件创建时间”“文件修改时间”就在这几天的话,那就很说明有问题了。 比较重要的文件,比如模版文件,CSS文件,JS文件最好都看一下。经常升级一下自己的CMS系统。 现在正里八经的网站一般都是用比较成熟的CMS系统作的,比如DISCUZ、DEDECMS、PHPCMS、PHPWIND之类的。这些系统在进后台之后一般都有新版本升级的提示。 这些提示最好是看一下。有的时候都是一些漏洞升级。必要的话经常升级一下。 再一个就是常用CMS系统的后台目录一定要修改。千万不要小看这一点,用一个inurl命令可以在百度或者GG里面搜索出N多后台目录来.程序设置定时重新生成一下首页。 一般网站被黑,多数人会选择与直接写入首页。但是正规CMS都是用生台模板来生成网站首页的。如果设置每天某个时间定时重新生成一次的话。即使被黑,被挂马了。也会自动被系统覆盖掉的。异地备份整站或者数据库 经常跟你的主机空间商联系一下。有的时候整个服务器出了漏洞。 网站挂马预防措施: 1、建议用户通过ftp来上传、维护网页,尽量不安装asp的上传程序。 2、对asp上传程序的调用一定要进行身份认证,并只允许信任的人使用上传程序。这其中包括各种新闻发布、商城及论坛程序,只要可以上传文件的asp都要进行身份认证! 3、asp程序管理员的用户名和密码要有一定复杂性,不能过于简单,还要注意定期更换。 4、到正规网站下载asp程序,下载后要对其数据库名称和存放路径进行修改,数据库文件名称也要有一定复杂性。 5、要尽量保持程序是最新版本。 6、不要在网页上加注后台管理程序登陆页面的链接。 7、为防止程序有未知漏洞,可以在维护后删除后台管理程序的登陆页面,下次维护时再通过ftp上传即可。 8、要时常备份数据库等重要文件。 9、日常要多维护,并注意空间中是否有来历不明的asp文件。记住:一分汗水,换一分安全! 10、一旦发现被入侵,除非自己能识别出所有木马文件,否则要删除所有文件。
关于discuz穷举和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。