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

 

 


Tema destacado:


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / ayuda con ncurses en: 29 Agosto 2021, 02:00 am
buen dia a todos, estoy haciendo un programa algo tonto con ncurses, un juego, y una de las clases me esta dando problemas, la de manejo de pantalla, tengo 2 problemas que son:
1-cuando se ejecuta la ventana del terminal siempre es muy chica, de alrededor de1/4 a 1/3 del area de la pantalla, en ese momento las zonas que dibujo en pantalla estan bien, pero cuando la maximizo quedan chicas.
2-para realizar un mapa uso 9 sub ventanas llamadas bloques, pero resulta que estas no me toman los atributos de color, lo demas anda.
El mas importante seria el primero, necesitaria saber como arrancar ya con la pantalla maximizada por soft, si es que se puede (lei por ahi que si y tambien vi una funciones llamadas resizeterm y resize_term que no se si tendran algo que ver) y adaptar la escala al nuevo tamaño de forma automatica (tambien he podido ver que puedo interceptar el evento de maximizado como una pulsacion con getch()). lo otro seria mas por prolijidad

Código:
#ifndef PANTALLA_H
    #define PANTALLA_H
    #include <ncurses.h>

    class Pantalla
    {
        private:
            WINDOW *mapa, *dialogo, *inventario, *bloques[9];
        public:
            Pantalla();
            ~Pantalla();
            int Mapa(void);
            int Dialogo(void);
            int Inventario(void);
    };

#endif // PANTALLA_H

Código:
#include "Pantalla.h"
#include <ncurses.h>
#include <iostream>

Pantalla::Pantalla()
{
    int8_t i;
    initscr();
    start_color();
    cbreak();
    noecho();
    keypad(stdscr,TRUE);
    init_pair(1,COLOR_RED,COLOR_GREEN);
    init_pair(2,COLOR_RED,COLOR_WHITE);
    init_pair(3,COLOR_BLUE,COLOR_YELLOW);
    init_pair(4,COLOR_BLACK,COLOR_RED);
    init_pair(5,COLOR_BLACK,COLOR_CYAN);
    mapa=subwin(stdscr,22,38,1,1);

    if(mapa == NULL)
    {
        endwin();
        std::cout << "imposible crear ventana";
        getch();
        return;
    }
    dialogo=subwin(stdscr,10,38,1,41);
    if(dialogo == NULL)
    {
        delwin(mapa);
        endwin();
        std::cout << "imposible crear ventana";
        getch();
        return;
    }
    inventario=subwin(stdscr,10,38,13,41);
    if(inventario == NULL)
    {
        delwin(mapa);
        delwin(dialogo);
        endwin();
        std::cout << "imposible crear ventana";
        getch();
        return;
    }
    for(i=0;i<3;i++)
    {
        bloques[i]=subwin(mapa,5,7,5,9+(7*i));
        bloques[i+3]=subwin(mapa,5,7,10,9+(7*i));
        bloques[i+6]=subwin(mapa,5,7,15,9+(7*i));
    }
    for(i=0;i<9;i++)
    {
        box(bloques[i],0,0);
    }
    attron(COLOR_PAIR(1));
    bkgd(COLOR_PAIR(1));
    attroff(COLOR_PAIR(1));
    wattron(mapa,COLOR_PAIR(2));
    wbkgd(mapa,COLOR_PAIR(2));
    wattroff(mapa,COLOR_PAIR(2));
    wattron(dialogo,COLOR_PAIR(3));
    wbkgd(dialogo,COLOR_PAIR(3));
    wattroff(dialogo,COLOR_PAIR(3));
    wattron(inventario,COLOR_PAIR(4));
    wbkgd(inventario,COLOR_PAIR(4));
    wattroff(inventario,COLOR_PAIR(4));
    box(mapa,0,0);
    box(dialogo,0,0);
    box(inventario,0,0);
    refresh();
    getch();
}

Pantalla::~Pantalla()
{
    delwin(mapa);
    delwin(dialogo);
    delwin(inventario);
    endwin();
}
2  Programación / Programación C/C++ / problemas con la instalacion de codeblock en: 21 Agosto 2021, 20:30 pm
hola el problema es simple, codeblock no encuentra ningun compilador, ya lo intente 10 veces y en 2 maquinas distintas, 1 con windows 7 profesional, y la otra con windows 7 starter. segui lo que dice en el enlace https://www.youtube.com/watch?v=GBoNm3LUovE
y nada, y ahora cuando arranca aparece un cuadro amarillo abajo a la derecha de la pantalla, alguien sabe como resolver esto
3  Programación / Programación C/C++ / error en tiempo de ejecucion en programa c++ en: 8 Agosto 2021, 01:37 am
hola, tengo este ligero problema con una clase que hize, en esta clase tengo un puntero apuntado a la zona de video en modo texto (0xB8000000h) pero cuando trato de leer o escribir en esa direccion me da un error en tiempo de ejecucion (SEGMENTATION FAULT) y hay unos numeros antes que siempre cambian, que sera lo que pasa, yo probe esto en windows y siempre andubo bien, pero aca falla.
Para mas datos estoy usando binicpup 64 bits y el compilador es codelite, y aca esta la clase

#ifndef PANTALLA_H
   #define PANTALLA_H
   #include <iostream>
   
   class PANTALLA
   {
      private:
         int X,Y;
         unsigned char *scr;

      public:
      
         // Constructor
      
         PANTALLA()
         {
            scr=(unsigned char *)0xb8000000;
            X=Y=0;   
            clear();
         }
      
         void clear(void)
         {
            for(int i=1;i<2000;i+=2)
               *(scr+i)=0;      // punto en donde falla sin esto corre bien         
         }
   };

#endif // PANTALLA_H

cualquier ayuda sera muy apreciada, gracias
4  Seguridad Informática / Criptografía / ayuda con un cifrado vernam en: 25 Agosto 2017, 21:10 pm
hola estoy tratando de hacer un cifrador vernam para lo que se me ocurrio utilizar la clave como semilla de un generador de numeros pseudo-aleatorios para cifrar el mensaje y hacerla lo suficientemente grande como para eludir al test de kasinsky, pero lei que los generadores que hay no son criptograficamente seguros, asi que improvise uno, pero no se que tan bueno es. Alguien sabra o podra hacerle los test para saber si es bueno o no, o explicarme como hacerlo?

el codigo basico del generador (no del cifrador) es este:

Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void main() {
char clave[30];
unsigned char *subc;
int i,j,n,k,l,m,salto;
long numero;
unsigned long long semilla;

printf("ingrese la clave\n");
gets(clave);

n=strlen(clave);

subc=malloc(n*n);

semilla ^= semilla;
l ^= l;

for(i=0;i<n;i++)
   semilla += (long long)clave[i];
   
semilla <<= 1;
semilla++;

for(m=0;m<n;m++) {
for(i=0;i<n;i++) {
for(j=0;j<clave[i];j++) {
semilla *= semilla;
semilla %= 2147483629;
semilla *= 16811;
semilla %= 2147483629;
}

numero = (long) semilla;
// printf("%12u   %08X\n",numero,numero);

salto ^= salto;
for(k=7;k>=0;k--) {
if(!clave[i]&1<<k)
    salto++;
subc[l] <<=1;
if(numero & 1<<(k+23-salto))
    subc[l]++;
}
l++;
}
}

printf("\n");

for(i=0;i<n;i++) {
   for(j=0;j<n;j++)
      printf("%4d\n",subc[i*n+j]);
   //printf("\n");
}

for(i=0;i<(n*n-1);i++)
subc[i] ^= subc[i+1];

for(i=0;i<(n*n-1);i++)
   printf("%4d\n",subc[i]);

for(i=0;i<(n*n-2);i++)
subc[i] ^= subc[i+1];

for(i=0;i<(n*n-2);i++)
   printf("%4d\n",subc[i]);

for(i=0;i<(n*n-3);i++)
subc[i] ^= subc[i+1];

for(i=0;i<(n*n-3);i++)
   printf("%4d\n",subc[i]);

free(subc);
}

esto es lo basico, solo saca por pantalla la secuencia generada.
5  Programación / Programación C/C++ / ayuda con un generador pseudo-aleatorio en: 25 Agosto 2017, 03:58 am
hola, estoy tratando da hacer un cifrador tipo vernam pero en lugar de una clave corta, esta la uso como semilla de un generador pseudo-aleatorio que improvise, este usa un generador congruencial lineal multiplicativo como el que usa mathlab pero con valores ligeramente distintos y una forma de seleccion de bits de ese numero para generar el numero final ( 8 bits) luego uso un xor entre los numeros generados para generar otra secuencia n-1 mas chica, mi problema es que no se si los numeros son lo suficientemente aleatorios y fuertes como para ser usados en el cifrado, alguien puede o sabe hacer las pruebas necesarias?

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. void main() {
  6. char clave[30]="";
  7. unsigned char *subc;
  8. int i,j,n,k,l,m,salto;
  9. long numero;
  10. unsigned long long semilla;
  11.  
  12. printf("ingrese la clave\n");
  13. gets(clave);
  14.  
  15. n=strlen(clave);
  16.  
  17. subc=malloc(n*n);
  18.  
  19. semilla ^= semilla;
  20. l ^= l;
  21.  
  22. for(i=0;i<n;i++)
  23.   semilla += (long long)clave[i];
  24.  
  25. semilla <<= 1;
  26. semilla++;
  27.  
  28. for(m=0;m<n;m++) {
  29. for(i=0;i<n;i++) {
  30. for(j=0;j<clave[i];j++) {
  31. semilla *= semilla;
  32. semilla %= 2147483629;
  33. semilla *= 16811;
  34. semilla %= 2147483629;
  35. }
  36.  
  37. numero = (long) semilla;
  38. // printf("%12u   %08X\n",numero,numero);
  39.  
  40. salto ^= salto;
  41. for(k=7;k>=0;k--) {
  42. if(!clave[i]&1<<k)
  43.   salto++;
  44. subc[l] <<=1;
  45. if(numero & 1<<(k+23-salto))
  46.   subc[l]++;
  47. }
  48. l++;
  49. }
  50. }
  51.  
  52. printf("\n");
  53.  
  54. for(i=0;i<n;i++) {
  55.   for(j=0;j<n;j++)
  56.      printf("%4d\n",subc[i*n+j]);
  57.   //printf("\n");
  58. }
  59.  
  60. for(i=0;i<(n*n-1);i++)
  61. subc[i] ^= subc[i+1];
  62.  
  63. for(i=0;i<(n*n-1);i++)
  64.   printf("%4d\n",subc[i]);
  65.  
  66. for(i=0;i<(n*n-2);i++)
  67. subc[i] ^= subc[i+1];
  68.  
  69. for(i=0;i<(n*n-2);i++)
  70.   printf("%4d\n",subc[i]);
  71.  
  72. for(i=0;i<(n*n-3);i++)
  73. subc[i] ^= subc[i+1];
  74.  
  75. for(i=0;i<(n*n-3);i++)
  76.   printf("%4d\n",subc[i]);
  77.  
  78. free(subc);
  79. }

esta es una version algo primitiva pero hace precisamente lo que dije
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines