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

Conexión de datos seguros a través de sockets usando SDC

  • 2 Respuestas
  • 2537 Vistas

0 Usuarios y 2 Visitantes están viendo este tema.

Conectado DtxdF

  • *
  • Moderador
  • Mensajes: 378
  • Actividad:
    36.67%
  • Reputación 8
  • Eres un auto y tienes dos opciones: Parar o Seguir
    • Ver Perfil
    • Mi repositorio de Github donde encontraras herramientas para tu trabajo.
« en: Enero 25, 2019, 10:29:47 pm »
Secure Data Connection – SDC:

• ¿Qué es?: Es un protocolo de comunicación entre sockets (Cliente-Servidor) de forma segura. En la comunicación se cifran y descifran los datos ya sean de entrada y de salida de forma simétrica con el cifrado por bloques AES.
• ¿Cómo lo uso?: Por estos momentos solo se puede usar en el lenguaje de programación “Python”. Pronto se podrá estandarizar en diferentes lenguajes de programación.
• ¿Para qué lo debo usar?: Como ya mencione, sirve para comunicarse entre un cliente y servidor, se pueden usar en aplicaciones sencillas o complejas en una red de alta velocidad. Ejemplo de aplicaciones: Chat, Administración de computadores u otra aplicación que se requiera la comunicación de forma remota.
¿Cómo funciona?:
En la siguiente imagen se describe mucho mejor como funciona, seguido de la explicación textual:
 


¿Qué son las repeticiones?: “Las repeticiones deben ser por iguales en el cliente-servidor y mientras más tenga, más tardío puede ser el proceso de comunicación, aunque también depende de los recursos del computador”. Esta indica cuantas veces se deben cifrar-descifrar los datos.

Verificando su funcionamiento:
En la siguiente imagen podremos apreciar que pasaría si un cliente se conecta a nuestro servidor pero este no usa el protocolo correcto (Secure Data Connection - SDC):

 

Como vemos en la imagen el servidor es una aplicación creada en python, sencilla que usa el protocolo “SDC”, y el cliente en este caso seria “netcat”.
 


Vemos como el servidor le envía el siguiente mensaje: “Hola mi nombre es DtxdF”, pero como este cuenta con unas 10 repeticiones se ve todo esos datos que están cifrados y codificados a hexadecimales.
Veamos el funcionamiento con las aplicaciones correctas:


 
Como se puede apreciar, las aplicaciones usan el protocolo correcto por lo tanto pueden enviar y recibir los datos correctos de forma simple y sencilla.

Ejemplos:

* - Este es un ejemplo usando la consola de python:

Primer ejemplo: Un cliente comunicándose con el servidor:

Servidor:

Citar
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sdc
>>> servidor = sdc.Connection("", 8443, "12345678901234567890123456789012", repeat=10)
>>> servidor.server()
>>> servidor.client_buffer_print()
[{'origin': '127.0.0.1:49485', 'content': 'Hola gente de Underc0de soy un cliente', 'length': 23}]
>>>

Cliente:

Citar
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sdc
>>> cliente = sdc.Connection("localhost", 8443, "12345678901234567890123456789012", repeat=10)
>>> cliente.server_buffer_interact("Hola gente de Underc0de soy un cliente")
>>>

Segundo ejemplo: El servidor comunicándose con un cliente:

Servidor:

Citar
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sdc
>>> servidor = sdc.Connection("", 8443, "12345678901234567890123456789012", repeat=10)
>>> servidor.server()
>>> servidor.client_buffer_interact("Hola gente de Underc0de soy un servidor", servidor.client_list()[0])
>>>

Cliente:

Citar
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sdc
>>> cliente = sdc.Connection("localhost", 8443, "12345678901234567890123456789012", repeat=10)
>>> cliente.server_buffer_recv()
>>> cliente.server_buffer_print()
[{'origin': '127.0.0.1:8443', 'content': 'Hola gente de Underc0de soy un servidor', 'length': 23}]
>>>

Como ven es sencillo. Si no les queda del todo claro pueden ve información en el archivo: "informacion.docx" del repositorio, igualmente pueden ver una aplicación de chateo clonando el siguiente repositorio: https://github.com/DtxdF/chat-sdc

Repositorio de SDC: https://github.com/DtxdF/SDC
Requerimientos: socket (pre instalado), thread (pre instalado), Crypto (no viene pre instalado), json (pre instalado).

Para instalar Crypto, puedes hacerlo con: easy_install, pip o instalando el binario (En el caso de Windows).

Este protocolo apenas está creado, es mejorable y puede tener algunas fallas, sin embargo lo eh probado creando diferentes aplicaciones y funcionan perfectamente. Puedes ver el código fuente, modificarlos y mejorarlo a tu gusto.

Para ver la ayuda del módulo, usa la función de python "help" para apreciarla. Ejemplo: help(sdc)
« Última modificación: Enero 26, 2019, 12:00:38 am por DtxdF »
Los seres humanos son robots, cuyo combustible es el afanado dinero.

Desconectado facufangio

  • *
  • Underc0der
  • Mensajes: 202
  • Actividad:
    5%
  • Reputación 3
  • < SE SIEMPRE EL MEJOR, PERO NO TE LO CREAS />
    • Ver Perfil
« Respuesta #1 en: Enero 25, 2019, 11:02:27 pm »
Esta muy bueno tu aporte, ahora lo voy a probar pero desde Linux a ver como funciona desde otra plataforma.

Saludos!

Conectado DtxdF

  • *
  • Moderador
  • Mensajes: 378
  • Actividad:
    36.67%
  • Reputación 8
  • Eres un auto y tienes dos opciones: Parar o Seguir
    • Ver Perfil
    • Mi repositorio de Github donde encontraras herramientas para tu trabajo.
« Respuesta #2 en: Enero 25, 2019, 11:25:24 pm »
@facufangio

Hola gracias por visitar el post.

Recuerda que debes instalar Crypto para las version de python 2.7.

Yo lo probé en Windows y termux, supongo que si funciono en termux debe funcionar en Linux.
Los seres humanos son robots, cuyo combustible es el afanado dinero.

 

¿Te gustó el post? COMPARTILO!



[Proyecto] PyDB - "Bases de Datos" fáciles en Python :: JaAViEr | 0x5d

Iniciado por JaAViEr

Respuestas: 2
Vistas: 2306
Último mensaje Julio 24, 2013, 12:14:47 am
por JaAViEr
[Introducción+código] Introducción al Manejo de Bases de Datos MySQL en Python

Iniciado por blozzter

Respuestas: 2
Vistas: 2774
Último mensaje Noviembre 04, 2011, 06:05:29 pm
por blozzter
[Python] Mini clase para enviar datos POST - JaAViEr

Iniciado por JaAViEr

Respuestas: 0
Vistas: 2770
Último mensaje Diciembre 08, 2011, 05:24:26 am
por JaAViEr
Tipos de datos en Python

Iniciado por Sajuuk

Respuestas: 2
Vistas: 1863
Último mensaje Mayo 14, 2015, 09:09:48 am
por WhiZ
Como ver quien está usando nuestro Wi-Fi (con python)

Iniciado por porni

Respuestas: 8
Vistas: 7673
Último mensaje Agosto 31, 2018, 10:56:25 pm
por hielasangre