send
Grupo de Telegram
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[Python] Underch4t v1.0 (Parte 2)

  • 4 Respuestas
  • 1722 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado WhiZ

  • *
  • Underc0der
  • Mensajes: 395
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« en: Diciembre 19, 2015, 05:33:38 pm »

UnderCh4t



Comenzamos la segunda entrega de este mini tutorial: creando nuestro propio chat con Python. El mío se llama UnderCh4t y si es la primera vez que escuchás hablar de él,  te invito a que pases por You are not allowed to view links. Register or Login y lo conozcas ;)



INTERFAZ DE CONEXIÓN


Hasta ahora no hemos hecho mucho: sólo creamos la estructura general de nuestro servidor (que, como veremos a lo largo del curso, irá sufriendo algunas modificaciones) y hemos desarrollado el método que nos permite crear el socket que vamos a utilizar para interactuar con nuestros clientes.

Si nos basamos en el método ejecutar (método guía del programa), ahora le toca el turno al método bind. Veamos primero su código:

Código: Python
  1. def _bind(self):
  2.     msj = "Estableciendo interfaz de conexión ({0}:{1})"
  3.     self._mostrar_info(msj.format(self.__ip, self.__puerto))
  4.     try:
  5.         self.__servidor.bind((self.__ip, self.__puerto))
  6.     except Exception as e:
  7.         self._mostrar_error(e, critico=True)

Nuevamente, dejando de lado los logs y el manejo de errores, lo único que nos interesa en este método es la siguiente línea:

Código: Python
  1. self.__servidor.bind((self.__ip, self.__puerto))

Como siempre, lo primero que haremos será pegarle una ojeada a la You are not allowed to view links. Register or Login. En ella, podemos ver que el método bind tiene como objetivo establecer una interfaz de conexión, es decir, enlazar el socket a una dirección, la cual variará según la familia de dirección que utilicemos.

Citar
Esto ya lo vimos en la primera parte pero para los que todavía no saben de qué estamos hablando, vamos con un rápido repaso. Cuando creamos un socket, debemos indicar cómo queremos que sea, es decir, qué familia, tipo y protocolo queremos que utilice. Dentro de las familias de sockets, las más utilizadas son:
    - AF_INET (IPv4)
    - AF_INET (IPv6)
    - AF_UNIX (utilizada para comunicación entre procesos en una misma computadora).

Entonces, cuando creamos un socket, se le asigna una familia de direcciones pero no una dirección en particular. Para esto, debemos llamar al método bind, pasándole como argumento la dirección que queremos asignar al socket.

Como dijimos antes, cada familia de sockets tiene su forma de indicar esta dirección. La familia AF_INET, por ejemplo, utiliza una tupla con dos valores: host (dominio o dirección IP) y puerto. El código quedaría así:

Código: Python
  1. import socket
  2. mi_socket = socket.socket(AF_INET, SOCK_STREAM)
  3. direccion = ("127.0.0.1", 8000)
  4. mi_socket.bind(direccion)

En este caso, primero creamos el socket - indicamos familia y tipo de socket (al protocolo, no indicado, lo determina el sistema)- y luego vinculamos el socket a una dirección. La dirección es una tupla que contiene una dirección IP (127.0.0.1) y un puerto (8000).

Con respecto a las direcciones de las otras familias, debido a que se escapa a los objetivos de este tutorial, no vamos a decir mucho; simplemente que la familia AF_UNIX utiliza una cadena para indicar la dirección, mientras que la familia AF_INET6 requiere una tupla con cuatro valores: host, puerto, flujo de información e identificador de ámbito. No se preocupen que esto no es algo que tengan que saber para este curso. Sin embargo, si alguno tiene ganas de aprender más del asunto, aquí dejo algunos links de interés: You are not allowed to view links. Register or Login y You are not allowed to view links. Register or Login.



Bueno, esto es todo por ahora. Originalmente, mi idea era hacer una segunda parte más extensa pero, considerando que lo que viene es un poco más complejo, decidí hacer una entrega más corta que no los complique y les permita entender estos nuevos conceptos sin dificultad.

Vayan leyendo y repasando estas dos primeras partes que les van a servir de base para la entrega que viene.  ;)

Saludos!
WhiZ
« Última modificación: Diciembre 24, 2015, 10:57:19 am por Expermicid »


Desconectado Barlan

  • *
  • Underc0der
  • Mensajes: 89
  • Actividad:
    0%
  • Reputación 0
  • "The demons of my own design"
    • Ver Perfil
  • Twitter: @BarlanV
« Respuesta #1 en: Diciembre 20, 2015, 03:22:32 pm »
Se te escapó un (
Código: Python
  1. msj = "Estableciendo interfaz de conexión ({0}:{1})")

Se aprende mucho con estos post, se agradece WhiZ  :D
Saludos!
« Última modificación: Diciembre 20, 2015, 03:24:48 pm por Barlan »


Desconectado Theraritho5

  • *
  • Underc0der
  • Mensajes: 26
  • Actividad:
    0%
  • Reputación -1
  • Curioso :(
    • Ver Perfil
  • Skype: Theraritho5
« Respuesta #2 en: Diciembre 21, 2015, 01:56:25 am »
Genial @You are not allowed to view links. Register or Login he estado leyendo mucho sobre este fabuloso modulo y esto me cae como anillo al dedo, enserio GRACIAS

Desconectado WhiZ

  • *
  • Underc0der
  • Mensajes: 395
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #3 en: Diciembre 21, 2015, 08:55:40 pm »
You are not allowed to view links. Register or Login
Se te escapó un (
Código: Python
  1. msj = "Estableciendo interfaz de conexión ({0}:{1})")

Se aprende mucho con estos post, se agradece WhiZ  :D
Saludos!

Gracias @Barlan por el aviso. En realidad me lo traje de la llamada al método mostrar_info. Al principio, lo puse así:
Código: Python
  1. self._mostrar_info("Estableciendo interfaz de conexión ({0}:{1})".format(self.__ip, self.__puerto))

Como quedaba muy largo, metí el mensaje en una variable y ahí fue cuando me llevé el paréntesis de cierre jeje.

Como dije, muchas gracias por la notificación. En instantes lo modifico.

You are not allowed to view links. Register or Login
Genial @You are not allowed to view links. Register or Login he estado leyendo mucho sobre este fabuloso modulo y esto me cae como anillo al dedo, enserio GRACIAS

No, al contrario. Gracias a vos por tomarte el tiempo de pasar por aquí ;)

Saludos!
WhiZ


Desconectado po6xsecpo

  • *
  • Underc0der
  • Mensajes: 46
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
  • Skype: po6xsecpo@gmail.com
« Respuesta #4 en: Enero 02, 2016, 12:52:38 am »
Genial. Me dejó con ganas esta entrada. A la espera de la siguiente.

Gracias por el aporte. 

 

¿Te gustó el post? COMPARTILO!



[Código] Yardas a metros - Metros a yardas [Python]

Iniciado por LucaSthefano

Respuestas: 0
Vistas: 1142
Último mensaje Mayo 29, 2011, 01:27:34 am
por LucaSthefano
Python keylogger - by "bLiNdFiR3"

Iniciado por d33k40

Respuestas: 0
Vistas: 1724
Último mensaje Abril 07, 2010, 03:30:22 am
por d33k40
[Código] Entero / No Entero [Ejercicio - Python]

Iniciado por LucaSthefano

Respuestas: 0
Vistas: 1097
Último mensaje Mayo 29, 2011, 01:24:09 am
por LucaSthefano
Python phpmyadmin "BruteForce"

Iniciado por linkgl

Respuestas: 2
Vistas: 2184
Último mensaje Agosto 19, 2011, 12:14:37 pm
por linkgl
Python Trojan - By "bLiNdFiR3"

Iniciado por d33k40

Respuestas: 1
Vistas: 1750
Último mensaje Abril 03, 2010, 11:01:59 pm
por Dharok