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ú

Mensajes - NeoB

#91
Ok, ya lo solucioné, ¡se me había olvidado poner al final un '\0' !! ...fallo tonto... Muchas gracias.
#92
Buenas, tengo un problema que no consigo resolver en C, y espero que puedan ayudarme.
Quiero unir un char (ejemplo '9') a una cadena (ejemplo "6533") de forma que luego imprima la cadena y sea "65339".
He googleado bastante y veo que con strcat() puedo unir dos cadenas, pero yo quiero unir una cadena y un carácter, y al intentarlo con strcat() me da error.
¿Hay alguna función que lo haga? ¿De que manera puedo hacerlo? Gracias.
#93
PHP / Re: Ayuda al crear archivo en servidor!
4 Marzo 2012, 16:54 PM
Buena idea lo de los usuarios con su directorio. Gracias.
#94
PHP / Re: Ayuda al crear archivo en servidor!
28 Febrero 2012, 19:47 PM
No le puse permisos de ejecución, sino de escritura y lectura. Cuando digo lo de peligroso, me refiero a que si es posible que alguien cuelgue archivos saltándose los pasos, es decir, que si me podrían subir archivos ahí sin ni siquiera pasar por la página, con un cliente? ahí lo puse en la raíz web de ejemplo, en realidad, solo tiene permisos de escritura un directorio, que es donde se guardan los artículos que la gente publica.
#95
PHP / Re: Ayuda al crear archivo en servidor!
26 Febrero 2012, 21:18 PM
Muchas gracias. Además de lo que me dijistéis, encontré que no tenía permisos de escritura ese directorio. Hice un "chmod ugo+rw /var/www" y consegí que me funcionase... Pero, ¿no es peligroso dar esos permisos?.
Gracias por la ayuda.
#96
PHP / Ayuda al crear archivo en servidor!
26 Febrero 2012, 18:23 PM
Tengo este código en un archivo .php en /var/www y quiero que me cree un archivo y que escriba Hola!! pero no me funciona. Tengo este código:
Código (php) [Seleccionar]

<?php
$file
=fopen("texto.txt","r");
fwrite($file"Hola!!!");
fclose($file);
?>


El servidor es apache 2.x con php5  en linux.
Quiero que al visitar la página se me cree el archivo en el mismo directorio en el que está alojado con nombre "texto.txt" pero luego hao un "ls" en el servidor y todo sigue igual, no se crea nada. ¿Pueden ayudarme porfavor?
#97
Ok, muchas gracias!
#98
Buenas, he estado esta última semana dándole vueltas a la idea de hacer un bruteforce en C, para que ya estoy aprendiendo, animarme un poco. Una de las utilidades de este por ejemplo, sería logearse en un ftp remoto, pero me va MUY LENTO (incluso cuando me intento logear en localhost), y no se que hacer para mejorarlo (ya os he dicho que estoy aprendiendo). ¿Alguna idea? Antes de dejar el código os digo como va: Por ejemplo cuando te pide un comando yo le meto:
Código (bash) [Seleccionar]

lftp ftp://localhost/ -u usuario,

--Aquí va el código que llevo:

/*
 *Nombre: COMB.

 *Autor: NeoB

 *Descrpición: Genera una lista de palabras (con o sin sentido)
   combinando las letras del abecedario, en mayusculas, minúsculas, y números;
   además permite usar esas combinaciones con un comando.
   Para modificar esta lista se puede modificar la variable "abc" (global).

*/

/***LAS LIBRERÍAS***/
#include <stdio.h>
#include <string.h>


/***VARIABLES GLOBALES****/
char *abc = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; //El abecedario (los caracteres que hay son los que se usarán).
int i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20; //Contadores que usaremos para apuntar a las diferentes posiciones de "abc".
char command[500];
int yescommand;
int tamcommand;


/*******************EL MAIN() Y LAS FUNCIONES DE CONTROL.*********************/
int main()
{
 char option1, option2; int optiontam;  //Para almacenar las opciones que escojamos.  

 printf("\E[0;1m"
        "     ======================================\n"
        "     || COMB - Generador de diccionarios.||\n"
        "     ||     By Juan Escudero Pedrosa.    ||\n"
        "     ======================================\n"
        "Set the length of the strings used:\n"
        "1) use a progressive increase of the string's lenght.\n"
        "2) fixed lenght.\n"
        "3) use range of values for string's lenght.\n"
        "What option has you selected? (1-3):  "
        "\E[00m");
 option1 = getchar(); //Cogemos la opción.
 getchar();  //Es para borrar el stdin, NO SE DEBE DE HACER, pero funciona.

 printf("\E[0;1m"
        "Do you want to use a command with the strings generated? (y/n)  "
        "\E[00m");
 option2 = getchar(); //Cogemos la opción.
 getchar();  //Es para borrar el stdin, NO SE DEBE DE HACER, pero funciona.

 if(option2=='y')
 {
   printf("\E[0;1m"
          "What command do you want to use? (Remember that the word generated will join to the end of the command):  "
          "\E[00m");
   yescommand = 1; //Si yescommand es 1 siginifica que hemos elegido meter comandos.
/*********************************COJEMOS LA CADENA QUE METE***********************************************************/
   fgets(command,500,stdin); //Almacenamos la cadena con un máximo de 500 caracteres.
   char *buscar_n; //La utilizamos para buscar un fin de línea por que queremos cojer solo una línea.
   buscar_n = strchr (command, '\n'); //Buscamos el fin de linea (\n) en command.
   if (buscar_n) //Si lo hay... (no necesita corchetes ('{' y '}') por que solo hacemos una cosa.
   *buscar_n = '\0'; //Lo sustituimos por un final de cadena (\0).
/**********************************************************************************************************************/
   tamcommand = strlen(command); //Lo usamos luego, ya veréis.
 }

 switch(option1)  //Para los valores de lo primero que se nos da a elegir...
 {
   case '1':  //Si elegimos progresiva, vamos llamando. Podemos por ejemplo, cambiar el orden y ponerlo en dos ordenadores.
     cero();
     one();
     two();
     three();
     four();
     five();
   break;

   case '2': //Si elegimos un tamaño predeterminado...
     printf("\E[0;1m"
            "What lenght do you want to use? (0-20):  "
            "\E[00m");
     scanf("%d",&optiontam); //Cojemos el tamaño.
     switch(optiontam)
     {
       case 0: cero(); break;  //Lamamos a cero() (para 0 caracetres):
       case 1: one(); break;  //Llamamos a one() (para 1 caracter)
       case 2: two(); break;  //Llamamos a two() (para 2 caracteres)
       case 3: three(); break;
       case 4: four(); break;
       case 5: five(); break;
       case 6:  break;  //Todavia no lo he puesto...
       case 7:  break;  //Todavia no lo he puesto...
       case 8:  break;  //Todavia no lo he puesto...
       case 9:  break;  //Todavia no lo he puesto...
       case 10: break;  //Todavia no lo he puesto...
       case 11: break;  //Todavia no lo he puesto...
       case 12: break;  //Todavia no lo he puesto...
       case 13: break;  //Todavia no lo he puesto...
       case 14: break;  //Todavia no lo he puesto...
       case 15: break;  //Todavia no lo he puesto...
       case 16: break;  //Todavia no lo he puesto...
       case 17: break;  //Todavia no lo he puesto...
       case 18: break;  //Todavia no lo he puesto...
       case 19: break;  //Todavia no lo he puesto...
       case 20: break;  //Todavia no lo he puesto...
       default: break;  //Todavia no lo he puesto...
     }
   break;
   
   case '3': //Si hemos elegido utilizar un rango de valores...
     setvalues();
   break;

   default:
     printf("\E[0;1m"
            "Unknow option.\n"
            "\E[00m");
     return -1;
   break;
 }
 return 0;
}


int setvalues()
{
 /***EN CONSTRUCCIÓN****/
 return 0;
}



/*
***************HA ESTAS FUNCIONES LAS LLAMAMOS PARA GENERAR LAS PALABRAS********************
***Explico como lo genera en "three()" y en "four()" (para longitudes 3 y 4 respectivamente).
*/

int cero()
{
 char *toexecute;
 char nada = '\0';  //Por si tenemos la p**a suerte de que la password, o para lo que lo utilizemos está en blanco.
 printf("%c\n",nada); //Utilizamos la cadena vacía.
 if(yescommand==1)
 {
   toexecute = command;
   toexecute[tamcommand] = nada;
   system(toexecute);
 }
 return 0;
}


int one()
{
 char *toexecute;
 for (i1=0; i1<=61; i1++)
 {
   char caracter1 = abc[i1];
   printf("%c\n",caracter1);
   if(yescommand==1)
   {
    toexecute = command;
    toexecute[tamcommand] = caracter1;
    system(toexecute);
   }
 }
 return 0;
}


int two()
{
 char *toexecute;
 for (i1=0; i1<=61; i1++)
 {
   char caracter1 = abc[i1];
   for(i2=0; i2<=61; i2++)
   {
     char caracter2 = abc[i2];
     printf("%c%c\n",caracter1,caracter2);
     if(yescommand==1)
     {
         toexecute = command;
         toexecute[tamcommand] = caracter1;
         toexecute[tamcommand + 1] = caracter2;
         system(toexecute);
     }
   }
 }
 return 0;
}


int three()  //Para generar combinaciones de 3 caracteres de longitud.
{
 char *toexecute; //Donde guardamos el comando introducido + las combinaciones generadas.
 for (i1=0; i1<=61; i1++) //Este sería el que más lento cambia de los 3 caracteres.
 {
   char caracter1 = abc[i1]; //"caracter1" apunta primero a "a", luego a "b", luego a "c", etc (ver la variable abc).
   for(i2=0; i2<=61; i2++)
   {
     char caracter2 = abc[i2];
     for(i3=0; i3<=61; i3++) //Este ni lo veríamos pasar de lo rápido que es, pero solo si elegimos no comandos (esto es lo que quiero solucionar).
     {
       char caracter3 = abc[i3];
       printf("%c%c%c\n",caracter1,caracter2,caracter3); //Imprimimos los caracteres, que van variando.
       if(yescommand==1) //Si hemos elegido utilizar un comando...
       {
         toexecute = command; //Ponemos toexecute igual que command, ya que command tiene el comando, pero le tenemos que agregar las palabras generadas.
         toexecute[tamcommand] = caracter1;  //Le vamos agregando las combinaciones (el primer caracter)...
         toexecute[tamcommand + 1] = caracter2;  //Le vamos agregando las combinaciones (el segundo caracter)...
         toexecute[tamcommand + 2] = caracter3;  //Le vamos agregando las combinaciones (el tercer caracter)...
         system(toexecute);  //Ejecutamos "toexecute".
       }
     }
   }
 }
 return 0; //Decimos al main() que todo ha ido bien.
}


int four()
{
 char *toexecute;
 for (i1=0; i1<=61; i1++)
 {
   char caracter1 = abc[i1];
   for(i2=0; i2<=61; i2++)
   {
     char caracter2 = abc[i2];
     for(i3=0; i3<=61; i3++)
     {
       char caracter3 = abc[i3];
       for(i4=0; i4<=61; i4++)
       {
         char caracter4 = abc[i4];
         printf("%c%c%c%c\n",caracter1,caracter2,caracter3,caracter4);
         if(yescommand==1) //Si hemos elegido utilizar un comando...
         {
           toexecute = command; //Ponemos toexecute igual que command.
           toexecute[tamcommand] = caracter1;  //Le vamos agregando las combinaciones (el primer caracter)...
           toexecute[tamcommand + 1] = caracter2;  //Le vamos agregando las combinaciones (el segundo caracter)...
           toexecute[tamcommand + 2] = caracter3;  //Le vamos agregando las combinaciones (el tercer caracter)...
           toexecute[tamcommand + 3] = caracter4;  //Le vamos agregando las combinaciones (el cuarto caracter)...
           system(toexecute);  //Ejecutamos "toexecute".
         }
       }
     }
   }
 }
 return 0;
}


int five()
{
 char *toexecute;
 for (i1=0; i1<=61; i1++)
 {
   char caracter1 = abc[i1];
   for(i2=0; i2<=61; i2++)
   {
     char caracter2 = abc[i2];
     for(i3=0; i3<=61; i3++)
     {
       char caracter3 = abc[i3];
       for(i4=0; i4<=61; i4++)
       {
         char caracter4 = abc[i4];
         for(i5=0; i5<=61; i5++)
         {
           char caracter5 = abc[i5];
           printf("%c%c%c%c%c\n",caracter1,caracter2,caracter3,caracter4,caracter5);
           if(yescommand==1)
           {
           toexecute = command;
           toexecute[tamcommand] = caracter1;
           toexecute[tamcommand + 1] = caracter2;
           toexecute[tamcommand + 2] = caracter3;
           toexecute[tamcommand + 3] = caracter4;
           toexecute[tamcommand + 4] = caracter5;
           system(toexecute);
           }
         }
       }
     }
   }
 }
 return 0;
}


No tengo mucho tiempo para mejorarlo por eso de estudiar, y cuando tengo, no veo que cambiar (detalles importantes, y lo único que he hecho es conseguir logearme en localhost con esta "aaaad" en la opción fijo con 5 caracteres).
He de decir que va muy rápido cuando lo hago sin introducir comandos, pero va al ritmo de 1 por segundo cuando es con comando (porejemplo cuando pongo:  "lftp ftp://localhost/ -u user,". Gracias por adelantado.
(El http:ftp://localhost/ ese sale solo) :o
#99
Yo también estoy buscando algo así, haber si lo consigo y lo posteo.
#100
Ok, muchas gracias.