Porqué preferimos las pitones a los camellos o los rubís. Cuestión de gustos, no os enfadéis!
Avatar de Usuario
newlog
El Eterno Alumno
 
Mensajes: 170
Registrado: Lun Jun 23, 2008 7:28 pm

Correos de los diputados que tienen voz sobre ACTA

por newlog Sab Ene 28, 2012 2:41 pm

Muy buenas,

Imagino que la mayoría sabréis de lo que va la nueva ley que quieren implantar llamada ACTA. Seguro que lo sabéis mejor que yo... que entre Sinde, PIPA, ACTA, SOPA llevo un cacao mental... En fin, todas vienen a ser una amenaza a la libertad del individuo.

El tema es que hace unos días Marietje Schaake, miembro del Parlamento Europeo, publicó en Reddit cual debería ser la forma de actuar para detener ACTA. (notícia, original).

En Reddit, Marietje nos insta a contactar con los diputados de cada uno de los paises a los que pertenecemos para decirles que ACTA es una patraña. Nos recuerda que ACTA aun no se ha aprobado en el Parlamento Europeo y aun se puede detener. Debemos hacer que nos escuchen, tenemos hasta el 12 de Junio como máximo, que es cuando se finiquitará el asunto.

Marietje explica como encontrar el correo de los diputados responsables de dicha votación, así que me pasé la tarde de ayer haciendo un cutre-script en python que sacara todas las direcciones de correo electrónico de los responsables de cada pais, para que enviarles un correo sea tan fácil como hacer un copiar-pegar.

La lista con todos los correos electrónicos está aquí: pastebin

Para saber cual es tu país, debajo del código del script hay una referencia con dos letras y el país al que se refiere.

Por último, aquí tenéis el script que he programado. Simplemente lo he hecho para aprender cómo funciona todo el tema de web con python... Y lo cierto es que es una delicia. Muy muy fácil.
No critiquéis mucho el script. No contemplo que nada pueda salir mal, ni está depurado, ni revisado, ni nada. Simplemente funciona. Una tarde bien aprovechada. Programando con los colegas mientras miraba una serie o echaba unos pros. Don't be evil!

Código: Seleccionar todo
'''
Created on 27/01/2012

@author: newlog
'''
import urllib
import urlparse
import urllib2
import sys
import math     # Only for math.ceil() - round up -

def printMails(country):
   
    first_url = "http://www.europarl.europa.eu/meps/en/performsearch.html?search=true&webCountry="
    first_url += country
    first_url += "&webTermId=7"
   
    req1 = urllib2.Request(first_url)
    response = urllib2.urlopen(req1)
    cookie = response.headers.get('Set-Cookie')
   
    result_num = 0
    page_num = 0   
    i = 0
    all_users_pages = []
    # Getting the pages for all the users
    while (True):
       
        next_url = ""
        page = response.read()
        if i == 0:
            result_num = get_results_num(page)
            page_num = int(math.ceil( int(result_num) / float(8)))
           
        user_pages_list = getUserPages(page)
        all_users_pages.append(user_pages_list)
        next_url = "http://www.europarl.europa.eu/meps/en/performsearch.html?action="
        next_url += str(i+1)
        next_url += "&webCountry=ES&webTermId=7&name=&politicalGroup=&bodyType=&bodyValue=&type=&filter="
       
        req2 = urllib2.Request(next_url)
        req2.add_header('cookie', cookie)
        response = urllib2.urlopen(req2)
        i += 1
        if i >= page_num:
            break
       
    response.close()
   
    #Getting the emails of the users
    mail_list = getUserEmails(all_users_pages, cookie)
    return mail_list
   

def getUserPages(page):
    user_pages_list = []
    j = 0
    second_index = 0
    first_index = 0
    iter_num = page.count("<a class=\"ep_title\"")
    while ( j < iter_num):
        first_index = page.find("<a class=\"ep_title\"", second_index)
        if first_index == -1:
            break   #no more coincidences
        first_index += 34   # Because of the fucking  href=\" with some kind of \n
        second_index = page.find("\">", first_index)
        if second_index == -1:
            break   #something went wrong
        user_page = page[first_index:second_index]
        user_pages_list.append(user_page)
        j += 1
    return user_pages_list


def getUserEmails(all_users_pages, cookie):

    user_mail_list = []
    for page_list in all_users_pages:
        for user_page in page_list:
            url = "http://www.europarl.europa.eu"
            url += user_page
           
            parsed_url = url_fix(url)
            req = urllib2.Request(parsed_url)
            req.add_header('cookie', cookie)
            response = urllib2.urlopen(req)
            mail_page = response.read()
           
            second_index = 0
            first_index = 0
            first_index = mail_page.find("<a title=\"Follow this MEP\" href=\"/rss/mep/", second_index)
            if first_index == -1:
                break   #no more coincidences
            first_index += 42   # Because of the fucking  href=\" with some kind of \n
            second_index = mail_page.find("/", first_index)
            if second_index == -1:
                break   #something went wrong
            user_mail = mail_page[first_index:second_index]
            user_mail += "@europarl.europa.eu;"
            user_mail_list.append(user_mail)
   

   
    return user_mail_list

def url_fix(s, charset='utf-8'):

    if isinstance(s, unicode):
        s = s.encode(charset, 'ignore')
    scheme, netloc, path, qs, anchor = urlparse.urlsplit(s)
    path = urllib.quote(path, '/%')
    qs = urllib.quote_plus(qs, ':&=')
    return urlparse.urlunsplit((scheme, netloc, path, qs, anchor))

def get_results_num(page):
    second_index = 0
    first_index = page.find("Result(s)\r\n", second_index)
    if first_index == -1:
        print '[-] The number of users could not be retrieved.'
        exit()   #no more coincidences
    first_index += 17   # Because of the fucking  href=\" with some kind of \n
    second_index = page.find("</h2>", first_index)
    if second_index == -1:
        print '[-] The number of users could not be retrieved.'
        exit()   #no more coincidences
    result_num = page[first_index:second_index]
    result_num = result_num.strip()
    return result_num


if __name__ == '__main__':
   
    if len(sys.argv) != 2:
        print '[-] Incorrect number of parameters.'
        exit()
   
    country_list = ["PT", # Portugal
                    "ES", # Spain
                    "FR", # France
                    "IT", # Italy
                    "MT", # Malta
                    "GR", # Greece
                    "CY", # Cyprus
                    "BG", # Bulgaria
                    "RO", # Romania
                    "HU", # Hungary
                    "SI", # Slovenia
                    "AT", # Austria
                    "SK", # Slovakia
                    "CZ", # Czech Republic
                    "DE", # Germany
                    "PL", # Poland
                    "BE", # Belgium
                    "NL", # Netherlands
                    "DK", # Denmark
                    "LT", # Lithuania
                    "GB", # United Kingdom
                    "IE", # Ireland
                    "LV", # Latvia
                    "EE", # Estonia
                    "FI", # Finland
                    "SE", # Sweden
                    ]
   
   
    if sys.argv[1] in country_list:
        mail_list = []
        mail_list = printMails(sys.argv[1])

        output_file = open("country_out_" + sys.argv[1] + ".txt", "a")
        output_file.write("[+] Printing country email list from: " + sys.argv[1] + "\n")
        print "[+] Printing country email list from: " + sys.argv[1] + "\n"
        for mail in mail_list:
            print mail
            output_file.write(mail + "\n")
        output_file.write("\n\n")
        output_file.close()
        exit()
    else:
        if sys.argv[1] == "ALL":
            print "[+] Printing all country email list: \n"
            for country in country_list:
                mail_list = []
                mail_list = printMails(country)
               
                output_file = open("country_out.txt", "a")
                output_file.write("[+] Printing country email list from: " + country + "\n")
                print "\n[+] Printing country email list from: " + country + "\n"
               
                for mail in mail_list:
                    output_file.write(mail + "\n")
                    print mail
            output_file.write("\n\n")
            output_file.close()
            exit()
        elif sys.argv[1] == "--usage":
            print "[+] Usage: 'python " + sys.argv[0] + " country', \n\t where country is any of: "
            print "\tPT for Portugal"
            print "\tES for Spain"
            print "\tFR for France"
            print "\tIT for Italy"
            print "\tMT for Malta"
            print "\tGR for Greece"
            print "\tCY for Cyprus"
            print "\tBG for Bulgaria"
            print "\tRO for Romania"
            print "\tHU for Hungary"
            print "\tSI for Slovenia"
            print "\tAT for Austria"
            print "\tSK for Slovakia"
            print "\tCZ for Czech Republic"
            print "\tDE for Germany"
            print "\tPL for Poland"
            print "\tBE for Belgium"
            print "\tNL for Netherlands"
            print "\tDK for Denmark"
            print "\tLT for Lithuania"
            print "\tGB for United Kingdom"
            print "\tIE for Ireland"
            print "\tLV for Latvia"
            print "\tEE for Estonia"
            print "\tFI for Finland"
            print "\tSE for Sweden"
        else:
            print "[-] The country is not in the list. Use 'python " + sys.argv[0] + " --usage' to get help."
            exit()


Para utilizarlo:
Código: Seleccionar todo
Beleriand-2:src newlog$ python getMails.py --usage
[+] Usage: 'python getMails.py country',
    where country is any of:
   PT for Portugal
   ES for Spain
   FR for France
   IT for Italy
   MT for Malta
   GR for Greece
   CY for Cyprus
   BG for Bulgaria
   RO for Romania
   HU for Hungary
   SI for Slovenia
   AT for Austria
   SK for Slovakia
   CZ for Czech Republic
   DE for Germany
   PL for Poland
   BE for Belgium
   NL for Netherlands
   DK for Denmark
   LT for Lithuania
   GB for United Kingdom
   IE for Ireland
   LV for Latvia
   EE for Estonia
   FI for Finland
   SE for Sweden


Esto es importante! Hemos de hacer que nos escuchen. Si ACTA se hubiera creado hace 50 años, internet no existiría. Imaginad de cuantas cosas nos puede privar.
Simplemente, copiad la ristra de direcciones de correo de vuestro país y enviad un simple correo con un par de líneas.

Saludos!
Imagen
Avatar de Usuario
vlan7
 
Mensajes: 87
Registrado: Jue Jul 22, 2010 3:45 pm
Ubicación: Mas alla del EIP

Re: Correos de los diputados que tienen voz sobre ACTA

por vlan7 Sab Ene 28, 2012 6:01 pm

Excelente, buen hack y mejor planteamiento.

Enhorabuena.
int *p = new int[7];
p = p + 7;
*p = 42;

int a[7];
a[7] = 42; /* ESC[2;9y */
Avatar de Usuario
newlog
El Eterno Alumno
 
Mensajes: 170
Registrado: Lun Jun 23, 2008 7:28 pm

Re: Correos de los diputados que tienen voz sobre ACTA

por newlog Lun Ene 30, 2012 5:40 pm

Gracias vlan7!

Aquí dejo una entrada en el blog de CyberHades dónde también se trata el tema: http://www.cyberhades.com/2012/01/30/22923/

Saludos!
Imagen
Volver a Python

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados