其实也就是从nod32id网站截取帐号密码的一个VBS脚本!
其实和我想的原理一样!就是自己不会做!技术不行啊!
也请教过我们.NET的老李!和我扯了半天 不知所云!
呵呵!
贴上全部代码!
主要就是正则表达式的截取问题!
关键核心截取代码!
截取username后面EAV-为开始!
Dim theURL : theURL = “http://www.nod32id.com/catalog.asp?cate=1” ' <-- 对, 就是这行
Const MyName = “GetValidID”
Const MyVersion = &H1016
Const HKeyLocalMachine = “HKEY_LOCAL_MACHINE\”
Const HKEY_LOCAL_MACHINE = &H80000002
Const RegEset30 = “SOFTWARE\Eset\ESET Security\CurrentVersion\Plugins\01000400\Profiles\@My profile\”
Const RegEset27 = “SOFTWARE\Eset\Nod\CurrentVersion\Modules\Update\Settings\Config000\Settings\”
Const UserStartup = “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Startup”
Dim RegEset : RegEset = RegEset30
Dim str : str = “”
Dim ids
Dim un : un = “”
Dim pw : pw = “”
Dim PassBytesA : PassBytesA = Array(&H61, &HD4, &HDD, &HFB, &H5B, &H35, &HB7, &H19, &HEC, &H2B)
Dim PassBytesB : PassBytesB = Array(&HD6, &HE9, &HF0, &HF2, &H64, &HAD, &HC8, &H75, &H31, &HBC)
Dim oShell : Set oShell = CreateObject(“WScript.Shell”)
Dim oFso : Set oFso = CreateObject(“Scripting.FileSystemObject”)
Dim oXmlHttp : Set oXmlHttp = CreateObject(“Msxml2.XMLHTTP”)
Dim StartupPath : StartupPath = oShell.RegRead(UserStartup)
If Wsh.Arguments.Count > 0 Then If Wsh.Arguments(0) = “v” Then Wsh.Quit MyVersion
If Wsh.Arguments.Count <> 0 Then Wsh.Quit -254
If oShell.CurrentDirectory <> StartupPath Then
Dim StartupFullPath : StartupFullPath = StartupPath & “\” & MyName & “.vbs”
End If
On Error Resume Next
oShell.RegRead “HKEY_LOCAL_MACHINE\SOFTWARE\ESET\ESET Security\CurrentVersion\Info\ProductVersion”
If Err.Number <> 0 Then
On Error Resume Next
oShell.RegRead “HKEY_LOCAL_MACHINE\SOFTWARE\ESET\NOD\CurrentVersion\Info\CurrentVersion”
If Err.Number <> 0 Then
Wsh.Echo “本机没有安装ESET产品”
Wsh.Quit -128
End If
RegEset = RegEset27
End If
On Error Goto 0
With oXmlHttp
.Open “GET”, theURL, False
.SetRequestHeader “Pragma”, “no-cache”
.SetRequestHeader “Cache-Control”, “no-cache”
On Error Resume Next
.Send
If Err.Number <> 0 Then
Wsh.Echo “连接不上ID分发网站”
Wsh.Quit -1
End If
On Error Goto 0
If .Status <> 200 Then
Wsh.Echo “ID分发网页有错误”
Wsh.Quit -2
End If
With New RegExp
.IgnoreCase = True
.Global = True
.Pattern = “(?:username)\s*:\s*(EAV-\d+)[\s\S]*?(?:password|passw0rd)\s*:\s*(\w+)”
Dim match
For Each match In .Execute(oXmlHttp.responseText)
str = str & match.SubMatches(0) & “:” & _
match.SubMatches(1) & vbcrlf
Next
'Wsh.Echo str : Wsh.Quit
End With
If Len(str) = 0 Then
Wsh.Echo “在ID分发网页内找不到任何ID”
Wsh.Quit -4
End If
Dim i, j, m, k, u, tmp
Randomize
ids = Split(str, vbcrlf)
i = Abs(UBound(ids) – 1)
if i > 15 then i = 15
ReDim rand(i)
For j = 0 To i : rand(j) = j : Next
For j = 0 To i
k = Fix(Rnd() * (i + 1)) : u = Fix(Rnd() * (i + 1))
m = rand(k) : rand(k) = rand(u) : rand(u) = m
Next
For j = 0 To i : Do
un = “” : pw = “”
tmp = Split(ids(rand(j)), “:”)
un = Trim(tmp(0)) : pw = Trim(tmp(1))
If un = “” Or pw = “” Then Exit Do
.Open “GET”, “http://update.eset.com/download/engine3/em000_32_l0.nup”, _
False, un, pw
On Error Resume Next
.Send
If Err.Number <> 0 Then
Wsh.Echo “连接不上ESET官址进行验证…”
Wsh.Quit -1
End If
On Error Goto 0
If .Status <> 200 And .Status <> 304 Then Exit Do
ReDim binarr((Len(pw) – 1) * 2 + 1)
For k = 0 To UBound(PassBytesA)
binarr(k * 2) = Asc(Mid(pw, k + 1, 1)) Xor PassBytesA(k)
binarr(k * 2 + 1) = PassBytesB(k)
If k + 1 >= Len(pw) Then Exit For
Next
oShell.RegWrite HkeyLocalMachine & RegEset & “Username”, un, “REG_SZ”
GetObject(“Winmgmts:root\default:StdRegProv”)_
.SetBinaryValue HKEY_LOCAL_MACHINE, RegEset, “Password”, binarr
oShell.Popup “随机抽选的新ID已被验证和安装” & vbcrlf & ” Username: ” & un & vbcrlf & _
” Password: ” & pw & vbcrlf & ” (本窗会在5秒后消失)”, 5, MyName, vbOKOnly + vbInformation
Wsh.Quit 0
Loop While False : Next
Wsh.Echo “ID分发网页内的ID全部无效”
Wsh.Quit -3
End With
Wsh.Quit 0