[Aporte] Herramienta para transformar a ascii web

Iniciado por DaniekL, 19 Junio 2013, 13:25 PM

0 Miembros y 1 Visitante están viendo este tema.

DaniekL

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:

%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)

//A tool for transforming an ascii string to web hex
//IE: "test" == %74%65%73%74
#include <stdio.h>
#include <string.h>

int main(void) {

 char str[1024];
 int i;
 const char percent = 0x25;
 printf("Enter the text\n");
 scanf("%s", &str);
 for(i = 0; i < strlen(str); i++) {
   printf("%c%02x",percent, str[i]);
 }
 printf("\n");
 
#ifdef __WINDOWS__
 printf("\n\n");
 system("pause");
#endif
}


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

rir3760

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:
#include <stdio.h>

int main(void)
{
   char str[1024];
   int i;
   
   puts("Enter the text");
   scanf("%1023[^\n]", str);
   
   for (i = 0; str[i] != '\0'; i++)
      printf("%%%02x", str[i]);
   putchar('\n');
   
   return 0;
}


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

leosansan

Cita de: 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)
.......................

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

Y tampoco hace falta explicitarlo, con esto es suficiente:


Código (cpp) [Seleccionar]
 for (i = 0; str[i]; i++)

Saluditos!