/****
本程序以及提供的源码仅供技术交流使用、
作者不作任何类型担保,在任何情况下都不对使用本软件造成的任何损失或任何相应而生、
间接、附带的损失承担任何责任.
****/importwin.ui;importinet.url;importweb.form;importweb.uploadData;importstring.crypt;importinet;/*DSG{{*/varwinform = win.form(parent=...; right=776;acceptfiles=1;bottom=546;scroll=1;text="VIRSCAN 在线病毒检测客户端 1.0";border="resizable")
winform.add(
lbProcess={ dr=1;dl=1;bottom=542;right=773;left=2;top=524;text="";z=1;db=1;transparent=1;edge=1;cls="static"};
static={ dr=1;dl=1;bottom=519;text="";left=7;dt=1;top=32;z=2;db=1;right=767;transparent=1;cls="static"};
progress={ dr=1;bottom=545;max=100;right=765;left=545;top=525;min=0;text="progress";z=4;db=1;hide=1;edge=1;cls="progress"};
lbTip={ dr=1;dl=1;bottom=29;right=458;left=6;dt=1;top=9;transparent=1;text="本程序可在本地计算文件的HASH值,对于服务器已有扫描结果的文件可节省上传时间";z=3;cls="static"}
)/*}}*///创建web窗体varwb = web.form( winform.static,0x40000/*_UIFLAG_THEME*/);
wb.noScriptErr=true;
winform.progress.bottom -= 8
winform.strProgressTipHead ="正在载入...."wb.ProgressChange =function( progress, progressMax ) {if(progressMax!=0){varper = ( (progress / progressMax) * 100) ;if( progress < 0 || per > 100 )
winform.lbProcess.text ="已完成"else{
winform.lbProcess.text = ( winform.strProgressTipHead ++ per +"%");
}
winform.lbTip.redraw()
}
}
wb.BeforeNavigate2=function( pDisp, url, Flags, TargetFrameName, PostData, Headers, Cancel ) {if(io.exist(url) ){if(winform.progress.hide ==true){
scan(url);
}returnurl, Flags, TargetFrameName, PostData, Headers,true;
}
}
wb.DocumentComplete=function( pDisp, url) {varele = wb.getEle("upload_button");if( ele.style.display !="none"){
ele.style.display ="none"ele.insertAdjacentHTML("beforeBegin",">> 请拖放可疑文件到网页上即可,未知文件自动上传检测。
本客户端使用aardio制作,官方网站:bbs.aardio.com")
wb.getEle("file").style.display ="none"}
}
winform.wndproc =function(hwnd,message,wParam,lParam){select(message) {//判断消息类型case0x233/*_WM_DROPFILES*/{if(winform.progress.hide ==true){varfiles = win.getDropFile(wParam);for(k,vinfiles) {
winform.scaning =true;
scan(v);break;
}
}
}
}
}//打开目标网站wb.go("http://www.virscan.org")
wb.wait("");//等待指定网址,可以使用模式匹配语法wb.script.DelCookie('lang');
wb.script.SetCookie('lang','zh-cn',315360000,'/','.virscan.org');
wb.refresh();
winform.show();
scan =function(path){
winform.lbTip.text ="正在计算文件HASH值..."winform.progress.hide =false;varmd5,sha1 = getFileHash(function(per){
winform.progress.pos = per;
}
,path
)
winform.progress.hide =true;
winform.lbTip.text ="正在检测病毒..."md5 = string.lower(md5);
wb.go("http://md5.virscan.org/"+ md5)
wb.wait();varele = wb.queryEles( innerHTML="@没有找到md5为";tagName="^DT$");if( #ele){
ele.innerHTML ="未知文件,正在上传文件到 www.virscan.org"ele = wb.queryEles( innerHTML="返回";tagName="^TD$")
ele.innerHTML ="请耐心等待.......";
winform.lbTip.text =varaction = wb.getEle("form_upload").action
action = inet.url.joinpath(wb.location,action)//自动上传文件winform.strProgressTipHead ="正在上传文件并检测病毒...."varformdata = web.uploadData("upload_button=上传","file",path)
wb.post(action, formdata.data ,formdata.header,"upload_iframe");
wb.wait()
winform.strProgressTipHead ="正在载入...."wb.doScript("window.location.href='http://r.virscan.org/report/report/'+ scanid +'.html' ");
wb.wait();
}varele = wb.queryEles( innerHTML="0\.00\s*\%\(0\/\d+\)";tagName="^A$");if(#ele){
winform.lbTip.text ="恭喜,全部的扫描检测未发现病毒"}else{varele = wb.queryEles( innerHTML="全部的杀毒软件报告没有发现病毒")if(#ele){
winform.lbTip.text ="恭喜,全部的扫描检测未发现病毒"}else{
winform.lbTip.text ="扫描完成"}
}
}//by lujjjhgetFileHash =function(proc,path,chkMd5=true,chkSha1=true){varmd5 = string.crypt.md5();varsha1 = string.crypt.sha1()varf,err = io.open(path,"rb");if(!f)error("打开文件失败"+ ..lasterr(),2 )vardwSize = f.seek("end");
f.seek("set");varbufsize = 1024 * 1024;do{vardata = f.read(bufsize);if( !data )break;if(chkMd5)
md5.push(data);if(chkSha1)
sha1.push(data);
proc( f.seek() / dwSize * 100 )
}while( win.delay(1) );
f.close();returnmd5.getHash(),sha1.getHash();
}//进入消息循环win.loopMessage();returnwinform,wb;