Obfuscating VBScript Code
This page shows VBScript obfuscation done with the VBScript Formatter using the optional Obfuscation capability. It contains VBScript sample code, its obfuscated version, and the generated obfuscation map of names to mangled names.
VBScript Sample Code before Obfuscation
The obfuscator can obfuscate plain VBScript source files, or ASP script files containing VBScript. This is actually an ASP script taken from an freely downloadable bulletin board program. The source is about 500 lines long; click to see obfuscated version.
<!--#INCLUDE FILE="BBSAuth.inc"--> <HTML> <HEAD> <!--#INCLUDE FILE="BBSRoutines.inc"--> <!--#INCLUDE FILE="CommonRoutines.inc"--> <!--#INCLUDE FILE="dbConnect_BBS.inc"--> <!--#INCLUDE FILE="CheckSecurity.inc"--> <title><%= sec_Topics("Topic Title") & " Topic File Manager" %></title> <!--#INCLUDE FILE="header.inc"--> </HEAD> <BODY> <center><h2><%= sec_Topics.Fields("Topic Title") %> - File Manager</h2> <center> <a href="BBSAdmin.asp?TopicID=<%= TopicID %>">Topic Admin</a> </center> <% on error goto 0 '-- --------------------------- -- '-- Determine directory to view -- '-- --------------------------- -- TopicPath = AppFilePath() & "\Uploads\" & TopicID If Not IsEmpty(Request.Form("FileDirectory")) Then FileDirectory = Request.Form("FileDirectory") ElseIf Not IsEmpty(Request.QueryString("FileDirectory")) Then FileDirectory = Request.QueryString("FileDirectory") Else FileDirectory = "" End If FileDirectory = Replace(FileDirectory,".","") '- Hacker prevention '-- ------------- -- '-- File Clean-Up -- '-- ------------- -- If Request.Form("B1") = "Delete" Then Set WorkFileObject = server.createobject("Scripting.FileSystemObject") For Each key in Request.Form If UCase(Left(key,6)) = "DELETE" Then Response.Write "Deleting " & Replace(FileDirectory,"\","/") & "/" & Request.Form(Key) & "<br>" On Error Resume Next WorkFileObject.DeleteFile(TopicPath & FileDirectory & "\" & Request.Form(Key)) On Error GoTo 0 End If Next Set WorkFileObject = Nothing End If If Not IsEmpty(Request.QueryString("MPageNo")) Then MPageNo = Request.QueryString("MPageNo") ElseIf Not IsEmpty(Request.Form("MPageNo")) Then MPageNo = Request.Form("MPageNo") Else MPageNo = 1 End If If Not IsEmpty(Request.QueryString("MJumpTo")) Then MJumpTo = Request.QueryString("MJumpTo") ElseIf Not IsEmpty(Request.Form("MJumpTo")) Then MJumpTo = Request.Form("MJumpTo") Else MJumpTo = "" End If MResults = 15 '-- ------------------------------------------------- -- '-- Look at directory and decide what page you are on -- '-- Also populate the index -- '-- ------------------------------------------------- -- Dim Index1(101) Dim Index2(101) Dim Index3(101) Dim IndexW(101) For ICtr = 1 To 101 Index1(ICtr) = "" Index2(ICtr) = "" Index3(ICtr) = "" IndexW(ICtr) = "" Next 'response.write "c-" & now() & "<br>" Dim FileList(15) Dim FileType(15) Dim FileSize(15) For ICtr = 1 To 15 FileList(ICtr) = "" FileType(ICtr) = "" FileSize(ICtr) = 0 Next 'response.write "d-" & now() & "<br>" RecNo = 0 ICtr = 1 IndexCtr1 = 0 IndexCtr2 = 0 IndexCtr3 = 0 MorePages = "No" Set WorkFileObject = server.createobject("Scripting.FileSystemObject") Set WorkFileFolder = WorkFileObject.GetFolder(TopicPath & "\" & FileDirectory) Set WorkFolderList = WorkFileFolder.SubFolders Set WorkFileList = WorkFileFolder.Files For Each WrkFileName In WorkFolderList If Left(WrkFileName.Name,1) <> "_" Then '-- ------------------------------- -- '-- Populate the index with folders -- '-- ------------------------------- -- If Left(UCase(WrkFileName.Name),1) <> Index1(IndexCtr1) Then FoundIt = "No" For WCtr = 1 To IndexCtr1 If Left(UCase(WrkFileName.Name),1) = Index1(WCtr) Then FoundIt = "Yes" End If Next If FoundIt = "No" And IndexCtr1 <= 100 Then IndexCtr1 = IndexCtr1 + 1 Index1(IndexCtr1) = Left(UCase(WrkFileName.Name),1) End If End If If Len(MJumpTo) > 0 Then If Left(MJumpTo,1) = Left(UCase(WrkFileName.Name),1) And _ Left(UCase(WrkFileName.Name),2) <> Index2(IndexCtr2) Then FoundIt = "No" For WCtr = 1 To IndexCtr2 If Left(UCase(WrkFileName.Name),2) = Index2(WCtr) Then FoundIt = "Yes" End If Next If FoundIt = "No" And IndexCtr2 <= 100 Then IndexCtr2 = IndexCtr2 + 1 Index2(IndexCtr2) = Left(UCase(WrkFileName.Name),2) End If End If End If If Len(MJumpTo) > 1 Then If Left(MJumpTo,2) = Left(UCase(WrkFileName.Name),2) And _ Left(UCase(WrkFileName.Name),3) <> Index3(IndexCtr3) Then FoundIt = "No" For WCtr = 1 To IndexCtr3 If Left(UCase(WrkFileName.Name),3) = Index3(WCtr) Then FoundIt = "Yes" End If Next If FoundIt = "No" And IndexCtr3 <= 100 Then IndexCtr3 = IndexCtr3 + 1 Index3(IndexCtr3) = Left(UCase(WrkFileName.Name),3) End If End If End If '-- ----------------- -- '-- Populate the page -- '-- ----------------- -- If MJumpTo <> "" And Left(UCase(WrkFileName.Name),Len(MJumpTo)) <> MJumpTo Then '-- Ignore This one ElseIf RecNo < (MPageNo - 1) * MResults Then '-- Ignore This one RecNo = RecNo + 1 ElseIf RecNo >= (MPageNo * MResults) Then '-- Ignore This one RecNo = RecNo + 1 MorePages = "Yes" ElseIf RecNo < (MPageNo * MResults) Then FileList(ICtr) = WrkFileName.Name FileType(ICtr) = "Folder" FileSize(ICtr) = WrkFileName.Size ICtr = ICtr + 1 RecNo = RecNo + 1 End If End If Next '-- ----------------------------------------- -- '-- Populate the file list in sub-directories -- '-- ----------------------------------------- -- If FileDirectory <> "" Then For Each WrkFileName In WorkFileList '-- ----------------------------- -- '-- Populate the index with files -- '-- ----------------------------- -- If Left(UCase(WrkFileName.Name),1) <> Index1(IndexCtr1) Then FoundIt = "No" For WCtr = 1 To IndexCtr1 If Left(UCase(WrkFileName.Name),1) = Index1(WCtr) Then FoundIt = "Yes" End If Next If FoundIt = "No" And IndexCtr1 <= 100 Then IndexCtr1 = IndexCtr1 + 1 Index1(IndexCtr1) = Left(UCase(WrkFileName.Name),1) End If End If If Len(MJumpTo) > 0 Then If Left(MJumpTo,1) = Left(UCase(WrkFileName.Name),1) And _ Left(UCase(WrkFileName.Name),2) <> Index2(IndexCtr2) Then FoundIt = "No" For WCtr = 1 To IndexCtr2 If Left(UCase(WrkFileName.Name),2) = Index2(WCtr) Then FoundIt = "Yes" End If Next If FoundIt = "No" And IndexCtr2 <= 100 Then IndexCtr2 = IndexCtr2 + 1 Index2(IndexCtr2) = Left(UCase(WrkFileName.Name),2) End If End If End If If Len(MJumpTo) > 1 Then If Left(MJumpTo,2) = Left(UCase(WrkFileName.Name),2) And _ Left(UCase(WrkFileName.Name),3) <> Index3(IndexCtr3) Then FoundIt = "No" For WCtr = 1 To IndexCtr3 If Left(UCase(WrkFileName.Name),3) = Index3(WCtr) Then FoundIt = "Yes" End If Next If FoundIt = "No" And IndexCtr3 <= 100 Then IndexCtr3 = IndexCtr3 + 1 Index3(IndexCtr3) = Left(UCase(WrkFileName.Name),3) End If End If End If '-- ----------------- -- '-- Populate the page -- '-- ----------------- -- If MJumpTo <> "" And Left(UCase(WrkFileName.Name),Len(MJumpTo)) <> MJumpTo Then '-- Ignore This one ElseIf RecNo < (MPageNo - 1) * MResults Then '-- Ignore This one RecNo = RecNo + 1 ElseIf RecNo >= (MPageNo * MResults) Then '-- Ignore This one RecNo = RecNo + 1 MorePages = "Yes" ElseIf RecNo < (MPageNo * MResults) Then FileList(ICtr) = WrkFileName.Name FileType(ICtr) = "File" FileSize(ICtr) = WrkFileName.Size ICtr = ICtr + 1 RecNo = RecNo + 1 End If Next End If Set WorkFileList = Nothing Set WorkFolderList = Nothing Set WorkFileFolder = Nothing Set WorkFileObject = Nothing 'response.write "e-" & now() & "<br>" '-- ----------------------- -- '-- Sort the jumpto indexes -- '-- ----------------------- -- MDone = "No" WCtr = 1 IndexW(1) = CHR(255) Do While MDone = "No" ICtr = 1 HCtr = 1 MDone = "Yes" Do While Index1(ICtr) <> "" If Index1(ICtr) < IndexW(WCtr) And _ Index1(ICtr) <= Index1(HCtr) Then HCtr = ICtr MDone = "No" End If ICtr = ICtr + 1 Loop If Index1(HCtr) <> CHR(255) Then IndexW(WCtr) = Index1(HCtr) Index1(HCtr) = CHR(255) WCtr = WCtr + 1 IndexW(WCtr) = Chr(255) End If Loop For ICtr = 1 To 100 If IndexW(ICtr) = CHR(255) Then Index1(Ictr) = "" Else Index1(ICtr) = IndexW(ICtr) End If IndexW(ICtr) = "" Next MDone = "No" WCtr = 1 IndexW(1) = CHR(255) Do While MDone = "No" ICtr = 1 HCtr = 1 MDone = "Yes" Do While Index2(ICtr) <> "" If Index2(ICtr) < IndexW(WCtr) And _ Index2(ICtr) <= Index2(HCtr) Then HCtr = ICtr MDone = "No" End If ICtr = ICtr + 1 Loop If Index2(HCtr) <> CHR(255) Then IndexW(WCtr) = Index2(HCtr) Index2(HCtr) = CHR(255) WCtr = WCtr + 1 IndexW(WCtr) = Chr(255) End If Loop For ICtr = 1 To 100 If IndexW(ICtr) = CHR(255) Then Index2(Ictr) = "" Else Index2(ICtr) = IndexW(ICtr) End If IndexW(ICtr) = "" Next MDone = "No" WCtr = 1 IndexW(1) = CHR(255) Do While MDone = "No" ICtr = 1 HCtr = 1 MDone = "Yes" Do While Index3(ICtr) <> "" If Index3(ICtr) < IndexW(WCtr) And _ Index3(ICtr) <= Index3(HCtr) Then HCtr = ICtr MDone = "No" End If ICtr = ICtr + 1 Loop If Index3(HCtr) <> CHR(255) Then IndexW(WCtr) = Index3(HCtr) Index3(HCtr) = CHR(255) WCtr = WCtr + 1 IndexW(WCtr) = Chr(255) End If Loop For ICtr = 1 To 100 If IndexW(ICtr) = CHR(255) Then Index3(Ictr) = "" Else Index3(ICtr) = IndexW(ICtr) End If IndexW(ICtr) = "" Next 'response.write "f-" & now() & "<br>" '-- ----------------- -- '-- Print the indexes -- '-- ----------------- -- Response.Write "<center>" ICtr = 1 Do While Index3(ICtr) <> "" Response.Write "<a href='" & ShortScriptName & ".asp?TopicID=" & TopicID Response.Write "&MJumpTo=" & Index3(ICtr) & _ "&FileDirectory=" & Server.URLEncode(FileDirectory) & "'>" Response.Write Index3(ICtr) Response.Write "</a> " & vbNewLine ICtr = ICtr + 1 Loop If Index3(1) <> "" Then Response.Write "<hr>" End If ICtr = 1 Do While Index2(ICtr) <> "" Response.Write "<a href='" & ShortScriptName & ".asp?TopicID=" & TopicID Response.Write "&MJumpTo=" & Index2(ICtr) & _ "&FileDirectory=" & Server.URLEncode(FileDirectory) & "'>" Response.Write Index2(ICtr) Response.Write "</a> " & vbNewLine ICtr = ICtr + 1 Loop If Index2(1) <> "" Then Response.Write "<hr>" End If ICtr = 1 Do While Index1(ICtr) <> "" Response.Write "<a href='" & ShortScriptName & ".asp?TopicID=" & TopicID Response.Write "&MJumpTo=" & Index1(ICtr) & _ "&FileDirectory=" & Server.URLEncode(FileDirectory) & "'>" Response.Write Index1(ICtr) Response.Write "</a> " & vbNewLine ICtr = ICtr + 1 Loop Response.Write "<a href='" & ShortScriptName & ".asp?TopicID=" & TopicID & _ "&FileDirectory=" & Server.URLEncode(FileDirectory) & "'>All</a> " & vbNewLine Response.Write "</center>" 'response.write "g-" & now() & "<br>" 'response.write "h-" & now() & "<br>" Randomize '-- ------------------------------- -- '-- Show the current page of images -- '-- ------------------------------- -- Response.Write "<center>" Response.Write "<form action='" & ShortScriptName & ".asp' method='POST'>" & vbNewLine Response.Write "<input type='hidden' name='TopicID' value='" & TopicID & "'>" & vbNewLine Response.Write "<input type='hidden' name='MPageNo' value='" & MPageNo & "'>" & vbNewLine Response.Write "<input type='hidden' name='MResults' value='" & MResults & "'>" & vbNewLine Response.Write "<input type='hidden' name='MJumpTo' value='" & MemoView(MJumpTo) & "'>" & vbNewLine Response.Write "<input type='hidden' name='FileDirectory' value='" & MemoView(FileDirectory) & "'>" & vbNewLine Response.Write "<table border='1'>" & vbNewLine Response.Write "<tr>" & vbNewLine Response.Write " <td colspan='3' align='center' bgcolor='#C0C0C0' style='font-weight: bold; font-size: larger'>" & Replace(FileDirectory,"/","\") & "<br>Files</td>" & vbNewLine Response.Write "</tr>" & vbNewLine Response.Write "<tr>" & vbNewLine Response.Write " <td align='left' valign='top' bgcolor='#C0C0C0'>File Name</td>" & vbNewLine Response.Write " <td align='right' valign='top' bgcolor='#C0C0C0'>Size</td>" & vbNewLine Response.Write " <td align='center' valign='top' bgcolor='#C0C0C0'>Delete</td>" & vbNewLine Response.Write "</tr>" & vbNewLine If FileDirectory <> "" Then '-- ----------------- -- '-- Back up to parent -- '-- ----------------- -- Response.Write "<tr>" & vbNewLine Response.Write "<td align='left' valign='top'>" Response.Write "<a href='" & ShortScriptName & ".asp?TopicID=" & TopicID Response.Write "&FileDirectory=" & Server.URLEncode(Left(FileDirectory,InStrRev(FileDirectory,"\")-1)) & "'>" Response.Write "Up To " & Replace(Left(FileDirectory,InStrRev(FileDirectory,"\")-1),"\","/") & "/</a>" & vbNewLine Response.Write "</td>" & vbNewLine Response.Write "<td align='center' valign='top'> </td>" & vbNewLine Response.Write "<td align='center' valign='top'> </td>" & vbNewLine Response.Write "</tr>" & vbNewLine End If For PCtr = 1 To 15 If FileList(PCtr) <> "" Then Response.Write "<tr>" & vbNewLine Response.Write "<td align='left' valign='top'>" If FileType(PCtr) = "Folder" Then Response.Write "<a href='" & ShortScriptName & ".asp?TopicID=" & TopicID Response.Write "&FileDirectory=" & Server.URLEncode(FileDirectory & "\" & FileList(PCtr)) & "'>" Response.Write "Go To /" & FileList(PCtr) & "</a>" & vbNewLine Else Response.Write "<a href='Uploads/" & TopicID & MemoView(Replace(FileDirectory,"\","/")) & "/" Response.Write MemoView(FileList(PCtr)) & "' target='New" & NumberToString(Rnd() * 1000,4,0) & "'>" Response.Write FileList(PCtr) & "</a>" & vbNewLine End If Response.Write "</td>" & vbNewLine Response.Write "<td align='right' valign='top'>" & NumberToString(FileSize(PCtr)/1024,"Float",2) & " k</td>" & vbNewLine Response.Write "<td align='center' valign='top'>" & vbNewLine 'response.write "i-" & now() & "<br>" If FileType(PCtr) = "Folder" Then Response.Write " " Else Response.Write "<input type='Checkbox' name='Delete" & NumberToString(PCtr,4,0) & "' value='" & MemoView(FileList(PCtr)) & "'>" & vbNewLine End If Response.Write "</td>" & vbNewLine Response.Write "</tr>" & vbNewLine End If Next Response.Write "</table>" & vbNewLine Response.Write "<input type='submit' name='B1' value='Delete' ONCLICK=" & CHR(34) & "return Confirm_Delete()" & CHR(34) & ">" & vbNewLine Response.Write "</form>" & vbNewLine 'response.write "j-" & now() & "<br>" '-- --------------------------- -- '-- Now show the paging buttons -- '-- --------------------------- -- Response.Write "<center><br>" & vbNewLine Response.Write "<table cellspacing='0' border='0' width='100%'>" & vbNewLine Response.Write " <tr>" & vbNewLine If MPageNo > 1 Then Response.Write "<td valign='top' align='center'>" & vbNewLine Response.Write "<form method='POST' action='" & ShortScriptName & ".asp'>" & vbNewLine Response.Write "<input type='hidden' name='TopicID' value='" & TopicID & "'>" & vbNewLine Response.Write "<input type='hidden' name='MResults' value='" & MResults & "'>" & vbNewLine Response.Write "<input type='hidden' name='MPageNo' value='" & MPageNo - 1 & "'>" & vbNewLine Response.Write "<input type='hidden' name='MJumpTo' value='" & MemoView(MJumpTo) & "'>" & vbNewLine Response.Write "<input type='hidden' name='FileDirectory' value='" & MemoView(FileDirectory) & "'>" & vbNewLine Response.Write "<input type='submit' name='B3' value='Previous Page'>" & vbNewLine Response.Write "</form>" & vbNewLine Response.Write "</td>" & vbNewLine End If If MorePages = "Yes" Then Response.Write "<td valign='top' align='center'>" & vbNewLine Response.Write "<form method='POST' action='" & ShortScriptName & ".asp'>" & vbNewLine Response.Write "<input type='hidden' name='TopicID' value='" & TopicID & "'>" & vbNewLine Response.Write "<input type='hidden' name='MResults' value='" & MResults & "'>" & vbNewLine Response.Write "<input type='hidden' name='MPageNo' value='" & MPageNo + 1 & "'>" & vbNewLine Response.Write "<input type='hidden' name='MJumpTo' value='" & MemoView(MJumpTo) & "'>" & vbNewLine Response.Write "<input type='hidden' name='FileDirectory' value='" & MemoView(FileDirectory) & "'>" & vbNewLine Response.Write "<input type='submit' name='B3' value='Next Page'>" & vbNewLine Response.Write "</form>" & vbNewLine Response.Write "</td>" & vbNewLine End If Response.Write "</tr>" & vbNewLine Response.Write "</table>" & vbNewLine Response.Write "</center>" 'response.write "k-" & now() & "<br>" Call SecurityClose() BBS_Conn.Close Set BBS_Conn = Nothing %> <!--#INCLUDE FILE="footer.inc"--> </body> </html>
VBScript Code after Obfuscation
This is the actual obfuscated VBScript code. It was obfuscated reserving names required for external API access. Compared to the orginal, notice that VBScript comments are gone, names have been scrambled, standard constants are replaced by their value, and literal constants have had their radix twiddled. The obfuscator uses a special list provided by the user to define names that should be preserved, ensuring that public interfaces and accesses to public libraries remain valid (e.g,. "document", "write").
<!--#INCLUDE FILE="BBSAuth.inc"--> <HTML> <HEAD> <!--#INCLUDE FILE="BBSRoutines.inc"--> <!--#INCLUDE FILE="CommonRoutines.inc"--> <!--#INCLUDE FILE="dbConnect_BBS.inc"--> <!--#INCLUDE FILE="CheckSecurity.inc"--> <title><%= O3z("Topic Title")&" Topic File Manager" %> </title> <!--#INCLUDE FILE="header.inc"--> </HEAD> <BODY> <center><h2><%= O3z.l40("Topic Title") %> - File Manager</h2> <center> <a href="BBSAdmin.asp?TopicID=<%= O40 %> ">Topic Admin</a> </center> <% On Error GoTo 0 l41 = O41()&"\Uploads\"&O40 If Not isempty(request.form("FileDirectory")) Then O42 = request.form("FileDirectory") ElseIf Not isempty(request.l43("FileDirectory")) Then O42 = request.l43("FileDirectory") Else O42 = "" End If O42 = O43(O42,".","") If request.form("B1") = "Delete" Then Set l44 = O44.createobject("Scripting.FileSystemObject") For Each l45 In request.form If ucase(left(l45,6)) = "DELETE" Then response.write "Deleting "&O43(O42,"\","/")&"/"&request.form(l45)&"<br>" On Error Resume Next l44.l46(l41&O42&"\"&request.form(l45)) On Error GoTo 0 End If Next Set l44 = Nothing End If If Not isempty(request.l43("MPageNo")) Then O46 = request.l43("MPageNo") ElseIf Not isempty(request.form("MPageNo")) Then O46 = request.form("MPageNo") Else O46 = 1 End If If Not isempty(request.l43("MJumpTo")) Then l47 = request.l43("MJumpTo") ElseIf Not isempty(request.form("MJumpTo")) Then l47 = request.form("MJumpTo") Else l47 = "" End If O47 = &O17 Dim l48(&O145) Dim O48(&O145) Dim l49(&O145) Dim O49(&O145) For l4a = 1 To &O145 l48(l4a) = "" O48(l4a) = "" l49(l4a) = "" O49(l4a) = "" Next Dim O4a(&O17) Dim l4b(&O17) Dim O4b(&O17) For l4a = 1 To &O17 O4a(l4a) = "" l4b(l4a) = "" O4b(l4a) = 0 Next l4c = 0 l4a = 1 O4c = 0 l4d = 0 O4d = 0 l4e = "No" Set l44 = O44.createobject("Scripting.FileSystemObject") Set O4e = l44.l4f(l41&"\"&O42) Set O4f = O4e.l4g Set O4g = O4e.l4h For Each O4h In O4f If left(O4h.name,1) <> "_" Then If left(ucase(O4h.name),1) <> l48(O4c) Then l4i = "No" For O4i = 1 To O4c If left(ucase(O4h.name),1) = l48(O4i) Then l4i = "Yes" End If Next If l4i = "No" And O4c <= &O144 Then O4c = O4c+1 l48(O4c) = left(ucase(O4h.name),1) End If End If If Len(l47) > 0 Then If left(l47,1) = left(ucase(O4h.name),1) And left(ucase(O4h.name),2) <> O48(l4d) Then l4i = "No" For O4i = 1 To l4d If left(ucase(O4h.name),2) = O48(O4i) Then l4i = "Yes" End If Next If l4i = "No" And l4d <= &O144 Then l4d = l4d+1 O48(l4d) = left(ucase(O4h.name),2) End If End If End If If Len(l47) > 1 Then If left(l47,2) = left(ucase(O4h.name),2) And left(ucase(O4h.name),3) <> l49(O4d) Then l4i = "No" For O4i = 1 To O4d If left(ucase(O4h.name),3) = l49(O4i) Then l4i = "Yes" End If Next If l4i = "No" And O4d <= &O144 Then O4d = O4d+1 l49(O4d) = left(ucase(O4h.name),3) End If End If End If If l47 <> "" And left(ucase(O4h.name),Len(l47)) <> l47 Then ElseIf l4c <(O46-1)*O47 Then l4c = l4c+1 ElseIf l4c >=(O46*O47) Then l4c = l4c+1 l4e = "Yes" ElseIf l4c <(O46*O47) Then O4a(l4a) = O4h.name l4b(l4a) = "Folder" O4b(l4a) = O4h.l4j l4a = l4a+1 l4c = l4c+1 End If End If Next If O42 <> "" Then For Each O4h In O4g If left(ucase(O4h.name),1) <> l48(O4c) Then l4i = "No" For O4i = 1 To O4c If left(ucase(O4h.name),1) = l48(O4i) Then l4i = "Yes" End If Next If l4i = "No" And O4c <= &O144 Then O4c = O4c+1 l48(O4c) = left(ucase(O4h.name),1) End If End If If Len(l47) > 0 Then If left(l47,1) = left(ucase(O4h.name),1) And left(ucase(O4h.name),2) <> O48(l4d) Then l4i = "No" For O4i = 1 To l4d If left(ucase(O4h.name),2) = O48(O4i) Then l4i = "Yes" End If Next If l4i = "No" And l4d <= &O144 Then l4d = l4d+1 O48(l4d) = left(ucase(O4h.name),2) End If End If End If If Len(l47) > 1 Then If left(l47,2) = left(ucase(O4h.name),2) And left(ucase(O4h.name),3) <> l49(O4d) Then l4i = "No" For O4i = 1 To O4d If left(ucase(O4h.name),3) = l49(O4i) Then l4i = "Yes" End If Next If l4i = "No" And O4d <= &O144 Then O4d = O4d+1 l49(O4d) = left(ucase(O4h.name),3) End If End If End If If l47 <> "" And left(ucase(O4h.name),Len(l47)) <> l47 Then ElseIf l4c <(O46-1)*O47 Then l4c = l4c+1 ElseIf l4c >=(O46*O47) Then l4c = l4c+1 l4e = "Yes" ElseIf l4c <(O46*O47) Then O4a(l4a) = O4h.name l4b(l4a) = "File" O4b(l4a) = O4h.l4j l4a = l4a+1 l4c = l4c+1 End If Next End If Set O4g = Nothing Set O4f = Nothing Set O4e = Nothing Set l44 = Nothing O4j = "No" O4i = 1 O49(1) = chr(&O377) Do While O4j = "No" l4a = 1 l4k = 1 O4j = "Yes" Do While l48(l4a) <> "" If l48(l4a) < O49(O4i) And l48(l4a) <= l48(l4k) Then l4k = l4a O4j = "No" End If l4a = l4a+1 Loop If l48(l4k) <> chr(&O377) Then O49(O4i) = l48(l4k) l48(l4k) = chr(&O377) O4i = O4i+1 O49(O4i) = chr(&O377) End If Loop For l4a = 1 To &O144 If O49(l4a) = chr(&O377) Then l48(l4a) = "" Else l48(l4a) = O49(l4a) End If O49(l4a) = "" Next O4j = "No" O4i = 1 O49(1) = chr(&O377) Do While O4j = "No" l4a = 1 l4k = 1 O4j = "Yes" Do While O48(l4a) <> "" If O48(l4a) < O49(O4i) And O48(l4a) <= O48(l4k) Then l4k = l4a O4j = "No" End If l4a = l4a+1 Loop If O48(l4k) <> chr(&O377) Then O49(O4i) = O48(l4k) O48(l4k) = chr(&O377) O4i = O4i+1 O49(O4i) = chr(&O377) End If Loop For l4a = 1 To &O144 If O49(l4a) = chr(&O377) Then O48(l4a) = "" Else O48(l4a) = O49(l4a) End If O49(l4a) = "" Next O4j = "No" O4i = 1 O49(1) = chr(&O377) Do While O4j = "No" l4a = 1 l4k = 1 O4j = "Yes" Do While l49(l4a) <> "" If l49(l4a) < O49(O4i) And l49(l4a) <= l49(l4k) Then l4k = l4a O4j = "No" End If l4a = l4a+1 Loop If l49(l4k) <> chr(&O377) Then O49(O4i) = l49(l4k) l49(l4k) = chr(&O377) O4i = O4i+1 O49(O4i) = chr(&O377) End If Loop For l4a = 1 To &O144 If O49(l4a) = chr(&O377) Then l49(l4a) = "" Else l49(l4a) = O49(l4a) End If O49(l4a) = "" Next response.write "<center>" l4a = 1 Do While l49(l4a) <> "" response.write "<a href='"&O4k&".asp?TopicID="&O40 response.write "&MJumpTo="&l49(l4a)&"&FileDirectory="&O44.l4l(O42)&"'>" response.write l49(l4a) response.write "</a> "&vbnewline l4a = l4a+1 Loop If l49(1) <> "" Then response.write "<hr>" End If l4a = 1 Do While O48(l4a) <> "" response.write "<a href='"&O4k&".asp?TopicID="&O40 response.write "&MJumpTo="&O48(l4a)&"&FileDirectory="&O44.l4l(O42)&"'>" response.write O48(l4a) response.write "</a> "&vbnewline l4a = l4a+1 Loop If O48(1) <> "" Then response.write "<hr>" End If l4a = 1 Do While l48(l4a) <> "" response.write "<a href='"&O4k&".asp?TopicID="&O40 response.write "&MJumpTo="&l48(l4a)&"&FileDirectory="&O44.l4l(O42)&"'>" response.write l48(l4a) response.write "</a> "&vbnewline l4a = l4a+1 Loop response.write "<a href='"&O4k&".asp?TopicID="&O40&"&FileDirectory="&O44.l4l(O42)&"'>All</a> "&vbnewline response.write "</center>" Randomize response.write "<center>" response.write "<form action='"&O4k&".asp' method='POST'>"&vbnewline response.write "<input type='hidden' name='TopicID' value='"&O40&"'>"&vbnewline response.write "<input type='hidden' name='MPageNo' value='"&O46&"'>"&vbnewline response.write "<input type='hidden' name='MResults' value='"&O47&"'>"&vbnewline response.write "<input type='hidden' name='MJumpTo' value='"&O4l(l47)&"'>"&vbnewline response.write "<input type='hidden' name='FileDirectory' value='"&O4l(O42)&"'>"&vbnewline response.write "<table border='1'>"&vbnewline response.write "<tr>"&vbnewline response.write " <td colspan='3' align='center' bgcolor='#C0C0C0' style='font-weight: bold; font-size: larger'>"&O43(O42,"/","\")&"<br>Files</td>"&vbnewline response.write "</tr>"&vbnewline response.write "<tr>"&vbnewline response.write " <td align='left' valign='top' bgcolor='#C0C0C0'>File Name</td>"&vbnewline response.write " <td align='right' valign='top' bgcolor='#C0C0C0'>Size</td>"&vbnewline response.write " <td align='center' valign='top' bgcolor='#C0C0C0'>Delete</td>"&vbnewline response.write "</tr>"&vbnewline If O42 <> "" Then response.write "<tr>"&vbnewline response.write "<td align='left' valign='top'>" response.write "<a href='"&O4k&".asp?TopicID="&O40 response.write "&FileDirectory="&O44.l4l(left(O42,instrrev(O42,"\")-1))&"'>" response.write "Up To "&O43(left(O42,instrrev(O42,"\")-1),"\","/")&"/</a>"&vbnewline response.write "</td>"&vbnewline response.write "<td align='center' valign='top'> </td>"&vbnewline response.write "<td align='center' valign='top'> </td>"&vbnewline response.write "</tr>"&vbnewline End If For l4m = 1 To &O17 If O4a(l4m) <> "" Then response.write "<tr>"&vbnewline response.write "<td align='left' valign='top'>" If l4b(l4m) = "Folder" Then response.write "<a href='"&O4k&".asp?TopicID="&O40 response.write "&FileDirectory="&O44.l4l(O42&"\"&O4a(l4m))&"'>" response.write "Go To /"&O4a(l4m)&"</a>"&vbnewline Else response.write "<a href='Uploads/"&O40&O4l(O43(O42,"\","/"))&"/" response.write O4l(O4a(l4m))&"' target='New"&O4m(Rnd()*&O1750,4,0)&"'>" response.write O4a(l4m)&"</a>"&vbnewline End If response.write "</td>"&vbnewline response.write "<td align='right' valign='top'>"&O4m(O4b(l4m)/&O2000,"Float",2)&" k</td>"&vbnewline response.write "<td align='center' valign='top'>"&vbnewline If l4b(l4m) = "Folder" Then response.write " " Else response.write "<input type='Checkbox' name='Delete"&O4m(l4m,4,0)&"' value='"&O4l(O4a(l4m))&"'>"&vbnewline End If response.write "</td>"&vbnewline response.write "</tr>"&vbnewline End If Next response.write "</table>"&vbnewline response.write "<input type='submit' name='B1' value='Delete' ONCLICK="&chr(&O42)&"return Confirm_Delete()"&chr(&O42)&">"&vbnewline response.write "</form>"&vbnewline response.write "<center><br>"&vbnewline response.write "<table cellspacing='0' border='0' width='100%'>"&vbnewline response.write " <tr>"&vbnewline If O46 > 1 Then response.write "<td valign='top' align='center'>"&vbnewline response.write "<form method='POST' action='"&O4k&".asp'>"&vbnewline response.write "<input type='hidden' name='TopicID' value='"&O40&"'>"&vbnewline response.write "<input type='hidden' name='MResults' value='"&O47&"'>"&vbnewline response.write "<input type='hidden' name='MPageNo' value='"&O46-1&"'>"&vbnewline response.write "<input type='hidden' name='MJumpTo' value='"&O4l(l47)&"'>"&vbnewline response.write "<input type='hidden' name='FileDirectory' value='"&O4l(O42)&"'>"&vbnewline response.write "<input type='submit' name='B3' value='Previous Page'>"&vbnewline response.write "</form>"&vbnewline response.write "</td>"&vbnewline End If If l4e = "Yes" Then response.write "<td valign='top' align='center'>"&vbnewline response.write "<form method='POST' action='"&O4k&".asp'>"&vbnewline response.write "<input type='hidden' name='TopicID' value='"&O40&"'>"&vbnewline response.write "<input type='hidden' name='MResults' value='"&O47&"'>"&vbnewline response.write "<input type='hidden' name='MPageNo' value='"&O46+1&"'>"&vbnewline response.write "<input type='hidden' name='MJumpTo' value='"&O4l(l47)&"'>"&vbnewline response.write "<input type='hidden' name='FileDirectory' value='"&O4l(O42)&"'>"&vbnewline response.write "<input type='submit' name='B3' value='Next Page'>"&vbnewline response.write "</form>"&vbnewline response.write "</td>"&vbnewline End If response.write "</tr>"&vbnewline response.write "</table>"&vbnewline response.write "</center>" Call l4n() O4n.close Set O4n = Nothing %> <!--#INCLUDE FILE="footer.inc"--> </body> </html>
Obfuscated Symbol Cross Reference
The obfuscator produces a cross reference mapping obfuscated symbols to the orginal symbols, so that obfuscated code in the field can still be decoded if necessary. Notice that certain symbols are preserved (we don't show them all) to enable access to the windowing environment in which this script runs. (We provide a complete preserved word list for using with the obfuscator as part of the product). In fact, by reversing this map and running the obfuscator, you can reproduce an equivalent of the starting source file, without, of course, the comments. Of course, you can do that only if you have the map.
appfilepath -> O41 bbs_conn -> O4n deletefile -> l46 fields -> l40 filedirectory -> O42 filelist -> O4a files -> l4h filesize -> O4b filetype -> l4b foundit -> l4i getfolder -> l4f hctr -> l4k ictr -> l4a index1 -> l48 index2 -> O48 index3 -> l49 indexctr1 -> O4c indexctr2 -> l4d indexctr3 -> O4d indexw -> O49 key -> l45 mdone -> O4j memoview -> O4l mjumpto -> l47 morepages -> l4e mpageno -> O46 mresults -> O47 numbertostring -> O4m pctr -> l4m querystring -> l43 recno -> l4c replace -> O43 sec_topics -> O3z securityclose -> l4n server -> O44 shortscriptname -> O4k size -> l4j subfolders -> l4g topicid -> O40 topicpath -> l41 urlencode -> l4l wctr -> O4i workfilefolder -> O4e workfilelist -> O4g workfileobject -> l44 workfolderlist -> O4f wrkfilename -> O4h