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 - Eleкtro

#4151
Foro Libre / Re: Agresion a Rajoy.
17 Diciembre 2015, 09:01 AM
Con tanto chalado suelto yo lo que no entiendo es por que en estos años nadie le ha disparado un tiro entre ceja y ceja detrás de la cortina de alguna ventana. No me gusta desear la muerte, por que lo que no nos haga Rajoy otro lo hará, pero...

Saludos
#4152
Foro Libre / Re: Debate elecciones 2015
15 Diciembre 2015, 18:47 PM
Cita de: #!drvy en 15 Diciembre 2015, 14:36 PMSi bueno... solo hace falta ver la juventud y los viejos para darse de hostias contra la pared.

"¿Qué es el socialismo?":
- "Eso es lo de Franco, ¿no?"
- "¿Puedo patrocinar mi Instagram?"

"¿Qué es el liberalismo?"
- "Lo de volar como un pájaro, ¿no?"
- "Es lo que quiere tol mundo, ¿no?, lo que queremos los COMUNISTAS."

Yo no se de donde coño sacan a esta gente, de verdad... me dan verguenja ajena.

Por cosas como esta te das cuenta de que no importa a quien votes, ya que al final millones de borregos ignorantes votarán al PP "por que es lo que su familia vota", o gilipolleces así, sin argumento, sin sentido, y ganarán los de siempre, ya sea de forma amañada o no.

En serio, que asco me ha entrado en el cuerpo despues de ver ese video, al 80% de la juventud parece que le da igual quien gobierne sus intereses, mientras no les falte su cachimba y su gramo de farlopa, ah, y la paguita de papi y mami para salir de fiesta el fin de semana, ¿qué importa el resto, verdad?.

Es que ni tan siquiera uno/a solo/a se salva de ser un completo inepto en ese video... aunque bueno, también lo intentan grabar con ese propósito (o al menos eso quiero pensar).

Saludos.
#4153
Cita de: Senior++ en 15 Diciembre 2015, 15:58 PMtodo esta pensado para que tardes mas o menos, te banean...

...y vuelvas a "donar".

jaja, lo que yo decía, son muy listos.

Saludos
#4154
Buenas

Os dejo este sencillo y pequeño algoritmo para generar captchas para nuestras aplicaciones.

Se puede extender para añadir "ruido" en la imagen, o alterar la posición y la rotación de las letras, pero eso no lo he implementado ya que me parece algo excesivo para "autentificar" una simple aplicación de escritorio.

       

Modo de empleo:
Código (vbnet) [Seleccionar]
Dim captcha As KeyValuePair(Of Bitmap, String) = GenerateCaptcha(length:=5, size:=PictureBox1.Size)

PictureBox1.BackgroundImage = captcha.Key
Console.WriteLine(captcha.Value)


Código fuente:
Código (vbnet) [Seleccionar]

    Dim rand As New Random

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Generates a captcha image.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <example> This is a code example.
   ''' <code>
   ''' Dim captcha As KeyValuePair(Of Bitmap, String) = GenerateCaptcha(5, PictureBox1.ClientSize)
   ''' PictureBox1.BackgroundImage = captcha.Key
   ''' </code>
   ''' </example>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <param name="length">
   ''' The character length.
   ''' </param>
   '''
   ''' <param name="size">
   ''' The image size.
   ''' </param>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <returns>
   ''' A <see cref="KeyValuePair(Of Bitmap, String)"/> that contains the captcha image and the resulting string.
   ''' </returns>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerStepThrough>
   Public Shared Function GenerateCaptcha(ByVal length As Integer,
                                          ByVal size As Size) As KeyValuePair(Of Bitmap, String)

       Return GenerateCaptcha(length, size.Width, size.Height)

   End Function

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Generates a captcha image.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <example> This is a code example.
   ''' <code>
   ''' Dim captcha As KeyValuePair(Of Bitmap, String) = GenerateCaptcha(5, PictureBox1.Width, PictureBox1.Height)
   ''' PictureBox1.BackgroundImage = captcha.Key
   ''' </code>
   ''' </example>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <param name="length">
   ''' The character length.
   ''' </param>
   '''
   ''' <param name="width">
   ''' The image width.
   ''' </param>
   '''
   ''' <param name="height">
   ''' The image height.
   ''' </param>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <returns>
   ''' A <see cref="KeyValuePair(Of Bitmap, String)"/> that contains the captcha image and the resulting string.
   ''' </returns>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerStepThrough>
   Public Shared Function GenerateCaptcha(ByVal length As Integer,
                                          ByVal width As Integer,
                                          ByVal height As Integer) As KeyValuePair(Of Bitmap, String)

       Dim captcha As New Bitmap(width, height)
       Dim fontHeight As Integer = (height \ 2)
       Dim vLineSpacing As Integer = 2
       Dim hLineSpacing As Integer = 2
       Dim str As String = String.Join("", (From c As Char In "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
                                    Order By rand.Next Select c).Take(length))

       Using g As Graphics = Graphics.FromImage(captcha)

           g.InterpolationMode = InterpolationMode.High
           g.SmoothingMode = SmoothingMode.HighQuality
           g.TextRenderingHint = TextRenderingHint.AntiAliasGridFit
           g.CompositingQuality = CompositingQuality.HighQuality

           Using gradientBrush As New LinearGradientBrush(New Point(0, (height \ 2)),
                                                          New Point(width, (height \ 2)),
                                                          Color.FromArgb(rand.Next(&HFF7D7D7D, &HFFFFFFFF)),
                                                          Color.FromArgb(rand.Next(&HFF7D7D7D, &HFFFFFFFF)))

               ' Draw gradient background.
               g.FillRectangle(gradientBrush, New Rectangle(0, 0, width, height))

           End Using ' gradientBrush

           Using linesPen As New Pen(Brushes.Black, 1)

               ' Draw vertical lines.
               For i As Integer = 1 To width
                   Dim ptop As New Point(i * vLineSpacing, 0)
                   Dim pBottom As New Point(i * vLineSpacing, height)
                   g.DrawLine(linesPen, ptop, pBottom)
               Next i

               ' Draw horizontal lines.
               For i As Integer = 1 To height
                   Dim ptop As New Point(0, i * hLineSpacing)
                   Dim pBottom As New Point(width, i * hLineSpacing)
                   g.DrawLine(linesPen, ptop, pBottom)
               Next i

           End Using ' linesPen

           Using font As New Font("Arial", fontHeight)

               Using path As New GraphicsPath

                   For i As Integer = 0 To (str.Length - 1)

                       Dim charX As Integer =
                           (((i * (width - (g.MeasureString(str(i), font, width).ToSize.Width \ length)))) \ length)

                       Dim charY As Integer = (height \ 2)

                       path.AddString(str(i), font.FontFamily, FontStyle.Bold, fontHeight,
                                      New Point(charX, charY), New StringFormat With {.LineAlignment = StringAlignment.Center})

                   Next i

                   ' Draw characters.
                   g.DrawPath(Pens.Black, path)
                   g.FillPath(Brushes.Gainsboro, path)

               End Using

           End Using ' font

       End Using ' g

       Return New KeyValuePair(Of Bitmap, String)(captcha, str)

   End Function


Saludos
#4155
Cita de: ivancea96 en 13 Diciembre 2015, 18:14 PM
¿Podría ser cosa del tamaño de 'DeviceModeFields'? ¿Tiene el tamaño correcto?

Gracias ivancea. Si, lo añadi a mi post mientras escribias, es un tipo Int32 en .Net (4 bytes)

Cita de: ivancea96 en 13 Diciembre 2015, 18:14 PM
los miembros del union tienen el mismo offset en ambas implementaciones?

Lo he vuelto a revisar y resulta que no. Ha sido todo un despiste muy tonto, el código que puse era en C# pero solo lo puse por conveniencia ya que es un lenguaje más común, en realidad lo estoy tratando en Vb.Net y a diferencia del código de C# se me olvidó declarar los miembros de la estructura UnionDevMode1 de forma explícita, era secuencial así que SubUnionDevMode2 estaba en el offset 16 y no en el 0 donde debía estar.

Solucionado

saludos
#4156
Hola

Publico el tema aquí, por que creo que me podrá servir de más ayuda.

Estoy tratando de implementar la estructura DEVMODE en C#:
https://msdn.microsoft.com/en-us/library/windows/desktop/dd183565%28v=vs.85%29.aspx
( y no me sirven las implementaciones de pinvoke.net u otros ejemplos online, ya que todas las que he visto hasta ahora son erroneas o desactualizadas en algún sentido )



He estado comparando los offsets en C++ y C#, en C++ con la macro offsetof y en C# con la función Marshal.OffsetOf, hasta llegar al miembro dmFields todo es correcto;
el problema que tengo, es que el offset del miembro dmColor es 60 en C++, mientras que en mi implementación es 68, esto quiere decir que mi implementación de los miembros de la primera union es incorrecta.

Según un experto en código no administrado, mi representación de las unions y el enfoque que le stoy dando es correcto, pero no debe ser del todo así, ya que las posiciones/offsets son distintas.

Código (csharp) [Seleccionar]
   [StructLayout(LayoutKind.Sequential)]
   public struct DevMode {
    private const int CchDeviceName = 32;
    private const int CchFormName = 32;
   
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = CchDeviceName)]
    public string DeviceName;
    public short SpecVersion;
    public short DriverVersion;
    public short Size;
    public short DriverExtra;
    public DeviceModeFields Fields;
    public UnionDevMode1 test1;
    public short Color;
    public short Duplex;
    public short YResolution;
    public short TTOption;
    public short Collate;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = CchFormName)]
    public string FormName;
    public short LogPixels;
    public int BitsPerPixel;
    public int PixelsWidth;
    public int PixelsHeight;
    public UnionDevMode2 test2;
    public int DisplayFrequency;
    public int IcmMethod;
    public int IcmIntent;
    public int MediaType;
    public int DitherType;
    public int Reserved1;
    public int Reserved2;
    public int PanningWidth;
    public int PanningHeight;
   }
   
   [StructLayout(LayoutKind.Explicit)]
   public struct UnionDevMode1 {
    [FieldOffset(0)] public SubUnionDevMode1 subUnion1;
    [FieldOffset(0)] public SubUnionDevMode2 subUnion2;
   }
   
   [StructLayout(LayoutKind.Sequential)]
   public struct SubUnionDevMode1 {
    public short Orientation;
    public short PaperSize;
    public short PaperLength;
    public short PaperWidth;
    public short Scale;
    public short Copies;
    public short DefaultSource;
    public short PrintQuality;
   }
   
   [StructLayout(LayoutKind.Sequential)]
   public struct SubUnionDevMode2 {
    public Win32.Types.Point Position;
    public DeviceModeDisplayOrientation DisplayOrientation;
    public int DisplayFixedOutput;
   }
   
   [StructLayout(LayoutKind.Explicit)]
   public struct UnionDevMode2 {
   
    [FieldOffset(0)] public int DisplayFlags;
    [FieldOffset(0)] public int Nup;
   
   }


El problema está en el miembro UnionDevMode1 , o al menos todo me indica eso, mejor dicho en alguno de los miembros de la estructura  SubUnionDevMode1 o  SubUnionDevMode2 , sin embargo, me he asegurado de que los types ocupan el mismo tamaño que en C++, vease:

POINTL = 8 bytes.
Win32.Types.Point = 8 bytes.

DeviceModeFields = int (4 bytes)
DeviceModeDisplayOrientation = int (4 bytes)

Teniendo esto en cuenta, ¿alguien es capaz de ver en lo que estoy fallando?.
#4157
Pero claramente la definición actual tiene más miembros.
https://msdn.microsoft.com/en-us/library/windows/desktop/dd183565%28v=vs.85%29.aspx

Gracias por tu tiempo.

Lo estoy comprobando con este código de ejemplo que encontré:
http://www.cplusplus.com/reference/cstddef/offsetof/

Código (cpp) [Seleccionar]
#include <windows.h>

int main ()
{
 printf ("offsetof is %d\n",(int)offsetof(DEVMODE,dmColor));
 return 0;
}


Lo único tedioso o incómodo es que al no haber Reflection en C++ voy comprobando miembro por miembro, uno por uno, jeje. Aunque tampoco se si habrá alguna otra posible manera de enumerar los miembros de una estructura.

PD: En estos momentos maldigo haber capado mi VS de las características y el compiler de C++, no me gustan nada las IDEs alternativas de C++.

Saludos
#4158
fary, gracias por contestar pero esa definición es erronea. Sigo necesitando los offsets en C++.

¿Ese código lo sacaste de pinvoke.net, verdad?. Ya la probé recientemente, pero ni siquiere tiene los unions, de hecho, el autor ni siquiera debería haber declarado los miembros de forma explícita.

Debería ser más bien así:
Código (csharp) [Seleccionar]
[StructLayout(LayoutKind.Sequential)]
public struct DevMode {
private const int CchDeviceName = 32;
private const int CchFormName = 32;

[MarshalAs(UnmanagedType.ByValTStr, SizeConst = CchDeviceName)]
public string DeviceName;
public short SpecVersion;
public short DriverVersion;
public short Size;
public short DriverExtra;
public DeviceModeFields Fields;
public UnionDevMode1 test1;
public short Color;
public short Duplex;
public short YResolution;
public short TTOption;
public short Collate;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = CchFormName)]
public string FormName;
public short LogPixels;
public int BitsPerPixel;
public int PixelsWidth;
public int PixelsHeight;
public UnionDevMode2 test2;
public int DisplayFrequency;
public int IcmMethod;
public int IcmIntent;
public int MediaType;
public int DitherType;
public int Reserved1;
public int Reserved2;
public int PanningWidth;
public int PanningHeight;
}

[StructLayout(LayoutKind.Explicit)]
public struct UnionDevMode1 {
[FieldOffset(0)] public SubUnionDevMode1 subUnion1;
[FieldOffset(0)] public SubUnionDevMode2 subUnion2;
}

[StructLayout(LayoutKind.Sequential)]
public struct SubUnionDevMode1 {
public short Orientation;
public short PaperSize;
public short PaperLength;
public short PaperWidth;
public short Scale;
public short Copies;
public short DefaultSource;
public short PrintQuality;
}

[StructLayout(LayoutKind.Sequential)]
public struct SubUnionDevMode2 {
public Win32.Types.Point Position;
public DeviceModeDisplayOrientation DisplayOrientation;
public int DisplayFixedOutput;
}

[StructLayout(LayoutKind.Explicit)]
public struct UnionDevMode2 {

[FieldOffset(0)] public int DisplayFlags;
[FieldOffset(0)] public int Nup;

}


... Solo que algún miembro de mis declaraciones tiene un tamaño/posición incorrecto, necesito comparar los offsets.

Estoy descargando la IDE code::blocks, pero nunca hice esto en C++, de hecho practicamente he manejado C++ solo un par de veces, ya veremos si lo consigo averiguar...

Saludos
#4159
Hola

Me gustaría saber si alguien con experiencia en C++ podría indicarme los offests de los miembros de la estructura DEVMODE:
https://msdn.microsoft.com/en-us/library/windows/desktop/dd183565%28v=vs.85%29.aspx

Esto es por que estoy tratanto de trasladar las unions de dicha estructura a .Net, pero necesito saber los offsets de los miembros en C++ para comparar el resto de miembros, ya que algo hice mal, probablemente el tamaño de alguno de mis miembros declarados sea incorrecto en comparación con el tamaño definido en la estructura de C++.

Me han comentado que esto se hace con la macro offsetof:

Creo que no pido mucho, debe ser una cosa sencilla para quien maneje C++, pero si me equivoco disculpen y diganme más o menos como podría hacerlo yo mismo...

Saludos
#4160
Aquí no se ha planteado ningún tema ilegal. El desarrollo de una hacktool y el desarrollo de algoritmos para "ocultar" un software no es ilegal, ahora, enviarle un software a otra persona para robarle información personal, eso sería lo ilegal.

Por "creación" de un keylogger te refieres a como crearlo mediante programas de terceros, o te estás refiriendo a cómo desarrollar el keylogger por ti mismo desde cero utilizando en "X" lenguaje?.
En caso de ser lo segundo, formula tus preguntas en la sección apropiada para dicho lenguaje de programación que sea.




Si estás programando en C# o Vb.Net, puedes aprovechar un algoritmo completo de keylogger que desarrollé en Vb.Net utilizando técnicas modernas (RawInput):




Eso sería la base del programa, el core, el corazón, la herramienta necesaria para llevar a cabo el diseño de un Keylogger.

PD: Leyendo los comentarios del código fuente podrías aprender algo.




Sobre como "ocultar" el keylogger, la frase se puede interpretar de varias maneras, como por ejemplo ocultar la ventana, ocultar el proceso en la lista de procesos del administrador de tareas, o evadir la heurística de los algoritmos de los AntiVirus (aunque eso no sería "ocultar"), para esto último practicamente se poco.

Intenta ser más concreto, y sobre todo indicar cual es el lenguaje en el que estás trabajando; si no estás utilizando ningún lenguaje entonces para la "ocultación" puedes recurrir a cripters/packers de terceros.

Saludos