0916_vbs加密与远程登录融合
2015-09-17 22:27
369 查看
之前写过一个由文件抓取账号密码和ip,实现secureCRT到远程登录。但是因为是从文件读取,考虑到安全因素上的问题,所以我们选择和之前一天写的加密脚本融合的方式达到文件一次读取后,销毁文件,达到加密。当然加密效果姑且不论,演示效果还是可以一看的。
话不多说,直接上代码。
加密部分:
'本工具用于加密vbs的脚本
'采用ASCII,hex+xor,Encoder 三重加密。
'第三重Encoder加密后,只能使用VBE后缀。
'VBS不支持Encoder编码。
Set fso = CreateObject("Scripting.FileSystemObject")
data = fso.openTextFile("ConfigurationBackup.vbs", 1).ReadAll
Filename = CreateObject("WScript.Shell").Exec("mshta vbscript:""<input type=file id=f><script>f.click();new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(f.value)[close()];</script>""").StdOut.ReadAll
Randomize
pass = Int(Rnd*12)+20 '异或加密有效范围20-31,所以随机生成好了。
Set readfile = fso.OpenTextFile(Filename, 1)
readdata = "data = " & chr(34)
readdata = readdata & readfile.readline
do while readfile.AtEndOfStream <> True
readdata = readdata & "|" & readfile.readline
loop
data = readdata & chr(34) & chr(13) & chr(10) & data
data = "d=" & Chr(34) & ASCdata(data) & Chr(34)
data = data & vbCrLf & ":M=Split(D):For each O in M:N=N&chr(O):Next:execute N"
data = Replace(data, " ", ",")
fso.OpenTextFile(Filename & "_加密.vbe", 2, True).Write Encoder(EncHexXorData(data))
MsgBox "加密完毕,文件生成到:" & vbCrLf & vbCrLf & Filename & "_加密.vbe", 64+4096, "乱码领域VBS加密"
Set FSO = Nothing
Function EncHexXorData(data)
EncHexXorData = "x=""" & EncHexXor(data) & """:For i=1 to Len(x) Step 2:s=s&Chr(CLng(""&H""&Mid(x,i,2)) Xor " & pass & "):Next:Execute Replace(s,"","","" "")"
End Function
Function Encoder(data) '加密3
Encoder = CreateObject("Scripting.Encoder").EncodeScriptFile(".vbs", data, 0, "VBScript")
End Function
Function EncHexXor(x) '加密2
For i = 1 To Len(x)
EncHexXor = EncHexXor & Hex(Asc(Mid(x, i, 1)) Xor pass)
Next
End Function
Function ASCdata(Data) '加密1
num = Len(data)
newdata = ""
For j = 1 To num
If j = num Then
newdata = newdata&Asc(Mid(data, j, 1))
Else
newdata = newdata&Asc(Mid(data, j, 1)) & " "
End If
Next
ASCdata = newdata
End Function远程登录部分;
话不多说,直接上代码。
加密部分:
'本工具用于加密vbs的脚本
'采用ASCII,hex+xor,Encoder 三重加密。
'第三重Encoder加密后,只能使用VBE后缀。
'VBS不支持Encoder编码。
Set fso = CreateObject("Scripting.FileSystemObject")
data = fso.openTextFile("ConfigurationBackup.vbs", 1).ReadAll
Filename = CreateObject("WScript.Shell").Exec("mshta vbscript:""<input type=file id=f><script>f.click();new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(f.value)[close()];</script>""").StdOut.ReadAll
Randomize
pass = Int(Rnd*12)+20 '异或加密有效范围20-31,所以随机生成好了。
Set readfile = fso.OpenTextFile(Filename, 1)
readdata = "data = " & chr(34)
readdata = readdata & readfile.readline
do while readfile.AtEndOfStream <> True
readdata = readdata & "|" & readfile.readline
loop
data = readdata & chr(34) & chr(13) & chr(10) & data
data = "d=" & Chr(34) & ASCdata(data) & Chr(34)
data = data & vbCrLf & ":M=Split(D):For each O in M:N=N&chr(O):Next:execute N"
data = Replace(data, " ", ",")
fso.OpenTextFile(Filename & "_加密.vbe", 2, True).Write Encoder(EncHexXorData(data))
MsgBox "加密完毕,文件生成到:" & vbCrLf & vbCrLf & Filename & "_加密.vbe", 64+4096, "乱码领域VBS加密"
Set FSO = Nothing
Function EncHexXorData(data)
EncHexXorData = "x=""" & EncHexXor(data) & """:For i=1 to Len(x) Step 2:s=s&Chr(CLng(""&H""&Mid(x,i,2)) Xor " & pass & "):Next:Execute Replace(s,"","","" "")"
End Function
Function Encoder(data) '加密3
Encoder = CreateObject("Scripting.Encoder").EncodeScriptFile(".vbs", data, 0, "VBScript")
End Function
Function EncHexXor(x) '加密2
For i = 1 To Len(x)
EncHexXor = EncHexXor & Hex(Asc(Mid(x, i, 1)) Xor pass)
Next
End Function
Function ASCdata(Data) '加密1
num = Len(data)
newdata = ""
For j = 1 To num
If j = num Then
newdata = newdata&Asc(Mid(data, j, 1))
Else
newdata = newdata&Asc(Mid(data, j, 1)) & " "
End If
Next
ASCdata = newdata
End Function远程登录部分;
'本脚本目的:从一个文件里读取设备类型、IP地址、用户名和密码等,自动备份设备配置 Sub Main '强制要求显式声明脚本中的所有变量 'Option Explicit '文件打开方式 Const ForReading = 1, ForWriting = 2, ForAppending = 8 Dim fso,line,params,switchkey,savefile Set fso = CreateObject("Scripting.FileSystemObject") '===配置文件保存目录=== savefile = "C:\Configuration Backup\" crt.Screen.Synchronous = True dataSplit = Split(data, chr(10)) dataSplitNum = UBound(data) - LBound(data) iflag = 0 DO While dataSplitNum <> iflag '读出每行 line = dataSplit(iflag) iflag = iflag + 1 '分离每行的参数 IP地址 用户名 密码 params = Split (line, ",") '===Cisco=== if params(0) = "Cisco" then 'SSH登录 crt.Session.connectInTab("/SSH2 /L " & params(3) & " /PASSWORD " & params(4) & " " & params(2)) crt.Screen.waitForString params(1)&">" crt.Screen.Send "enable" &vbcr crt.Screen.Send params(5) &vbcr crt.Screen.waitForString "#" crt.Screen.Send "show run" & vbcr '===配置文件保存位置=== crt.session.LogFileName = savefile & Year(Now) & "-" & Month(now) & "-" & Day(now) & "\" & params(1) & ".log" crt.session.Log True do while true switchkey = crt.Screen.WaitForStrings(" --More-- ", params(1)&"#", 0.5) select case switchkey '读到" --More-- " case "1" crt.Screen.send " " '读到"end" case "2" '关闭log crt.session.Log False crt.Screen.Send "exit" & vbcr exit do end select loop crt.Session.Disconnect '===Junos=== elseif params(0) = "Junos" then crt.Session.connectInTab("/SSH2 /L " & params(3) & " /PASSWORD " & params(4) & " " & params(2)) crt.Screen.waitForString ">" crt.Screen.Send "show configuration | display set" &vbcr crt.session.LogFileName = "C:\" & Year(Now) & "-" & Month(now) & "-" & Day(now) & "\" & params(1) & ".log" crt.session.Log True do while true switchkey = crt.Screen.WaitForStrings("---(more", ">", 0.5) select case switchkey case "1" crt.Screen.send " " case "2" crt.session.Log False crt.Screen.Send "exit" & vbcr exit do end select loop crt.Session.Disconnect '===Netscreen=== elseif params(0) = "Netscreen" then crt.Session.connectInTab("/SSH2 /L " & params(3) & " /PASSWORD " & params(4) & " " & params(2)) crt.Screen.waitForString "->" crt.Screen.Send "get config" &vbcr crt.session.LogFileName = "C:\" & Year(Now) & "-" & Month(now) & "-" & Day(now) & "\" & params(1) & ".log" crt.session.Log True do while true switchkey = crt.Screen.WaitForStrings("->", 0.5) select case switchkey case "1" crt.session.Log False crt.Screen.Send "exit" & vbcr exit do end select loop crt.Session.Disconnect '===F5=== elseif params(0) = "F5" then crt.Session.connectInTab("/SSH2 /AUTH keyboard-interactive /L " & params(3) & " /PASSWORD " & params(4) & " " & params(2)) crt.Screen.waitForString ">" crt.Screen.Send "list" &vbcr crt.session.LogFileName = "C:\" & Year(Now) & "-" & Month(now) & "-" & Day(now) & "\" & params(1) & ".log" crt.session.Log True do while true switchkey = crt.Screen.WaitForStrings("/var", ":", "(END)", 0.5) select case switchkey case "1" crt.Screen.send " " case "2" crt.Screen.send " " case "3" crt.Screen.send "q" &vbcr crt.session.Log False crt.Screen.Send "exit" & vbcr exit do end select loop crt.Session.Disconnect '===Checkpoint=== elseif params(0) = "Checkpoint" then crt.Session.connectInTab("/SSH2 /L " & params(3) & " /PASSWORD " & params(4) & " " & params(2)) crt.Screen.waitForString params(1)&">" crt.Screen.Send "show configuration" &vbcr crt.session.LogFileName = "C:\" & Year(Now) & "-" & Month(now) & "-" & Day(now) & "\" & params(1) & ".log" crt.session.Log True do while true switchkey = crt.Screen.WaitForStrings("-- More --", params(1)&">", 0.5) select case switchkey case "1" crt.Screen.send " " case "2" crt.session.Log False crt.Screen.Send "exit" & vbcr exit do end select loop crt.Session.Disconnect end if loop crt.Screen.Synchronous = False End Sub
相关文章推荐
- VBS脚本写的Windows硬件检测工具分享
- 禁止QQ上网的vbs脚本代码
- 用vbs实现cmd功能的代码
- 不错的主要用于加密的vbs(asp)位移运算类
- 用vbscript实现隐藏任务栏图标的脚本
- 用autoit编写第一个脚本(Hello World)
- VBS调用Photoshop批量生成缩略图的代码
- VBS教程:对象-Err
- VBS InternetExplorer.Application的属性和方法介绍
- 用vbs实现的简单的服务器文件备份办法压缩文件名自动按日期命名
- VBS基础编程教程 (第1篇)
- VBS显示当前标准时间
- 自动切换能播放音乐列表 vbs
- VBS 两数相加取值问题分析
- VBScript 打造自己的远程CMDShell附使用教程
- VBS基础编程教程 (第3篇)
- 用vbs删除某些类型文件和磁盘空间报告的脚本
- vbs Size 属性使用介绍(获取文件大小)
- 非常棒的lcx写的非常规运行vbs