Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: WarZ0n3 en 26 Abril 2013, 11:56 am



Título: funcion ExtractString [pascal].
Publicado por: WarZ0n3 en 26 Abril 2013, 11:56 am
Saludos!
Bueno hace no mucho empece a programar un troyano bancario en delphi 7(que pronto publicare...), tenia un problema y era que usando los sockets tenia que
extraer determinados strings de parametros defectuosos (desde - hasta)... Así nació esta funcion la cual es muy útil usada ya sea en APIS hasta en tareas triviales como las que acabo de describir.
Aquí el código:
Código
  1. {$Optimization On}
  2. {/*************************************\}
  3. { ExtractString Function @por WarZ0n3   }
  4. {\*************************************/}
  5. { Explicación:                          }
  6. { Esta funcion es utilizada para extraer}
  7. { un string de una cadena determinada.  }
  8. { Funcion muy util para rutinas de      }
  9. { programación en sockets...            }
  10. {\*************************************/}
  11. { Mode de uso:                          }
  12. { Los parametros son los siguientes:    }
  13. { __ExtractString(                      }
  14. {  ListaDeStrings, Char(desde),         }
  15. {  string(Palabra), Char(hasta)         }
  16. {  );                                   }
  17. {/*************************************\}
  18. { Ejemplo:                              }
  19. { __ExtractString(lStr, '&', '@%&Hola Mundo|#$', '|'); }
  20. { Devuelve: Hola Mundo                  }
  21. {\*************************************/}
  22. function __ExtractString(lStr:TStringList; from_s:Char; ExtractStr:string; to_s:Char): string;
  23. var
  24.  reverse   : integer;
  25.  PosStr    : integer;
  26.  CpyStr    : string;
  27.  StrRip    : string;
  28.  sNull     : string;
  29. begin
  30.  reverse:= LastDelimiter(to_s, pChar(ExtractStr));
  31.  SetLength(ExtractStr, reverse);
  32.  PosStr:= Pos(from_s, pChar(ExtractStr));
  33.  
  34.  CpyStr:= Copy(pChar(ExtractStr), PosStr+$1, reverse);
  35.  StrRip:= StringReplace(CpyStr, to_s, sNull, [rfReplaceAll, rfIgnoreCase]);
  36.  lStr.Add(StrRip);
  37. end;
  38.  
  39. { ***Ejemplo de uso en un Button1 del Form*** }
  40. procedure TForm1.Button1Click(Sender: TObject);
  41. var
  42.  lStr:TSTRINGLIST;
  43. begin
  44.  lStr:= TstringList.Create;
  45.  { Llamada de la función }
  46.  __ExtractString(lStr, '&', '@%&HOLA_MUNDO|#$', '|'); { Ejemplo de uso }
  47.  ShowMessage(lStr.GetText);
  48. end;
  49.  
  50. end.
  51.