elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Raw Sockets y VB.NET
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Raw Sockets y VB.NET  (Leído 9,819 veces)
elmaro


Desconectado Desconectado

Mensajes: 301


Unas simples palabras...


Ver Perfil
Re: Raw Sockets y VB.NET
« Respuesta #10 en: 15 Diciembre 2009, 00:07 am »

D4N93R , tu lo has hecho? Tienes el code para crear los paquetes?  ;D
Si es así, navidad llego temprano para mi  :laugh:


« Última modificación: 15 Diciembre 2009, 00:10 am por elmaro » En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Raw Sockets y VB.NET
« Respuesta #11 en: 15 Diciembre 2009, 00:20 am »

Si lo llegué a hacer, pero no tengo el código.. Perdí eso y mucho más :(

Pero igual es demasiado enredado. mejor dale en c++.net :) te lo haces en una libreria y luego la llamas desde tu aplicación principal en C#..

Un saludo!


En línea

elmaro


Desconectado Desconectado

Mensajes: 301


Unas simples palabras...


Ver Perfil
Re: Raw Sockets y VB.NET
« Respuesta #12 en: 15 Diciembre 2009, 00:24 am »

Excelente idea. Voy a ponerme con c++ jeje

Gracias y cualquier novedad la posteo. Nunca esta de mas
En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Raw Sockets y VB.NET
« Respuesta #13 en: 15 Diciembre 2009, 00:41 am »

C++ .Net, es mejor si quieres interactuar con .Net y Win32... :D
En línea

Foxy Rider


Desconectado Desconectado

Mensajes: 2.407


Deprecated


Ver Perfil WWW
Re: Raw Sockets y VB.NET
« Respuesta #14 en: 16 Diciembre 2009, 01:40 am »

Como veo que tuviste dificultades para armar paquetes ... te tiro una ayudita ...

usando Raw sockets tenés que armar el paquete by hand, vamos al ejemplo de armar un paquete TCP  :

Código
  1. // Somewhere in the code ...
  2.  
  3. class Package
  4. {
  5. public Int16 SourcePort,DestinationPort,Window,CheckSum,UrgentPtr;
  6. public Int32 SequenceNumber,AckNumber;
  7. public Byte DataOffset,Reserved,ControlBits;
  8. public Byte [] Options = new Byte[1],Data = new Byte[1];
  9. };
  10.  
  11.  
  12. private static Byte[] makeTCPackage(Package PackageInfo)
  13. {
  14.  
  15. // El paquete per se ... en una lista
  16. System.Collections.Generic.List<Byte> mPacketBytes = new System.Collections.Generic.List<Byte>();
  17. int optionBytes = 0;
  18.  
  19. // Empaquetamos el Puerto de origen y agregamos
  20. // no limpiamos los bits que se truncan anyways
  21. mPacketBytes.Add((Byte) (PackageInfo.SourcePort >> 8));
  22. mPacketBytes.Add((Byte)  PackageInfo.SourcePort ); // truncamos y dejamos donde estaba
  23.  
  24. // Empaquetamos el de Destino y agregamos
  25. mPacketBytes.Add((Byte) (PackageInfo.DestinationPort >> 8));
  26. mPacketBytes.Add((Byte)  PackageInfo.DestinationPort);
  27.  
  28. // Empaquetamos el Sequence Number (en 4 pasos de un byte) y agregamos
  29. mPacketBytes.Add((Byte) (PackageInfo.SequenceNumber >> 24));
  30. mPacketBytes.Add((Byte) (PackageInfo.SequenceNumber >> 16));
  31. mPacketBytes.Add((Byte) (PackageInfo.SequenceNumber >> 8));
  32. mPacketBytes.Add((Byte)  PackageInfo.SequenceNumber);
  33.  
  34. // Empaquetamos el Ack Number (en 4 pasos de un byte) y agregamos
  35. mPacketBytes.Add((Byte) (PackageInfo.AckNumber >> 24));
  36. mPacketBytes.Add((Byte) (PackageInfo.AckNumber >> 16));
  37. mPacketBytes.Add((Byte) (PackageInfo.AckNumber >> 8));
  38. mPacketBytes.Add((Byte)  PackageInfo.AckNumber);
  39.  
  40. // 4 Bits de Data Offset + 2 de reserved
  41. mPacketBytes.Add((Byte) (PackageInfo.DataOffset <<4));
  42.  
  43. // 2 de reserved + 6 de control bit
  44. mPacketBytes.Add((Byte) ((PackageInfo.ControlBits << 2) >> 2));
  45.  
  46. // 2 bytes de Window
  47. mPacketBytes.Add((Byte) (PackageInfo.Window >> 8));
  48. mPacketBytes.Add((Byte)  PackageInfo.Window);
  49.  
  50. // 2 de checksum
  51. mPacketBytes.Add((Byte) (PackageInfo.CheckSum >> 8));
  52. mPacketBytes.Add((Byte)  PackageInfo.CheckSum);
  53.  
  54. // urgentPtr .. 2 bytes
  55. mPacketBytes.Add((Byte) (PackageInfo.UrgentPtr >> 8));
  56. mPacketBytes.Add((Byte) PackageInfo.UrgentPtr);
  57.  
  58. // Options
  59. foreach(Byte mOptions in PackageInfo.Options)
  60. {
  61. mPacketBytes.Add(mOptions);
  62. ++optionBytes;
  63. }
  64.  
  65. // Padding (4 columnas de 8 bits)
  66.  
  67. while((optionBytes++)%4 != 0)
  68. {
  69. mPacketBytes.Add((Byte) 0);
  70. }
  71.  
  72. //Data
  73. foreach(Byte mBData in PackageInfo.Data)
  74. {
  75. mPacketBytes.Add(mBData);
  76.  
  77. }
  78.  
  79. Byte[] mRawPacket = new Byte[mPacketBytes.Count];
  80. mPacketBytes.CopyTo(mRawPacket);
  81. return mRawPacket;
  82. }
  83.  

usás package para rellenar los datos y obtenerlos en un Byte[] para más tarde  enviarlo ...
o de última usás algún port de PCap a .net, si bien podés PInvokear, mejor evitalo ...
otro detalle : forget about Managed C++

Saludos ~

P.S : en Linux se requiere privilegios root para poder mandar paquetes raw, sino : Exception -> Access denied

P.S 2 : eso no está optimizado, está escrito de manera que se vea bien
« Última modificación: 16 Diciembre 2009, 02:06 am por Vertex.Symphony » En línea

elmaro


Desconectado Desconectado

Mensajes: 301


Unas simples palabras...


Ver Perfil
Re: Raw Sockets y VB.NET
« Respuesta #15 en: 16 Diciembre 2009, 05:02 am »

Vertex.Symphony fue de gran ayuda el code para entender un poco mas del tema (es la primera vez que me pongo con armado y envío de paquetes)

Antes de empezar a hacer algo, el paquete lo voy a enviar usando pcap seguramente.
Usando como referencia el link que me dejaste:
En checksum:

This pseudo header contains the Source
    Address, the Destination Address, the Protocol, and TCP length.


Código:
                     +--------+--------+--------+--------+
                     |           Source Address          |
                     +--------+--------+--------+--------+
                     |         Destination Address       |
                     +--------+--------+--------+--------+
                     |  zero  |  PTCL  |    TCP Length   |
                     +--------+--------+--------+--------+

De que manera se arma? Porque la clase Package tiene puertos de origen y destino, pero no las direcciones. Las cuales se tienen que poner en CheckSum, si estoy equivocado en algo, estoy atento a correcciones.

Gracias por tu tiempo
En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Raw Sockets y VB.NET
« Respuesta #16 en: 16 Diciembre 2009, 16:54 pm »

Excelente, se ve muy bien.. acá te dejo un enlace de la wiki para que estudies la estructura, deberías leerlo:

http://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure
En línea

Foxy Rider


Desconectado Desconectado

Mensajes: 2.407


Deprecated


Ver Perfil WWW
Re: Raw Sockets y VB.NET
« Respuesta #17 en: 16 Diciembre 2009, 21:35 pm »

Si, el code jamás completa algo, no era la intención, solo mostrar como empaquetar a Byte[] los datos del paquete que indiques en la clase para enviarlo (con lo que te trabaste...la implementación queda de tarea...incluído el checksum)
si quisieses hacerlo bien, dentro de la clase incluirías la data que falta (y que no puse ..), armás el pseudoheader, el header tcp y operás para obtener el checksum ...

te dejo como calcular el checksum :
http://www.tcpipguide.com/free/t_TCPChecksumCalculationandtheTCPPseudoHeader-2.htm
http://wwwse.inf.tu-dresden.de/data/courses/SE1/exercises/se_ws0405_exercise8_tcp_checksum.pdf
http://www.netfor2.com/tcpsum.htm

aunque si vas para pcap, then, don't make a big fuzz about this =P

Saludos ~
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Sockets
Scripting
Panic0 1 3,579 Último mensaje 20 Agosto 2020, 12:56 pm
por Drakaris
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines