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

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Mensajes
Páginas: [1] 2
1  Comunicaciones / Redes / Re: Apertura de Puertos para un Servidor en: 17 Julio 2019, 09:33 am
Me da a mi que el UPnP te está cambiando los puertos del router. O ya te creo un puerto y al hacer tu el perfil en el mismo puerto te abre el siguiente.
Desactiva el Universal Plug and Play, que lo único que hace es hacer la redirección por ti y es un protocolo inseguro que permite a culquier equipo público abrir y cerrar puertos a su antojo sin la necesidad de ningún tipo de authentificacion.

Efectivamente debes crear una regla para abrir ambos puertos. El interno que debe redireccionarse a la ip local de tu servidor de Minecraft y el Puerto externo que será el que pongan tus amigos para que el router sepa si quieren una web, acceder al servidor de Minecraft o subir un archivo.

Recuerda usar un servicio de DDNS para tener una ip fija asociada a tu ip dinámica. En el caso de no utilizarlo, tu ip cambiará al rato o cuando dejes de usar internet o apagues el router durante un máximo de 15 segundos(en el caso de los modelos que ha estado proporcionando Movistar durante los últimos 3 años).

Aplicación/Servicio puedes poner lo que quieras para identificar la regla creada. Básicamente es para que tengas todo organizado por si no te acuerdas que puerto usaba cada servicio. No te recomiendo ponernexactmente lo que es por seguridad. Aunque si lo pueden ver ya están en tu red local. Pero es buen hábito para mantener seguras aplicaciones que están protegidas contra ataques en redes locales.

Si vas a compartir tu ip por internet aunque te fies al 100% de tus amigos o seas tu mismo el que te conectas desde otro pc, te recomiendo extremar las precauciones.

Yo metería un servidor VPN de por medio, montaría el servidor de minecraft en mineOS como máquina virtual de virtualbox y una vez que funcione guarda una imagen del estado de la máquina por si te lo hackean o te lo crashean, o te joden los edificios, poder cargar la imagen fácilmente. Seguro y útil. ;)
También activaría firewall en el router y equipos en la red, desactivaría UPnP, cambiaría todas las password, y poco más necesitas para lo que vas a montar.

Si no quieres usar virtualbox y tienes conocimientos de redes, al menos monta un dmz para el servidor con un firewall bien configurado.

No es tan raro que uno de tus descuidados amigos pudiesen estar infectados y que el atacante observase que se conectan a tu servidor. Y un servidor de amigos de Minecraft es un caramelito para que un hacker se aproveche del UPnP y en 5 minutos tu red local se convierta en el proxy personal del hacker.

Si no se te arregla el problema de la redirección de puertos al desactivar el UPnP, resetea el router por si creó reglas en la configuración avanzada que no puedes manejar desde la configuración básica del router que posiblemente estés usando, (depende de cada router) y pon el puerto a mano.
Recuerda de cambiar todas las contraseñas tras resetear el router, configurar firewall, etc.

Desactiva el wps en el router si lo tienes. Activa filtrado de ip(importante) y MAC.
Recuerda actualizar frecuentemente TODO.

Si quieres más consejos de seguridad para el servidor y la red, dímelo, pero los hackers suelen buscar caramelitos sin configurar. Al ver que tienes una seguridad normalita el 99% de "hackers" pasarán de largo al no ser un target sencillo/gratis y no ser de gran interés.

Cuida también la seguridad de tu PC y todos los equipos que conectes a la red para que el vecino no te vea haciendo cosas guarras en la webcam jajajaja.

Un salido.  :-X

Okay, probaré a desactivar el UPnP y intentaré mantener un mínimo de seguridad para evitar el tema de los hackeos.

Y respecto a lo de la IP, ya me he encargado de no tenerla dinámica.

Muchas gracias por los consejos!
2  Comunicaciones / Redes / Re: Apertura de Puertos para un Servidor en: 17 Julio 2019, 09:30 am
port forwarding alias, redireccion de puertos y ya, que router usas a ver si encuentro un emulador.

Utilizo Livebox Fibra de Orange
3  Comunicaciones / Redes / Re: Apertura de Puertos para un Servidor en: 16 Julio 2019, 15:13 pm
Si, así es.
Yo me encargo del host del server y mis amigos se conectan a el.
4  Comunicaciones / Redes / Apertura de Puertos para un Servidor en: 16 Julio 2019, 12:58 pm
Hola, estoy buscando a alguien que me pueda ayudar en la apertura de puertos para un servidor, específicamente para un servidor de Minecraft.

 

El problema viene cuando no me deja poner el mismo puerto interno que externo(25565), me cambia el numero del puerto externo automáticamente. :-\

Tampoco tengo muy claro que hay que poner exactamente en "Aplicación/Servicio".

Tengo el UPnP activado.

 



Estaría muy agradecido de escuchar los consejos de alguien que entienda de este tema.

Gracias!

PD: Si a día de hoy sigo con el Minecraft xD

5  Programación / Programación C/C++ / No entiendo estos errores!! (SOLUCIONADO) en: 26 Diciembre 2018, 18:55 pm
Hola, estaba intentando realizar un programa que leyese de teclado libros, y los guardase en un vector, para después comparar unas fechas y sacar el dinero gastado en libros un día.

El programa es el siguiente:

Código
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. const int MAX = 20;
  7.  
  8. struct FechaAdquisicion
  9. {
  10.    short dia, mes, anyo;
  11. };
  12.  
  13. struct Libro
  14. {
  15.    string nom, autor;
  16.    float precio;
  17.    FechaAdquisicion fecha;
  18. };
  19.  
  20. typedef Libro Vlibros[MAX];
  21.  
  22. struct Libros
  23. {
  24.    Vlibros libros;
  25.    int totalibs;
  26. };
  27.  
  28. void Presentacion(void);
  29. Libro LeerLibros(void);
  30. FechaAdquisicion PedirFecha(void);
  31. void MostrarLibrosFecha(Libros libros, FechaAdquisicion fecha);
  32. float PrecioLibros(Libros libros, FechaAdquisicion fecha);
  33.  
  34. int main (void)
  35. {
  36.    Libros libros;
  37.    FechaAdquisicion fecha;
  38.  
  39.    libros = LeerLibros();
  40.    fecha = PedirFecha();
  41.    MostrarLibrosFecha(libros, fecha);
  42.  
  43.    cout << "El precio de los libros comprados desde esa fecha hasta la actualizada es de " << PrecioLibros(libros, fecha) << " euros." << endl;
  44.  
  45.    return 0;
  46. }
  47.  
  48.  
  49. void Presentacion(void)
  50. {
  51.    cout << "Este programa pide libros al usuario y una fecha, para posteriormente mostrar los libros comprados \n  y el dinero gastado en ese dia." << endl << endl;
  52.    return;
  53. }
  54.  
  55. Libro LeerLibros(void)
  56. {
  57.    Libros l;
  58.  
  59.    cout << "¿Cuantos libros quieres añadir?: ";
  60.    cin >> l.totalibs;
  61.  
  62.    for(int i = 0; i <= l.totalibs; i++)
  63.    {
  64.    cout << "Introduce nombre del libro: ";
  65.    cin >> l.libros[i].nom;
  66.    cout << "Introduce nombre del autor: ";
  67.    cin >> l.libros[i].autor;
  68.    cout << "Introduce precio del libro(€): ";
  69.    cin >> l.libros[i].precio;
  70.    cout << "Introduce la fecha de compra del libro: "<< endl;
  71.    cout << "\t Dia: ";
  72.    cin >> l.libros[i].fecha.dia;
  73.    cout << "\t Mes: ";
  74.    cin >> l.libros[i].fecha.mes;
  75.    cout << "\t Anyo: ";
  76.    cin >> l.libros[i].fecha.anyo;
  77.    }
  78.  
  79.    return l;
  80. }
  81.  
  82. FechaAdquisicion PedirFecha(void)
  83. {
  84.    FechaAdquisicion fecha;
  85.  
  86.    cout << "Dame fecha: ";
  87.    cin >> fecha.dia >> fecha.mes >> fecha.anyo;
  88.  
  89.    return fecha;  
  90. }
  91.  
  92. void MostrarLibrosFecha(Libros libros, FechaAdquisicion fecha)
  93. {
  94.    for(int i = 0; i <= libros.totalibs; i++)
  95.    {
  96.        if(fecha.dia == libros.libros[i].fecha.dia && fecha.mes == libros.libros[i].fecha.mes && fecha.anyo == libros.libros[i].fecha.anyo)
  97.        {
  98.           cout << libros.libros[i].nom << endl;
  99.           cout << libros.libros[i].autor << endl;
  100.           cout << libros.libros[i].precio << endl;
  101.           cout << libros.libros[i].fecha.dia << "/" << libros.libros[i].fecha.mes << "/" << libros.libros[i].fecha.anyo << endl << endl;
  102.        }
  103.    }
  104.  
  105.    return;
  106. }
  107.  
  108. float PrecioLibros(Libros libros, FechaAdquisicion fecha)
  109. {
  110.    int preciototal = 0;
  111.  
  112.    for(int i = 0; i <= libros.totalibs; i++)
  113.    {
  114.        if(fecha.dia == libros.libros[i].fecha.dia && fecha.mes == libros.libros[i].fecha.mes && fecha.anyo == libros.libros[i].fecha.anyo)
  115.        {
  116.            preciototal = preciototal + libros.libros[i].precio;
  117.        }
  118.    }
  119.  
  120.    return;
  121. }
  122.  


Los errores son del tipo:
int main:
[Error] no match for 'operator=' (operand types are 'Libros' and 'Libro')

LeerLibros:
[Error] request for member 'libros' in 'l.Libros::libros', which is of non-class type 'Vlibros {aka Libro [20]}'
[Error] could not convert 'l' from 'Libros' to 'Libro'


¿Alguien sabe algo, o me podrían ayudar a acabar el programa?
Gracias.

P.D:Los fallos no son de escritura, se ve raro debido al foro.
6  Programación / Programación C/C++ / Ayúdame en este programa!! en: 22 Diciembre 2018, 17:12 pm
Hola, soy bastante novato con el tema del C++, sobre todo a la hora de mezclar ficheros con funciones....

Me gustaría hacer un programa que leyese de fichero una matriz cuadrada, primero el numero de filas, seguido del numero de columnas, y para finalizar que recorra toda la matriz y diga si hay algún elemento repetido.

Mi intento de programa es el siguiente:


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

const int MAX1 = 10;
const int MAX2 = 10;

typedef int Matriz[MAX1][MAX2];

void Presentacion(void);
bool LeerFilyCol(ifstream& f);
int SacarFilyCol(ifstream& f);
int ElementosVector(ifstream& f);
void GuardarVector(ifstream& f, int totalnums, Matriz m);
bool ElemRepVec(Matriz m, int totalnums);

int main(void)
{
    bool FilyCol, Rep;
    int totalnums, filcol;
    Matriz m1;
    ifstream f;
    string nomf;
   
    Presentacion();
   
    cout << "Dame fichero con matriz: ";
    cin >> nomf;
    cout << endl;
   
    f.open(nomf);
   
    if(!f)
        cout << "Error al abrir el archivo" << endl;
    else
    {
        FilyCol = LeerFilyCol(f);
 
        if(FilyCol == false)
        {
            cout << "La matriz no cumple las condiciones" << endl;   
        }
        else
        {
            totalnums = ElementosVector(f);
            filcol = SacarFilyCol(f);
           
            totalnums = totalnums / filcol;
           
            GuardarVector(f, totalnums, m1);
            ElemRepVec(m1, totalnums);
       
            if(Rep == false)
                cout << "NO hay numeros repetidos en la matriz" << endl;
            if(Rep == true)
                cout << "Hay numeros repetidos en la matriz" << endl;
        }
    }
   
    f.close();
    return 0;
}



void Presentacion(void)
{
    cout << "Este programa determina si existe...." << endl << endl;
    return;
}

bool LeerFilyCol(ifstream& f)
{
    bool trueofalse;
    int fil, col;
   
    f >> fil >> col;
    if (fil != col || fil > MAX1 || col > MAX2)
        trueofalse = false;
    else
        trueofalse = true;
   
    return trueofalse;
}

int ElementosVector(ifstream& f)
{
    int num;
    int numdenums = 0;
    int ignorar;
   
    f >> ignorar >> ignorar;
   
    while(f >> num)
        numdenums++;
       
    return numdenums;
}

int SacarFilyCol(ifstream& f)
{
    int filcol;
   
    f >> filcol;
   
    return filcol;
}

void GuardarVector(ifstream& f, int totalnums, Matriz m)
{
    int num, i, j, ignorar;
   
    f >> ignorar >> ignorar;
   
    for (i = 0; i < totalnums; i++)
    {
        for (j = 0; j < totalnums; j++)
        {
            f >> num;
            m[j] = num;
        }
    }
    return;
}

bool ElemRepVec(Matriz m, int totalnums)
{
    int i, j, f, c;
    bool rep = false;
   
    for (f = 0; f < totalnums; f++)
    {
        for (c = 0; c < totalnums; c++)
        {
            for (i = 0; i < totalnums; i++)
            {
                for (j = 0; j < totalnums; j++)
                {
                    if (m[f][c] == m[j] && (f != i) && (c != j))
                        rep = true;
                }
            }     
        }
    }
   
    return rep;
}

El programa compila y ejecuta perfectamente, pero no hace lo que debería de hacer, alguien sabe como solucionarlo?
7  Programación / Programación C/C++ / Re: Mi programa no responde! en: 22 Diciembre 2018, 14:06 pm
El código entre etiquetas de código GeSHi porque cuando usas la i como índice entre corchetes se convierte todo el mensaje de ahí en adelante en cursiva y la i y los corchetes no se ven y no se puede corregir bien el código.

En la función <generarVector()> estás usando asignaciones (un igual "=") donde deberías estar usando comparaciones (dos iguales "=="). No he mirado todo el código en profundidad pero la idea para generar un vector sin valores repetidos es:
- Opción 1
Generas un número aleatorio, recorres los valores que ya has introducido en el vector y si ninguno es igual al nuevo valor generado, lo introduces en el vector, si ya está repetido, generas otro número.
- Opción 2
Vas ordenando cada nuevo valor que introduces y así no tienes que compararlo con todo el vector que ya tienes generado.
PD: Las funciones de tipo <void> no hace falta que le pongas <return>, es raro verlo. Suerte :-X


Vale, el problema era añadir un = mas en el segundo do de la función GenerarVector.
Muchas gracias!
8  Programación / Programación C/C++ / Mi programa no responde! (SOLUCIONADO) en: 22 Diciembre 2018, 13:19 pm
Hola, me gustaría realizar un programa que crease un vector hasta cierto 'num', y los números que lo componen están entre 0 y num - 1. Ademas no ha de repetirse ningún numero dentro del vector.

Mi intento de este programa es el siguiente:

#include <iostream>
#include <cstdlib>
#include <time.h>

using namespace std;

const int MAX = 80;
typedef int Vector[MAX];

void GenerarVector(Vector v, int num);
void MostrarVector(const Vector v, int num);

int main (void)
{
    Vector v;
    int num;
    
    Presentacion();
    
    cout << "Dame numero de elementos del vector: ";
    cin >> num;
    cout << endl;
    
    if(num < 0)
        cout << "El numero no es positivo, no se puede generar el vector";
    else
    {
        GenerarVector (v, num);
        
        cout << "El vector generado es: ";
        MostrarVector (v, num);
    }

    return 0;
}


void Presentacion(void)
{
    cout << "Este programa genera vector de una cantidad de numeros que el usuario "
    cout << "indique, comprendidos  entre 0 y el numero indicado, sin repetirse ningún"
    cout << " numero a lo largo del vector" << endl << endl;
    
    return;
}

void GenerarVector(Vector v, int num)
{
    int numvec;
    bool numrep = false;
    int i = 0;
    int j = 0;
    
    srand(time(NULL));
    
    do
    {
        numvec = rand() % num;
        
        do
        {
            if(numvec = v[j])
                numrep = true;
            else
                numrep = false;
            j++;
        }
        while(j <= i && numrep == false);
        
        j = 0;
        
        if(numrep == false)
        {
            v = numvec;
            i++;
        }    
    }
    while(i < num);
    
    return;
}


void MostrarVector(const Vector v, int num)
{
    int contador = 0;
    int i = 0;
    
    while(contador < num)
    {
        cout << v << " ";
        i++;
        contador++;
    }
    
    return;
}



No informa de ningún error pero al ejecutarse se queda congelado. ¿Alguien sabe cual es el problema?
Me imagino que sera por la función 'GenerarVector'.

Gracias.
9  Programación / Programación C/C++ / Re: Error en compilación! en: 8 Diciembre 2018, 14:49 pm
Hola, pruebalo asi:

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.    int factor1, factor2, prod, res;
  8.    int a,b,c,d;
  9.  
  10.    cout << "Dime primer factor: ";
  11.    cin >> factor1;
  12.    cout << "Dime segundo factor: ";
  13.    cin >> factor2;
  14.    cout << "Dime tu propuesta de resultado: ";
  15.    cin >> res;
  16.  
  17.    prod = factor1 * factor2;
  18.    a = factor1 % 9;
  19.    c = factor2 % 9;
  20.    d = (a * c) % 9;
  21.    b = res % 9;
  22.  
  23.  
  24.  
  25.    cout << "La 'raiz digital' de " << factor1 << " es: " << a << endl;
  26.    cout << "La 'raiz digital' de " << factor2 << " es: " << c << endl;
  27.    cout << "La 'raiz digital' del producto (" << prod << ") es: " << prod % 9 << endl;
  28.    cout << "La 'raiz digital' de tu propuesta de resultado es: " << b <<endl<< endl;
  29.  
  30.    if(b == d)
  31.        cout << "La multiplicación, probablemente, este BIEN." << endl;
  32.    else
  33.        cout << "La multiplicación esta MAL.";
  34.  
  35.    return 0;
  36. }
  37.  


Si que funciona así, pero la idea era hacerlo con recursividad :rolleyes:
10  Programación / Programación C/C++ / Error en compilación! en: 8 Diciembre 2018, 13:35 pm
Hola, estaba creando un programa que realizase la prueba del 9 en una multiplicación.
Al compilar me saca este error:

b6_4_raizdigital.cpp:(.text+0x147): undefined reference to `SumaCifrasNumero(int, int)'

[Error] ld returned 1 exit status

No especifica ninguna linea en ninguno de los 2. El programa es el siguiente:




#include <iostream>

using namespace std;

int SumaCifrasNumero(int a, int suma);
int NumeroMayor9(int a, int b);

int main()
{
    int factor1, factor2, prod, res, rdf1, rdf2, rdprod, rdres, suma = 0, sumfinal = 0;
   
    cout << "Dime primer factor: ";
    cin >> factor1;
    cout << "Dime segundo factor: ";
    cin >> factor2;
    cout << "Dime tu propuesta de resultado: ";
    cin >> res;
   
    prod = factor1 * factor2;
   
    rdf1 = SumaCifrasNumero(factor1, suma);
    if(rdf1 >= 10)
        rdf1 = NumeroMayor9(rdf1, sumfinal);
    else if(rdf1 == 9)
        rdf1 = 0;
   
    rdf2 = SumaCifrasNumero(factor2, suma);
    if(rdf2 >= 10)
        rdf2 = NumeroMayor9(rdf2, sumfinal);
    else if(rdf2 == 9)
        rdf2 = 0;
       
    rdprod = SumaCifrasNumero(prod, suma);
    if(rdprod >= 10)
        rdprod = NumeroMayor9(rdprod, sumfinal);
    else if(rdprod == 9)
        rdprod = 0;
   
    rdres = SumaCifrasNumero(res, suma);
    if(rdres >= 10)
        rdres = NumeroMayor9(rdres, sumfinal);
    else if(rdres == 9)
        rdres = 0;
   
    cout << "La 'raiz digital' de " << factor1 << " es: " << rdf1 << endl;
    cout << "La 'raiz digital' de " << factor2 << " es: " << rdf2 << endl;
    cout << "La 'raiz digital' del producto (" << prod << ") es: " << rdprod << endl;
    cout << "La 'raiz digital' de tu propuesta de resultado es: " << rdres <<endl<< endl;
   
    if(rdprod == rdres)
        cout << "La multiplicación, probablemente, este BIEN." << endl;
    else
        cout << "La multiplicación esta MAL.";
   
    return 0;
}


int SumarCifrasNumero(int a, int suma)
{
    int num;
   
    num = a % 10;
    suma = suma + num;
   
    if (a > 0)
        suma = SumarCifrasNumero(a, suma);
   
    return suma;
}

int NumeroMayor9(int a, int b)
{
    int sumfinal;
   
    if(a >= 0)
        sumfinal = SumarCifrasNumero(a, b);
       
    return sumfinal;
}


¿Alguien sabe algo acerca de estos errores?
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines