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

  • 2 Respuestas
  • 2937 Vistas

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

Conectado DtxdF

  • *
  • Moderador Global
  • Mensajes: 678
  • Actividad:
    100%
  • Reputación 16
  • Eres un auto y tienes dos opciones: Parar o Seguir
    • Ver Perfil
    • Mi repositorio de Github donde encontraras herramientas para tu trabajo.
    • Email
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: You are not allowed to view links. Register or Login

Repositorio de SDC: You are not allowed to view links. Register or Login
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

  • *
  • Ex-Staff
  • *****
  • Mensajes: 209
  • Actividad:
    16.67%
  • Reputación 5
  • < SE SIEMPRE EL MEJOR, PERO NO TE LO CREAS />
    • Ver Perfil
Esta muy bueno tu aporte, ahora lo voy a probar pero desde Linux a ver como funciona desde otra plataforma.

Saludos!

Conectado DtxdF

  • *
  • Moderador Global
  • Mensajes: 678
  • Actividad:
    100%
  • Reputación 16
  • Eres un auto y tienes dos opciones: Parar o Seguir
    • Ver Perfil
    • Mi repositorio de Github donde encontraras herramientas para tu trabajo.
    • Email
@You are not allowed to view links. Register or Login

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.

 

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

Iniciado por JaAViEr

Respuestas: 2
Vistas: 2398
Ú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: 2907
Ú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: 3181
Último mensaje Diciembre 08, 2011, 05:24:26 am
por JaAViEr
Tipos de datos en Python

Iniciado por Sajuuk

Respuestas: 2
Vistas: 1956
Ú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: 8631
Último mensaje Agosto 31, 2018, 10:56:25 pm
por hielasangre