Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - DaniekL

#1
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:
#2
Buenas, tengo este código que su idea es ser un pequeño cliente de irc, pero por ahora solo crea y conecta el socket. El problema viene al compilar:

$ gcc ircclientlinux.c
ircclientlinux.c: En la función 'main':
ircclientlinux.c:13:21: error: no se conoce el tamaño de almacenamiento de 'addr'


El código es el siguiente:
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>

#define PORT 6667
#define SERVER "128.237.157.136"

int main(void) {

int sockfd;
struct sockaddr_in addr;

if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
printf("Error al crear el socket\n");
return 0;
}
addr.sin_family = AF_INET;
addr.sin_port = htons(PORT);
addr.sin_addr.s_addr = inet_addr(SERVER);
bzero(&(addr.sin_zero), 8);

if(connect(sockfd, (struct sockaddr *) &addr, sizeof(struct sockaddr)) == -1) {
printf("Error al conectar al servidor\n");
}

return 0;
}
#3
Buenas;

Estoy programando una aplicación para tomar notas, la idea es que conky ejecute la parte de leer notas y yo la parte de crear una nueva. Como es obvio para tomar la nota necesito una textbox, bien, como en el ordenador que voy a usar este programa usa OpenBox he decidido hacerla en Gtk+ (la versión 2.0 más concretamente).

El problema viene cuando compilo el código. Me da el siguiente error:

$ gcc -o notes notes.c `pkg-config --cflags gtk+-2.0 --libs`
notes.c: En la función 'main':
notes.c:22:3: aviso: declaración implícita incompatible de la función interna 'exit' [activado por defecto]
notes.c:34:4: aviso: declaración implícita incompatible de la función interna 'exit' [activado por defecto]
notes.c: En la función 'create_window':
notes.c:88:11: aviso: la asignación crea un puntero desde un entero sin una conversión [activado por defecto]
notes.c:89:25: error: 'GtkText' no se declaró aquí (primer uso en esta función)
notes.c:89:25: nota: cada identificador sin declarar se reporta sólo una vez para cada función en el que aparece
notes.c:89:34: error: expected expression before ')' token


El fallo sobretodo es que identifique GtkText, que es un GtkWidget, como una función. Me han dicho que podría ser un fallo con los includes, pero no tengo ni idea de como arreglarlo.

Gracias de antemano.
El código: http://pastebin.com/i8t8X4L7
#4
Hola.

Verán, estoy haciendo un programa que lee una lista de palabras y las compara con una lista de letras.
Aquí de lo muestro

//drawsomething.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define PATH = "/home/daniel/.drawsom/wordlist" //El PATH del fichero

//Funcion que muestra el uso y sale
void usage(char *s) {
printf("\t-----Usage-----\n\nTo add a word use: %s -a <the_word>\nTo find a word use: %s <length_of_the_word> <the_possible_letter>\n", s, s);
exit(0);
}

//Añade una nueva palabra a la lista
void add(char *word) {
FILE *wordlist;
wordlist = fopen(PATH, "w");
if(wordlist == NULL) {
printf("[Fatal Error!!] while opening wordfile\nAborting...\n");
exit(0);
}
fwrite(word, sizeof(word), 1, wordlist);
fclose(wordlist);
}
//Funcióm que busca la palabra
void find(int tamano, char *l) {
FILE *wordlist;
char letters[13], *aux;
int check, i; /*check comprueba si la palabra leida contiene las letras que pasamos como argumento.
                     Si check es mayor o igual que el tamaño de la palabra, esta cumple las caracteristicas*/
strcpy(letters, l);
letters[12] = '\0';
wordlist = fopen(PATH, "r");
if(wordlist == NULL) {
printf("[Fatal Error!!] while opening wordfile\nAborting...\n");
exit(0);
}
aux = fgets(NULL, 15, wordlist);
while(aux != NULL) {
if(strlen(aux) == tamano) {
for(i = 0; i < 12; i++) {
if(strstr(aux, letters[i]) != NULL) {
check++;
}
}
if(check >= tamano) {
printf("%s\n", aux);
}
}
aux = fgets(NULL, 15, wordlist);
}
}

int main(int argc, char *argv[]) {
if(argc < 3)
usage(argv[0]);
if(strcmp(argv[1], "-a"))
add(argv[2]);
else
find(atoi(argv[1]), argv[2]);
return 0;
}


El problema viene cuando lo compilo. Uso el gcc y me arroja este resultado:
drawsomething.c: En la función 'add':
drawsomething.c:13:19: error: expected expression before '=' token
drawsomething.c: En la función 'find':
drawsomething.c:28:19: error: expected expression before '=' token
drawsomething.c:37:5: aviso: el paso del argumento 2 de 'strstr' crea un puntero desde un entero sin una conversión [activado por defecto]
/usr/include/string.h:342:14: nota: se esperaba 'const char *' pero el argumento es de tipo 'char'


He revisado los errores pero no veo el fallo y como el compilador lleva tiempo haciendo cosas raras pues a lo mejor es un fallo (sin ofender al gran Stallman   :laugh: :laugh: :laugh:) por que ademas, sale que tengo errores en la libreria string.h.

Si alguien tiene la solución al problema (que me jugaría el brazo a que es una chorrada) le agradeceía mucho que me ayudase.  ;-)

Gracias. Un abrazo.