Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: DaniekL en 19 Junio 2013, 13:25 pm



Título: [Aporte] Herramienta para transformar a ascii web
Publicado por: DaniekL en 19 Junio 2013, 13:25 pm
Buenas, he hecho una pequeña tool en C para transformar una cadena ascii a hexadecimal.

Es practicamente inutil, pero la idea es automatizarlos  ;D ;D

La idea es usarlo en cosas como el XSS en webs que filtran las cadenas, pero no los valores hexadecimales.

Por ejemplo, el típico XSS ("><script>alert(42);</script>) se vería asi:

Código:
%22%3e%3c%73%63%72%69%70%74%3e%61%6c%65%72%74%28%34%32%29%3b%3c%2f%73%63%72%69%70%74%3e

El código es este (vale tanto para Unix como para Windows  :D)

Código
  1. //A tool for transforming an ascii string to web hex
  2. //IE: "test" == %74%65%73%74
  3. #include <stdio.h>
  4. #include <string.h>
  5.  
  6. int main(void) {
  7.  
  8.  char str[1024];
  9.  int i;
  10.  const char percent = 0x25;
  11.  printf("Enter the text\n");
  12.  scanf("%s", &str);
  13.  for(i = 0; i < strlen(str); i++) {
  14.    printf("%c%02x",percent, str[i]);
  15.  }
  16.  printf("\n");
  17.  
  18. #ifdef __WINDOWS__
  19.  printf("\n\n");
  20.  system("pause");
  21. #endif
  22. }

Espero que os guste este aporte y que os sea útil.  :rolleyes:


Título: Re: [Aporte] Herramienta para transformar a ascii web
Publicado por: rir3760 en 20 Junio 2013, 02:13 am
No es necesario utilizar la función strlen ya que basta con verificar si el carácter a procesar es el '\0' (ello indica el fin de la cadena) y para imprimir con printf el carácter '%' basta con doblarlo:
Código
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5.   char str[1024];
  6.   int i;
  7.  
  8.   puts("Enter the text");
  9.   scanf("%1023[^\n]", str);
  10.  
  11.   for (i = 0; str[i] != '\0'; i++)
  12.      printf("%%%02x", str[i]);
  13.   putchar('\n');
  14.  
  15.   return 0;
  16. }

Un saludo


Título: Re: [Aporte] Herramienta para transformar a ascii web
Publicado por: leosansan en 20 Junio 2013, 03:14 am
No es necesario utilizar la función strlen ya que basta con verificar si el carácter a procesar es el '\0' (ello indica el fin de la cadena)
.......................

 
Código
  1. for (i = 0; str[i] != '\0'; i++)
     

Y tampoco hace falta explicitarlo, con esto es suficiente:


Código
  1. for (i = 0; str[i]; i++)

 Saluditos!
   
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)