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

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 ... 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 [570] 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 ... 1236
5691  Sistemas Operativos / Windows / Re: Herramienta para monitorizar el inicio de Windows en: 5 Marzo 2015, 18:51 pm
El caso es que se puede ver como numera cada proceso con ProcessId -1, ProcessId 4, ...etc
Pero si os fijáis el número no es correlativo por lo que doy por hecho que salta algún proceso en el .log de la monitorización.

Vamos a ver, lo que realmente te está indicando es el PID (ProcessID) de cada proceso ejecutado, que a diferencia de lo que piensas que es, un PID es un indicador interno que el sistema asigna a un proceso activo, el S.O utilizará dichos PIDs para identificar los procesos en las distintas llamadas internas que realiza el sistema mediante la API de Windows pasándole como parámetro ese PID.

Existen dos PIDs estáticos, que son el 4 y el 0 (o System y System Idle Process), pero los PIDs no con correlativos (1, 2, 3), puesto que existen varios tipos más de identificadores (cómo los identificadores de los hilos de un proceso, o thread-id) y éstos nunca se superponen, así que el PID de un proceso puede ser el 386, y el siguiente PID del proceso que ejecutases podría ser el 500 o un ID menor que el PID anterior.

Saludos!
5692  Programación / Ingeniería Inversa / Re: [TUTORIAL] Craquear librería Nostalgia.Net (Reflection) en: 5 Marzo 2015, 14:11 pm
Versión C#


1. Veamos lo que sucede al intentar utilizar los miembros de esta librería en un nuevo proyecto WinForms, utilizando el siguiente código:

Código
  1. using Microsoft.VisualBasic;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Data;
  6. using System.Diagnostics;
  7. public class Form1
  8. {
  9. private Greatis.Nostalgia.ClipboardMonitor withEventsField_clipboardMonitor = new Greatis.Nostalgia.ClipboardMonitor { Active = true };
  10.  
  11. private Greatis.Nostalgia.ClipboardMonitor clipboardMonitor {
  12. get { return withEventsField_clipboardMonitor; }
  13. set {
  14. if (withEventsField_clipboardMonitor != null) {
  15. withEventsField_clipboardMonitor.ClipboardChanged -= ClipboardMonitor_ClipboardChanged;
  16. }
  17. withEventsField_clipboardMonitor = value;
  18. if (withEventsField_clipboardMonitor != null) {
  19. withEventsField_clipboardMonitor.ClipboardChanged += ClipboardMonitor_ClipboardChanged;
  20. }
  21. }
  22. }
  23.  
  24. private void ClipboardMonitor_ClipboardChanged(object sender, EventArgs e)
  25. {
  26. IDataObject data = Clipboard.GetDataObject();
  27.  
  28. if (data.GetDataPresent(DataFormats.Text)) {
  29. Debug.WriteLine((string)data.GetData(DataFormats.Text));
  30. }
  31. }
  32. }
  33.  
  34. //=======================================================
  35. //Service provided by Telerik (www.telerik.com)
  36. //=======================================================

Al iniciar la aplicación, nos saldrá este molesto aviso:


2) Abrimos la aplicación .Net Reflector, activamos el plugin Reflexil (Tools > Reflexil), cargamos la librería Greatis.Nostalgia.dll, expandimos el namespace Greatis.Nostalgia,
y encontramos dos Classes con nombres muy intuitivos, que nos señalan la funcionalidad de la licencia:


3) Expandimos la Class NostalgiaLP y encontramos la función GetLicense, la cual muestra el MessageBox que nos apareció en el paso nº1.


4) Nuestra intención será reemplazar el código para eliminar todas las instrucciones menos la del valor de retorno:


5) Cómo la Class NostalgiaLicense es un miembro con visibilidad privada, para poder reemplazar el código mediante Reflexil primero debemos modificar la visivilidad de dicha class para hacerla pública:


6) Para que el cambio de visibilidad del miembro tenga efecto, debemos guardar los cambios efectuados en el ensamblado a un nuevo archivo.


7) Cargamos el ensamblado parcheado en .Net reflector con el cambio de visibilidad de la class NostalgiaLicense, nos dirigimos de nuevo al método GetLicense en la Class NostalgiaLP,
seleccionamos TODAS las instrucciones, pulsamos click derecho para abrir el menú del Reflexil y seleccionamos la opción "Replace all with code"


8) Nos aparecerá un Form de edición con el código reemplazable,
y lo que debemos hacer ahora es modificar el valor de retorno del método GetLicense para devolver una nueva instancia de la Class NostalgiaLicense, pasándole el parámetro "granted" al Constructor de la Class:




Tras compilar la modificación, así es cómo quedarán los OpCodes del método GetLicense:


9) Por último, guardamos los cambios en el ensamblado a un nuevo archivo cómo hicimos en el paso nº6.

Ya hemos finalizado de bypassear esta protección que solo consistía en eliminar la llamada al mensaje de texto, ahora la librería no molestará con ningun aviso.
5693  Programación / Ingeniería Inversa / Re: [TUTORIAL] Craquear librería Nostalgia.Net (Reflection) en: 5 Marzo 2015, 14:11 pm
Versión VB.Net


1. Veamos lo que sucede al intentar utilizar los miembros de esta librería en un nuevo proyecto WinForms, utilizando el siguiente código:

Código
  1. Public Class Form1
  2.  
  3.    Private WithEvents clipboardMonitor As New Greatis.Nostalgia.ClipboardMonitor With
  4.        {
  5.            .Active = True
  6.        }
  7.  
  8.    Private Sub ClipboardMonitor_ClipboardChanged(ByVal sender As Object, ByVal e As EventArgs) _
  9.    Handles clipboardMonitor.ClipboardChanged
  10.  
  11.        Dim data As IDataObject = Clipboard.GetDataObject()
  12.  
  13.        If data.GetDataPresent(DataFormats.Text) Then
  14.            Debug.WriteLine(DirectCast(data.GetData(DataFormats.Text), String))
  15.        End If
  16.  
  17.    End Sub
  18.  
  19. End Class

Al iniciar la aplicación, nos saldrá este molesto aviso:


2) Abrimos la aplicación .Net Reflector, activamos el plugin Reflexil (Tools > Reflexil), cargamos la librería Greatis.Nostalgia.dll, expandimos el namespace Greatis.Nostalgia,
y encontramos dos Classes con nombres muy intuitivos, que nos señalan la funcionalidad de la licencia:


3) Expandimos la Class NostalgiaLP y encontramos la función GetLicense, la cual muestra el MessageBox que nos apareció en el paso nº1.


4) Nuestra intención será reemplazar el código para eliminar todas las instrucciones menos la del valor de retorno:


5) Cómo la Class NostalgiaLicense es un miembro con visibilidad privada, para poder reemplazar el código mediante Reflexil primero debemos modificar la visivilidad de dicha class para hacerla pública:


6) Para que el cambio de visibilidad del miembro tenga efecto, debemos guardar los cambios efectuados en el ensamblado a un nuevo archivo.


7) Cargamos el ensamblado parcheado en .Net reflector con el cambio de visibilidad de la class NostalgiaLicense, nos dirigimos de nuevo al método GetLicense en la Class NostalgiaLP,
seleccionamos TODAS las instrucciones, pulsamos click derecho para abrir el menú del Reflexil y seleccionamos la opción "Replace all with code"


8) Nos aparecerá un Form de edición con el código reemplazable,
y lo que debemos hacer ahora es modificar el valor de retorno del método GetLicense para devolver una nueva instancia de la Class NostalgiaLicense, pasándole el parámetro "granted" al Constructor de la Class:




Tras compilar la modificación, así es cómo quedarán los OpCodes del método GetLicense:


9) Por último, guardamos los cambios en el ensamblado a un nuevo archivo cómo hicimos en el paso nº6.

Ya hemos finalizado de bypassear esta protección que solo consistía en eliminar la llamada al mensaje de texto, ahora la librería no molestará con ningun aviso.
5694  Programación / Ingeniería Inversa / [TUTORIAL] Craquear librería Nostalgia.Net (Reflection) en: 5 Marzo 2015, 14:10 pm
Greatis Nostalgia.Net es una librería comercial desarrollada en C# cuya finalidad es ofrecer un wrapper a distintas funcionalidades de la WinAPI para un manejo más sencillo e intuitivo, es muy útil por ejemplo para desarrollar un KeyLogger o registrar otro tipo de eventos del sistema,
esta librería servirá cómo ejemplo educativo para este tutorial.



Debo aclarar que mi experiencia en la ingeniería inversa es practicamente nula y el nivel de este ejercicio es básico, y quizás se podría haber llevado a cabo de una forma más simple, no lo se, pero a mi me ha servido así.

El tutorial lo dividiré en dos posts, uno orientado a programadores de VB.Net, y el otro a programadores de C#.

Lo primero de todo será descargar la versión trial en la siguiente url: http://www.greatis.com/dotnet/nostalgia/download.html

Nombre del ensamblado:
  • Greatis.Nostalgia.dll

Protección:
  • Se muestra una caja de texto informando de la versión Trial.

Protección adicional (Packer/Obfuscator):
  • Ninguna.

Herramientas necesarias:
  • .Net Reflector + Plugin Reflexil
  • (Opcionalmente) Visual Studio

Empecemos...
5695  Programación / .NET (C#, VB.NET, ASP) / Re: Otra de las mias jejje traspasar datos condicionados de una variable a otras en: 5 Marzo 2015, 13:03 pm
Código
  1. ListBox1.Items.AddRange(parts.Cast(Of Object).ToArray) <----error como siempre

Ese error ya lo sufriste anteriormente por la mimsa causa y te expliqué el motivo.

Primero de nada, en el código que he citado, al método ListBox.Items.AddRange() le estás pasando la variable 'parts' que solo es un simple valor Integer, así que voy a hacer cómo que no he leido eso y vamos a suponer que al método le pasas la variable 'result', que es en realidad lo que le querrías intentar pasar, quedando así:
Código
  1. ListBox1.Items.AddRange(result.Cast(Of Object).ToArray)

El método ListBox.Items.AddRange() espera que le pases como parámetro un array de objetos (una colección de strings por ejemplo, IEnumerable(Of String).Cast(Of Object).ToArray, o un array, New Object() {1,2,3}).

Pero 'result' es una colección que contiene sub-colecciones ( IEnumerable(Of IEnumerable(Of T)) ), no es un tipo de valor que vayas a poder visualizar en el listbox, por que tienes que pasarle un array que contenga los elementos que quieras mostrar (los valores Integer), no pasarle un array que contenga más arrays.

piensa, ¿qué debes hacer?, ¿debo volver a decírte lo que siempre te digo qué debes usar para resolver la mayoría de los problemas que tienes? (eso ha sido una pista), jeje.

Saludos!
5696  Programación / .NET (C#, VB.NET, ASP) / Re: Error de Compilacion (No me toma SelectedItem de DropDownList) en: 5 Marzo 2015, 07:18 am
Ahora me da el sig. Error:

Compiler Error Message: CS0029: Cannot implicitly convert type 'int' to 'System.Web.UI.WebControls.ListItem'

Código:
ListItem currentIndex = ((DropDownList)sender).SelectedIndex;

tuve un descuido muy tonto, asigné el type ListItem y no Int, pero eso deberías haber podido darte cuenta por ti mismo...

Código
  1. int currentIndex = ((DropDownList)sender).SelectedIndex;

saludos
5697  Programación / Programación General / Re: ¿Cómo y con qué puedo programar en A# .NET? en: 4 Marzo 2015, 20:22 pm
creo que tendrás que dar más info, por lo que parece nadie aquí conoce ese lenguaje por ese nombre... muestra una pagina de descarga o más info sobre el

Yo me puse a googlearlo el otro día por curiosidad, aportaré información para quien le interese:

A#, o Ada-Sharp, es un puerto para .Net del lenguaje Ada, Ada fue desarrollado practicamente por el departamento de defensa de EEUU (allá por los 70), y el puerto fue desarrollado y distribuido por la academia de las fuerzas aereas de EEUU (allá por los 2k), casi nah, es una cosa mu rara y practicamente desconocida, como para ponerse a encontrar tutoriales o documentación oficial... no existe nada de eso, pf.

No es un lenguaje soportado por las características de VisualStudio (auto-completition, intellisense, análisis de código, etc), eso está más que claro, pero se puede cargar el archivo en la IDE de VS cómo podriamos hacer con cualquier otro archivo de texto plano y editar el source de A#, a pelo.

Según leí en la página oficial, se puede compatibilizar con VS de una forma compleja o al menos tediosa para llegar a compilar un código fuente, pero como el proyecto A# está descontinuado desde el año 2006, su última compatibilidad conocida es utilizando la versión 2005 de VisualStudio (VS2005).

Por otro lado, Ada, que no Ada-Sharp, si que es un lenguaje muy conocido y que se sigue utilizando bastante.

Fuente(s):
http://en.wikipedia.org/wiki/A_Sharp_%28.NET%29
http://asharp.martincarlisle.com/

Saludos!
5698  Media / Multimedia / Re: video a mp3 sin perder calidad en: 4 Marzo 2015, 17:19 pm
De que dependería elegir uno de 128, 192, 320 ?

De la calidad de la fuente de origen, por supuesto.

Si la pista de audio contenida en el stream del video tiene un bitrate medio de 128 Kbps, entonces no consigues ninguna mejora auditiva al re-codoficar ese audio a un bitrate mayor cómo sería 320 Kbps.

Puedes comprobar el bitrate de la pista utilizando aplicaciones como MediaInfo (aunque personalmente te recomiendo utilizar la implementación MediaInfo Lite por su integración en el SO y la simplitud de la interfáz).



De todas formas, simplemente puedes demuxear (extraer) la pista de audio, sin necesidad de re-codificarla.

Para llevar a cado el demuxing, puedes utilizar la aplicación commandline FFMPEG, o AviDemux si prefieres una GUI.

Te muestro un simple script que desarrollé, el cual integré en el menú contextual de archivos de video para una sencilla extracción mediante FFMPEG (el código necesita también la aplicación MediaInfo.exe en su versión commandline)

FFMPEG.DemuxAudio.cmd
Código
  1. @Echo OFF & CHCP 1252 >NUL & Title FFMPEG Audio Demuxer Tool by Elektro
  2.  
  3. Set "Format="
  4. Set "Profile="
  5.  
  6. PUSHD "%~dp0MediaInfo"
  7. For /F "Tokens=*" %%# in ('mediainfo.exe "%~1" "--Inform=Audio;%%CodecID/Hint%%"') Do (Set "Format=%%#")
  8.  
  9. If "%FORMAT%" EQU "" (
  10. For /F "Tokens=*" %%# in ('mediainfo.exe "%~1" "--Inform=Audio;%%Format%%"') Do (Set "Format=%%#")
  11. )
  12.  
  13. For /F "Tokens=*" %%# in ('mediainfo.exe "%~1" "--Inform=Audio;%%Format_Profile%%"') Do (Set "Profile=%%#")
  14.  
  15. If /I "%FORMAT% %Profile%" EQU "MPEG Audio Layer 1" (Set "Format=mp1")
  16. If /I "%FORMAT% %Profile%" EQU "MPEG Audio Layer 2" (Set "Format=mp2")
  17. If /I "%FORMAT% %Profile%" EQU "MPEG Audio Layer 3" (Set "Format=mp3")
  18. If /I "%FORMAT% %Profile%" EQU "MPEG Audio Layer 4" (Set "Format=mp4")
  19. If /I "%FORMAT%" EQU "AC-3"     (Set "Format=ac3")
  20. If /I "%FORMAT%" EQU "Vorbis"   (Set "Format=ogg")
  21.  
  22. "%~dp0ffmpeg.exe" -loglevel info -i "%~1" -acodec copy -vn "%~n1.%FORMAT%"
  23.  
  24. If %ERRORLEVEL% EQU 0 (
  25. Echo+
  26. Echo: Audio extraction completed successfully.    | MORE | MORE
  27. Echo: Video: "%~1"                                | MORE
  28. Echo: Audio: "%~n1.%FORMAT%"                      | MORE
  29. Timeout /T 10
  30. Exit /B 0
  31. ) ELSE (
  32. Color C
  33. Echo: Audio extraction completed with errors.     | MORE | MORE
  34. Echo: Video: "%~1"                                | MORE
  35. Echo: Audio: "%~n1.%FORMAT%"                      | MORE
  36. Exit /B 1
  37. )
  38.  

Nota:
Aunque no veas ninguna condicional para identificar ciertos formatos como "aac", están soportados.

Modo de empleo, en consola:
Código:
"FFMPEG.DemuxAudio.cmd" "C:\Ruta del archivo.webm"

Saludos
5699  Foros Generales / Dudas Generales / Re: ¿Sacar el texto que muestra de una imagen? en: 4 Marzo 2015, 12:37 pm
También hay que tener en cuenta que un gran porcentaje de aplicaciones recurren al motor OCR Tesseract, que fue y seguramente sigue siendo la solución open-source más extendida universálmente (al ser la mejor opción gratuita), y se basan en los algoritmos que éste utiliza, pero existen otros OCR más sofisticados que puedes encontrar en aplicaciones/librerías comerciales.

EDITO: Y también se debe tener en cuenta que, si el algoritmo OCR y/o aplicación lo permite, se debe especificar el lenguaje de origen del texto a reconocer para aumentar la probabilidad de éxito de la conversión, pues no es lo mismo utilizar los patrones del lenguaje Inglés, que del Castellano.

existe algún método por el cual de por ejemplo , si le saco una foto a la libreta de mi cuaderno , poder pasar todo lo que se visualiza en esa imagen a texto plano , siempre y cuando sea perfectamente visualizable y entendible

Perfectamente visualizable y entendible es altamente improbable, pues hay que comprender que siempre existirá un margen de error en la traducción, margen que aumentará por la cantidad total de texto-en-imagen que quieras convertir a texto plano y otros factores que favorecerán o desfavorecerán al reconocimiento de texto, debido a la propia naturaleza del ser humano por el amplio abanico existente en la escritura a mano (hand-writting) y las variaciones personales de cada individuo, el reconocimiento resulta complejo para "una máquina" que está limitada por la lógica empleada de un algoritmo de reconocimiento óptico de texto (OCR) en concreto.

Saludos!
5700  Programación / .NET (C#, VB.NET, ASP) / Re: Error de Compilacion (No me toma SelectedItem de DropDownList) en: 4 Marzo 2015, 09:59 am
Unable to cast object of type 'System.Web.UI.WebControls.ListItem' to type 'System.IConvertible'.

Aquí, en:

ViewState["idNombre"] = Convert.ToInt32(currentItem);

en (currentItem), el valor del mismo es (con punto de interrupcion) el Nombre propiamente dicho (o sea, la palabra del Nombre) y no su Id en la Tabla de donde es llamado, que es lo que quiero obtener para que me cargue en el ViewState (el Id de la Tabla de ese Ítem seleccionado).......

Creo que entendí mal lo que dijiste, pensé que el valor del item (currentItem) contendría un dígito, y no una cadena con "un nombre" (obviamente por eso no funciona la conversión a Integer, por que no es un número), pero tú lo que quieres obtener es el índice de ese item, no el contenido del item, bien, me queda claro.

Cómo ya te dije, no manejo ASP.Net, pero los controles de Framework suelen tener métodos/propiedades para facilitar tareas de indexación cómo esa y no es dificil averiguar el cómo,
lee la documentación de la propiedad 'SelectedIndex', que devuelve el índice del item seleccionado:
https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.dropdownlist.selectedindex%28v=vs.110%29.aspx

Por ende, esto debería funcionarte:

Código
  1. // ListItem currentItem = ((DropDownList)sender).SelectedItem;
  2. ListItem currentIndex = ((DropDownList)sender).SelectedIndex;
  3.  
  4. ViewState["idNombre"] = currentIndex;

Saludos
Páginas: 1 ... 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 [570] 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 ... 1236
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines