{"id":1504,"date":"2014-04-12T08:21:39","date_gmt":"2014-04-12T12:21:39","guid":{"rendered":"https:\/\/infotechguy.net\/?p=1504"},"modified":"2025-02-22T12:47:08","modified_gmt":"2025-02-22T17:47:08","slug":"ip-blocklist-to-cisco-asa-access-list-vbscript","status":"publish","type":"post","link":"https:\/\/infotechguy.net\/?p=1504","title":{"rendered":"Windows &#8212; VBscript IP Blocklist to Cisco ASA access-list"},"content":{"rendered":"<p><strong>**This article is old, <a href=\"https:\/\/infotechguy.net\/blocklist2acl-2-0-released\/\">see new Blocklist2ACL 2.0 project<\/a>.**<\/strong><\/p>\n<hr \/>\n<p>Hi folks! A little script I wrote with VBscript that pulls in IP blocklists from different third party URLs and converts them in to well-formatted Cisco ASA access-lists. \u00a0The idea stemed from the old days of running PeerGuardian and Moblock to inhibit known malicious or unwanted IP address from attempting to connect and stopping them right then and there on your computer&#8217;s firewall. It is similar to URL Blocklists that focus on URLs and Domain Names, but instead filering is done by IPs only. I wanted to take this IP Blocklist concept that has primarly been done at the Desktop Fireweall layer and abstract it to the Network Firewall. In this case a Cisco ASA that way all traffic that any connection that crosses the Firewall will be filtered by this list.<\/p>\n<p>The script is fairly straightforward and the source code is below so you may look through it. Feel free to improve upon it and share it with others. I have a few years of writing vbscripts, but am in no way a professional coder. Also, if you by any chance know Linux Shell or Qt and could potentially port this to Linux or even better JAVA for platform independence, let me know!! That would be sweet.<\/p>\n<h4>Video Tutorial<\/h4>\n<p><iframe loading=\"lazy\" src=\"\/\/www.youtube.com\/embed\/-z2ZAFoHhmM?feature=player_detailpage\" width=\"640\" height=\"360\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p><!--more--><\/p>\n<h4>Screenshot<\/h4>\n<p><img decoding=\"async\" src=\"http:\/\/s6.postimg.org\/7qe246dtt\/blocklist_Converter.png\" alt=\"\" \/><br \/>\n<img decoding=\"async\" src=\"http:\/\/s6.postimg.org\/3vao1luo1\/blocklist_Converter_Finished.png\" alt=\"\" \/><\/p>\n<h4>The Blocklists<\/h4>\n<p>Each blocklist is sourced by a third party maintainer, and distributed by them. I take no responsibilities for their content or any ownership of the content. Please review their usage terms.<\/p>\n<p>Some blocklists require conversion from their native format to CIDR format for easy processing into the access-list format. To accomplish this, my script utilizes a web based Form hosted by <a href=\"http:\/\/bluetack.co.uk\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bluetrack<\/a>, located here.(<a href=\"http:\/\/www.bluetack.co.uk\/converter\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.bluetack.co.uk\/converter\/<\/a>).<\/p>\n<p>Another shout out is to the writer of the following scripts on CDIR and subnet conversion, located here (<a href=\"http:\/\/www.indented.co.uk\/2008\/10\/21\/vbscript-subnet-math\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.indented.co.uk\/2008\/10\/21\/vbscript-subnet-math\/<\/a>) THANK YOU!!<\/p>\n<h4>GZIP Requirement<\/h4>\n<p>Lastly, you will need gzip.exe to un-gzip some of the blocklists that are downloaded as gzipped files. Luckly gzip is a GNU Free Software Foundation and can be downloaded via <a href=\"http:\/\/gnuwin32.sourceforge.net\/packages\/gzip.htm\">http:\/\/gnuwin32.sourceforge.net\/packages\/gzip.htm<\/a>. Click on the Binaries ZIP link to download it from SourceForge. Look for the <strong>gzip.exe<\/strong><strong> executable in the bin folder of the ZIP file. Copy this into the same directory as the HTA file.<br \/>\n<a href=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/ACLfolder.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3433\" src=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/ACLfolder-300x240.png\" alt=\"\" width=\"568\" height=\"454\" srcset=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/ACLfolder-300x240.png 300w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/ACLfolder-768x614.png 768w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/ACLfolder.png 800w\" sizes=\"auto, (max-width: 568px) 100vw, 568px\" \/><\/a><br \/>\n<\/strong><\/p>\n<h4>Source Code: <a href=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Blocklist2ACL-v3.zip\">Blocklist2ACL-v3<\/a><\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"visualbasic\">&lt;!--written by thejimmahknows--&gt;;\n\nBlocklist2ACL by thejimmahknows&amp;lt;script&amp;gt;\/\/ &amp;lt;![CDATA[\n         Sub Window_onLoad\n            window.resizeTo 675,875\n        End Sub \n        Sub Sleep(Msecs)\n            'needed cause no Wscript object for HTA files\n            Set SleepFSO = CreateObject(\"Scripting.FileSystemObject\")\n            If SleepFSO.FileExists(\"sleeper.vbs\")=False Then\n                Set objOutputSleeperFile = SleepFSO.CreateTextFile(\"sleeper.vbs\", True)\n                objOutputSleeperFile.Write \"wscript.sleep Wscript.Arguments(0)\"\n                objOutputSleeperFile.Close\n            End If\n            CreateObject(\"Wscript.Shell\").run \"sleeper.vbs \" &amp;amp; Msecs,1 , True\n        \n        \n        End Sub\n    \n        Set WshShell = CreateObject(\"WScript.Shell\")\n        currPath = WshShell.CurrentDirectory\n        'currPath =  CreateObject(\"Scripting.FileSystemObject\").GetParentFolderName(WScript.ScriptFullName)\n        \n\n        'constants and URLs\n        Const ForReading = 1\n        Const ForWriting = 2\n        Const emergingURL = \"http:\/\/rules.emergingthreats.net\/fwrules\/emerging-Block-IPs.txt\"\n        Const level1URL = \"http:\/\/list.iblocklist.com\/?list=bt_level1&amp;amp;fileformat=p2p&amp;amp;archiveformat=gz\"\n        Const sigmaprojectsURL = \"http:\/\/blocklist.sigmaprojects.org\/api.cfc?method=getlist&amp;amp;lists=webexploit,spyware,anti-infringement,spammers\"\n        Const dshieldURL  = \"http:\/\/feeds.dshield.org\/block.txt\"\n\n        Dim outFile : outFile = currPath &amp;amp; \"test_output.txt\"\n        Dim emergingFile : emergingFile = currPath &amp;amp; \"emergingIPs.txt\"\n        Dim level1FileGZ : level1FileGZ = currPath &amp;amp; \"level1.txt.gz\"\n        Dim level1File : level1File = currPath &amp;amp; \"level1.txt\"\n        Dim sigmaprojectsFileGZ: sigmaprojectsFileGZ = currPath &amp;amp; \"sigmaprojectsIPs.txt.gz\" \n        Dim sigmaprojectsFile: sigmaprojectsFile = currPath &amp;amp; \"sigmaprojectsIPs.txt\" \n        Dim dshieldFile: dshieldFile = currPath &amp;amp; \"dshieldIPs.txt\"\n        Dim mainOutputStr, ACL_NAME, logSuffix\n\n        Sub WGET(URL, DownloadLocation)\n            dim xHttp: Set xHttp = createobject(\"MSXML2.ServerXMLHTTP.6.0\")\n            dim bStrm: Set bStrm = createobject(\"Adodb.Stream\")\n            xHttp.Open \"GET\", URL , False\n            xHttp.Send\n\n            with bStrm\n                .type = 1 '\/\/binary\n                .open\n                .write xHttp.responseBody\n                .savetofile DownloadLocation, 2 '\/\/overwrite\n            end with\n\n        End Sub\n\n        Sub unGZ(filePathGZ, filePath)\n                Set objFSO = CreateObject(\"Scripting.FileSystemObject\")\n                execPath = chr(34) &amp;amp; currPath &amp;amp; \"gzip.exe\" &amp;amp; chr(34) &amp;amp; \"-dqf \" &amp;amp; chr(34) &amp;amp; filePathGZ &amp;amp;  chr(34)\n                \n                'run gzip uncompress\n                WshShell.Run execPath \n                \n                'loop until file exists from previous call\n                fileExist = False\n                Do Until fileExists = True\n                    If objFSO.fileExists (filePath) Then\n                        fileExists = True\n                    Else\n                        Sleep(2000)\n                    End If\n                Loop\n        End Sub\n\n        Function TrimFile(file)\n            Set objFSO = CreateObject(\"Scripting.FileSystemObject\")\n            Set objFile = objFSO.OpenTextFile(file, ForReading)\n\n            Do Until objFile.AtEndOfStream\n                strLine = objFile.Readline\n                strLine = Trim(strLine)\n                If Len(strLine) &amp;gt; 0 Then\n                    strNewContents = strNewContents &amp;amp; strLine &amp;amp; vbCrLf\n                End If\n            Loop\n\n            objFile.Close\n\n            Set objFile = objFSO.OpenTextFile(file, ForWriting)\n            objFile.Write strNewContents\n            objFile.Close\n        End Function\n\n        Function BlueTrackConverterPG2CIDR(inLine) 'only for P2P format blocklist files\n            Dim  objIE, sourceItem\n            \n            sourceItem = inLine\n            \n            Set objIE = CreateObject(\"InternetExplorer.Application\")\n            objIE.visible = False\n            objIE.Navigate \"http:\/\/www.bluetack.co.uk\/converter\/\"\n\n            Do Until objIE.readyState = 4 : Sleep(200) : Loop\n\n            objIE.Document.getElementByID(\"fromformat\").value = \"pg\"\n            objIE.Document.getElementByID(\"toformat\").value = \"shorewall\"\n            objIE.Document.getElementByID(\"denyonly\").value = \"yes\"\n            objIE.Document.getElementByID(\"listCleaning\").value = \"mergeoverlaps\"\n            objIE.Document.getElementByID(\"sortBy\").value = \"IP\"\n            \n            'paste in IE forum\n            objIE.Document.getElementByID(\"sfrom\").value = sourceItem\n            Sleep(200)\n\n                For Each INPUT in objIE.Document.getElementsByTagName(\"input\")\n                    If INPUT.Value = \"Convert\" Then\n                        INPUT.Click\n                        Exit For\n                    End If\n                Next\n            \n            'return value\n            Sleep(200)\n            BlueTrackConverterPG2CIDR = objIE.Document.getElementByID(\"sto\").value \n            \n            objIE.Quit\n            Set objIE = Nothing\n        End Function\n\n\n        Function BlueTrackConverterDSHIELD2CIDR(inStr) 'only for DSHIELD conversions\n            Dim  objIE, runStr\n            \n            Set objIE = CreateObject(\"InternetExplorer.Application\")\n            objIE.visible = False\n            objIE.Navigate \"http:\/\/www.bluetack.co.uk\/converter\/\"\n\n            Do Until objIE.readyState = 4 : Sleep(200) : Loop\n\n            objIE.Document.getElementByID(\"fromformat\").value = \"dshield\"\n            objIE.Document.getElementByID(\"toformat\").value = \"shorewall\"\n            objIE.Document.getElementByID(\"denyonly\").value = \"yes\"\n            objIE.Document.getElementByID(\"listCleaning\").value = \"mergeoverlaps\"\n            objIE.Document.getElementByID(\"sortBy\").value = \"IP\"\n            \n            \n                'paste in IE forum\n                objIE.Document.getElementByID(\"sfrom\").value = inStr\n\n                For Each INPUT in objIE.Document.getElementsByTagName(\"input\")\n                    If INPUT.Value = \"Convert\" Then\n                        INPUT.Click\n                        Exit For\n                    End If\n                Next\n            \n            'return outputStr\n            BlueTrackConverterDSHIELD2CIDR =  objIE.Document.getElementByID(\"sto\").value\n            \n            objIE.Quit\n            Set objIE = Nothing\n        End Function\n\n        Function MaskLengthToIP(intMask)\n          ' Converts a mask length to the decimal format mask\n         \n          Dim arrOctets(3)\n          Dim intFullOctets : intFullOctets = (intMask - (intMask Mod 8)) \/ 8\n          Dim i\n          For i = 0 To (intFullOctets - 1)\n            arrOctets(i) = \"255\"\n          Next\n         \n          Dim intPartialOctetLen : intPartialOctetLen = intMask Mod 8\n          Dim j\n          If intPartialOctetLen &amp;gt; 0 Then\n            Dim intOctet\n            For j = 0 To (intPartialOctetLen - 1)\n              intOctet = intOctet + 2^(7 - j)\n            Next\n            arrOctets(i) = intOctet : i = i + 1\n          End If\n         \n          For j = i To 3\n            arrOctets(j) = \"0\"\n          Next\n         \n          MaskLengthToIP = Join(arrOctets, \".\")\n        End Function\n\n        Function CIDR2ACL(strLine, aclNameStr)\n            'check for blank line\n            If  Trim(strLine) &amp;lt;&amp;gt; \"\" Then\n                If InStr(strLine, \"\/\")  &amp;gt; 0  Then\n                        pos_start = InStr(strLine, \"\/\") \n                        \n                        'get ip only\n                        tmpLen = Len(strLine)\n                        tmpIP = Mid(strLine, 1, pos_start - 1)\n                        \n                        'need to convert slash to netmask\n                        subStr = Mid(strLine, pos_start +1 )\n                        maskInt = CInt(subStr)\n                        subMaskStr = MaskLengthToIP(maskInt)\n                        \n                        'return values\n                        CIDR2ACL = \"access-list\" &amp;amp; \" \" &amp;amp; aclNameStr &amp;amp; \" \" &amp;amp; \"deny ip\" &amp;amp; \" \" &amp;amp; tmpIP &amp;amp; \" \" &amp;amp; subMaskStr &amp;amp; \" \" &amp;amp; \"any\" &amp;amp; logSuffix &amp;amp; vbCrLf\n                Else\n                        tmpIP = strLine\n                        subMaskStr = \"255.255.255.255\"\n                        \n                        'return values\n                        CIDR2ACL = \"access-list\" &amp;amp; \" \" &amp;amp; aclNameStr &amp;amp; \" \" &amp;amp; \"deny ip\" &amp;amp; \" \" &amp;amp; tmpIP &amp;amp; \" \" &amp;amp; subMaskStr &amp;amp; \" \" &amp;amp; \"any\" &amp;amp; logSuffix &amp;amp; vbCrLf\n                End If\n            End If\n\n        End Function\n\n        Sub dshieldSUB\n            Set objFSO = CreateObject(\"Scripting.FileSystemObject\")\n            Set objFile = objFSO.OpenTextFile(dshieldFile, ForReading)\n\n            'readall from file\n            Dim tStr, strText\n            strText = \"\"\n            tStr = BlueTrackConverterDSHIELD2CIDR(objFile.ReadAll)\n\n            arrLines = Split(tStr, vbCrLf)\n                For Each line in arrLines\n                    strText = strText &amp;amp; CIDR2ACL(line, ACL_NAME)\n                Next\n\n            mainOutputStr = mainOutputStr &amp;amp; strText \n            objFile.Close\n        End Sub\n\n        Sub emergingSUB()\n            Set objFSO = CreateObject(\"Scripting.FileSystemObject\")\n            Set objFile = objFSO.OpenTextFile(emergingFile, ForReading)\n            '\n            Do Until objFile.AtEndOfStream\n                strText = objFile.ReadLine\n                If strText = chr(127) Then\n                    'do nothing\n                ElseIf InStr(strText, \"#\") &amp;gt; 0 Then\n                    'do nothing\n                Else\n                    'convert CIDR\n                    strText = CIDR2ACL(strText, ACL_NAME)\n                    \n                    mainOutputStr = mainOutputStr &amp;amp; strText \n                End If\n\n            Loop\n            objFile.Close\n        End Sub\n\n        Sub sigmaprojectsSUB()\n            Set objFSO = CreateObject(\"Scripting.FileSystemObject\")\n            Set objFile = objFSO.OpenTextFile(sigmaprojectsFile, ForReading)\n            \n            Do Until objFile.AtEndOfStream\n                strText = objFile.ReadLine\n                strText = CIDR2ACL(strText, ACL_NAME)\n                mainOutputStr = mainOutputStr &amp;amp; strText \n            Loop\n\n        End Sub\n\n        Sub level1SUB()\n            Dim tStr, strTextLine, arrLines, runningStr, c\n            Set objFSO = CreateObject(\"Scripting.FileSystemObject\")\n            Set objTextFile = objFSO.OpenTextFile(level1File, ForReading)\n            c = 0\n            \n            Do Until objTextFile.AtEndOfStream\n            \n                strTextLine = objTextFile.ReadLine\n                \n                If InStr(strTextLine, \"#\") &amp;gt; 0 Then\n                    'do nothing\n                ElseIf  InStr(strTextLine, \" \")  &amp;gt; 0  Then\n                    'do nothing\n                ElseIf  InStr(strTextLine, \"\")  &amp;gt; 0  Then\n                    'do nothing\n                Else\n                    \n                    If c &amp;gt; 7500 Then\n                        'execute 100 items at a time\n                        tStr = tStr &amp;amp; BlueTrackConverterPG2CIDR(runningStr) &amp;amp; vbCrLf\n                        'reset counter\n                        c=0\n                        runningStr = \"\"\n                    ElseIf  objTextFile.AtEndOfStream = True Then\n                        tStr = tStr &amp;amp; BlueTrackConverterPG2CIDR(runningStr) &amp;amp; vbCrLf\n                        msgbox(tStr)\t\n                    Else\n                        runningStr = runningStr &amp;amp; strTextLine &amp;amp; vbCrLf\n                        'increment counter\t\n                        c = c + 1\n                    End If\n                End If\n            Loop\n            \n\n            arrLines = Split(tStr, vbCrLf)\n            For Each line in arrLines\n                strText = strText &amp;amp; CIDR2ACL(line, ACL_NAME)\n            Next\n            \n            \n            \n            mainOutputStr = mainOutputStr &amp;amp; strText \n            'clean up\n            objTextFile.Close\n            \n        End Sub\n\n    Sub cleanUP()\n        'dump to file\n        Set objFSO = CreateObject(\"Scripting.FileSystemObject\")\n        'Set objOutputFile = objFSO.CreateTextFile(outFile)\n        'objOutputFile.Write mainOutputStr\n        \n        'clear and output access-lists\n        document.GetElementById(\"outputTextarea\").Value = mainOutputStr\n            \n\n        'objOutputFile.Close\n\n        'delete files dshieldIPs.txt , sigmaprojects.txt , emergingIPs\n        Set delFSO = CreateObject(\"Scripting.FileSystemObject\")\n\n        If delFSO.FileExists(dshieldFile) Then\n            delFSO.DeleteFile dshieldFile\n        End If\n        If delFSO.FileExists(sigmaprojectsFile) Then\n            delFSO.DeleteFile sigmaprojectsFile\n        End If\n        If delFSO.FileExists(emergingFile) Then\n            delFSO.DeleteFile emergingFile\n        End If\n        If delFSO.FileExists(level1File) Then\n            delFSO.DeleteFile level1File\n        End If\n    \n        'remove sleeper.vbs\n        If delFSO.FileExists(\"sleeper.vbs\") Then\n            delFSO.DeleteFile \"sleeper.vbs\"\n        End If\n    End Sub\n\n\n\n\n    Sub runMe()\n        'clear mainOutputStr\n        mainOutputStr = \"\"\n        \n        'get ACL Name\n        ACL_NAME = document.GetElementById(\"acl_textbox\").value\n        \n        'check log checkbox\n        If document.GetElementById(\"log_checkbox\").Checked Then\n            logSuffix = \" log\"\n        Else\n            logSuffix = \"\"\n        End If\n        \n        'check checkboxes checked\n        If document.GetElementById(\"emerging_checkbox\").Checked Then\n            'execute Subs\n            Call WGET(emergingURL, emergingFile)\n            Call TrimFile(emergingFile)\n            Call emergingSUB()\n            \n        End If\n        If document.GetElementById(\"dshield_checkbox\").Checked Then\n            'execute Subs\n            Call WGET(dshieldURL, dshieldFile)\n            Call TrimFile(dshieldFile)\n            Call dshieldSUB()\n            \n        End If\n        If document.GetElementById(\"sigmaprojects_checkbox\").Checked Then\n            'execute Subs\n            Call WGET(sigmaprojectsURL, sigmaprojectsFileGZ)\n            Call unGZ(sigmaprojectsFileGZ, sigmaprojectsFile) \n            Call sigmaprojectsSUB()\n\n        \n        End If\n        If document.GetElementById(\"bluetrack1_checkbox\").Checked Then\n            'execute Subs\n            Call WGET(level1URL, level1FileGZ)\n            Call unGZ(level1FileGZ, level1File)\n            Call level1SUB()\n            Call TrimFile(level1File)\n        \n        End If\n        \n    'execute cleanup\n    Call cleanUP()\n    End Sub\n    \n    Sub ClearMe\t\n        document.GetElementById(\"acl_textbox\").value = \"MyACL\"\n        document.GetElementById(\"log_checkbox\").Checked = False\n        document.GetElementById(\"emerging_checkbox\").Checked = False\n         document.GetElementById(\"dshield_checkbox\").Checked = False\n        document.GetElementById(\"sigmaprojects_checkbox\").Checked = False\n        document.GetElementById(\"bluetrack1_checkbox\").Checked = False\n        \n        'clear textarea\n        document.GetElementById(\"outputTextarea\").Value = \"The access-list will appear here.\"\n        \n    End Sub\n    \n\/\/ ]]&amp;gt;\n&amp;lt;\/script&amp;gt;\n&amp;lt;!--break line --&amp;gt;\n&amp;lt;center&amp;gt;\n&amp;lt;h2&amp;gt;Blocklist to Cisco ASA ACL converter&amp;lt;\/h2&amp;gt;\n\u00a0\n&amp;lt;h4&amp;gt;Select Blocklist Sources to Convert&amp;lt;\/h4&amp;gt;\n&amp;lt;\/center&amp;gt;\n&amp;lt;form action=\"\"&amp;gt;&amp;lt;b&amp;gt;ACL Name:&amp;lt;\/b&amp;gt; &amp;lt;input id=\"acl_textbox\" name=\"acl_textbox\" type=\"textbox\" value=\"MyACL\" \/&amp;gt;\n&amp;lt;input id=\"emerging_checkbox\" name=\"emerging_checkbox\" type=\"checkbox\" \/&amp;gt;&amp;lt;a href=\"http:\/\/rules.emergingthreats.net\/fwrules\/emerging-Block-IPs.txt\" target=\"_blank\"&amp;gt;Emerging Threats&amp;lt;\/a&amp;gt;\n&amp;lt;input id=\"dshield_checkbox\" name=\"dshield_checkbox\" type=\"checkbox\" \/&amp;gt;&amp;lt;a href=\"http:\/\/feeds.dshield.org\/block.txt\" target=\"_blank\"&amp;gt;Dshield&amp;lt;\/a&amp;gt;\n&amp;lt;input id=\"sigmaprojects_checkbox\" name=\"sigmaprojects_checkbox\" type=\"checkbox\" \/&amp;gt;&amp;lt;a href=\"https:\/\/blocklist.sigmaprojects.org\/\" target=\"_blank\"&amp;gt;Sigma Projects&amp;lt;\/a&amp;gt;\n&amp;lt;input id=\"bluetrack1_checkbox\" name=\"bluetrack1_checkbox\" type=\"checkbox\" \/&amp;gt;&amp;lt;a href=\"https:\/\/www.iblocklist.com\/list.php?list=bt_level1\" target=\"_blank\"&amp;gt; Bluetrack Level1&amp;lt;\/a&amp;gt;\n\n&amp;lt;b&amp;gt;Add log suffix to each ACL&amp;lt;\/b&amp;gt;\n&amp;lt;input id=\"log_checkbox\" name=\"log_checkbox\" type=\"checkbox\" \/&amp;gt; Log ACL\n\n&amp;lt;input name=\"runMeButton\" type=\"button\" value=\"Run Script\" \/&amp;gt; &amp;lt;input name=\"ClearMeButton\" type=\"button\" value=\"Clear\" \/&amp;gt;&amp;lt;\/form&amp;gt;&amp;lt;textarea id=\"outputTextarea\" cols=\"75\" rows=\"30\"&amp;gt;The access-list will appear here.&amp;lt;\/textarea&amp;gt;\n\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Sources:<\/p>\n<ul>\n<li><a href=\"http:\/\/www.bluetack.co.uk\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.bluetack.co.uk\/<\/a><\/li>\n<li><a href=\"http:\/\/www.bluetack.co.uk\/converter\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.bluetack.co.uk\/converter\/<\/a><\/li>\n<li><a href=\"http:\/\/ibl.gamechaser.net\/f\/tagqfxtteucbuldhezkz\/bt_level1.gz\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/ibl.gamechaser.net\/f\/tagqfxtteucbuldhezkz\/bt_level1.gz<\/a><\/li>\n<li><a href=\"http:\/\/www.indented.co.uk\/2008\/10\/21\/vbscript-subnet-math\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.indented.co.uk\/2008\/10\/21\/vbscript-subnet-math\/<\/a><\/li>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/2973136\/download-a-file-with-vbs\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/stackoverflow.com\/questions\/2973136\/download-a-file-with-vbs<\/a><\/li>\n<li><a href=\"https:\/\/www.iblocklist.com\/list.php?list=bt_level1&amp;fileformat=p2p&amp;archiveformat=gz\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.iblocklist.com\/list.php?list=bt_level1&amp;fileformat=p2p&amp;archiveformat=gz<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>**This article is old, see new Blocklist2ACL 2.0 project.** Hi folks! A little script I wrote with VBscript that pulls in IP blocklists from different third party URLs and converts them in to well-formatted Cisco&#46;&#46;&#46;<\/p>\n","protected":false},"author":2,"featured_media":4270,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23],"tags":[111],"class_list":["post-1504","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-windows","tag-scripting"],"_links":{"self":[{"href":"https:\/\/infotechguy.net\/index.php?rest_route=\/wp\/v2\/posts\/1504","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/infotechguy.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/infotechguy.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/infotechguy.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/infotechguy.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1504"}],"version-history":[{"count":2,"href":"https:\/\/infotechguy.net\/index.php?rest_route=\/wp\/v2\/posts\/1504\/revisions"}],"predecessor-version":[{"id":4249,"href":"https:\/\/infotechguy.net\/index.php?rest_route=\/wp\/v2\/posts\/1504\/revisions\/4249"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/infotechguy.net\/index.php?rest_route=\/wp\/v2\/media\/4270"}],"wp:attachment":[{"href":"https:\/\/infotechguy.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1504"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/infotechguy.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1504"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/infotechguy.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1504"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}