Vamos a tratar esto de Sockets en Python y lo hare de forma que cubramos algo como es la conexion directa para documentar un poco
esto de python en español y tambien de malwares.

Bueno cuando utilizamos sockets lo primero que tenemos que hacer es importar el modulo para poder utilizar todas las funciones que nos brinda

Código: Seleccionar todo

import socket
Segido de esto tendremo que crear nuestro socket:

Código: Seleccionar todo

svrSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
El formato es el sigiente "socket.socket(familia, tipo)"

Entonces
AF_INET - Indica que que utilizaremos el protocolo IP (IPv4)
SOCK_STREAM - Indica que es un socket de tipo TCP, si quisieramos usar UDP protocol deberiamos usar UDP SOCK_DGRAM.


Entonces tenemos nuestro socket, necesitaos decir en que puerto va a operar y lo hacemos bindenado el puerto

Código: Seleccionar todo

svrSoket.bind(("", 100))
Bueno entonces ligamos el socket al puerto 100, recuerden no usar puertos de otras aplicaciones para evitar conflictos.

Bueno ahora tenemos que poner nuestro socket a escuchar "incoming conexions", es muy facil

Código: Seleccionar todo

svrSocket.listen(5)
El 5 representa el backlog, y este argumento que toma especifica el maximo numero de conexiones entrantes.

Entonces avisamos que esta pasando con un print

Código: Seleccionar todo

print "Esperando conexiones"
Entonce nuestro codigo quedaria asi

Código: Seleccionar todo

import socket

serverSkt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
severSkt.bind("",100)
severSkt.listen(5)

print "Esperando conexiones"

while 1:

	clienteSocket, ipaddress = severSkt.accept()
	print "Conexion entrante de %s" % ipaddress
Bueno y con esto terminamos el server, solo hacemos un while y en cuanto se reciba una conexion
la aceptamos y obtenemos la direccion ip para despues mostrarla.

Entonces segimos con el CLIENTE:
Primeramente importamos socket y declaramos nuestro socket

Código: Seleccionar todo

import socket
clientSkt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
Bien ahora algo un poco distinto, solo especificamos a que direcion ip va a conectar.

Código: Seleccionar todo

clientSkt.connect(("127.0.0.1", 100))
Nos conectamos al localhost por el puerto 100

Bien entonces nuestro codigo quedaria asi.

Código: Seleccionar todo

import socket
clientSkt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientSkt = connect(("127.0.0.1", 100))

while 1:
	sdata = clientSkt.recv(512)
	if (sdata == "Disconnected"):
		print "Te haz desconectado"
		raw_input("Presione "Enter" para salir...")
		break

Donde sdata almacena lo recibido con .recv
y con el if vemo si se a desconectado de ser asi nos indica por un print que se a desconectado
y el viejo truco de no salir hasta presionar enter con un raw_input

Bueno cabe mencionar que esto es en conexon directa, y pronto ago el de conexion inversa para que tengan referencia de los dos
vale? Saludos a todos!
1337 & culture!
De echo si! pero ya sera un poco mas complejo y agregar algunas funcionalidad no solo la conexion inversa... y que gusto que lo aiias leido @adwind
1337 & culture!
KHC escribió:De echo si! pero ya sera un poco mas complejo y agregar algunas funcionalidad no solo la conexion inversa... y que gusto que lo aiias leido @adwind
de hecho me gusta leer cosas asi por acá ya que el norte está sufriendo tornados de crypters ja ja ja mañana lanzó una mini beta del rat en java solo con opción de mensaje para que prueben que tan rapido conecta
Perfecto @adwind si te puedo ayuar en algo decime podemos levantar sniffers y testear la conexion haber que se puede mejorar!
1337 & culture!
Responder

Volver a “Fuentes”