#!/usr/bin/env python import httplib import StringIO import base64 try: import sqlite3 as sqlite except: import sqlite class RC4: def __init__(self, key = None): self.state = range(256) self.x = self.y = 0 if key is not None: self.init(key) def init(self, key): for i in range(256): self.x = (ord(key[i % len(key)]) + self.state[i] + self.x) & 0xFF self.state[i], self.state[self.x] = self.state[self.x], self.state[i] self.x = 0 def crypt(self, input): output = [None] * len(input) for i in xrange(len(input)): self.x = (self.x + 1) & 0xFF self.y = (self.state[self.x] + self.y) & 0xFF self.state[self.x], self.state[self.y] = self.state[self.y], self.state[self.x] r = self.state[(self.state[self.x] + self.state[self.y]) & 0xFF] output[i] = chr(ord(input[i]) ^ r) return ''.join(output) conexion_sqlite = sqlite.connect("your-notfreedom.db") cursor_sqlite = conexion_sqlite.cursor() try: cursor_sqlite.execute("create table ips (ip varchar(20) primary key, servidor varchar(100))") conexion_sqlite.commit() except: pass print "Buscando IPs en %s" % ("www.resolution.de") conexion_servidor_yf = httplib.HTTPConnection("www.resolution.de") try: #www.resolution.de/freedom-servers-04071776.cgi #www.resolution.de/freedom-servers-19283746.cgi conexion_servidor_yf.request("GET", "/freedom-servers-19283746.cgi") for ip in StringIO.StringIO(conexion_servidor_yf.getresponse().read()): try: cursor_sqlite.execute("insert into ips (ip, servidor) values ('%s', '%s')" % (ip.strip(), "www.resolution.de")) conexion_sqlite.commit() except: pass except: pass conexion_servidor_yf.close() for numero_servidor_yf in range(100): url_servidor_yf = "ems%02d.your-freedom.de" % (numero_servidor_yf) print "Buscando IPs en %s" % (url_servidor_yf) conexion_servidor_yf = httplib.HTTPConnection(url_servidor_yf) try: conexion_servidor_yf.request("GET", "/info.txt") for linea_info_txt in StringIO.StringIO(conexion_servidor_yf.getresponse().read()): if linea_info_txt[:3] == "IP:": try: cursor_sqlite.execute("insert into ips (ip, servidor) values ('%s', '%s')" % (linea_info_txt[3:].strip(), url_servidor_yf.strip())) conexion_sqlite.commit() except: pass if linea_info_txt[:len("AlternativeServerKey:")] == "AlternativeServerKey:": server_key = linea_info_txt.split(":")[1].strip() rc4 = RC4(server_key + "Go stuff yourself!") if linea_info_txt[:len("CGIRelayKey:")] == "CGIRelayKey:": server_key = linea_info_txt.split(":")[1].strip() rc4_cgi = RC4(server_key + "Go stuff yourself!") if linea_info_txt[:len("Alternative:")] == "Alternative:": for ip_yf in linea_info_txt.split(":")[1].split(";"): try: cursor_sqlite.execute("insert into ips (ip, servidor) values ('%s', '%s')" % (ip_yf.strip(), url_servidor_yf.strip())) conexion_sqlite.commit() except: pass if linea_info_txt[:len("AlternativeServer:")] == "AlternativeServer:": server = linea_info_txt.split(":")[1].strip() for ip_yf in rc4.crypt(base64.b64decode(server)).split(":")[0].split(";"): try: cursor_sqlite.execute("insert into ips (ip, servidor) values ('%s', '%s')" % (ip_yf.strip(), url_servidor_yf.strip())) conexion_sqlite.commit() except: pass if linea_info_txt[:len("CGIRelay:")] == "CGIRelay:": server = linea_info_txt.split(":")[1].strip() for ip_yf in rc4_cgi.crypt(base64.b64decode(server)).split(":")[0].split(";"): try: print ip_yf #cursor_sqlite.execute("insert into ips (ip, servidor) values ('%s', '%s')" % (ip_yf.strip(), url_servidor_yf.strip())) #conexion_sqlite.commit() except: pass except: pass conexion_servidor_yf.close() iptables_yf = file("your-notfreedom.sh", "w") cursor_sqlite.execute("select * from ips") for ip_yf in cursor_sqlite.fetchall(): iptables_yf.write("iptables -A FORWARD -d %s -j REJECT\n" % (ip_yf[0])) iptables_yf.close() cursor_sqlite.close() conexion_sqlite.close() print "Listo..."