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:
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
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)
.......................
for (i = 0; str[i] != '\0'; i++)
Y tampoco hace falta explicitarlo, con esto es suficiente: for (i = 0; str[i]; i++)
Saluditos!
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)