Scripting.Decoder for Microsoft Encoding
This code lets you decode your scripts. It comes in handy if you deleted the original file or wrote over it with the encoded version. Microsoft included a program to encode, but choose not to let us decode with a scrdec program. More details can be found on my site about this script including a live demonstration. Please leave comments here if you wish to inquire about it.
AI
AI Samenvatting: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.
Broncode
<% ' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT ' WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, ' INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES ' OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR ' PURPOSE. ' Copyright 2000 - 2001. All rights reserved. ' Lewis Moten ' http://www.lewismoten.com ' email: [email protected] ' If you use this code on your site and wish to be listed ' as one of the sites on my webpage that use my code, please ' email me the URL, Title, a short description, and a 100x30 ' image button if you have one. ' I ask that you please help me promote my site in ' exchange. This can be done simply by sending a friend ' of yours an email, posting a link on your site to mine, ' or even posting a message in a news group, forum, IRC, etc. ' You can even do it by nominating it for sites that give ' out awards. If you link to my page, please link to ' my home page at http://www.lewismoten.com, there is more ' to me then just programming. :) ' ------------------------------------------------------------------------------ Class clsScripting_Decoder ' ------------------------------------------------------------------------------ Private mBytAsciiAry Private mStrBase64 ' ------------------------------------------------------------------------------ Private Sub Class_Initialize() mStrBase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" mBytAsciiAry = Array( _ &h00, &h00, &h00, &h01, &h01, &h01, &h02, &h02, &h02, &h03, &h03, &h03, &h04, &h04, &h04, &h05, &h05, &h05, _ &h06, &h06, &h06, &h07, &h07, &h07, &h08, &h08, &h08, &h57, &h6E, &h7B, &h00, &h00, &h00, &h0B, &h0B, &h0B, _ &h0C, &h0C, &h0C, &h00, &h00, &h00, &h0E, &h0E, &h0E, &h0F, &h0F, &h0F, &h10, &h10, &h10, &h11, &h11, &h11, _ &h12, &h12, &h12, &h13, &h13, &h13, &h14, &h14, &h14, &h15, &h15, &h15, &h16, &h16, &h16, &h17, &h17, &h17, _ &h18, &h18, &h18, &h19, &h19, &h19, &h1A, &h1A, &h1A, &h1B, &h1B, &h1B, &h1C, &h1C, &h1C, &h1D, &h1D, &h1D, _ &h1E, &h1E, &h1E, &h1F, &h1F, &h1F, &h2E, &h2D, &h32, &h47, &h75, &h30, &h7A, &h52, &h21, &h56, &h60, &h29, _ &h42, &h71, &h5B, &h6A, &h5E, &h38, &h2F, &h49, &h33, &h26, &h5C, &h3D, &h49, &h62, &h58, &h41, &h7D, &h3A, _ &h34, &h3E, &h35, &h32, &h36, &h65, &h5B, &h20, &h39, &h76, &h7C, &h5C, &h72, &h7A, &h56, &h43, &h7F, &h73, _ &h38, &h6B, &h66, &h39, &h63, &h4E, &h70, &h33, &h45, &h45, &h2B, &h6B, &h68, &h68, &h62, &h71, &h51, &h59, _ &h4F, &h66, &h78, &h09, &h76, &h5E, &h62, &h31, &h7D, &h44, &h64, &h4A, &h23, &h54, &h6D, &h75, &h43, &h71, _ &h00, &h00, &h00, &h7E, &h3A, &h60, &h00, &h00, &h00, &h5E, &h7E, &h53, &h40, &h00, &h40, &h77, &h45, &h42, _ &h4A, &h2C, &h27, &h61, &h2A, &h48, &h5D, &h74, &h72, &h22, &h27, &h75, &h4B, &h37, &h31, &h6F, &h44, &h37, _ &h4E, &h79, &h4D, &h3B, &h59, &h52, &h4C, &h2F, &h22, &h50, &h6F, &h54, &h67, &h26, &h6A, &h2A, &h72, &h47, _ &h7D, &h6A, &h64, &h74, &h39, &h2D, &h54, &h7B, &h20, &h2B, &h3F, &h7F, &h2D, &h38, &h2E, &h2C, &h77, &h4C, _ &h30, &h67, &h5D, &h6E, &h53, &h7E, &h6B, &h47, &h6C, &h66, &h34, &h6F, &h35, &h78, &h79, &h25, &h5D, &h74, _ &h21, &h30, &h43, &h64, &h23, &h26, &h4D, &h5A, &h76, &h52, &h5B, &h25, &h63, &h6C, &h24, &h3F, &h48, &h2B, _ &h7B, &h55, &h28, &h78, &h70, &h23, &h29, &h69, &h41, &h28, &h2E, &h34, &h73, &h4C, &h09, &h59, &h21, &h2A, _ &h33, &h24, &h44, &h7F, &h4E, &h3F, &h6D, &h50, &h77, &h55, &h09, &h3B, &h53, &h56, &h55, &h7C, &h73, &h69, _ &h3A, &h35, &h61, &h5F, &h61, &h63, &h65, &h4B, &h50, &h46, &h58, &h67, &h58, &h3B, &h51, &h31, &h57, &h49, _ &h69, &h22, &h4F, &h6C, &h6D, &h46, &h5A, &h4D, &h68, &h48, &h25, &h7C, &h27, &h28, &h36, &h5C, &h46, &h70, _ &h3D, &h4A, &h6E, &h24, &h32, &h7A, &h79, &h41, &h2F, &h37, &h3D, &h5F, &h60, &h5F, &h4B, &h51, &h4F, &h5A, _ &h20, &h42, &h2C, &h36, &h65, &h57, &h80, &h80, &h80, &h81, &h81, &h81, &h82, &h82, &h82, &h83, &h83, &h83, _ &h84, &h84, &h84, &h85, &h85, &h85, &h86, &h86, &h86, &h87, &h87, &h87, &h88, &h88, &h88, &h89, &h89, &h89, _ &h8A, &h8A, &h8A, &h8B, &h8B, &h8B, &h8C, &h8C, &h8C, &h8D, &h8D, &h8D, &h8E, &h8E, &h8E, &h8F, &h8F, &h8F, _ &h90, &h90, &h90, &h91, &h91, &h91, &h92, &h92, &h92, &h93, &h93, &h93, &h94, &h94, &h94, &h95, &h95, &h95, _ &h96, &h96, &h96, &h97, &h97, &h97, &h98, &h98, &h98, &h99, &h99, &h99, &h9A, &h9A, &h9A, &h9B, &h9B, &h9B, _ &h9C, &h9C, &h9C, &h9D, &h9D, &h9D, &h9E, &h9E, &h9E, &h9F, &h9F, &h9F, &hA0, &hA0, &hA0, &hA1, &hA1, &hA1, _ &hA2, &hA2, &hA2, &hA3, &hA3, &hA3, &hA4, &hA4, &hA4, &hA5, &hA5, &hA5, &hA6, &hA6, &hA6, &hA7, &hA7, &hA7, _ &hA8, &hA8, &hA8, &hA9, &hA9, &hA9, &hAA, &hAA, &hAA, &hAB, &hAB, &hAB, &hAC, &hAC, &hAC, &hAD, &hAD, &hAD, _ &hAE, &hAE, &hAE, &hAF, &hAF, &hAF, &hB0, &hB0, &hB0, &hB1, &hB1, &hB1, &hB2, &hB2, &hB2, &hB3, &hB3, &hB3, _ &hB4, &hB4, &hB4, &hB5, &hB5, &hB5, &hB6, &hB6, &hB6, &hB7, &hB7, &hB7, &hB8, &hB8, &hB8, &hB9, &hB9, &hB9, _ &hBA, &hBA, &hBA, &hBB, &hBB, &hBB, &hBC, &hBC, &hBC, &hBD, &hBD, &hBD, &hBE, &hBE, &hBE, &hBF, &hBF, &hBF, _ &hC0, &hC0, &hC0, &hC1, &hC1, &hC1, &hC2, &hC2, &hC2, &hC3, &hC3, &hC3, &hC4, &hC4, &hC4, &hC5, &hC5, &hC5, _ &hC6, &hC6, &hC6, &hC7, &hC7, &hC7, &hC8, &hC8, &hC8, &hC9, &hC9, &hC9, &hCA, &hCA, &hCA, &hCB, &hCB, &hCB, _ &hCC, &hCC, &hCC, &hCD, &hCD, &hCD, &hCE, &hCE, &hCE, &hCF, &hCF, &hCF, &hD0, &hD0, &hD0, &hD1, &hD1, &hD1, _ &hD2, &hD2, &hD2, &hD3, &hD3, &hD3, &hD4, &hD4, &hD4, &hD5, &hD5, &hD5, &hD6, &hD6, &hD6, &hD7, &hD7, &hD7, _ &hD8, &hD8, &hD8, &hD9, &hD9, &hD9, &hDA, &hDA, &hDA, &hDB, &hDB, &hDB, &hDC, &hDC, &hDC, &hDD, &hDD, &hDD, _ &hDE, &hDE, &hDE, &hDF, &hDF, &hDF, &hE0, &hE0, &hE0, &hE1, &hE1, &hE1, &hE2, &hE2, &hE2, &hE3, &hE3, &hE3, _ &hE4, &hE4, &hE4, &hE5, &hE5, &hE5, &hE6, &hE6, &hE6, &hE7, &hE7, &hE7, &hE8, &hE8, &hE8, &hE9, &hE9, &hE9, _ &hEA, &hEA, &hEA, &hEB, &hEB, &hEB, &hEC, &hEC, &hEC, &hED, &hED, &hED, &hEE, &hEE, &hEE, &hEF, &hEF, &hEF, _ &hF0, &hF0, &hF0, &hF1, &hF1, &hF1, &hF2, &hF2, &hF2, &hF3, &hF3, &hF3, &hF4, &hF4, &hF4, &hF5, &hF5, &hF5, _ &hF6, &hF6, &hF6, &hF7, &hF7, &hF7, &hF8, &hF8, &hF8, &hF9, &hF9, &hF9, &hFA, &hFA, &hFA, &hFB, &hFB, &hFB, _ &hFC, &hFC, &hFC, &hFD, &hFD, &hFD, &hFE, &hFE, &hFE, &hFF, &hFF, &hFF _ ) End Sub ' ------------------------------------------------------------------------------ Public Function DecodeScriptFile(ByRef pStrExt, ByVal pStrScript, ByRef pLngTemp1, ByRef pStrTemp2) Dim lStrEncodedScript Dim lLngStart Dim lLngEnd Const lStrStartFlag = "#@~^" Const lStrEndFlag = "^#~@" Do lLngStart = InStr(1, pStrScript, lStrStartFlag) If lLngStart = 0 Then Exit Do lLngEnd = InStr(lLngStart + 4, pStrScript, lStrEndFlag) If lLngEnd = 0 Then Exit Do lStrEncodedScript = Mid(pStrScript, lLngStart, (lLngEnd + 4) - lLngStart) pStrScript = Left(pStrScript, lLngStart - 1) & Decode(lStrEncodedScript) & Mid(pStrScript, lLngEnd + 4) Loop DecodeScriptFile = pStrScript End Function ' ------------------------------------------------------------------------------ Private Function Addition(ByRef pLngPosition) Addition = CInt(Mid("0120121221210212021200122102122100212120200120210212001220012021", (pLngPosition Mod 64) + 1, 1)) End Function ' ------------------------------------------------------------------------------ Private Function Decode(ByVal pStrScript) Dim lLngLength Dim lStrEncoded Dim lLngPosition Dim lLngCount Dim lStrCharacter Dim lStrEscapedCharacters Dim lStrRealCharacters Dim lStrDecoded Dim lLngAddition Dim lLngAscii Dim lLngIndex Dim lLngEscapePosition Dim lStrEscapedCharacter lStrEscapedCharacters = "!*$#&" lStrRealCharacters = "<>@" & vbCrLf lLngLength = CheckLength(pStrScript) pStrScript = Mid(pStrScript, 13) pStrScript = Left(pStrScript, lLngLength) lLngLength = Len(pStrScript) lLngCount = 0 For lLngPosition = 1 To lLngLength lStrCharacter = Mid(pStrScript, lLngPosition, 1) If lStrCharacter = "@" Then lStrEscapedCharacter = Mid(pStrScript, lLngPosition + 1, 1) lLngEscapePosition = InStr(1, lStrEscapedCharacters, lStrEscapedCharacter) If lLngEscapePosition = 0 Then lLngAddition = Addition(lLngPosition) lLngAscii = Asc(lStrCharacter) lLngIndex = (lLngAscii * 3) + lLngAddition lStrDecoded = lStrDecoded & Chr(mBytAsciiAry(lLngIndex)) Else lStrDecoded = lStrDecoded & Mid(lStrRealCharacters, lLngEscapePosition, 1) lLngPosition = lLngPosition + 1 End If Else lLngAddition = Addition(lLngCount) lLngAscii = Asc(lStrCharacter) lLngIndex = (lLngAscii * 3) + lLngAddition lStrDecoded = lStrDecoded & Chr(mBytAsciiAry(lLngIndex)) End If lLngCount = lLngCount + 1 Next Decode = lStrDecoded End Function ' ------------------------------------------------------------------------------ Private Function CheckLength(ByRef pStrScript) Dim lStrLength Dim lLngIndex Dim lLngValue Dim lLngTotal lStrLength = Mid(pStrScript, 5, 4) lStrLength = Base64Decode(lStrLength) For lLngIndex = 1 To Len(lStrLength) lLngValue = Asc(Mid(lStrLength, lLngIndex, 1)) lLngTotal = lLngTotal + lLngValue * (255 ^ (lLngIndex -1)) next CheckLength = lLngTotal End Function ' ------------------------------------------------------------------------------ Function Base64decode(ByVal pStrContents) Dim lStrResult Dim lLngPosition Dim lStrGroup64 Dim lStrGroupBinary Dim lStrChar1 Dim lStrChar2 Dim lStrChar3 Dim lStrChar4 Dim lByt1 Dim lByt2 Dim lByt3 If Len(pStrContents) Mod 4 > 0 Then pStrContents = pStrContents & String(4 - (Len(pStrContents) Mod 4), "=") End If lStrResult = "" For lLngPosition = 1 To Len(pStrContents) Step 4 lStrGroupBinary = "" lStrGroup64 = Mid(pStrContents, lLngPosition, 4) lStrChar1 = InStr(mStrBase64, Mid(lStrGroup64, 1, 1)) - 1 lStrChar2 = InStr(mStrBase64, Mid(lStrGroup64, 2, 1)) - 1 lStrChar3 = InStr(mStrBase64, Mid(lStrGroup64, 3, 1)) - 1 lStrChar4 = InStr(mStrBase64, Mid(lStrGroup64, 4, 1)) - 1 lByt1 = Chr(((lStrChar2 And 48) \ 16) Or (lStrChar1 * 4) And &HFF) lByt2 = lStrGroupBinary & Chr(((lStrChar3 And 60) \ 4) Or (lStrChar2 * 16) And &HFF) lByt3 = Chr((((lStrChar3 And 3) * 64) And &HFF) Or (lStrChar4 And 63)) lStrGroupBinary = lByt1 & lByt2 & lByt3 lStrResult = lStrResult + lStrGroupBinary Next Base64decode = lStrResult End Function ' ------------------------------------------------------------------------------ End Class ' ------------------------------------------------------------------------------ %>
Originele reacties (3)
Hersteld van de Wayback Machine