elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Una ayudita porfavor!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Una ayudita porfavor!  (Leído 1,435 veces)
Darkes10

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Una ayudita porfavor!
« en: 15 Enero 2016, 13:02 pm »

Buenas, soy nuevo en el foro y en cuanto coja nivel espero ayudar en todo lo que pueda!!!(Espero que no sea mucho lo que pido por ser nuevo ;D)

Estoy haciendo una practica y aparte de que no se si lo estoy haciendo bien.. tengo un problema y no se que hacer.Dejo el el codigo entero porque se necesita coger datos de otra clase y no se como ponerlo.

Código:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>

#define pause system("pause");
using namespace std;

typedef char Cadena[100];

class Identificacion
{
    Cadena Login;
    Cadena Password;
public:
    Identificacion();
    void setLogin(Cadena pLogin);
    bool ComprobarIdentidad(Cadena pLogin, Cadena pPasswd);   
    void GetInformacion(Cadena pLogin, Cadena pPasswd);
};

Identificacion::Identificacion()
{
Login[0]='\0';
Password[0]='\0';
}

void Identificacion::setLogin(Cadena pLogin)
{
int a;
int j=0; //contador
int i=0;
Cadena contra;

a=strlen(pLogin)-1;
for(i=a;i>=0;i--)
{
contra[j]=pLogin[i];
j++;
}
strcpy(Login,pLogin);
strcpy(Password,contra);
}



bool Identificacion::ComprobarIdentidad(Cadena pLogin, Cadena pPasswd)
{
int b;
int c;

b=strcmp(pLogin,Login);
c=strcmp(pPasswd,Password);
return(b==0 && c==0);
}



void Identificacion::GetInformacion(Cadena pLogin, Cadena pPasswd)
{
int d;
int e=0;

strcpy(pLogin,Login);
d=strlen(Password)-1;
for(e=0;e<=d;e++)
{
pPasswd[e]='*';
}
pPasswd[d+1]='\0'; //pones el barra cero para que no cojas basura

}




#define NMESES 12
#define NDIAS 30
#define TOMA_ERRONEA -1000
#define NSATELITES 5

class Satelite
{
    Identificacion Iden;
    Cadena Nombre;
    Cadena Fabricante;
    int NSerie;
    int Estado;
    float Tomas[NMESES][NDIAS];
public:
    Satelite();
    bool EstaIdentificado (){return Estado>=0;};
    bool EstaActivado(){return Estado==1;};
    bool Identificar(Cadena pLogin, Cadena pMaster, Cadena pNombre,
                     Cadena pFabrica, int pNSerie);
    bool Activar(Cadena pLogin, Cadena pPasswd);
    bool Desactivar(Cadena pLogin, Cadena pPasswd);
    void MostrarEstado();
    float GetToma(int pMes, int pDia);
    void SetToma(int pMes, int pDia, float pTemp);
    void Rellenar(int Porcen=90);
    Satelite operator+(Satelite pSat);
};

Satelite::Satelite()
{
int a=0;
int b=0;

for(a=0;a<=NMESES;a++)
{
for(b=0;b<=NDIAS;b++)
{
Tomas[a][b]=TOMA_ERRONEA;
}
}
Estado=-1;
}

bool Satelite::Identificar(Cadena pLogin, Cadena pMaster, Cadena pNombre, Cadena pFabrica, int pNSerie)
{
strcpy(Nombre,pNombre);
strcpy(Fabricante,pFabrica);
NSerie=pNSerie;

int c=0;

c=strcmp(pMaster,"Admin901434");

if(c==0 && Estado==-1 && pLogin!='\0')
{
Iden.setLogin(pLogin);
Estado=0;
return true;
}
else
{
return false;
}

}

bool Satelite::Activar(Cadena  pLogin,  Cadena  pPasswd)
{
if(Estado==0)
{
if(Iden.ComprobarIdentidad(pLogin, pPasswd)==true)
{
return true;
}
}
return false;
}

bool Satelite::Desactivar(Cadena pLogin, Cadena pPasswd)
{
if(Estado==1)
{
if(Iden.ComprobarIdentidad(pLogin, pPasswd)==true)
{
return true;
}
}
return false;
}


void Satelite::MostrarEstado()
{
if(Estado==1)
{
cout<<"Nombre: "<<Nombre<<"\nFabricante: "<<Fabricante<<"\nEstado Identificado y no Activado"<<endl;
cout<<"Login: "<<Iden.setLogin(pLogin)<<"\nPassword: "<<Iden.GetInformacion(pPasswd)<<endl;
}

else if(Estado==2)
{
cout<<"Nombre: "<<Nombre<<"\nFabricante: "<<Fabricante<<"\nEstado Identificado y Activado"<<endl;
cout<<"Login: "<<Iden.setLogin(Login)<<"\nPassword: "<<Iden.GetInformacion(pPasswd)<<endl;
}
else if(Estado==-1)
{
cout<<"****SATELITE NO IDENTIFICADO****"<<endl;
}

}

El primer problema me surje en que no se si cuando en el metodo de la segunda clase, el de activar satelite, si el Iden.ComprobarIdentidad esta bien usado para llamar y si es asi, entonces en el ultimo metodo que tengo que mostrar el Login que se haya puesto y la contraseña con los astericos(primera clase) Estoy mostrandolo bien o no, estoy liado con eso de utilizar metodos de una clase en otra!!! :-(

Por cierto lo que estoy intentando hacer es lo siguiente(queda mas por hacer pero no pudo avanzar si no saco esto...):

Los atributos de la clase Satélite son:

Identificacion Iden: Atributo que contiene la clave de activación y desactivación del Satélite.

int Estado: Valor entero que indica el estado de Satélite, que puede ser:
-1  El  satélite  no  ha  sido  Identificado.  Esto  significa  que  el  satélite  no  ha  sido
inicializado  con  los  valores  correctos  de  Login  de  activación,  Nombre,
Fabricante, y Número de Serie.

0   El  satélite  está  Identificado  (sus  atributos  tienen  información)  pero  no  está
activo  (no  puede  operar),  es  decir  los  métodos  MostrarEstado,  GetToma,
SetToma y Rellenar no funcionan correctamente, no hacen nada.
1  El  satélite  está  Identificado  y  además  está  activo,  luego  puede  operar  con
normalidad.

Cadena Nombre: Contiene el nombre del Satélite.

Cadena Fabricante: Contiene el Fabricante del Satélite.

int NSerie: Número de serie de fabricación.

float  Tomas[NMESES][NDIAS]:  Vector  de  temperaturas  tomada  una  vez  al  día  durante  12 meses.

Métodos
Los métodos de la clase tienen la siguiente funcionalidad:

Satelite():  Constructor de la clase que  inicializa los atributos de la clase. En concreto la tabla Tomas  ha  de  inicializarse  con  el  valor  -1000  (constante  TOMA_ERRONEA)  que  indica  que dicha  toma  de  temperatura  no  ha  sido  realizada,  y el  Estado  a  -1  indicando  que  no  ha  sido Identificado el Satélite.

bool  EstaIdentificado():  Este  método  inline  ya  implementado  devuelve  true  si  el  satélite  está identificado.

bool  EstaActivado():  Este  método  inline  ya  implementado  devuelve  true  si  el  satélite  está identificado y activado.

bool  Identificar(Cadena  pLogin,  Cadena  pMaster,  Cadena  pNombre,  Cadena  pFabrica, int  pNSerie):  Método  que  inicializa    los  atributos  del  satélite  para  que  pueda  ser  utilizado.Además se indica el  Login  y el  password de administración. Como ya se ha dicho, el  password del satélite se genera automáticamente a través del  Login. El password de administración es "Admin901434". Si el password de administración no coincide con el dado, el satélite no puede ser identificado. Si la identificación es correcta devolverá true, en caso contrario false. Nota: Un
satélite solo puede ser identificado una vez, en caso de que se intente identificar un satélite más de una vez devolverá false.

bool  Activar(Cadena  pLogin,  Cadena  pPasswd):  Método  que  activa  el  satélite  siempre  y cuando  se cumpla que  el satélite esté identificado,  que no esté activado previamente y que coincidan el Login  y el Password  pasados  por parámetro con los que posee el satélite. En caso de que se verifiquen dichas condiciones el método devolverá true, en caso contrario false.

bool Desactivar(Cadena pLogin, Cadena pPasswd): Método que desactiva el satélite siempre y cuando  se  verifique  que  esté  activado  previamente  y  que  coincidan  el  Login  y  el  Password pasado  por  parámetro  con  los  que  posee  el  satélite.  En  caso  de  que  se  verifiquen  dichas condiciones el método devolverá true, en caso contrario false.

void  MostrarEstado():  Método  que  muestra  por  pantalla  el  estado  del  satélite,  siempre  y cuando esté identificado previamente. Si el satélite está identificado mostrará un texto como: 

Nombre: Norte Fabricante: Hispasat Estado: Identificado y Activado
Login: Jos1267. Password: ********
El  estado  podrá  ser  Identificado  y  Activado  o  Identificado  y  No  Activado.  En  ningún  caso  un
satélite no identificado podrá mostrar su información, solo mostrará:
**** SATELITE NO IDENTIFICADO ****


Saludos!


En línea

D4RIO


Desconectado Desconectado

Mensajes: 1.004


U N I X


Ver Perfil WWW
Re: Una ayudita porfavor!
« Respuesta #1 en: 16 Enero 2016, 11:42 am »

Si deseas que alguien te ayude, deberías:

  • Escribir código ordenado.
  • Postearlo con las etiquetas adecuadas. En lugar de code, usa code=cpp para C++. Esto simplemente resalta la sintáxis, pero es una gran mejora para leer tu código. Debes pensar en los demás.
  • Hablamos castellano. Difícil es que nos vaya bien entendiéndonos con un lenguaje de programación si escribimos mal nuestro propio idioma. Lee con detenimiento tu pregunta y dime, con sinceridad, si es comprensible, si está bien redactada, si está ordenada y si es exáctamente lo que querías decir:
    Citar
    El primer problema me surje en que no se si cuando en el metodo de la segunda clase, el de activar satelite, si el Iden.ComprobarIdentidad esta bien usado para llamar y si es asi, entonces en el ultimo metodo que tengo que mostrar el Login que se haya puesto y la contraseña con los astericos(primera clase) Estoy mostrandolo bien o no, estoy liado con eso de utilizar metodos de una clase en otra!!!

Primero mejora la calidad con la que te comunicas, porque es tan importante saber comunicarse y trabajar en equipo como tener talento o conocimiento del lenguaje.

El diseño en si mismo es muy deficiente, en cuanto al código:

Primero: No hay main.
Segundo: Usa los streams de C++ o sé más claro declarando los strings en formato de C (usando char[]). Normalmente, definir un tipo como lo que haces con Cadena no trae más que problemas. En C lo hacemos así:

Código
  1. char Login[TU_TAMANNO];

Que es mucho más transparente en cuanto a lo que el tipo de datos es.



Tomate tu tiempo para escribir de una forma que los demás comprendan sin dudas, en el camino a hacerlo es probable que te encuentres con las respuestas que buscabas.

Saludos


En línea

OpenBSDFreeBSD
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
1 ayudita porfavor
Hacking Mobile
duomix 2 3,634 Último mensaje 16 Diciembre 2005, 22:47 pm
por duomix
Una ayudita con BEINI porfavor,gracias!
Wireless en Linux
mrlolxr 1 2,704 Último mensaje 30 Noviembre 2011, 18:01 pm
por pianista
Ayudita porfavor Joomla
Desarrollo Web
WIитX 4 2,238 Último mensaje 10 Julio 2013, 01:22 am
por moikano→@
Pequeña ayudita porfavor (threads/hilos) :)
Programación C/C++
Thorn14 7 3,769 Último mensaje 10 Enero 2014, 08:24 am
por Thorn14
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines