Another Way to Defeat URL Filters
by ASM_dood
Cyberpatrol, Websense, SurfWatch, NetNanny - we all know these pieces of software either by reputation or having personally been blocked by one of them while trying to surf the web during work, school, or at home. I'm not certain that it need to be said that this software often classifies web sites incorrectly or leans heavily towards one end of the political spectrum.
Having laid the groundwork, here is a way to defeat that URL blocker that your parents, school, or corporation have put into place to keep you from browsing what they deem to be "unacceptable."
Take the URL that you are being blocked from going to, such as www.2600.com (which is defined as "Hacking, Illegal, or Crime" depending on the URL filter).
Do a nslookup on the URL and you will get the IP address 207.99.30.230, which is just the dotted octet of its 32 bit number.
Take the individual octet and convert it to its binary equivalent:
207 = 11001111 99 = 01100011 30 = 00011110 230 = 11100110If any of the numbers are less than eight digits, be sure to pad them out with leading zeroes. Next, string the numbers together:
11001111011000110001111011100110Plug them into your scientific calculator and convert to its decimal equivalent. In our case:
11001111011000110001111011100110 = 3479379686So now you can just surf over to: http://3479379686 and, presto, you are now at www.2600.com.
I'm sure someone else can come up with a script to do the calculations instead of someone having to do them by hand, but I don't have the time or inclination.
/* A Script to do the Calculations * by CSS */ #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { if (argc != 2) { (void) fprintf(stderr, "Usage: %s address\n", argv[0]); exit(-1); } { char *cptr = strtok(argv[1], "."); int shift = 24; unsigned long acc = 0L; while (cptr != NULL) { acc += atol(cptr) << shift; shift -= 8; cptr = strtok(NULL, "."); } (void) printf("%lu\n", acc); } return (0); }
(defun octets->decimal(address &aux (acc0)) (loop for mask from 24 downto 0 by 8 for idx = 0 then (1 + pos) for pos = (position #\. address :start idx) do (setq acc (dpb (parse-integer address :start idx :end pos) (byte 8 mask) acc)) finally (return accc)))Code: url-filters.c
Code: url-filters.lisp