页面里嵌进去的两段脚本,应该是用来生成验证码,然后提取图片地址的,想问一下这两段是啥意思,如果可以的话翻译成c语言最好了。很乱,不好意思。先谢过了。 <script>
charid = "70695";
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('8 0=9();3(0==7){2("6!");4.5()}b 3(0.a<1){2("6!");4.5()}',12,12,'array_img||alert|if|this|close|参数错误|null|var|desMe|length|else'.split('|'),0,{}))
</script>
<script type="text/javascript">
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('7(5!=t){3=i.v[\'k\'];7(!3){3=i.k}7(h(6,0)>5.g-1){6=(5.g-1).s()}3.B.D=6;3.f.b="../../w/z.y";x("A");7(h(6,0)<5.g-2){d e=E(5[6],5[h(6,0)+1]);3.f.b=e[0];3.C.b=e[1]}n{3.f.b=u(5[6])}}9 U(){7(4.c==V){T()}n 7(4.c==R){S()}}j();9 j(){8.l=9(){4.q=r;d a=4.Y.X.W();p(a=="Q"||a=="I"||a=="J")};8.m=9(){4.q=r;d o=4.c;p!(o==H&&4.F)};G(8.i){K=O=P=8.l;N=8.m};L("j()",M)}',61,61,'|||theForm|event|array_img|page|if|window|function|sSrcTagName|src|keyCode|var|array|pic|length|parseInt|document|stt|form1|ClearEvent|ClearKey|else|iKeyCode|return|cancelBubble|false|toString|null|uncMe|forms|image|setView|gif|loading|oDv|Sx|nxpic|value|uncMeTwo|ctrlKey|with|78|input|select|oncontextmenu|setTimeout|500|onkeydown|onselectstart|ondragstart|textarea|16|p_onclick|nc_onclick|pressup|32|toLowerCase|tagName|srcElement'.split('|'),0,{}))
</script>这是原地址。
http://www.dm5.com/Comic/MH70/Comics-70695_fed36b63.htm
charid = "70695";
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('8 0=9();3(0==7){2("6!");4.5()}b 3(0.a<1){2("6!");4.5()}',12,12,'array_img||alert|if|this|close|参数错误|null|var|desMe|length|else'.split('|'),0,{}))
</script>
<script type="text/javascript">
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('7(5!=t){3=i.v[\'k\'];7(!3){3=i.k}7(h(6,0)>5.g-1){6=(5.g-1).s()}3.B.D=6;3.f.b="../../w/z.y";x("A");7(h(6,0)<5.g-2){d e=E(5[6],5[h(6,0)+1]);3.f.b=e[0];3.C.b=e[1]}n{3.f.b=u(5[6])}}9 U(){7(4.c==V){T()}n 7(4.c==R){S()}}j();9 j(){8.l=9(){4.q=r;d a=4.Y.X.W();p(a=="Q"||a=="I"||a=="J")};8.m=9(){4.q=r;d o=4.c;p!(o==H&&4.F)};G(8.i){K=O=P=8.l;N=8.m};L("j()",M)}',61,61,'|||theForm|event|array_img|page|if|window|function|sSrcTagName|src|keyCode|var|array|pic|length|parseInt|document|stt|form1|ClearEvent|ClearKey|else|iKeyCode|return|cancelBubble|false|toString|null|uncMe|forms|image|setView|gif|loading|oDv|Sx|nxpic|value|uncMeTwo|ctrlKey|with|78|input|select|oncontextmenu|setTimeout|500|onkeydown|onselectstart|ondragstart|textarea|16|p_onclick|nc_onclick|pressup|32|toLowerCase|tagName|srcElement'.split('|'),0,{}))
</script>这是原地址。
http://www.dm5.com/Comic/MH70/Comics-70695_fed36b63.htm
if(array_img==null){
alert("\u53c2\u6570\u9519\u8bef\uff01");
this.close();
}else {
if(array_img.length<1){
alert("\u53c2\u6570\u9519\u8bef\uff01");
this.close();
}
}if(array_img!=null){
theForm=document.forms["form1"];
if(!theForm){
theForm=document.form1;
}
if(parseInt(page,0)>array_img.length-1){
page=(array_img.length-1).toString();
}
theForm.Sx.value=page;
theForm.pic.src="../../image/loading.gif";
setView("oDv");
if(parseInt(page,0)<array_img.length-2){
var array=uncMeTwo(array_img[page],array_img[parseInt(page,0)+1]);
theForm.pic.src=array[0];
theForm.nxpic.src=array[1];
}else {
theForm.pic.src=uncMe(array_img[page]);
}
}
function pressup(){
if(event.keyCode==32){
nc_onclick();
}else {
if(event.keyCode==16){
p_onclick();
}
}
}
stt();
function stt(){
window.ClearEvent=function(){
event.cancelBubble=false;
var sSrcTagName=event.srcElement.tagName.toLowerCase();
return (sSrcTagName=="textarea"||sSrcTagName=="input"||sSrcTagName=="select");
};
window.ClearKey=function(){
event.cancelBubble=false;
var iKeyCode=event.keyCode;
return !(iKeyCode==78&&event.ctrlKey);
};
with(window.document){
oncontextmenu=onselectstart=ondragstart=window.ClearEvent;
onkeydown=window.ClearKey;
}
setTimeout("stt()",500);
}
我抓包看了看内容,后面浏览器要继续POST两次,第一个POST过去让服务器执行一个函数/ajax/DM5Func.FuncAjax,DM5Func.ashx?_method=ImageDes&_session=no执行之后返回给我一串字符,然后我第二次POST过去另一串字符,然后自行服务器的另一个函数,服务器看看我返回的这一串字符正确了,才返回真正的图片地址。我估计这我我第二次POST的那一串字符就是接收过来的字符通过那个脚本处理后的记过。我希望用c语言来模拟这两次POST的过程,所以需要知道这个脚本的算法。
<img id="img_des"/>
<script type="text/javascript">
(function() {
var urlImageDes = "http://www.dm5.com/ajax/DM5Func.FuncAjax,DM5Func.ashx?_method=ImageDes&_session=no";
var urlUnImageDesTwo = "http://www.dm5.com/ajax/DM5Func.FuncAjax,DM5Func.ashx?_method=UnImageDesTwo&_session=no";
var strid = 70695;
var strpage = 2; var contentText = "strid=" + strid + "&strpage=" + strpage;
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
try
{
xmlhttp.open("post", urlImageDes, false);
xmlhttp.setRequestHeader("CONTENT-LENGTH", contentText.length);
xmlhttp.setRequestHeader("CONTENT-TYPE", "text/xml; charset=utf-8");
xmlhttp.setRequestHeader("Referer", "");
xmlhttp.send(contentText);
eval("var datas = " + xmlhttp.responseText);
} catch (e) {
} var contentText = "date1=" + encodeURIComponent(datas[2]) + "&date2=" + encodeURIComponent(datas[3]) + "&key=" + datas[17];
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
try
{
xmlhttp.open("post", urlUnImageDesTwo, false);
xmlhttp.setRequestHeader("CONTENT-LENGTH", contentText.length);
xmlhttp.setRequestHeader("CONTENT-TYPE", "text/xml; charset=utf-8");
xmlhttp.setRequestHeader("Referer", "");
xmlhttp.send(contentText);
eval("var imgs = " + xmlhttp.responseText);
document.getElementById("img_des").src = imgs[0];
} catch (e) {
}
})();
</script>
你都跟包了,那还看不出来
第二次提交的数据,在第一次返回的结果中都有,而且没有经过加密处理
唯一需要处理的地方就是进行一次url编码,也就是把+替换成%2B =替换为%3D之类C要做一些字符串解析除此而已本回复只提供技术交流用,涉及版权纠纷由使用者承担。