Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Foxy Rider

#1841
.NET (C#, VB.NET, ASP) / Re: Interceptar API
21 Diciembre 2009, 21:33 PM
Mi querido Keyen, leíste lo que postee ?  :)

te amplío un poquito más ... lo que podés hacer es de dos maneras, usando assemblies que te provean esta función (ahí te tiré un ejemplo de codeplex) o armarte vos una ...

si tomás el camino de armar la librería/assembly vos en C, acordate de exportar las funciones a dll con  __declspec(dllexport) si estás en Visual studio, si es GNU, se exporta automáticamente todo... otro detalle, si compilás con un compilador de C++, agregá un extern "C", por que sino, no vas a poder PInvokear gracias al name mangling (que es una forma de enmarañar los nombres de funciones/clases, and so on) ---> http://msdn.microsoft.com/en-us/library/0603949d.aspx

y después, desde .NET usás PInvoke : http://msdn.microsoft.com/en-us/magazine/cc164123.aspx

hay maneras más complejas, pero, let's KISS (Keep it simple stupid)
creo que me expliqué bien xD (no sé, el sueño me hace dudar :$)

Saludos ~
#1842
Foro Libre / Re: -Videos youtube- elhacker.net
18 Diciembre 2009, 09:28 AM
DEBO postear esto =D

[youtube=425,350]http://www.youtube.com/watch?v=OK4fJhbRL1g[/youtube]
#1843
.NET (C#, VB.NET, ASP) / Re: Interceptar API
17 Diciembre 2009, 19:14 PM
te conviene hacerte una librería para trabajar con esto en C y PInvokear ... o usar alguna de por ahí ...
podés hacerlo en .NET,pero es bastante desprolijo, so .. better go with PInvoke ..

fijate que por codeplex hay algo hecho  --> http://www.codeplex.com/Wikipage?ProjectName=easyhook

Saludos ~
#1844
.NET (C#, VB.NET, ASP) / Re: Raw Sockets y VB.NET
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 ~
#1845
hay mucho que se le podría agregar, pero, es tarde, tengo sueño y no se me ocurre que ahora  :rolleyes:

lo que me llega a la mente por lo que mencionó jaixxon es de  agregar las funciones "baneadas" por microsoft --> http://msdn.microsoft.com/en-us/library/bb288454.aspx (banned.h ->  http://download.microsoft.com/download/2/e/b/2ebac853-63b7-49b4-b66f-9fd85f37c0f5/banned.h )



Saludos ~
#1846
.NET (C#, VB.NET, ASP) / Re: Raw Sockets y VB.NET
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 (csharp) [Seleccionar]

// Somewhere in the code ...

class Package
{
public Int16 SourcePort,DestinationPort,Window,CheckSum,UrgentPtr;
public Int32 SequenceNumber,AckNumber;
public Byte DataOffset,Reserved,ControlBits;
public Byte [] Options = new Byte[1],Data = new Byte[1];
};


private static Byte[] makeTCPackage(Package PackageInfo)
{

// El paquete per se ... en una lista
System.Collections.Generic.List<Byte> mPacketBytes = new System.Collections.Generic.List<Byte>();
int optionBytes = 0;

// Empaquetamos el Puerto de origen y agregamos
// no limpiamos los bits que se truncan anyways
mPacketBytes.Add((Byte) (PackageInfo.SourcePort >> 8));
mPacketBytes.Add((Byte)  PackageInfo.SourcePort ); // truncamos y dejamos donde estaba

// Empaquetamos el de Destino y agregamos
mPacketBytes.Add((Byte) (PackageInfo.DestinationPort >> 8));
mPacketBytes.Add((Byte)  PackageInfo.DestinationPort);

// Empaquetamos el Sequence Number (en 4 pasos de un byte) y agregamos
mPacketBytes.Add((Byte) (PackageInfo.SequenceNumber >> 24));
mPacketBytes.Add((Byte) (PackageInfo.SequenceNumber >> 16));
mPacketBytes.Add((Byte) (PackageInfo.SequenceNumber >> 8));
mPacketBytes.Add((Byte)  PackageInfo.SequenceNumber);

// Empaquetamos el Ack Number (en 4 pasos de un byte) y agregamos
mPacketBytes.Add((Byte) (PackageInfo.AckNumber >> 24));
mPacketBytes.Add((Byte) (PackageInfo.AckNumber >> 16));
mPacketBytes.Add((Byte) (PackageInfo.AckNumber >> 8));
mPacketBytes.Add((Byte)  PackageInfo.AckNumber);

// 4 Bits de Data Offset + 2 de reserved
mPacketBytes.Add((Byte) (PackageInfo.DataOffset <<4));

// 2 de reserved + 6 de control bit
mPacketBytes.Add((Byte) ((PackageInfo.ControlBits << 2) >> 2));

// 2 bytes de Window
mPacketBytes.Add((Byte) (PackageInfo.Window >> 8));
mPacketBytes.Add((Byte)  PackageInfo.Window);

// 2 de checksum
mPacketBytes.Add((Byte) (PackageInfo.CheckSum >> 8));
mPacketBytes.Add((Byte)  PackageInfo.CheckSum);

// urgentPtr .. 2 bytes
mPacketBytes.Add((Byte) (PackageInfo.UrgentPtr >> 8));
mPacketBytes.Add((Byte) PackageInfo.UrgentPtr);

// Options
foreach(Byte mOptions in PackageInfo.Options)
{
mPacketBytes.Add(mOptions);
++optionBytes;
}

// Padding (4 columnas de 8 bits)

while((optionBytes++)%4 != 0)
{
mPacketBytes.Add((Byte) 0);
}

//Data
foreach(Byte mBData in PackageInfo.Data)
{
mPacketBytes.Add(mBData);

}

Byte[] mRawPacket = new Byte[mPacketBytes.Count];
mPacketBytes.CopyTo(mRawPacket);
return mRawPacket;
}


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
#1847
Favoritos ... favoritos ...
no sé si favoritos, pero la lista de usuarios que me da placer leer es la siguiente (tanto por el conocimiento como por lo actitudinal) :

Eternel Idol, Littlehorse, SDC,WHK,Hacker_Zero, TiFa,Festor, Danfelbm, Nyu, Hendrix, Randomize y MazarD ...

seguramente cometí la injusticia de olvidar a alguien, pero esa es la lista aproximadamente...
hay que tener en cuenta que no ingreso a todos los subforos, así que, probablemente me estoy perdiendo de conocer gente !

en fin ^^

Saludos ~
#1848
Foro Libre / Re: Sus escritorios
12 Diciembre 2009, 23:24 PM
Mi Escritorio actualizado ^^



no sé, no me gusta el fondo, quizá lo cambie ~

Saludos ~
#1849
además, no tenés eliminación determinística, pero podés usar el using para "sugerir" la eliminación de un objeto pasado el scope (que implemente IDisposable) ...
otro detalle es que un cuellito de botella a veces es el Garbage Collector en si (en mono por ejemplo andan laburando a full con esto)

aunque, no capto la esencia del topic, optimizar el uso de memoria por rapidez o por economizar ? (la primera no tiene sentido, la segunda sí)

CitarEntendido, ya no estamos 20 años atrás que esa época si se necesitaba optimizar.

indeed, aunque si tomar determinadas prácticas óptimas ...
(me encantaría extenderme en esto, pero tengo que irme )

Saludos ~
#1850
.NET (C#, VB.NET, ASP) / Re: Raw Sockets y VB.NET
5 Diciembre 2009, 14:03 PM
http://msdn.microsoft.com/en-us/library/2b86d684.aspx

también podés buscar alguno de los ports de pcap a .NET, hay un par ...
este es uno --> http://www.codeproject.com/KB/IP/sharppcap.aspx
de última, PInvoke a lo guerrillero =P  (swig te puede ayudar)

Saludos ~