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 ... 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 [587] 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 ... 1254
5861  Informática / Software / ¿Conversión JPEG a PDF, inteligente? en: 8 Marzo 2015, 08:15 am
Buenas

Tengo una imagen jpg a una resolución de 1400x4600, y necesito una aplicación que realice una conversión inteligente a PDF, es decir, que convierta la imagen a PDF con páginas de un tamaño A4 (por ejemplo), partiendo la imagen jpg cuando sea necesario para rellenar las páginas (que serían 3 páginas en total más o menos para dicha imagen).

He probado una infinidad de conversores online y aplicaciones de escritorio, pero todas me añaden la imagen en una sola página, por que escalan la imagen al tamaño de la página (en lugar de tomar el tamaño original de la imagen para hacerle el split y así rellenar las páginas), por lo que queda una imagen muy reducida a la que le tengo que hacer un zoom del +120% para poder visualizar correctamente el texto que hay contenido en la imagen...

¿Alguien sabe de alguna herramienta similar?, no importa si la herramienta es gratis o de pago, pero que no sea un completo set bestial de herramientas como las aplicaciones de Adobe, vaya, busco una aplicación sencilla destinada a cumplir su funcionalidad, no aplicaciones que requieran 1-4 GB de espacio en disco, creo que se entiende...

Gracias por adelantado.

Un saludo!
5862  Programación / Scripting / Re: Duda script BATCH en: 8 Marzo 2015, 05:17 am
Busca un poco, tienes la documentación de cada comando en la propia consola de windows...



Que significa %%~n#

Es un modificador especial de variable FOR.

Código:
For /?
Cita de: For /?
Ejecuta el comando para cada uno de los archivos especificados en el
conjunto de archivos.

%~nI        - expande %I solo a un nombre de archivo



Como funciona el CALL antes de un echo

Funciona de la misma manera que sin el Call, pero expandiendo las variables.

Call (command)
Run an internal command, first expanding any variables in the argument.



como podría hacer que los subdirectorios no aparezcan, porque al haber una carpeta dentro la lista también.

No entiendo la pregunta, intenta ser más específico.
Si te refieres a que en el script de arriba quieres que no "aparezcan" los subdirectorios solo tienes que eliminar el segundo Echo.

Saludos!
5863  Programación / Ingeniería Inversa / [TUTORIAL] Craquear user-control: Quantum Whale Editor.Net en: 8 Marzo 2015, 03:32 am
Quantum Whale Editor.NET es un set de controles de usuario para WinForms y WPF,
con este user-control se puede implementar de forma sencilla un avanzado editor de sintaxis para VB.Net/C# (entre otros cómo Java y JS), con capacitades de Auto-completado, IntelliSense (para .Net), Regiones .Net, Expansión/Colapso de bloques de código, y más:



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 (para WinForms) en la siguiente url: http://www.qwhale.net/download/editor.htm

Se trata de un instalador MSI, ustedes cómo prefieran, lo instalan o extraen el contenido con el siguiente con la aplicación msiexec (u otro unpacker), en consola:
Código:
msiexec.exe /a "QWhale_Editor_WinForms_2.3.msi" /qb TARGETDIR="%CD% Unpacked"



Nombre del ensamblado:
  • QWhale.Common.dll

Protección:
  • Contador Trial de 30 días.
  • Se muestra una caja de texto informando del estado de los días retsantes.

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

Herramientas necesarias:
  • .Net Reflector + Plugin Reflexil
  • (Opcionalmente) StrongName Tool (sn.exe) del SDK de Microsoft .Net Framework.
  • (Opcionalmente) MSIexec u otro unpacker de MSI (Microsoft Installer)
  • (Opcionalmente) Visual Studio

Empecemos...





1. Veamos lo que sucede al intentar utilizar este user-control en un nuevo proyecto WinForms.


Al iniciar la aplicación (o al arrastrar el user-control a nuestro Form, en tiempo de diseño), nos saldrá este Dialog que nos avisa de que estamos utilizando una versión trial, y los días restantes:


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


3) Expandimos la Class 'TrialVersion' y encontramos el método 'CheckTrialVersion', el cual obtiene los días restantes y además muestra el Dialog que nos apareció en el paso nº1.


4) La obtención de los días restantes es muy básica, se basa en el reloj interno del SO (sin mayores protecciones, al modificar la fecha se modifican los días restantes) e indiferentemente de si la versión trial ha expirado o no, se mostrará el diálogo, así que es suficiente con eliminar la llamada a dicho diálogo,
pero además eliminaremos el resto de instrucciones para evitar que se efectuan llamadas innecesarias a otros métodos (ej: 'GetDaysLeft') y así obtendremos una ínfima mejora en el rendimiento del código, por ende, esta sería la representación visual de lo que vamos a hacer:


5) Seleccionamos TODAS las instrucciones del método 'CheckTrialVersion' que nos aparecen en el Reflexil, menos la última instrucción (opcode RET), pulsamos click derecho y seleccionamos la opción "Delete"


6) Guardamos los cambios en el ensamblado a un nuevo archivo:


7) Debido a que el ensamblado está firmado con un StrongName, al momento de guardar, nos saldrá el siguiente diálogo, donde elegiremos la primera opción:


FIN.
5864  Programación / Ingeniería Inversa / Re: [TUTORIAL] Craquear librería Nostalgia.Net (Reflection) en: 5 Marzo 2015, 21:44 pm
Que pelota :P, .:UND3R:., sabes que soy un pollito recien nacido en comparación con el resto que manejais mejor esta temática, jaja, yo solo me defiendo un poco cuando se trata de ing. inversa mediante Reflection, me pones un binario de C/C++ y ya no se que hacer, ¡pero te agradezco mucho los ánimos!, intentaré aprender a craquear poco a poco... que con saber depurar .Net no es suficiente, ni de lejos.

Gracias.

Saludos!
5865  Media / Multimedia / Re: video a mp3 sin perder calidad en: 5 Marzo 2015, 20:03 pm
Muestra los parámetros de codificación empleados, o comparte la pista de audio para analizarla, no somos magos...

De todas formas ese problema que comentas de que un reproductor no pueda determinar la posición actual del stream, muchas veces se debe a conflictos con los metadatos, así que simplemente prueba a eliminar los metadatos del archivo para dejar limpios (vacíos) los sectores del formato mp3.
También se pueden dar problemas de seeking en ciertas circunstancias cuando el audio ha sido codificado usando un bitrate variable (VBR), la estimación de la duración de audio puede fallar en el reproductor, aunque normalmente no falla y no tiene por qué, claro está.

PD: Utiliza la aplicación mp3val para solucionar cualquier tipo de conflicto con archivos mp3.
http://mp3val.sourceforge.net/

Saludos!
5866  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!
5867  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.
5868  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.
5869  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...
5870  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!
Páginas: 1 ... 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 [587] 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 ... 1254
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines