BandaAncha.eu

  • 🔍 en 📰 artículos ⏎
  • 🔍 en 💬 foros ⏎
  • 🔍 en 👇 este 💬 foro ⏎
  • 🔍 en 👇 este 💬 tema ⏎
Regístrate Regístrate Identifícate Identifícate
Fibra/Cable

Mas sobre protocolo emule

iXen

No todo lo que aquí se expone son malas ideas, he preferido abrir un post nuevo por lo extenso, pero esta es la idea que se
sugiere en otro post que leí esta mañana cuando me levante. Yo no estoy capado, (esta tarde se apago el moden y se volvió
a encender pero todo sigue igual de descapado que siempre)

Así que voy a intentar dar un poco de luz al asunto o por lo menos mi luz, ya luego me corregirán los fallos.

Bueno al grano, lo primero presentar al paquete emule. Es buen amigo de casi todos vosotros, pero no parece que sea
conocido en profundidad.

El protocolo emule es extenso aquí solo me centrare en lo que supuestamente están capado si alguien cree que no es este
tipo de paquetes pues nada, probamos con las peticiones o con los que sea.

EL PAQUETE DE ENVIO DE DATOS.

Imagen original en http://img251.echo.cx/img251/4739/p24xh.jpg

Esto que vemos aquí arriba es una parte del paquete, el numero marcado en azul es el que dice que es un paquete de
emule, apartir de ahí empiezan los datos del protocolo emule, antes los datos que hay son los datos referentes al protocolo
tcp/ip

Aquí abajo se aprecia mucho mas claro como se descompone el paquete.

Imagen original en http://img254.echo.cx/img254/2893/p16ue.jpg

Creo que esto de que es un paquete de emule de envió de datos y que campos tienen ha quedado mas que clarito.

Ahora viene lo bueno.

Programa para enviar un paquete de emule a la ip y puerto que se quiera:

#include
#include
#include
#include
#include
#include
#include

#include

#pragma comment(lib, "user32.lib")
#pragma comment(lib, "ws2_32.lib")

#define SOCKS4_EXECBYTE 133
#pragma pack(push, 1)
#pragma pack(pop)

#ifndef WIN32
#define CRITICAL_SECTION pthread_t
#endif

unsigned char peer0_0[] = {
0xc5, 0x64, 0x13, 0x00, 0x00, 0x40, 0x12, 0x4e,
0xd8, 0x34, 0xaa, 0x4b, 0xc5, 0xf7, 0x4c, 0x5c,
0xc2, 0x71, 0x0b, 0x4a, 0x7d, 0x3d, 0x00, 0x00,
0x00, 0x00, 0x4b, 0x13, 0x00, 0x00, 0x78, 0xda,
0xb5, 0x59, 0x5d, 0x72, 0xdc, 0x38, 0x92, 0x7e,
0x1e, 0x45, 0xe8, 0x0e, 0xf4, 0xd3, 0xcc, 0xec,
0x38, 0xdd, 0x55, 0x00, 0x8a, 0x00, 0x1c, 0xfb,
0xb0, 0x02, 0x28, 0x82, 0x26, 0x9b, 0x12, 0x49,
0xa3, 0x41, 0xb2, 0xdf, 0xca, 0x52, 0xd9, 0xae,
0x69, 0x49, 0xa5, 0xa9, 0x2a, 0x59, 0xa3, 0x8d,
0x3e, 0xc5, 0x5e, 0x62, 0x2f, 0x32, 0x57, 0x98,
0xa3, 0xcc, 0xfb, 0x7e, 0x60, 0xc9, 0xb6, 0xdc,
0xd1, 0x3d, 0xf6, 0xee, 0xc6, 0x94, 0x22, 0xf4,
0x43, 0x00, 0x89, 0xfc, 0xf9, 0xf2, 0xcb, 0x4c,
0x2a, 0x5f, 0x5f, 0xad, 0x92, 0xb3, 0xe5, 0xf5,
0xea, 0x65, 0x52, 0xaf, 0x2f, 0xb6, 0x9b, 0xdd,
0xe6, 0xed, 0x3e, 0x69, 0xb6, 0x9b, 0xcb, 0xbb,
0x8b, 0x7d, 0x52, 0xad, 0x1e, 0x7e, 0xbf, 0x4b,
0xd8, 0x6c, 0xc6, 0x8e, 0x8f, 0x4e, 0xee, 0xf6,
0xef, 0x37, 0xdb, 0x24, 0x49, 0x5e, 0x26, 0xff,
0xf8, 0xfb, 0x7f, 0xff, 0xcd, 0xff, 0xed, 0xec,
0xef, 0xff, 0x38, 0x3e, 0x0a, 0xab, 0xed, 0x6e,
0xbd, 0xb9, 0x49, 0xe6, 0x2f, 0xe6, 0xc7, 0x47,
0xc7, 0x47, 0xc5, 0x6a, 0xbb, 0x4a, 0xd6, 0xbb,
0x64, 0x99, 0x5c, 0x6c, 0xae, 0xae, 0x56, 0x17,
0xfb, 0xb8, 0xb6, 0x79, 0xfb, 0x2b, 0xa2, 0x7f,
0x5a, 0x3d, 0xec, 0x92, 0x57, 0x49, 0xb1, 0xfc,
0xb0, 0xfa, 0xb8, 0x77, 0x75, 0x99, 0x6c, 0x3e,
0xac, 0xb6, 0xc9, 0xfe, 0xfd, 0x2a, 0x79, 0x58,
0x2d, 0xb7, 0x71, 0xfd, 0x7d, 0x5c, 0xbf, 0xd9,
0x24, 0xeb, 0xcb, 0xd5, 0x32, 0x39, 0x3e, 0xea,
0xdf, 0xaf, 0x2f, 0xde, 0x27, 0x9b, 0x9b, 0xd5,
0x2e, 0xb9, 0xdf, 0x6c, 0x7f, 0x4a, 0x96, 0x37,
0x97, 0xc9, 0xfd, 0xf4, 0xec, 0x72, 0x73, 0xf3,
0xfb, 0x7d, 0xf2, 0xe6, 0x6e, 0x8f, 0x43, 0x6f,
0x56, 0x57, 0xeb, 0x15, 0xce, 0x41, 0xd0, 0x43,
0xb2, 0xbc, 0xba, 0x4a, 0x76, 0xef, 0x37, 0x77,
0x57, 0x97, 0x8f, 0x47, 0x76, 0x87, 0xe7, 0x17,
0xb0, 0x39, 0x79, 0xbb, 0xdd, 0x5c, 0x27, 0x5b,
0x6c, 0x5f, 0xbe, 0x81, 0x1b, 0x8e, 0x8f, 0x5e,
0x6f, 0xee, 0xb6, 0x17, 0xab, 0xdd, 0x8b, 0xe4,
0xd5, 0xdb, 0xe4, 0x61, 0x73, 0x97, 0xbc, 0x5d,
0xe3, 0x02, 0x5c, 0x87, 0x23, 0xcb, 0x3d, 0xee,
0xc0, 0xbd, 0x37, 0x9b, 0xfd, 0x41, 0xd0, 0xed,
0xd5, 0x6a, 0xb9, 0x5b, 0x25, 0xbb, 0x15, 0xb6,
0x40, 0xd4, 0xf2, 0x26, 0x59, 0x5d, 0x2f, 0xd7,
0xb8, 0x6c, 0xbf, 0xdc, 0xaf, 0x6f, 0xde, 0xc5,
0xf3, 0xdb, 0x24, 0xda, 0x7c, 0xbf, 0xdc, 0xae,
0x9e, 0x43, 0xf8, 0x87, 0x83, 0xaf, 0x9e, 0x5f,
0x6c, 0xee, 0x6e, 0xf6, 0xdb, 0x87, 0xe4, 0xe4,
0x93, 0xf2, 0xb7, 0x9f, 0x9d, 0x32, 0x5d, 0x7b,
0x1f, 0xdd, 0x78, 0xb7, 0x83, 0x94, 0x17, 0x49,
0x74, 0xab, 0x7f, 0xbf, 0xbc, 0xf9, 0x09, 0x7a,
0x6f, 0x5e, 0x26, 0xf7, 0xf7, 0xf7, 0x2f, 0x96,
0xb8, 0xe2, 0xea, 0xc3, 0x1a, 0xdf, 0x5f, 0xbc,
0xd9, 0xfc, 0xf5, 0xc5, 0xee, 0xa7, 0xe7, 0xd3,
0xe3, 0xf7, 0x9b, 0xfd, 0x9b, 0xcd, 0xfe, 0xc5,
0xc5, 0xe6, 0xfa, 0xf9, 0x67, 0x87, 0x3f, 0x9f,
0x7c, 0x04, 0x6f, 0xe0, 0xc2, 0x0d, 0x0c, 0xdf,
0x26, 0x17, 0xb8, 0x3d, 0xd9, 0xc0, 0x51, 0xf1,
0xaf, 0x83, 0x65, 0xc7, 0x47, 0xc9, 0xe7, 0x4f,
0xb1, 0xba, 0xba, 0x5d, 0x1d, 0xac, 0xbe, 0x5f,
0xe2, 0xd0, 0x16, 0x12, 0xa6, 0x93, 0x51, 0x93,
0xe3, 0xa3, 0xd3, 0xc9, 0xc8, 0x68, 0xf0, 0xfe,
0x65, 0xb2, 0x39, 0x7f, 0x7d, 0xe2, 0x4f, 0xce,
0xce, 0x37, 0xff, 0x71, 0xbd, 0xd9, 0xed, 0xe9,
0x7e, 0x79, 0x83, 0x28, 0x46, 0x0d, 0x26, 0xb5,
0x2f, 0x36, 0xb7, 0x0f, 0xf7, 0xeb, 0xed, 0x1e,
0x90, 0xb8, 0x79, 0x0b, 0xdd, 0x5f, 0x1d, 0x5c,
0x18, 0x03, 0xb5, 0x5d, 0x21, 0x2e, 0x0f, 0xc9,
0xf5, 0x72, 0xbf, 0x87, 0x4a, 0xf7, 0xd1, 0xbb,
0xeb, 0xe4, 0x16, 0x4a, 0xad, 0x6f, 0x92, 0x49,
0xad, 0x8b, 0xe5, 0x1d, 0x9c, 0x1b, 0x83, 0x17,
0x1d, 0xb2, 0xdc, 0x21, 0x84, 0x57, 0xf0, 0x3e,
0x5c, 0x99, 0xfc, 0xf9, 0x6e, 0xb7, 0x4f, 0xde,
0x2d, 0x6f, 0x6e, 0x96, 0x5f, 0xe8, 0x3d, 0x7d,
0x2e, 0x37, 0x07, 0x61, 0x93, 0x17, 0xa1, 0x4d,
0x72, 0xbf, 0xde, 0xbf, 0x4f, 0xd6, 0x7b, 0xd8,
0xf0, 0x30, 0x99, 0x33, 0x1d, 0x8e, 0xde, 0xdf,
0x6f, 0xe0, 0xee, 0xd5, 0x6d, 0x72, 0xfd, 0x90,
0xdc, 0x44, 0x28, 0x00, 0xa8, 0xd8, 0x76, 0x08,
0xea, 0x8b, 0x83, 0xd3, 0x71, 0xff, 0x01, 0xf4,
0x40, 0xf0, 0xfe, 0x3d, 0x60, 0xfd, 0x36, 0x26,
0xcb, 0xe4, 0x90, 0x87, 0xc9, 0x3f, 0xef, 0x61,
0x34, 0x82, 0xf4, 0x5d, 0xb1, 0xb9, 0xba, 0x8c,
0x21, 0x87, 0x80, 0xfd, 0xf2, 0x27, 0xa8, 0x79,
0x76, 0x0e, 0x0b, 0x77, 0xb7, 0x9b, 0x9b, 0xdd,
0xfa, 0xcd, 0xfa, 0x6a, 0xbd, 0x7f, 0x48, 0xde,
0x6e, 0x0e, 0xc0, 0x8e, 0x3a, 0x1c, 0x1f, 0x8d,
0x50, 0x2f, 0xda, 0x17, 0x9f, 0x44, 0xdf, 0x6c,
0xe1, 0x88, 0x98, 0x2a, 0x00, 0xc2, 0x07, 0x40,
0xfd, 0x32, 0xba, 0xe1, 0xd3, 0x8d, 0x2f, 0x12,
0xff, 0xe9, 0x72, 0xfc, 0x9c, 0xdc, 0x13, 0xc5,
0xdd, 0x6e, 0xd7, 0x1f, 0x96, 0x70, 0xee, 0xed,
0xdd, 0xf6, 0x76, 0xb3, 0xc3, 0xad, 0x9b, 0x9b,
0xab, 0x28, 0x3c, 0xe2, 0xea, 0x75, 0x71, 0xfe,
0xc3, 0xf7, 0xd9, 0xd9, 0xef, 0x7d, 0x62, 0x4e,
0x93, 0xec, 0xbc, 0x3f, 0xfb, 0xfe, 0xfc, 0x24,
0x3b, 0xcd, 0x92, 0xf3, 0x2e, 0x09, 0xaf, 0x4e,
0x7b, 0xfc, 0x66, 0xc6, 0xe4, 0xe4, 0x6c, 0x3c,
0x3f, 0x3b, 0x4d, 0xfa, 0xe2, 0xc4, 0xbf, 0x3e,
0x3f, 0x0d, 0xa7, 0xdd, 0xb3, 0x8f, 0xb8, 0x8f,
0x6e, 0x5e, 0xbe, 0xc5, 0x8d, 0xeb, 0x65, 0x4c,
0xcb, 0xc9, 0x89, 0xd1, 0xe8, 0xe3, 0x23, 0x17,
0x53, 0xf4, 0xe6, 0x7a, 0x75, 0x03, 0x64, 0x41,
0x87, 0x93, 0x33, 0xff, 0x8a, 0x9a, 0xf5, 0x76,
0x79, 0xf1, 0x90, 0xbc, 0xdb, 0x6e, 0xee, 0x6e,
0x9f, 0x7f, 0xf2, 0xcf, 0x04, 0x36, 0xe4, 0xd6,
0x24, 0x61, 0x5a, 0x9b, 0x96, 0xa6, 0xe4, 0x59,
0x4d, 0x3e, 0x8d, 0x2e, 0x8c, 0xb7, 0x1d, 0x1f,
0xd9, 0x93, 0xb3, 0xb3, 0x73, 0x1f, 0x51, 0x71,
0xf9, 0xd4, 0xee, 0x13, 0x84, 0x3f, 0xba, 0x68,
0xf3, 0xe6, 0xcf, 0xe0, 0x87, 0xdd, 0x17, 0x5e,
0x99, 0x74, 0x6c, 0xba, 0x57, 0xe1, 0xc4, 0x9f,
0x46, 0xbf, 0xdd, 0xae, 0xb6, 0x70, 0x73, 0x04,
0x7b, 0x5c, 0x88, 0x59, 0x7a, 0xbd, 0x8a, 0x00,
0x38, 0x3e, 0xca, 0x71, 0xed, 0x87, 0xf5, 0xea,
0x7e, 0x4a, 0xa7, 0x47, 0x03, 0x81, 0x93, 0x8b,
0xf7, 0x9b, 0x4d, 0x0c, 0x01, 0xc8, 0xe5, 0xdd,
0xcd, 0x66, 0xca, 0x84, 0x15, 0xfe, 0xde, 0xde,
0x01, 0x67, 0xcf, 0xa7, 0x6b, 0x1f, 0xa3, 0x1f,
0xad, 0x81, 0xf4, 0x5d, 0x44, 0x08, 0x42, 0xb4,
0xd9, 0xc1, 0xd7, 0x31, 0x91, 0x8f, 0x8f, 0x5e,
0x1d, 0xe8, 0xe0, 0x53, 0xa8, 0xaf, 0x0e, 0x81,
0x99, 0x32, 0x7f, 0x39, 0x91, 0xdf, 0x2e, 0x9e,
0xdc, 0x2f, 0xd7, 0x37, 0x11, 0x1e, 0xb8, 0xea,
0x97, 0x01, 0xff, 0x32, 0xce, 0xc7, 0x47, 0xd9,
0x79, 0x12, 0x1d, 0xd1, 0x9d, 0x9e, 0x64, 0x49,
0xfe, 0x43, 0xe7, 0x8b, 0x1f, 0xba, 0x09, 0xd0,
0xbb, 0x4d, 0x4c, 0xe1, 0x67, 0x4f, 0x90, 0x70,
0x0f, 0x22, 0xbb, 0x5e, 0x5e, 0x1e, 0x6e, 0x9c,
0x22, 0xbf, 0x02, 0x87, 0x4c, 0x52, 0x97, 0x57,
0x9f, 0x30, 0xf1, 0x22, 0xf9, 0xd5, 0xcf, 0x13,
0x52, 0x39, 0xbd, 0xf9, 0xf3, 0xe6, 0xe1, 0xc5,
0x21, 0xb7, 0xbb, 0xd5, 0xf5, 0xea, 0xfa, 0xcd,
0x6a, 0xfb, 0x1c, 0xf8, 0x39, 0xe9, 0x4e, 0x93,
0xf1, 0x1c, 0xd7, 0xbf, 0x2e, 0x5e, 0xf9, 0xe7,
0xc0, 0xd0, 0xd9, 0x7f, 0x4d, 0x60, 0x3a, 0x49,
0xec, 0xb9, 0xad, 0x5e, 0xff, 0x60, 0xab, 0x57,
0x67, 0x2e, 0xf9, 0xfe, 0xf4, 0xd4, 0x16, 0xcf,
0x0e, 0xc9, 0x52, 0x47, 0x27, 0x46, 0x64, 0xef,
0xde, 0x4f, 0x8c, 0x17, 0x9f, 0x21, 0x9b, 0xd6,
0x08, 0x36, 0x12, 0x63, 0x1d, 0xf9, 0x2b, 0x79,
0xb7, 0xda, 0x27, 0x7f, 0xb9, 0x5b, 0x4e, 0x29,
0x11, 0x61, 0x13, 0xb1, 0xd1, 0x63, 0xf7, 0x7f,
0x3e, 0x4b, 0x0e, 0x2a, 0xc4, 0xaf, 0x67, 0xcf,
0x9a, 0xef, 0x4f, 0x4f, 0x5e, 0x47, 0xe0, 0x7e,
0xf6, 0x06, 0xc0, 0xfa, 0xc9, 0x23, 0xaf, 0xf2,
0xa8, 0x5a, 0x92, 0xbd, 0x7a, 0x7d, 0xe2, 0xba,
0x53, 0x20, 0xf8, 0x95, 0x2f, 0xe2, 0x06, 0x5f,
0x44, 0x9d, 0xfa, 0xee, 0x95, 0xf7, 0xa7, 0x67,
0xc9, 0x89, 0x39, 0x0f, 0xa7, 0xcf, 0x9e, 0x7d,
0x96, 0x1b, 0xbf, 0x7e, 0xdd, 0x1f, 0xff, 0xf6,
0x2d, 0x5f, 0xff, 0xb2, 0xc3, 0x7f, 0xa2, 0x7f,
0xf2, 0xf9, 0xd3, 0x57, 0x0e, 0xff, 0x8c, 0x9f,
0xbf, 0x55, 0xb9, 0x93, 0x9f, 0xb1, 0xe3, 0x77,
0xf8, 0xfc, 0xcb, 0x6e, 0xff, 0x57, 0x3b, 0xed,
0xf8, 0xe8, 0x9f, 0xaa, 0x07, 0x05, 0x8f, 0x8f,
0x7e, 0xfe, 0x28, 0xb3, 0x7e, 0x9d, 0xf4, 0x28,
0xd8, 0x9b, 0xfb, 0x5d, 0xa2, 0x17, 0x2f, 0x3f,
0x3e, 0xfd, 0xf9, 0xe0, 0x80, 0xaf, 0xcb, 0xc1,
0x59, 0x9c, 0x4b, 0x4e, 0x5e, 0x1e, 0x0e, 0xc8,
0x85, 0x24, 0xb6, 0x90, 0x7c, 0xbe, 0x58, 0x1c,
0x1e, 0xcc, 0x66, 0x33, 0x9a, 0x1d, 0x3e, 0x87,
0x07, 0x4a, 0x2e, 0x48, 0xb2, 0xf9, 0x42, 0x2d,
0x1e, 0x1f, 0xcc, 0xb1, 0x63, 0xce, 0x66, 0x2a,
0x9d, 0xf3, 0xdf, 0x90, 0x71, 0xf8, 0xfe, 0x78,
0x93, 0x79, 0x6e, 0x1f, 0xef, 0x62, 0x42, 0xea,
0x94, 0xce, 0x4f, 0x6b, 0x5c, 0x30, 0x17, 0x92,
0xa7, 0x94, 0xa6, 0x5c, 0xa5, 0x8f, 0x52, 0xd3,
0x85, 0x5e, 0x3c, 0x2e, 0xce, 0xe6, 0x29, 0x7e,
0xd7, 0xe9, 0x82, 0x89, 0xc7, 0xc5, 0x85, 0x7c,
0xb2, 0xc8, 0x17, 0x0b, 0x9a, 0x49, 0xdc, 0xfa,
0xb8, 0xc8, 0x66, 0x9f, 0x17, 0x05, 0x63, 0x29,
0xb4, 0x63, 0x9c, 0x7f, 0xcb, 0x22, 0x57, 0x9f};

//CRITICAL_SECTION candado,cc,css;

void mipro(void *parametros);

int hilo=0;

void main(int argc, char **argv)
{
int i;
int f;
if (argc!=3) {
printf ("\nLa forma correcta es %s ip puerto \nEjemplo %s 195.23.41.23 4662\n",argv[0],argv[0]);
exit(0);
}
printf ("Cuantos paquetes envio\n");
scanf("%d",&f);
//f = numero de paquetes a enviar

for (i=0;i
hilo++;

_beginthread( mipro,sizeof(argv),(void *)(char **) argv);
Sleep(10);
}

while(hilo>0)
Sleep(10);
}

void mipro(void *parametros) {

int ip1[4];
struct hostent *hent;
int sock=0;
char ip[16];
// char *ip;
struct sockaddr_in target_ip;
char buf[100000];
int buf_size=100000;
int puerto=80;
int resul;
unsigned int addr;
char tmp[100];
char **cadenita;

WSADATA wd;
buf[0]='\0';
WSAStartup(MAKEWORD(1,1), &wd);

cadenita=parametros;

// printf("--->%s\n",cadenita[0]);

sscanf (cadenita[1], "%d.%d.%d.%d", &ip1[0],&ip1[1],&ip1[2],&ip1[3]);
sscanf (cadenita[2], "%d",&puerto);
sprintf(ip,"%d.%d.%d.%d",ip1[0],ip1[1],ip1[2],ip1[3]);

// printf ("%s\n",tmp);

//printf("ip-->%s\n",ip);
// hent = gethostbyname(ip);
addr = inet_addr(ip);
hent = gethostbyaddr((char *)&addr, 4, AF_INET);
if (hent == NULL) {
printf(" Error hostname erroneo (hostname=\"%s\")\n" , ip);
}
else{
target_ip.sin_family = AF_INET;
//target_ip.sin_addr.s_addr = inet_addr(ip);
target_ip.sin_addr = *(struct in_addr *)hent->h_addr_list[0];
target_ip.sin_port = htons(puerto);
closesocket(sock);
sock=socket(AF_INET,SOCK_STREAM,0);
//sock=socket(AF_INET,SOCK_DGRAM,IPPROTO_TCP);
if (sock
printf("error: no puede conectarse a ese puerto TCP\n");
}
else
{
resul=connect(sock,(struct sockaddr *)&target_ip, sizeof(target_ip));

resul=send(sock,peer0_0,strlen(peer0_0),0);

// printf("enviado %s =%d\n",tmp,resul);

// resul = recv(sock, buf,10,0);

// printf("recibido %d\n",resul);
/* buf[resul-1]='\0';
printf("\nbuf-->%s \nresul=%d",buf,resul);
buf[0]='\0';*/

}

closesocket(sock);
}
printf("Numero de hilos -->%d\n",hilo);
hilo--;
_endthread();
}

Ahora otro programa que lo que hace es estar escuchando en un puerto y capturar los paquetes que les van llegando.
Además va mostrando la velocidad (muy toscamente) a la que recibe los datos, cada vez que se supera la transferencia
máxima se indica.

#include
#include
#include
#include
#include
#include
#include

#include

#pragma comment(lib, "user32.lib")
#pragma comment(lib, "ws2_32.lib")

#define SOCKS4_EXECBYTE 133
#pragma pack(push, 1)
#pragma pack(pop)

#ifndef WIN32
#define CRITICAL_SECTION pthread_t
#endif

int paquetes=0;
int maxima=0;

void contador(void *parametros);

void main(int argc, char *argv[])
{
int x,t,ii;
int s_escucha,s_envia;
char *ix;
char buf[10000];
struct sockaddr_in k,i;
int puerto;

WSADATA wd;

WSAStartup(MAKEWORD(1,1), &wd);

if (argc!=2){
printf ("\nLa forma correcta es %s puerto \nEjemplo %s 4662\n",argv[0],argv[0]);
exit(0);}

sscanf (argv[1], "%d",&puerto);

// abrimos contador
_beginthread( contador, 0, NULL);

x=0;
//Rellenado la estructura
k.sin_family=AF_INET;
k.sin_port=htons(puerto);
k.sin_addr.s_addr=inet_addr("0.0.0.0");
// bzero(&(k.sin_zero),8);

//creamos socket para escuchar
s_escucha=socket(AF_INET,SOCK_STREAM,0);
if (x==-1){
printf("Error .... socket= -1\n");
exit(0);
}

//asociamos el socket
x=bind(s_escucha,(struct sockaddr*)&k,sizeof(k));
if (x==-1){
printf("Error .... bind= -1\n");
exit(0);
}
//ponemos a escuchar
x=listen(s_escucha,10);
if (x==-1){
printf("Error .... listen= -1\n");
exit(0);
}

t=sizeof(i);

printf("Escuchando ...\n");
for(;;){
s_envia=accept(s_escucha,(struct sockaddr*)&i,&t);
if (s_envia==-1){
printf("Error al establecer la conexion con interm\n");
exit(1);
}

/* printf ("=========Conexion aceptada de ==== maxima velocidad alcanzada --> %d ===========\n",maxima);
printf ("Puerto %d \n",ntohs(i.sin_port));
ix=inet_ntoa(i.sin_addr);
printf ("direcion %s \n",ix);
printf ("==================================================================================");
*/
//reciviendo datos
x=recv(s_envia,buf,sizeof(buf),0);
// printf ("\nrecibido %d\n",x);
paquetes++;

}
}

void contador(void *parametros){
int resul=0;
WSADATA wd;
WSAStartup(MAKEWORD(1,1), &wd);
for(;;){
Sleep(1000);

resul=paquetes*1400;
if (resul!=0)
printf ("%d bytes por segundo\n",resul);
if (resul>maxima) {
maxima=resul;
printf ("M A X I M A ---> %d bytes por segundo\n",maxima);
}
paquetes=0;
}
_endthread();
}

Funcionamiento: una persona ejecuta en su pc el segundo programa, esta persona le indica a un numero de personas su
ip y el puerto en el que esta escuchando el programa que ha ejecutado, y este grupo de personas lanza el primer programa
poniendo indicando a la pregunta el numero de paquetes que quiere enviar (cada paquete es de 1400 bytes y envía 100
paquetes por segundo 140000 bytes), para que este constantemente enviando datos.

En resumen, no echarle mucha cuenta a los programas porque no están puesto bonitos, sino hechos rápidos y con prisas. No
veo razón alguna por la que no funcionen. Si bueno ya lo pondré luego compilado si alguien le hace ilusión. Esto solo es
una idea.

Este tema está cerrado a nuevas respuestas. Abre un nuevo tema para retomar la conversación.
BocaDePez
BocaDePez

Es una propuesta muy interesante, desde luego, y de matizarse un poco más, creo que sería algo muy pero que muy bueno.

Lo ideal en mi opinión sería hacer una especie de programa java, para ponerlo en una web. Algo asi como el test web100 que conocemos, pero que lo que comprobara fuera la velocidad enviando paquetes normales (http) y de emule/bittorrent/etc, a ver cual es el limite. O simplemente que nos envie paquetes de uno u otro tipo, y ya cada uno con el dumeter por ejemplo ver a que velocidad llega en uno u otro caso.

Que os parece? Seria posible?

iXen

Gracias por contestar bocadepez, es increíble que el único que se ha dignado a hablar sea un bocadepez. Mucho quejarse pero a la hora de buscar soluciones, la gente pasa un huevo es mas fácil llorar que intentar saber que esta ocurriendo con mas detalles.

Sabéis que os digo que os den así de claro, yo estoy descapado, descargo a la velocidad que quiero y más y no tengo ningún problema.

En cuanto a ti bocadepez, lo que dices es realmente lo que se ha pensado, un programa que se instalan una serie de usuarios que envían paquetes de emule, (estos paquetes tienen que llegar a algún lado, por eso hay otro programa que los recoja y calcule la velocidad de descarga de esos paquetes).

Lo que dices no es muy viable, mas que nada porque no conozco a un servidor que me de un ancho de banda de subida de 3MB y que encima me deje abrir conexiones, para enviar datos.

🗨️ 2
sotomonte

Soy el "bocadepez" :P, es que no me he acordado de loguear, casi nunca me acuerdo, como leo el foro rápidamente...

En realidad yo si que lo veo viable, mas que nada porque tampoco es necesario que de 3M de ancho de banda el servidor web en el que se aloje ese java (o lo que sea), sino que con que por ejemplo de 1.5M seria suficiente para comprobar un posible capado.

Por otra parte, si se hiciera, estoy seguro de que alguien en este foro podría alojar ese programa, y si me apuras mas de una página "conocida" se haria eco.

PD: Yo si estoy capado :(

PD2: Ixen, tampoco te rindas hombre, para mi que la gente no ha entendido muy bien lo que pretendiamos y por eso no ha contestado, ademas ha sido poco tiempo y el mensaje bajaba.

PTC

Juer, que tajante, después de todo el curro. Si no lo vas a compilar, dime al menos las cabeceras de los includes :P, que no has puesto

iXen

#include conio.h>
#include time.h>
#include process.h>
#include stdio.h>
#include string.h>
#include stdlib.h>
#include winsock2.h>

#include windows.h>

BocaDePez
BocaDePez

Dispongo de un servidor donde se podrian hacer las pruebas de subida. Daria con esos 3 mb y si ponemos mas.... los coge tb ;-) Sin interesa la oferta ya mirare el post y nos ponemos en contacto.
Yo dispongo del mega " especial " y si estoy capado.. sobre todo en la subida.

iXen

Si pongo los include entre mayor menor pues se borra, creerá que es un comando que no reconoce. Bueno parece que el post que puse antes da la sensación de que estoy más cabreado de lo que realmente estoy. De echo a mi lo que me da coraje es que se queje la gente por quejarse.

La gente mira el emule, mira a cuanto baja (10kB) pues venga estoy capado a 10KB porque no me baja a mas. Si hay una capada supongo que será igual para todos, o se ha dedicado un tipo a poner la capada aleatoria mente, un pavo poniendo a este lo capo a 65kB a este a 70kB a este el emule a 80kB y el azureus a 74.5kB. Tambien ha podido crear un algoritmo que ponga las capadas aleatoriamente dentro de un rango, pero creo que este no es el caso.

Trataba de sacar cosas en claro y de obtener datos concretos. Solo eso pretendía, y entendí que la gente se volcaría en un proyecto así. Si no se sabe compilar o no se entiende nada de lo que aquí se espone, pues creo que se pregunta, y se pide los ficheros compilados (yo no los he compilado, porque pensé que la gente desconfiaría de bajarse exe), pero vamos que a mi eso no me cuesta nada.

(link roto)

en cuanto lo que tu dices sotomonte pues algo puede que se pueda hacer, pero no lo tengo muy claro por el tema de que tu cuando te conectas a una paginas web. Ya intervienen una serie de protocolos, ahora mismo no estoy seguro si se puede enviar paquetes de emule puros.

Seguiré informando.

🗨️ 2
sotomonte

Hmm, sé lo que quieres decir, pero si ese programa (pongamos java) abre internamente un puerto diferente a tu pc, y transmite por ahi, deberia comportarse como una transmisión aislada, no crees?

Es que si no se hace así, y se requiere de varias personas que ejecuten su programa y pongan la ip y el puerto de uno... me temo que solo se comprobará a una persona y fácilmente se llegarán a acuerdos y a sincronizarnos. Pero si se hace así como digo, una vez creado y subido ya solo se depende de el servidor en cuestión, y cada uno podría testear su propia conexión sin depender del resto.

Una idea de como podría ser sería este test de velocidad:

(link roto)

Este test carga un applet de java, que conecta en tu pc a través de otros puertos (concretamente puertos 3001, 3002 y 3003) y transmite o recibe para comprobar la velocidad.
Sería lo mismo, solo que no solo transmitiendo paquetes "normales", sino también del protocolo emule, o bittorrent, o el protocolo a probar, para ver si hay capada o no.

🗨️ 1
iXen

si eso parece voy a investigar sobre el tema, me descargo el java y ya pondre algo por aqui.

despaxo

por BocaDePez (80.91.95.---), el Jueves, 28/04/05 21:20 h.

Dispongo de un servidor donde se podrian hacer las pruebas de subida. Daria con esos 3 mb y si ponemos mas.... los coge tb Sin interesa la oferta ya mirare el post y nos ponemos en contacto.
Yo dispongo del mega " especial " y si estoy capado.. sobre todo en la subida."

Pk no seedeas con BT un archivo pekeño (10-15Mb) y lo configuras con un solo slot de subida?

teoricamente si puedes enviar datos a 3mb , cualkier usuario de ono podria bajar al maximo esos 15 megas no?

posteas el torrent y lo probamos

MoNKi

Por si te sirve de algo, aquí tienes un filtro para edonkey de un programita de linux.

Programita: l7-filter.sourceforge.net
Filtro: (link roto)

Como ves, filtra paquetes que empiezan con e3, c5, e5 y d4, tal vez podrías hacer que alternara el byte de comienzo.

sotomonte

Por cierto, hay código fuente del test ese web100. Sería modificarlo ;)

ftp://achilles.ctd.anl.gov/pub/web100/web100-tools.tar.gz

Para hacerlo "sencillo", se podría añadir un botón más para empezar el "test" pero enviando paquetes emule :P. O simplemente usar ese código como guía, no se

iXen

Bueno me puse ha hacer un programita en java para hacer algo parecido al test
(link roto)

La verdad que no eche cuenta a buscar el código fuente del programa en java sino que lo descompile, ahora viendo el código fuente que sotomonte encontró mas me confirma que estaba en lo cierto. El programa de java lo que hace es abrir un puertos en el pc donde se esta ejecutando el applet y conectarse a un servidor que esta echo en c, en el servidor se tendría que estar ejecutando el servidor y esto es lo que realmente no puedo yo hacer porque no tengo ningún servidor con ese ancho de banda de subida.

Si alguien tiene un host donde instalar este demonio que sirva paquetes de emule si haría el programita java o en cualquier otro lenguaje que capturara esos paquetes.

Pero usando los programas anterior mente escrito se puede hacer exactamente lo mismo. Ejecutar en el servidor el programa enviar y en el cliente el programa p2p.

De todas formas lo voy ha hacer ahora mismo de forma mas vistosa a ver si a alguien le apetece usarlo. A mi me encanta programar y lo tengo muy abandonado así que no me viene nada mal.

🗨️ 1
sotomonte

Pero yo creo, por lo que he podido ver, que se conecta a un servidor no por enviar datos a traves del puerto, sino porque utiliza servicios de un kernel modificado en linux para asi obtener datos de tcp fiables (que no es solo un test de velocidad, comprueba datos de la conexion en muchos aspectos. No se, yo creo que solo para enviar datos si se podria hacer en el propio applet.
Si no se puede, seguro que una vez completada una forma de hacerlo, se consigue algun host con ancho de banda suficiente (por ahi arriba he leido ya una oferta ;) )

luigi027

Joder tío, te lo has currao.

Yo no entiendo demasiado lo que haceis... (un poco si), pero si finalmente activais el programita/applet en algun servidor, contad conmigo para probarlo...

Hay que pensar que si funciona ( que funcionara ) hay que buscar mucha gente que lo pruebe y podamos constatar delante de un notario/juez lo mangantes que son.

Un saludo pa'tos

iXen

Hombre siempre en la maquina que hace de servidor tiene que haber un demonio que mande datos. Tenia mi programita medio hacer, y me dije que lo quería hacer perfecto exactamente como lo hace el emule, para que la prueba fuera lo mas fehaciente posible.

El caso que me baje el código fuente del emule y ahí estaba pasando código de c++ a c#(es que mola y llevo poco tiempo probando este lenguaje de programación) el caso que a los 15 minutos me di cuenta que estaba haciendo el tonto, que estaba comiéndome el coco, para obtener un servidor de emule, que para eso seria muchísimo mas fiable tener el mismo emule puesto en el servidor con un fichero que solamente tuviera esa persona y que lo tuviera en lanzamiento. Luego solo habría que hacer peticiones con el emule del cliente a ese fichero.

Lo que yo realmente quería era hacer un seguimiento a los paquetes que salen de cada maquina y ver cuales llegan a su destino, que tiempos tardan en llegar, etc. Esa es la forma de ver como actúa el filtro y intentar buscar solución.

De todas formas comentándolo con un amigo que esta muy metido en un proyecto paralelo a emule y que trabajo en el, me comento que emule jamás seria un p2p con protocolo encriptado, ya que su filosofía es la de conectividad sin ocultarse de nada.
Por supuesto que podrán salir mod que encripten datos entre mod iguales, pero lo mas seguro que a esos mod se pasen gente con grandes bajada y poca subida, lo que crearan una pequeña subred de poca subida, y muchas ganas de descarga.

En resumen, yo seguiré investigando, simplemente por el echo de que soy muy curioso.

🗨️ 3
CuE

eres un maki tio, no t moskees si la peña no responde xq la mayoria no sabemos programar o sabemos lo justo para intentar entender lo ke kerias decir, salu2 fieras y seguir así...
mode listening ON ...

javielillo

Si lo que quieres es el eMule en C# bajate las fuentes de Lphant v1.01 (www.lphant.com) que juanjo era un antiguo programador del eMule pero le dió por escribir un cliente en C# y ahí lo tienes... una maravilla de cliente "made in spain" :D

🗨️ 1
iXen

ok gracias, si ya lo se, cuando juanjo empezo con su proyecto, yo le pedi informacion sobre los protocolos y fue muy amable en su dia, hablo del principio de emule del todo.
Gracias si por eso llegue a la conclusion que no mejoraria algo que ya estaba echo en el tiempo que yo queria hacerlo y por esa misma razon no e vi utilidad acabar lo que empece.