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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Mensajes
Páginas: 1 ... 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 [377] 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 ... 432
3761  Foros Generales / Noticias / Re: Bienvenidos al futuro: Robot de seguridad se suicida en: 19 Julio 2017, 15:28 pm
Es poco mas o menos como si explota una bombona de propano y decimos que "se ha inmolado"
Bien podrían estar buscando con ello, que el seguro cubra los desperfectos, de una u otra manera, incluso por un 'daño psicológico por la tragedia de "un suicidio".'  :laugh: :laugh: :laugh:
3762  Programación / .NET (C#, VB.NET, ASP) / Re: Guardar informacion en una pila en: 19 Julio 2017, 15:12 pm
Claro...
1 - La lista es el objeto por excelencia para guardar cosas un poco inconexas entre sí, pero masnteniendo cierto orden y cuya cantidad se desconoce a priori y/o pueda necesitarse muchos añadidos y eliminados contínuos.
2 - La pila se elige, sólo cuando los datos a almacenar deban ser mantenidos en orden inverso a como se han metido... (LIFO: Last In, First Out; Ultimo en Entrar, Primero en Salir, como la pila de libros).
3 - Igualmente (a una pila) una cola, se elige cuando los datos a lamacenar deban ser mantenidos en el orden de llegada... (FIFO: First In, first Out; Primero en entrar, Primero en Salir, justo como la cola del cine).

Las pilas y las colas, pueden construirse con arrays y también con nodos, igual que una lista enlazada.
4 - El array frente a la Lista, tiene la ventaja de la velocidad de acceso a los ítems, que además es elegible en acceso aleatorio (a cualquiera con total independencia), la lista enlazada al igual que con llas pilas y colas, se accede a sus elementos de forma secuencial...
5 - También tienes los árboles como estructura compleja, estos serñán tu preferencia cuando los datos tengan o deban mantener entre sí cierta dependencia. Hay una gran variedad de árboles que cubren muchas posibilidades. Pero en un primer encuentro, basta mirar los árboles de forma genérica.

6 - Los grafos, son como árboles 'irregulares', y tiene su uso porque al igual que en la vida es corriente que no haya nada de forma regular, los grafos permiten cierta flexiblidad mayor que los árboles a cambio de una mayor complejidad (en la estructura finalmente formada, que puede ser más abstracta).

Finalmente cuando la elección de preferencia sea la lista, pero deba hacerse un uso intensivo de búsquedas, y sea preciso un acceso aleatorio, la estructura de preferencia será la tabla hash. Es una estructura más compleja, pero tiene la flexibilidad de la lista enlazada, con la casi velocidad del array, en búsqueda incluso gana.

Documéntate sobre estos diferentes objetos y aprende a determinar cuando usar uno u otro...
3763  Programación / Programación C/C++ / Re: Codigo para mover valores de posicion en: 19 Julio 2017, 04:27 am
Un modo correcto de trabajar con el cubo de Rubik, es considerarlo un plano... como cuando tomamos un papel para generar un cubo de una sola pieza. Esto es, una cruz...


   #
  ###
   #
   #


Cada cara dividida en seccciones de 3x3.
Ahora se puede tomar todo el pliego de papel (entero) dividido horizontalmente en 9 secciones (0,1,2 - 3,4,5 - 6,7,8) y verticalmente en 12 (A,B,C - D,E,F - G,H,I - J,K,L). Ya teneis un sistema dle cual partir... un array bidimensional de 9x12, en el que muchas casillas serán nulas (de entrada convendría darles valor -1 a todas y luego al generar un cubo al azar, vambiar el valor de cada casilla que admite un valor porque se 'registra' en el cubo).

Ahora colocad números en cada casilla del cubo de Rubik, transcribidlo al papel...
Luego girad una cara (podeis seguir la notación de caras, coronas, centros, diedros y triedros de la notación que os muestra Ivancea). Una vez hecho un movimiento, reflejad de nuevo su posición en el papel (el pliego en cruz y como han cambiado se sitio).
Ahora  a ese tipo de giro dadle un nombre o mejor una valor enumerado, entonces podeis crear igualmente todas las funciones de transición aplicables al cubo, y finalmente en una única función aunarlas todas, admitiendo como parámetros: el array de origen, el giro aplicado (el valor enumerado que corresponde a una función específica), y como salida modificar las casillas afectadas en el array, tal como se ha registrado en el pliego de papel.
Esto es supongaos que en el pliego de papel anotamos al inicio (con el cubo ordenado), que la casilla(4,A) tras x giro enumerado, adopta la posición final: Casiilla(8,E)

Pués esa función haría la rotación de esa corona (la superior),  y poniendo  de ejemplo la primera casilla, en la cruz sería:
Código:
Giro = ROTA_CORONA1_DERECHA 

Tmp = Casilla(3,A)
Casilla(3,A) = Casilla(8,D)
Casilla(8,D) = Casilla(5,I)
Casilla(5,I) = Casilla(0,F)
Casilla(0,F) = Tmp

/ falta rotar las dos casillas adyacentes a (3,A), es decir (4,A) y (5,A)
/ Y falta rotar también las 8 casillas de la cara superior (la # inferior de la cruz), que rota 90º.
/    La casilla central de esa cara (como en todas), jamás cambia. Solo cambian los 4 diedros y los 4 triedros)

Cuando se gire al revés, (a la izquierda, básicamente es recorrer el camino al revés...
Código:
/ Esto es, si antes habíamos hecho: 
Giro = ROTA_CORONA1_DERECHA
Tmp = A ; A = B ; B = C...
/ ahora haríamos:
giro = ROTA_CORONA1_IZQUIERDA
C = B ; B = A ; A = tmp

Y proceder así con cada uno de los disitntos giros (son pocos), otorgarle un valor enumerado e invocar a una función que examine el giro y reinvoque a la rutina concreta o bien resolverlo directamente con bloque switch/select case...


En fin, un poco de trabajo pero muy simple todo... no requiere funciones de transformación complejas...


p.d.: nota que cada cara en la cruz (cada #), es del mismo color, así las casillas: 3A, 4A y 5A son del mismo color (y las 6 bajos estas)... Si en el papel, pintas cada cara de un color, y luego en el otro lo pintas después de aplicar un giro, te sería de mucha utilidad, porque para pintarlo finalmente no necesitarás una función extra tal que pasándole una casilla (por ejemplo 3A), te devuelva el color que tiene, esto es... el valor de cada casilla en el array debería ser uno de los 6 colores... y no resulta preciso ninguna función adicional, solo recorrer el array si la casilla tiene un valor distinta de -1 pintarla con el color que representa el valor.

Puesto que el cubo de Rubik si se desarma se puede armar de forma distinta, que podrían hacer que los colores no coincidan, siempre se debe partir del cubo ordenado, y desordenarlo con funciones de giro al azar... (para entenderlo imagina el cubo sobre ekl papel, imagina que lo pintas todo bien excepto dos casillas, verías que si cambias el color de esas dos piezas, de modo que haya caras completas de color, y alguna incompleta, no tendría solución de colocarse sino hasta esa forma... es decir siempre habría dos casillas desordenadas al tratar de completar el cubo lo máximo posible...

ppp


#| 0,1,2 - 3,4,5 - 6,7,8
-|------------------------
A| -,-,- - 3,4,5 - -,-,-
B| -,-,- - 3,4,5 - -,-,-
C| -,-,- - 3,4,5 - -,-,-

D| 0,1,2 - 3,4,5 - 6,7,8
E| 0,1,2 - 3,4,5 - 6,7,8
F| 0,1,2 - 3,4,5 - 6,7,8

G| -,-,- - 3,4,5 - -,-,-
H| -,-,- - 3,4,5 - -,-,-
I| -,-,- - 3,4,5 - -,-,-

J| -,-,- - 3,4,5 - -,-,-
K| -,-,- - 3,4,5 - -,-,-
L| -,-,- - 3,4,5 - -,-,-
3764  Foros Generales / Noticias / Re: ¿Te vas de viaje y quieres estar conectado a internet? Contrata un wifi portátil en: 18 Julio 2017, 14:32 pm
Si te vas de vacaciones, precisamente tu mejor aliado 'informativo', va a resultar que es tu teléfono móvil.
Especialmente si al sitio donde vas de vacaciones se habla un idioma del que no sabes ni una palabra...

Google "Mapas", por ejemplo resulta muy útil. Poder ver las rutas para ir de un siito a otro sin la necesidad de preguntar y que te den rutas equivocadas, no tiene precio  :laugh: :laugh: :laugh:
3765  Foros Generales / Noticias / Re: Alexa estaría espiando a sus dueños en todo momento en: 18 Julio 2017, 06:20 am
Creo que va siendo hora de que las leyes (que tanto se están imponiendo para internet), debieran al mismo tiempo endurecerse y castigar severamente las prácticas de estas empresas. Multas gordas y cárcel...

No parece muy justo que algún post-adolescente se dedique a insultar por alguna red social a quien sea y la pidan multa o vaya a la cárcel (que al fin y al cabo son solo palabras), y que estas empresas (que cada vez son más), salgan impunes con solo una 'regañina', como si fueran niñitos de dos años...
3766  Foros Generales / Foro Libre / Re: Duda , Diccionarios wpa2 en: 18 Julio 2017, 06:13 am
Siendo claves hexadecimales, para un largo de 13 caracteres, este es el total de claves posibles: 665.416.609.183.179.841

El almacenamiento en disco, ocuparía 13 caracteres (bytes) por cada clave, luego multiplica el valor anterior por 13. Sería insensato guardarlo a fichero, si alguien quisiera hacerlo por fuerza bruta (pero con mente no bruta), no usaría un diccionario, las iria generando sobre la marcha.

Así que estate tranquilo, además si cambias la contraseña cada cierto tiempo, el supuesto cracker, posiblemente inutilizaría su intento, ya que quizás la nueva clave fuera una que ya hubiera probado con anterioridad (cuando la clave era otra).
Si se fuerza que sea obligatorio, cambiar la clave cada x tiempo, le estás enviando a un cracker el mensaje de que debe probar su 'diccionario' en ese lapso de tiempo, si no debería volver a empezar... y por tanto es más que probable que desista por desaliento.

Pero ojo, eso no quiere decir que sea imposible obtener tu clave, solo que el método antedicho es infructuoso ...casi siempre..., porque, no hay que olvidar las claves más usadas: 123456, etc...
3767  Foros Generales / Noticias / Re: ¿Es Linux suficiente argumento para que un portátil de un fabricante .... en: 18 Julio 2017, 05:58 am
Creo que la razón es bastante clara..

Para una empresa que empieza, poner un precio competitivo, exige ahorrar en costes en alguna parte. Metiendo Linux, ya tienen ese ahorro y el cliente un S.O. totalmente funcional.

No creo que haya que darle más vueltas. Linux sigue sin despegar después de más de 2 décadas...
Las interminables versiones... haciéndose la autocompetencia tampoco ayuda.
Y el exagerado abuso de las consolas (para adentrarte en todo), espanta al usuario que se considera torpe.
Yo mismo me cansé de tener que andar con comandos. Resulta cansino tener que aprenderse de memoria cada comando de cada programa, solo para ver que luego en la próxima versión hay más cambios y que de nuevo vas a tener que aprenderte más cosas de memoria (cosas que ya sabías).
La ventaja de la interfaz, es que no necesitas memorizar prácticamente nada, solo ir al menú, buscar opciones y recorrerlas todas para elegir las opciones de tu preferencia, y si la nueva versión tiene cambios, no tienes que lidiar con tu memoria y te importa un EGG, que hayan cambiado de nombre o el comando asignado, ...desde la interfaz simplemente sigues seleccionando lo que prefieras.
Y mientras los desarrolladores de Linux, no se metan esto en la cabeza seguirá siendo un S.O. minoritario y relegado (y es una lástima, porque potencial le sobra..).
3768  Foros Generales / Noticias / Re: Uno de los mejores reproductores multimedia, para muchos hasta mejor que VLC ... en: 18 Julio 2017, 05:47 am
Soy de ambos, aunque me decanto más por el VLC, del MPC, lo que siempre me gustó mucho es la posibilidad de expandir la imagen de vídeo incluso deformando la relación ancho/alto... y lo cómodo y fácil que resulta...
3769  Seguridad Informática / Seguridad / Re: Descifrar Hash en: 17 Julio 2017, 20:00 pm
Los hashes no se 'crackean'. Los hashes no son cifrados (aunque se puede cifrar como todo).

Un hash es tan solo unos datos que hacen referencia al objeto del que provienen como un método de verificar que porceden de él, mediante el uso de un método específico.

No es distinto de reconocer a una persona como legítima... imagina el siguiente ejemplo:
Trabajas en una tienda, una joyería por ejemplo, el jefe se ha ido y tu te quedas al cargo.
Entra un señor y dice que quiere vender su Rolex, que vale por lo menos 50.000 tu después de tratar con él lo rebajas a 25.000... cuando viene el jefe dice que es falso, y que por tanto no vale más de 25, 50, así que tras mirar los datos de compra, el tipo firmó como John Smith y que vive en La Luna... entonces os dais cuenta d ela estafa, se llama a la poli y te pide 'referencias' del tipo...
Este es el 'hash' que tu generas para ese tipo: estatura: 1'90 aprox. pelo canoso corto, delgado, con barba y gafas, zapatos rojos, traje a rallas, etc...

Esto es una representación (hasta cierto punto) fidedigna de ese tipo. en informática a esto se le llama HASH, y sirve para lo mismo, reconocer si un 'sujeto' (fichero en el ámbito informático), corresponde o no con dicho hash. es decir si el resumen que se hizo previo es idéntico al resumen que hagamos ahora mismo. Si es distinto, sabemos que no es el mismo, que como mínimo ha cambiado desde entonces...
Que coincida el hash, no asume con absoluta certeza que sea ese el fichero (a esto se llama colisión), lo mismo que cualquiera que encajara en esa descripción del sospechosos no tendría por que ser el 'timador' que busca la poli.

Entonces igual que una descripción de una persona es inútil para encontrar a la persona en sí ni mucho menos para conocer más datos d ela persona que los que recoge la descripción (exigiría compararlo con todas las personas (al menos de la localidad)), del mismo modo el hash no tiene capacidad para identificar de qué fichero procede ese hash, ni tampoco saber más detalles del fichero.

Un hash por ejemplo que aporta info adicional, es el ed2k (el hash que genera emule), que porta datos del tamaño del fichero... peor en general los hashes no aportan nada más que el 'resumen' que genera un método específico que es lo que da nombre al hash.

...aunque da igual, no pasa un mes sin que alguien haga la misma pregunta...
3770  Programación / .NET (C#, VB.NET, ASP) / Re: Guardar informacion en una pila en: 17 Julio 2017, 16:22 pm
Te pongo el pseudocódigo de lo que podría ser la estructura de una pila. Tu luego lo transformas a código NET, y después creas la interfaz para usarla...

Es mejor separar siempre que sea posible, el objeto que se crea de la operatoria que haga el cliente con ese objeto.

Entonces crea un nuevo proyecto, llámale  como quieras, luego añade una clase y llámala Pîla

Código:
clase pública Pila

    privado array entero ePila()  // los valores se alamcenarán aquí
    privado entero sCapacidad  // cantidad total de ítems que caben en la pila
    privado entero sItems   // cantidad de ítems que tiene la pila en un momento dado.

    Entero = publico Propiedad solo lectura Capacidad
        devolver sCapacidad  
    fin Propiedad

    Entero = publico Propiedad solo lectura Items
        Devolver sItems
    Fin Propiedad

    Buleano = publico Funcion EstaVacia
        Devolver (sItems=0)     // Si sItems es 0, la pila está vacía.
    Fin funcion

    Buleano = publico Funcion EstaLlena
        Devolver (sItems = sCapacidad)  // Si el valor de lo que contiene es igual a la capacidad, la pila está llena.
    Fin Funcion

    // Constructor de la clase, exige una cantidad para limitar la Pila.
    publico Funcion Nuevo(entero Cantidad)
       Si (cantidad > 0) luego
           Redimensionar array sPila(0 a Cantidad-1)
           sCapacidad = Cantidad
           sItems = 0
       Si no
           Generar ERROR "La cantidad de elementos en la Pila no puede ser 0 (ni un valor negativo)"
        Fin si
    Fin Funcion

    Buleano = Publico Funcion Meter(entero Valor)
        Si (EstaLlena = FALSE) entonces // invocamos un método de la propia clase
            ePila(sItems) = Valor
            sItems += 1  
            Devolver TRUE  
        Si no
            Generar ERROR " La pila está llena. Imposible añadir más elementos."
            Devolver FALSE
        Fin si
    Fin Funcion

    entero = publico Funcion Sacar // no lleva parámetros, la pila siempre saca elementos de la cima.
        Si (EstaVacia = FALSE) luego            
            sItems -=1    // simplemente se baja el puntero, no es preciso eliminar nada (salvo que se guardaren referencias de objetos).
            Devolver ePila(sItems)
        Si no
            Generar ERROR "La pila está vacía. no contiene elementos para extraer.
            Devolver 0
        Fin Si
    Fin funcion

    privada Funcion Destruir // el desctructor de la clase.
        Vaciar  
    Fin funcion

    privada Funcion Vaciar  //si esta función se hace pública necesitaría otra pareja llamada NuevaCapacidad(Cantidad) que haga lo mismo que hace el constructor... si no quedaría vacía y sin posibilidad de ser populada...
        sCapacidad=0
        sItems = 0
        Borrar array ePila
    Fin Funcion

    
Fin Clase

Éste pseudocódigo es un sencillo código pero completo para una pila. Incluso contiene dos métodos para consultar el estado de la pila (estaLlena y EstaVacia), que no son imprescindibles, pero internamente las vamos a usar, así que por que no hacerlos públicos...

Cómo usarla ?:
La pila es limitada, al valor que se le indica cuando se contruye una instancia de la clase. Es decir, tú puedes hacer uso de la pila por ejemplo desde una ventana o desde otra clase, lo mejor para probarlo es crear unos botones en un formulario y unas cajas de texto, los botones podrían ser 'crear()', Meter(), Sacar:  (los paréntesis en Crear y Meter, indican que requieren un parámetro que podría tomarlo de una caja de texto asociado a dicho botón.

Crear una instancia de la pil:
Código:
Pila p = Nueva Pila(25) //y creas una instancia de la Pila en p, que puede contener hasta 25 elementos.

Esta pila tiene varias limitaciones, no solo la cantidad de elemntos que puede contener (las pilas en general se diseñan para contener pequeñas cantidades, no cientos de millones, rara vez se necesitará un pila muy grande, un ejemplo de esas excepciones son precisamente los programas compiladores.
Bueno, otra limitación de esta pila es que la hemos limitado al tipo de datos entero. como es un proyecto de prueba, es suficiente, pero podrías hacerla de cualquier tipo incluso para admitir cualquier tipo...

Una Pila, es una estructura para guardar elementos y luego obtenerlos en orden inverso a como se metieron, es decir, la forma lógica de verlo, es imaginandose poner un libro en el suelo y lueo otro encima y luego otro y luego otro... esto es: "apilar libros"... directamente solo puedes coger el último, el que está arriba en  la cima, para coger otro más abajo, debes primero retirar los que tienes encima. Las pilas, por esto mismo se usan en casos donde se requiere precisamente mantener ese orden (inverso al que se ha metido).

Apilar datos:
Código:
p.Meter(12)
p.Meter(567)
entero n= -1234
p.Meter(n)
p.Meter(-44)

Probar los métodos y propiedades:
Código:
Mensaje p.Capacidad
Mensaje p.Items
Mensaje p.EstaLlena
Mensaje p.EstaVacia

Retirar datos:
Código:
entero n = p.Sacar
mensaje n  // el último valor metido fue -44, luego este es el primer valor sacado.
n = p.Sacar // se obtiene -1234, que fue el penúltimo metido.

Mensaje p.Items

etc....

Si tienes alguna duda, pregunta...

p.d.: no te conformes con ejecutar el proyecto a "saco" (F5, run), si no paso a paso (F11, debug... no recuerdo si en C# es también esa tecla F11 )
Páginas: 1 ... 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 [377] 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 ... 432
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines