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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ... 41
141  Programación / .NET (C#, VB.NET, ASP) / Re: Centralita Avaya en: 9 Septiembre 2010, 05:12 am
Lo primero, es saber que este tipo de productos al igual que otros como FingerPrinter's y demás, cuentan con un SDK para el desarrollo de software por parte de terceros. Algunos SDK son de libre descarga y otros solo se adquieren con el CD de instalación del producto.

Ahora lo importante, la mayoria de estos productos ya traen un software completo para trabajar, asi que hay que preguntarse si el software que queremos realizar podrá superar o igualar a los que ya estan hechos, o si cumplirá alguna función que los otros no cumplan.

De todos modos se puede empezar con esto:

http://support.avaya.com/css/P8/documents/100057550

Avaya cuenta con un sitio para desarrolladores y descargas de SDK's (tb ejemplos de sus API's) para sus productos, eso sale en google a la primera búsqueda.
142  Programación / .NET (C#, VB.NET, ASP) / Introducción al crackeo manual de aplicaciones .NET en: 7 Septiembre 2010, 08:48 am
Puesto que hasta ahora no vi este tema en el foro (y si es que se hizo no lo vi), mostrare a continuación como modificar prácticamente todo lo que se nos antoje de una aplicación .NET.

En el siguiente ejemplo luego de crear una aplicación .NET



con el sgte code:

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using System.Management;
  9.  
  10. namespace Crack_Me
  11. {
  12.    public partial class Form1 : Form
  13.    {
  14.        public Form1()
  15.        {
  16.            InitializeComponent();
  17.        }
  18.  
  19.        private void button1_Click(object sender, EventArgs e)
  20.        {
  21.            if (textBox1.Text.ToUpper() == "KODELIVE") MessageBox.Show("Clave Correcta", "Clave Correcta", MessageBoxButtons.OK, MessageBoxIcon.Information);
  22.            else MessageBox.Show("Clave Incorrecta", "Vuelva a Intentarlo", MessageBoxButtons.OK, MessageBoxIcon.Stop);
  23.        }
  24.  
  25.        private void button2_Click(object sender, EventArgs e)
  26.        {
  27.            using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_Processor"))
  28.            {
  29.                using (ManagementObjectCollection manColl = searcher.Get())
  30.                {
  31.                    string sProcesador = "";
  32.                    foreach (ManagementObject obj in manColl)
  33.                    {
  34.                        sProcesador = (string)obj["ProcessorID"];
  35.                    }
  36.                    if (textBox2.Text.Trim() == psMD5(sProcesador.Trim() + "xComplicar"))
  37.                    {
  38.                        Form2 f2 = new Form2();
  39.                        f2.ShowDialog();
  40.                    }
  41.                    else MessageBox.Show("Clave Incorrecta", "Vuelva a Intentarlo", MessageBoxButtons.OK, MessageBoxIcon.Stop);
  42.  
  43.                }                
  44.            }
  45.        }
  46.        private string psMD5(string sProc)
  47.        {
  48.            System.Security.Cryptography.MD5CryptoServiceProvider cryMD5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
  49.            byte[] bProc = System.Text.Encoding.ASCII.GetBytes(sProc);
  50.            bProc = cryMD5.ComputeHash(bProc);
  51.            string sMD5 = "";
  52.            for (int i = 0; i < bProc.Length; i++)
  53.                sMD5 += bProc[i].ToString("x4").ToLower();
  54.            return sMD5;
  55.        }
  56.  
  57.        private void Form1_Load(object sender, EventArgs e)
  58.        {
  59.            this.Icon = Properties.Resources.rIcono;
  60.        }
  61.  
  62.    }
  63. }
  64.  

La cual en el button1 compara una cadena con el contenido del textbox1 para indicar si la clave es correcta o no.
En el button2 obtenemos el ID del procesador y ciframos utilizando  MD5CryptoServiceProvider, luego comparamos el contenido del textbox2 con el resultado del cifrado si son iguales abrirá el form2 caso contrario mostrará un mensaje de error.

Ahora necesitamos las siguientes herramientas:

ilasm.exe
http://msdn.microsoft.com/en-us/library/496e4ekx%28VS.80%29.aspx

ildasm.exe
http://msdn.microsoft.com/es-es/library/f7dy01k1%28VS.80%29.aspx

para facilitarnos las cosas creamos un par de archivos .bat (las rutas están de acuerdo a win XP probar modificaciones en Win7 o similar) con el siguiente contenido:

Desensamblador.bat
Código
  1. @echo off
  2. cd "%PROGRAMFILES%\Microsoft Visual Studio 8\SDK\v2.0\Bin\"
  3. ildasm.exe /source "%HOMEPATH%\Escritorio\Crack Me.exe" /output:"%HOMEPATH%\Escritorio\prueba\Crack Me.il"
  4. ildasm.exe /source "%HOMEPATH%\Escritorio\Crack Me.exe"

Utilizando ildasm.exe desensamblamos el Crack Me.exe (ubicado en el escritorio) direccionado a una carpeta en el escritorio con el nombre "prueba", luego abrimos el Crack Me.exe con ildasm.exe para ver su estructura.



Haciendo doble click sobre el button1_Click podemos ver las cadenas que indican cuando tiene la clave correcta y cuando no la tiene.



Antes de ellas podemos ver la comparación que realiza para indicar si es la clave correcta, tb podemos ver la cadena que compara en este caso "KODELIVE".
Entramos en la carpeta prueba y abrimos con el block de notas "Crack Me.il" (nombre que pusimos en el Desensamblador.bat como archivo de salida) para facilitar las cosas copiamos la cadena "KODELIVE" o "Clave Correcta" o "bool [mscorlib]System.String::op_Equality(string" para utilizarla en el buscador del notepad (Ctrl + B) y modificamos las líneas que queramos.

En la línea:
Código
  1. IL_0010:  ldstr      "KODELIVE"

la cambiamos por:

Código
  1. IL_0010:  ldstr      "CRACKEADO"

así el nuevo password que compara será "CRACKEADO", ya no será "KODELIVE".

Si queremos que acepte cualquier password, en la línea:

Código
  1. IL_0015:  call       bool [mscorlib]System.String::op_Equality(string,

cambiamos a:

Código
  1. IL_0015:  call       bool [mscorlib]System.String::op_Inequality(string,

así cualquier contenido que tenga o no tenga el textbox1 nos dará siempre "Clave Correcta" excepto si es la clave que anteriormente era correcta ("KODELIVE" o "CRACKEADO") es decir en lugar de comparar si son iguales compara si son diferentes.



Ahora necesitamos guardar los cambios hechos en "Crack Me.il" en un nuevo ejecutable, para ello usamos:

Ensamblador.bat
Código
  1. @echo off
  2. cd %windir%\Microsoft.NET\Framework\v2.0.50727\
  3. ilasm.exe /exe "%HOMEPATH%\Escritorio\prueba\Crack Me.il"

Ahora obtenemos un nuevo ejecutable con las modificaciones hechas que se guarda en la carpeta prueba con el nombre Crack Me.exe.



Ahora veamos la segunda parte (button2), la cual compara el ID del procesador cifrado con MD5 con el contenido del textbox2, borramos el contenido de la carpeta prueba (en el escritorio) y repetimos los pasos con el Desensamblador.bat, en este caso hacemos doble click en button2.



Localizamos la comparación en el ildasm.exe



Y luego la buscamos en "Crack Me.il", cambiamos la linea:

Código
  1. IL_007d:  call       bool [mscorlib]System.String::op_Equality(string,

por:

Código
  1. IL_007d:  call       bool [mscorlib]System.String::op_Inequality(string,

y el resultado es el mismo que en el button1, volvemos a ensamblarlo con Ensamblador.bat y obtenemos el nuevo ejecutable modificado (en la carpeta prueba).

Ahora ambos botones funcionan con o sin password que no sea el original.
Si necesitamos saber cómo se genera el password o la clave basta con ver las líneas antes del mensaje de "Clave incorrecta" y podemos realizar un pequeño keygen para la aplicación "victima".

Ahora supongamos que el primer formulario solo es de validación para luego entrar al 2do, podemos hacer que entre directamente al 2do formulario saltándonos el primero definitivamente, del sgte modo:

Volvemos a utilizar Desensamblador.bat y localizamos:



es aquí donde se define que formulario carga al inicio (Program.cs) localizamos esta línea:

Código
  1. IL_000b:  newobj     instance void Crack_Me.Form1::.ctor()

y luego la buscamos en "Crack Me.il" para reemplazarla con:

Código
  1. IL_000b:  newobj     instance void Crack_Me.Form2::.ctor()

Utilizamos nuevamente Ensamblador.bat y el resultado obvio es que carga directamente el formulario2 (Form2) y ya no carga el form1 para la validación del password.

Los nombres de Form1, Form2 obviamente cambian según la aplicación que abramos, tan solo es buscar la organización, nombres y métodos que utiliza.

El cambiar algunos de los recursos que utiliza puede hacerse modificando el *.res de la aplicación.

Asi nos evitamos estar buscando cracks o adquiriendo aplicaciones como Dis# que viendo  cómo funciona supongo que debe basarse en estas 2 herramientas.

Obtenemos un mayor aprendizaje de la plataforma .NET y mejoras en cuanto al nivel de protección.

Quería mostrar esto puesto que lo utilicé para obtener el algoritmo de validación para facturas de cierto país, aunque el mismo utilizaba Salamander .NET obfuscator no fue difícil obtener dicho algoritmo y ...

Bueno, lo que muestro es la parte sencilla, la parte interesante es automatizar todo este trabajo para modificar triales y demás basados en .NET en cuestión de segundos (eso porque ya tengo comprador para dicha aplicación), pero comparto el inicio del proyecto por si alguien quiere realizarlo por su cuenta.

Adjunto el proyecto y los archivos de ejemplo (descomprimir en el escritorio para un funcionamiento directo).

Descarga:
http://www.4shared.com/file/dHWAGETI/CrackNET.html
143  Programación / .NET (C#, VB.NET, ASP) / Re: Programacíon cliente-servidor en: 6 Septiembre 2010, 16:29 pm
Es mejor utilizar
Código
  1. UTF8Encoding
para el envio y reccepción de datos entre cliente y servidor (eso por la ñ, ó, etc.)

Si se trabaja con ficheros u otro similar que incluya modificación, escritura y demás, es mejor probar primero el ejemplo con esas funciones puesto que la mayoria de los ejemplos que hay en la red no son aptos para ello.
144  Programación / .NET (C#, VB.NET, ASP) / Re: Que opinan de la certificación de desarrollador 5 estrellas de Microsoft? en: 6 Septiembre 2010, 16:05 pm
Escribiste esto:

No vas a poder hacer un GUI bonito y hacer que 100 hilos corran perfectos para que la aplicacion sea buena. O programas el GUI o programas la logica del negocio.

y al respecto comente esto:

No, por lo dicho anteriormente la clave esta en distribuir las funciones de la solución en mas de un ejecutable, asi tenemos un aplicación para el cliente con todos los adornos que queramos y otra que realize el trabajo "pesado". Esto porque ahora las aplicaciones bien vistas (que tengan un buen diseño) son las que más gustan a los usuarios finales, ahora practicamente es un requisito... y obviamente que la solución en si debe cumplir con todos los requisitos.

y en ningun momento se meciona algo relacionado a:

Nunca dije que las aplicaciones con buena vista no se vean más llamativas para los clientes..
145  Programación / .NET (C#, VB.NET, ASP) / Re: Que opinan de la certificación de desarrollador 5 estrellas de Microsoft? en: 5 Septiembre 2010, 09:17 am
El DCE 2005 a estas alturas es como para hacerla a mas en 1 semana (si no le damos mucha importancia), respecto a conseguir trabajo a mi criterio no sirve de mucho (casi nada) puesto que no se toma en serio por parte de la microsoft, yo la hice creo que hace 2 años cuando ofrecieron enviarte el certificado hasta tu domicilio firmado y sellado, lo que llego fue una pena de certificado. El contenido entero es solo una introducción, las respuestas las encuentras en internet de casi todo el curso, hasta yo fui guardando los examenes y respuestas para "usarlos" posteriormente, solo me intereso porque Karina (una de las que impulsaron el DCE) escribia algunos articulos interesantes.

Se da mas apoyo a la MVA y de ahi si puedo asegurar que si eres uno de los "top ten" y ademas que de ningun otro pais puedan superar tu nota en alguna carrera (depende eso del pais), puedes salir en la prensa internacional, obtener certificados, libros y material gratuito de la misma microsoft enviado hasta tu domicilio, hasta te piden información (si la quieres dar) del trabajo y proyectos que realizas para evaluarte y demas... luego de eso hay muchas cosas mas que no entran en este tema.

Para las certificaciones oficiales la revista momentum tiene una descripción detallada de las mismas, para ahorrarnos el curso y demás tb hay una pagina (la que use) que vende el material y las simulaciones de varias de estas certificaciones, asi solo presentamos el examen y nos ahorramos el costo oficial de los cursos y simulaciones.

En otro caso existe el campus MVP, ellos se encargan de prepararte para determinadas certificaciones obviamente tiene un precio, y tb tienen cursos gratuitos para actualizarse.

las apliaciones de consola murieron comercialmente hablando.

No, las aplicaciones de consola son bastante usadas, mas aun con la entrada de Vista y Seven, en si para aplicaciones grandes y que no tengan limitaciones en cuanto a permisos las aplicaciones de consola son una excelente opcion.

No vas a poder hacer un GUI bonito y hacer que 100 hilos corran perfectos para que la aplicacion sea buena. O programas el GUI o programas la logica del negocio.

No, por lo dicho anteriormente la clave esta en distribuir las funciones de la solución en mas de un ejecutable, asi tenemos un aplicación para el cliente con todos los adornos que queramos y otra que realize el trabajo "pesado". Esto porque ahora las aplicaciones bien vistas (que tengan un buen diseño) son las que más gustan a los usuarios finales, ahora practicamente es un requisito... y obviamente que la solución en si debe cumplir con todos los requisitos.
146  Foros Generales / Foro Libre / Re: Que Alcohol suelen beber ustedes? (si es que beben) en: 5 Septiembre 2010, 08:33 am
Los viernes o sabados con amigos y primos  ::)
Solo para empezar...




Cuando me visita o lo visito a mi futuro cuñado (generalmente los domingos) :P



Cerveza negra y ... cuando estoy con mi novia (ultimamente seguido  :-( )



 :-*

Si encuentro subo una imagen del 2009 con los hermanos de ella y los barriles de vino  :P

Greetings!
147  Programación / .NET (C#, VB.NET, ASP) / Re: Llamar a un form y poner en espera la funcion que lo llamo... en: 27 Agosto 2010, 18:34 pm
Bueno de pasada, mira este code:
Form1

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace Ventanas
  11. {
  12.    public partial class Form1 : Form
  13.    {
  14.        Form2 f2 = new Form2();
  15.        Form3 f3 = new Form3();
  16.        public Form1()
  17.        {
  18.            InitializeComponent();
  19.        }
  20.  
  21.        private void button1_Click(object sender, EventArgs e)
  22.        {
  23.            f2.Show();
  24.            f3.Show();
  25.            timer1.Start();
  26.        }
  27.  
  28.        private void timer1_Tick(object sender, EventArgs e)
  29.        {
  30.            if (f2.form2Closed)
  31.            {
  32.                timer1.Stop();
  33.                f3.setText("Form2 Closed");
  34.                f2.form2Closed = false;
  35.            }
  36.        }
  37.    }
  38. }
  39.  

Form2

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace Ventanas
  11. {
  12.    public partial class Form2 : Form
  13.    {
  14.        public bool form2Closed = false;
  15.        public Form2()
  16.        {
  17.            InitializeComponent();
  18.        }
  19.  
  20.        private void Form2_FormClosed(object sender, FormClosedEventArgs e)
  21.        {
  22.            form2Closed = true;
  23.        }
  24.    }
  25. }
  26.  

Form3

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace Ventanas
  11. {
  12.    public partial class Form3 : Form
  13.    {
  14.        public Form3()
  15.        {
  16.            InitializeComponent();
  17.        }
  18.        public void setText(string value)
  19.        {
  20.            label1.Text = value;
  21.        }
  22.    }
  23. }
  24.  

Simplemente en el form1  hay un button que muestra el form2 y el form3 cuando se cierra el form2 se accede desde el form1 a setText(string value) del form3 y cambiamos el contenido del label1 (no cambie directamente el contenido del label para mostrar como hacerlo en otro caso).

Ahora puedes hacer algo similar para pausar una tarea u otra cosa.
Eso ya depende de lo que hagas, lo del timer puede suprimirse pero creo que es lo mas sencillo de hacer.
148  Programación / .NET (C#, VB.NET, ASP) / Re: [Duda c#] Incio de funcion automaticamente tras carga el from en: 27 Agosto 2010, 12:00 pm
Debes hacerlo con un Thread, hace un tiempo hice un ejemplo de como utilizar un Thread con un ProgressBar, debe estar mas abajo o en la 2da pagina.
149  Programación / .NET (C#, VB.NET, ASP) / Re: Llamar a un form y poner en espera la funcion que lo llamo... en: 27 Agosto 2010, 11:56 am
No puedo usar showdialog, por que el form tambien hace parte de un mdiparent, y me tira error al llamaro con showdialog.
autoResetEven, no me sirve, avanza normalmente la funcion que llama al form.
alguien tiene otra idea?

Puedes declarar variables bool por ejemplo:

Código
  1. public bool form2Cerrado = false;
Código
  1. private void Form2_FormClosed(object sender, FormClosedEventArgs e)
  2. {
  3.     form2Cerrado = true;
  4. }

Y utilizas el primer formulario para saber si esta cerrado o no, luego de cerrarse el form2 envias el valor de una variable (puede ser bool) al formulario que necesitaba esperar a que se cierre en "form2" para que continue su trabajo.

Es una forma "cutre" de hacerlo pero se ajusta a lo que pides, por otro lado deberias revisar (replantear) el diseño de tu programa, no deberias necesitar utilizar los form de esa manera.
150  Programación / .NET (C#, VB.NET, ASP) / Re: Dudas con mi agenda!! c#. en: 27 Agosto 2010, 11:45 am
Efectivamente ese es mi problema, que no se que hacer o como hacer para que se vayan comprobando las alarmas con el reloj del ordenador para que salten.... porque como compruebo continuamente la fecha y la hora de cada alarma???, la fecha con una vez valdría, si esa es la fecha ya solo tendría que comprobar hasta que se cumpla la hora pero como lo hago???

Solo necesitas un timer:
Código
  1. private void timer1_Tick(object sender, EventArgs e)
  2.        {
  3.            if (DateTime.Now.DayOfYear == 239 && DateTime.Now.Hour == numericUpDown1.Value && DateTime.Now.Minute == numericUpDown2.Value && DateTime.Now.Second == 00) MessageBox.Show("Alarma");          
  4.        }

Los numericUpDown.Value Serian las variables de Hora y minuto, se comprueba el segundo para que el mensaje salga una sola vez.

Para almacenar las variables, ya sea en una BD u otro, recuerda utilizar las variables de entorno por si el usuario no tiene permisos de administrador.
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ... 41
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines