Según Wikipedia, un hacker es:
«A person who enjoys exploring the details of programmable systems and stretching their capabilities, as opposed to most users, who prefer to learn only the minimum necessary.»
Algunos creen equivocadamente que hacker = malechor, delincuente. Pero lo cierto es que hay varios tipos de hackers.
- Aquel que infringe medidas de seguridad con fines maléficos, también se le conoce como «cracker».
- Un miembro de la comunidad Unix de programas de computación libre y «open source», o alguien que usa este principio para desarrollo de software o hardware.
Además individuos considerados como hackers de la subcultura de programadores pueden hacer tareas repititivas de 100 a 1,000 veces más rapido que usuarios que no son hackers (gracias a que usan de técnicas de computación avanzadas).
El congreso peruano ha aprobado una ley de delitos informáticos recontra ridícula que ha sido criticada por muchos, por ejemplo en el blog http://iriartelaw.com y http://www.hiperderecho.org, además de ser considerada una ley Frankenstein. Esto evidencia que el congreso legisla sobre temas que desconoce.
Para demostrar qué tan mal redactada está la ley ex-beingolea. He decidido hackear las páginas web del Congreso de la República. Y aquí detallo el procedimiento.
Quiero hacer uso de programas informáticos para averiguar cúantos proyectos de ley ha propuesto cada congresista durante este año 2013.
Hay que buscar la página web del congreso que tiene la lista de los proyectos de ley emitidos este año:
Si vemos el código original HTML de esa página (hacer CTRL-U, si están en Mozilla Firefox) veremos que está compuesta de 4 «frames». Cada «frame» corresponde a una parte de la página. Me interesa el último «frame», el que contiene la lista de links a los proyectos de ley.
Si hacemos click al último «frame» nos encontramos con esta página:
Esta página lista 100 proyectos de ley, y al ver la dirección URL de esta página, nos damos cuenta que basta con cambiar el último parámetro Start=1 por Start=100 para obtener los siguientes 100 proyectos de ley.
Osea cambiar:
http://www2.congreso.gob.pe/Sicr/TraDocEstProc/CLProLey2011.nsf/PAporNumeroInverso?OpenView&Start=1
por:
Puedo escribir un hack (osea script) que me colecte rápidamente todas las páginas que contienen los links. En lugar de bajarme documento por documento (lo cual me tomaría muuuuucho tiempo), lo puedo hacer al toque si hago uso de las tecnologías de información y comunicación que tanto miedo causa a los congresistas:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
for i in {0..900..100} | |
do | |
if [ $i = 0 ]; then | |
torsocks wget "http://www2.congreso.gob.pe/Sicr/TraDocEstProc/CLProLey2011.nsf/PAporNumeroInverso?OpenView" | |
else | |
torsocks wget "http://www2.congreso.gob.pe/Sicr/TraDocEstProc/CLProLey2011.nsf/PAporNumeroInverso?OpenView&Start=$i" | |
fi | |
done |
Hay 812 proyectos de ley para examinar. Necesitamos descargar cada proyecto de ley y copiar la lista de autores para contar cuántos proyectos ha sido emitido por cada congresista. Obviamente hacer esto manualmente me demoraría una eternidad. Para eso he creado un segundo hack. Es un script in Python que examina cada link, y extrae los nombres de los congresistas que son autores de cada proyecto de ley. Junta todos los nombres y hace un gráfico para poder visualizar los datos (el código de programación está al final de este post).
Bueno, el script estaba demorando mucho, me cansé de esperar y cancelé el programa por lo que no pude colectar toda la info. Pero la idea se entiende no?
Aquí se pueden descargar la dichosa ley http://www.hiperderecho.org/wp-content/uploads/2013/09/nuevaleybeingolea.pdf.
Hagamos recuento de las veces que he faltado a la ley:
Artículo 3. Atentado a la integridad de datos informáticos
El que, a través de las tecnologias de la información o de la comunicación, introduce,
borra, deteriora, altera, suprime o hace inaccesibles datos informáticos, será reprimido
con pena privativa de libertad
-> Al escribir este post he introducido datos informáticos al servidor de WordPress usando tecnologías de la comunicación.
Articulo 6. Tráfico ilegal de datos
El que, crea, ingresa, o utiliza indebidamente una base de datos sobre una persona natural o jurídica, identificada o identificable, para comercializar; traficar, vender, promover, favorecer o facilitar información relativa a cualquier ámbito de la esfera personal, familiar, patrimonial, laboral, financiera u otro de naturaleza análoga, creando o no perjuicio, será reprimido con pena privativa de libertad no menor de tres ni mayor de cincó años.
-> Al bajarme la lista de proyectos de Ley del Congreso he ingresado a su base de datos para facilitar la información relativa al ámbito laboral de cada congresista sin crear perjuicio (ojo que no es necesario causar perjuicio para ir en contra de la ley).
Artículo 1O. Abuso de mecanismos y dispositivos informáticos
El que fabrica, diseña, desarrolla, vende, facilita, distribuye, importa u obtiene para su utilización, uno o más mecanismos, programas informáticos, dispositivos, contraseñas, códigos de acceso o cualquier otro dato informático, específicamente diseñados para la comisión de los delitos previstos en la presente Ley, o el que ofrece o presta servicio que contribuya a ese propósito, será reprimido con pena privativa de libertad no menor de uno
ni mayor de cuatro años y con treinta a noventa días-multa.
-> En este post publico el programa informático que he fabricado, diseñado y desarrollado con el fin de específicamente incumplir los artículos 3 y 6 de la presente Ley.
Conclusión
He violado la ley de delitos informáticos (ley ex-beingolea) 3 veces
Señores congresistas métanme preso. Quiero cárcel dorada como Antauro y Fujimori. Gracias.
Sección para geeks
Aqui está el código para bajarse los nombres de los congresistas que fueron autores de proyectos de ley durante el 2013:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
import socks | |
import cookielib | |
import socket | |
from bs4 import BeautifulSoup | |
import requests | |
import sys | |
import re | |
from os import listdir | |
import codecs | |
import urllib2 | |
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050) | |
socket.socket = socks.socksocket | |
def extract_doc_links(soup): | |
our_links = [] | |
for link in soup.find_all("a"): | |
if re.search("201[0-9]-CR$", link.get_text()): | |
href = link.get("href") | |
if href.endswith("ocument"): | |
our_link = "http://www2.congreso.gob.pe" + "/" + href | |
our_link = re.sub("//Sicr","/Sirc", our_link) | |
our_links.append(our_link) | |
return our_links | |
def parse_names(string): | |
""" | |
Parse string of names. Output only family name as list. | |
""" | |
names = [] | |
for i in string.split(","): | |
i = re.sub("\s{2}.+", "", i) | |
names.append(i) | |
return names | |
def get_authors_from_project(document_link): | |
""" | |
input: link to project page | |
output: list of author names as list | |
Using tor, found help here: | |
http://stackoverflow.com/questions/10967631/how-to-make-http-request-through-a-tor-socks-proxy-using-python | |
""" | |
cj = cookielib.CookieJar() | |
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) | |
opener.addheaders = [('Accept-Charset', 'utf-8')] | |
request = urllib2.Request(document_link) | |
request.add_header('Cache-Control','max-age=0') | |
response = opener.open(request) | |
proyecto = BeautifulSoup(response.read().decode("utf-8")) | |
del request | |
del response | |
for i in proyecto.find_all("input"): | |
if i.get("name") == "NomCongre": | |
return parse_names(i.get("value")) | |
## ———————————————— | |
def main(): | |
all_links = [] | |
for file in listdir("."): | |
if file.startswith("PA"): | |
print file | |
f = open(file, "r") | |
html_doc = f.read() | |
f.close() | |
soup = BeautifulSoup(html_doc) | |
all_links += extract_doc_links(soup) | |
print "Numero de proyectos de ley: %i " % len(all_links) | |
# Save names to file | |
f = codecs.open("all_authors.csv", "w", "utf-8") | |
f.write("Congresista\n") | |
f.close() | |
f = codecs.open("all_authors.csv", "a", "utf-8") | |
for link in all_links: | |
authors = get_authors_from_project(link) | |
for author in authors: | |
f.write(author + "\n") | |
f.close() | |
if __name__ == "__main__": | |
main() |
Y aquí el código para plotear los datos:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
import codecs | |
import prettyplotlib as ppl | |
import numpy as np | |
from prettyplotlib import plt | |
import csv | |
x = [] | |
y = [] | |
with open("all_authors.csv_bak", "rb") as csvfile: | |
f = csv.reader(csvfile, delimiter=",") | |
for row in f: | |
x.append(row[1].decode("utf-8")) | |
y.append(row[0]) | |
y = map(int, y) | |
plt.rc('font', **{'family': 'DejaVu Sans'}) | |
fig, ax = plt.subplots(1, figsize=(20,6)) | |
width = 0.35 | |
ind = np.arange(len(y)) | |
xdata = ind + 0.05 + width | |
ax.bar(ind, y) | |
ax.set_xticks(ind + 0.5) | |
ax.set_xticklabels(x, rotation="vertical") | |
ax.autoscale() | |
ax.set_title(u'Ranking de proyectos de ley por congresista', | |
fontdict = {'fontsize':24} | |
) | |
plt.ylabel(u'Número de proyectos de ley', fontdict={'fontsize':18}) | |
plt.xlabel(u'Congresista', fontdict={'fontsize':22}) | |
ppl.bar(ax, np.arange(len(y)), y, grid="y") | |
fig.tight_layout() | |
fig.savefig("ranking_congresista.png") |
Pingback: ¿Promulgarán la Ley de Delitos Informáticos? | Globalizado
Muy buenos posts! estoy muy contento de haber encontrado tu blog. Muy bien hecho.
gracias!
yo vendo un software para auditar redes inalambricas los cuales sin ir tan lejos se puede descargar gratuitamente del internet pero yo les ahorro la bajada 😛 y ´por eso podria ir a la carcel
ese es otro ejemplo de lo absurdo de la ley de ciberdelitos, gracias por comentar!
aniversarioperu, Antes que nada tengo el agrado de dirigirme a ti para felicitarte, muy buenos posts. Pero, tambien queria darte mi punto de vista en el que discrepo con algunas afirmaciones tuyas, para puntualizar en la que mencionas que este proceso que haz descrito muy detalladamente, sea un hacking propiamente dicho. Me explico, este termino (actualmente) tiene muchas acepciones, me voy a enfocar a dos definiciones la que se refiere a la acción de explorar y buscar las limitantes ya sea en sistemas, hardware, software, scripts, etc. con buenos o malos fines. Asimismo, el término hackear se usa para referice a la acción de irrumpir o entrar de manera forzada a un sistema informatico o a una red, etc. Este ultimo concepto yo lo considero cracking pero no viene al caso pues ya se le acuño el concepto a la palabra hacking. Pues bien en el titulo mencionas Guía práctica para hackear las páginas del Congreso, yo lo concideraria errado pues no estas haciendo nada reference a un hacking simplemente estas haciendo peticiones web con el comando wget y procesando esa info. Yo titularia este post como «Guía práctica de como obtener informacion de las páginas del Congreso» ya que no haz realizado ningun hackeo. Disculpame no quiero que me tomes a mal simplemente creo este post tan bueno no deberia caer en el mal uso de un termino. Todo trabajo que realiza el hombre es como, decian los griegos, Plus ultra, osea se puede ir más allá, todo es perfectible.Y con esa premisa en mente es que te hago este comentario.
Disculpame tambien las faltas hortograficas pero estoy en el movil. Saludos de Corea del Sur.
@Teocci según lo que explicas la palabra hackear tiene diferentes significados y más aún según el contexto dónde o quién lo use y uno de ellos son los que se usan aquí. 🙂
hay definición de hacking para todos los gustos! saluds.
Esto no es un hackeo, es como que digas voy a sacar dinero del ATM, sacas dinero del ATM y tu amigo te dice estas robando al banco y lo que le dirias no estoy robando estoy retirando mi dinero del bando es el mismo sentido. Aca estas sacando informacion, y la estas acomodando como quieres con tus scripts, y hacer un script no es una hack, es hacer un script. Mi punto es que este proceso descrito aqui, es muy bueno informativo , ademas queremos (eso es lo qu ecreo) que le queremos dar el buen uso a la palabra HACKING o HACKER, que se refieren a un contexto mucho mas amplio, es como yo que te diga si en el elvador presionas el boton para cerrar la puerta luego el boton del piso al que quieres ir hasta que el elevador se mueva y este ira sin detenerse hasta el piso seleccionado, wow soy un hacker, no es el procedimiento que se usan los policias o bomberos en casos de emergencia. MI unica intencion era que se use mejor la palabra. Gracias
gracias por comentar! discrepar es saludable, y como dices, el término hacking tiene varias acepciones.
Por ejemplo una vez se rompió una tubería de cobre del líquido de frenos de una de las llantas de mi carro. Para no seguir perdiendo líquido de frenos tuve que hackear mi carro. Le desconecté la manguera de cobre y cerré un extremo golpeando con dos piedras. Llegué al mecánico más cercano con freno en 3 llantas.
Nah, un placer gracias por responder, siga adelante con los post que estn muy buenos y bien redactados un abrazo compatriota.
¿Y el hackerismo cívico? ¿Lo podemos considerar como categoría?
ola yo quiero aprender a hackear, veo que eres un genio en esto tu comentario esta de lo mejor lo he terminado de leer todo, pero necesesito que alguien me ayude a hackerar, que alguien sea mi maestro y yo su aprendiz, que el que me enseñe me diga todo lo que sabe y que trabaje para el.
MI FACEBOOK: https://www.facebook.com/darck.vaszquezvasquez
Yo pienso que corea del sur es un pais muy intekigente y opor eso me gustaria que me enseñe alguien, lo publico en tu comentario porque me centro mas en ti, pero si alguien se ofrece a ayudarme estare dispuesto a aprender..
VIVO EN PERÙ
hola,
puedes aprender cosas interesantes en el curso online de Periodismo de Datos que estoy dictando en el blog el Útero de Marita http://aniversarioperu.utero.pe/
Definitivamente estas en otro level causa….!!
gracias!
Lo que me sorprende no es lo mucho que aportas, sino lo bien que escribes,
gracias por tus palabras!
te felicito me quede O.O
gracias!
Y de pronto me doy cuenta que es la segunda vez que entro a este blog, me leo todo y me quedo maravillado con la información de tan alta y buena calidad que hay.
Te felicito!
muchas gracias por visitar mi blog y comentar!
Buen ejemplo practico de como no todo hackeo es malo, pero sobre todo de como una mala redacción de una norma puede afectar la libertad de acceso a la información
tienes razón, ojalá alguien de gobierno/congreso vea la luz.