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


 


Tema destacado: Votaciones, mejor proyecto de Abril Negro 2017!


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ... 49
151  Seguridad Informática / Hacking Avanzado / Re: duda urgente: es posible que una persona haya accedido a mis dispositivos en: 23 Mayo 2017, 23:17
...Aclaro que yo no he recibido en ningún momento archivos maliciosos ni nada por el estilo...
Eso mismo diría el 90% de la gente que tienen un troyano en su equipo.
Una cosa es que tú no hayas advertido nada y otra muy distinta es que no se haya recibido nada.

...de todos modos, si sopsechas, te pregunto, ¿en qué basas la sospecha?... porque dar una cifra de 25km... es poco menos que decir 'sospecho de alguien (que vive a unos 25km.)'.

Piuensa además, que puedes tener un troyano durmiente, y que tras cierto período se activa, así que eso de no sospechar porque no has descargado algo, no sirve de mucho. Una forma de ocultarse cuando algo es exageramente visible, es precisamente hacerlo delante de alguien y dejarlo ahí durmiente 2-3 meses... el troyano, solo envía una notificación cada x días a modo de decir: 'estoy aquí, vivito, y coleando, a la espera', de repente recibe una señal de activación 8o bien programado para tal o cual fecha, o tras x tiempo de la infección, y se activa... así que qien piense que un troyano, se pone como loco a trabajar, nada más entrar por la puerta, no entiende mucho de hasta donde se puede ocultar algo.
152  Programación / ASM / Re: Funcion equivalente en C en: 23 Mayo 2017, 21:59
RGB To Gray es una función que convierte un byte (o un array de bytes procedente de una imagen), a gris...

el gris, como sabrás tiene un solo canal (8bits), pero si se amplía a 3 canales (24 bits), lo que se hace es repetir ese valor en los 3 canales.

Sea el color hexadecimal: FF54AB. Bueno, pués lo primero es decomponer el valor de 32 bits en los 3 canales sueltos, para tener los valores individuales de cada canal:

Código:
Valor = Valor and 16777215 // borramso un posible valor sobre el canal alfa.
Rojo= (Valor and 255)
Verde = ((Valor\256) and 255)
Azul = ((Valor\65536) )
Ya tenemos cada valor de canal suelto, ahora podemos recurrir a dos modos, el más rápido es sumar y dividir entre 3, es decir concedemos la misma importancia a cada canal (esto es más rápido pero puede no ser muy preciso)

Código:
Gris = ((rojo + verde + azul) \3)
//             azul                verde       rojo
Valor = ((Gris * 65536) or (Gris * 256) or Gris)

Puedes usar la fórmula más lenta de usar parcialmente cada valor en partes no iguales (LUMA):
Código:

Gris = ((Azul * 0.11) + (Verde * 0.59) + (Rojo * 0.3)) //  0'11+0'59+0'3=1'00
//             azul                verde       rojo
Valor = ((Gris * 65536) or (Gris * 256) or Gris)

Entonces la función pelada, queda así:
Código:
Funcion RGBaGrisLUMA(valor)
    Rojo= (Valor and 255)
    Verde = ((Valor\256) and 255)
    Azul = ((Valor\65536) and 255) // borramos un posible valor sobre el canal alfa.

    Gris = ((Azul * 0.11) + (Verde * 0.59) + (Rojo * 0.3))
    Valor = ((Gris * 65536) or (Gris * 256) or Gris)
Fin Funcion

// La versión rápida: Prueba ambas, a veces no se nota demasiada diferencia de calidad.
Código:
Funcion RGBaGris(valor)
    Rojo= (Valor and 255)
    Verde = ((Valor\256) and 255)
    Azul = ((Valor\65536) and 255) // borramos un posible valor sobre el canal alfa.

    Gris = ((Azul + Verde + Rojo) \ 3)
    Valor = ((Gris * 65536) or (Gris * 256) or Gris)
Fin Funcion

Se admiten ligeras variaciaciones sobre los coeficientes de LUMA, pero lo que no varía es que la suma de los 3 deber ser siempre igual a 1.

NOTA: Si se hacen desplazamientos, en vez de divisiones y multiplicaciones ( >>, <<), las operaciones serán mucho más rápido.
153  Programación / .NET / Re: Problema con un string en: 23 Mayo 2017, 18:13
Quería decir que te asegures que tiene contenido, que no ha quedado desierto. Si es un vector, que su contenido tiene al menos un índice, etc...

Como se puede saber cual es el contenido de cada variable con Visual Studio?
Cuando ejecutas el código en vez de ejecutarlo con F5, lo ejecutas con F11 (paso a paso)... para no extenderme:
https://msdn.microsoft.com/es-es/library/y740d9d3.aspx


El ejecutarlo paso a paso funciona tambien con los formularios? O se para cuando se termina de cargar los controles?
Sí... Hay una carga inicial, donde se ejecuta sin pararse, típicamente si lo has puesto en modo Release, o Debug, antes lo compilará, por si hay errores que impidan la ejecución, luego irá al punto de entrada del proyecto y ahí, se para la ejecución. en un formulario, por ejemplo si no hay código en el LOAD, entonces saltará toda la interfaz de golpe (porque no hay código (del usuario) antes, donde pueda pararse, en ese caso, se parará cuando pulses algo de la interfaz (teclado, ratón, etc...)... por ejemplo en un botón (si tiene código asociado tal botón, claro). Incluso si tienes código asociado un evento MOUSEMOVE de un control o un evento Resize del formulario y tu estás cambiando el tamaño, salta a dicho evento y ahí para..
Con cada pulsación de la tecla F11, ejecuta una línea de código (en realidad una sentencia, ya que la misma puede estar partida en varias líneas (o como en el caso de VB, haber varias en una sola línea separadas por ':'.

Una vez que el depurador está parado en un punto, puedes seleccionar una variable (del tipo que sea, incluso un objeto o un array), y dejando un tiempito el cursor sobre la selección, muestra un iconito para desplegar y ver propiedades y valores. También pinchando con el otro botón del ratón, emerge un menú con opciones puedes desde ir a la definición de dicha variable, hasta pedirle que muestre el valor actual, o pedirle que quieres hacer un punto de interrupción de esa variable cuando se cumpla tal condición (abriría una ventana para indicar la condición, por ejemplo: V = 25, ó V = K, etc...)

...pero esto no es nuevo, esto viene de lejos, ni siquiera de Visual Studio 6.0, esto viene de los años 80... cuando Visual Studio ni siquiera estaba en la mente de nadie, cuando aún se tiraba de por ejemplo QuickBasic... y no ha cambiado significativamente, desde entonces... es mucho más completo, pero en esencia sigue siendo casi igual.

Un punto de interrupción incondicional se establece sobre una línea, del siguiente modo: lleva el cursor a la línea deseada, pulsa la tecla F9, verás que cambia el color de la línea que queda resaltada y a su derecha un puntito, marca lo que es (un punto de interrupción), pulsando en dicho punto, tiene el mismo objeto, quitar/poner el punto de interrupción. Estos puntos de interrupción son adecuados cuando no quieres estar paso a paso, si no sólo hasta llegar a ese punto, entonces ejecutas el código con F5, y cuando llegue a esa línea se detiene, luego para avanzar entre líneas, pulsas F11... cuando hayas resuleto dudas, continuas con F5, hasta que llegues a otro punto que desees detenerte y probar bien.  Se puede incluso ver la pila de llamadas en curso...

Hay mucho que explorar, mírate el menú DEBUG.... en profundidad...experimenta, hasta que tengas dominio de ello.

Te busco un vídeo, a ver si encuentro alguno, será más sencillo que escribir aquí 300 líneas de explicaciones.

Otro enlace:
https://msdn.microsoft.com/es-es/library/ms173083(v=vs.90).aspx
Vídeos:
https://www.youtube.com/watch?v=C0vDKXIq_9A
https://www.youtube.com/watch?v=QCPt9aOcd98
https://www.youtube.com/watch?v=u-HdLtqEOog
https://www.youtube.com/watch?v=rsfi68hR6vw
Estos están en inglés, no importa que si no lo entiendes, basta con que observes, ...aunque bueno, veo de buscarte alguno en español, también, solo que se enrrollan demasiado en explicaciones peregrinas en vez de ir al grano:
https://www.youtube.com/watch?v=KUhJmtgrk3k
https://www.youtube.com/watch?v=Ew5XAAJbGKI
https://www.youtube.com/watch?v=ayAv-EPCfk0
Tras ver un vídeo, a la derecha en la página siempre en las sugerencias salen muchos más relacionado con lo mismo... date un baño de vídeos, pierde 4 ó 5 horas viéndolos y ponlos en pausa, y prteactica tú mismo en tu equipo...

No te preocupes si en el vídeo sale un VS de una versión de VS distinta a la que tu tengas instalada, ya te digo que no ha cambiado sustancialemtne en los últimos 30 años... con decirte que para mí el 'asombro' más grande es que antes la ejecución paso a paso era con F8 (en VS 6.0) y ahora (desde NET) es con F11  :laugh: :laugh:
154  Seguridad Informática / Análisis y Diseño de Malware / Re: Hay alguna manera de meter un virus espía a una foto para enviarselo a alguien? en: 23 Mayo 2017, 17:36
Un virus puede esconderse en cualquier parte... pero eso no debe llevar a la creencia de que 'desde ahí', pueda ejecutarse.
Sólo puede ejecutarse si algo ejecutable lo hace. Si está oculto dentro de datos, no hace nada, los datos por si sólo son 'materia muerta, inactiva'. Los datos nunca 'tienen el control', siempre son 'usados'...
155  Programación / Programación General / Re: ¿Como programar un depurador avanzado? en: 23 Mayo 2017, 00:19
Créeme, no te compliques con tonterías, escribirás código infinito y siempre habrá errores imperceptibles y será muy lento, largo y complejo. cualquier cambio te dará una pereza enorme.

Describe tu lenguaje en notación BNF, luego te será tremendamente sencillo tratar semántica y sintaxis, incluso el mismo lenguaje ampliado te vale hasta para colorear (si asocias colores a cada identidad individual).

Lo mejor del BNF, es que puedes adaptarlo a tus necesidades e incluso sirve como ayuda para los usuarios al mostrar el BNF de tu lenguaje, pués sirve para saber qué se puede y qué no se puede hacer en él...

He editado mi mensaje anterior, para extenderme un poco y con más explicaciones...

Te adjunto, un ejemplo de como se describió, por ejemplo el lenguaje Algol 60, menos potente que el Algol 68, pero te sirve de ejemplo:
https://web.archive.org/web/20060925132043/https://www.lrz-muenchen.de/~bernhard/Algol-BNF.html



-----------------------------
----------------------------
Mensaje ORIGINALMENTE publicado en: Fecha del día 23 de mayo (por la tarde, hora de España) -------------
Me he molestado en buscar la especificación del EBNF (Extended-BNF), es más legible, cuando se describe en EBNF, que en BNF y las descripciones son más breves. Otra ventaja es que el analizador léxico, queda mucho más aproximado con EBNF.
El enlace de descarga (dentro del zip está el pdf):
http://standards.iso.org/ittf/PubliclyAvailableStandards/s026153_ISO_IEC_14977_1996(E).zip

Dado que (BNF) es tremendamente sencillo usarlo (bastan unas pocas horas para entenderlo bien), luego puedes ampliarlo y adaptarlo a tus necesidades.

MOD: Ya deberías saber que debes hacer doble post.

--------------------------------------------------------

Mensaje para el MOD: Por doble post, yo entiendo duplicar el mismo contenido de un mensaje en otra parte del foro (ya sería feo, hacerlo en el mismo sitio). Publicar un mensaje un día y otro mensaje otro día (aunque no haya un mensaje de nadie por medio, en le mismo hilo, JAMAS podré entenderlo como hacer doble post... la razón es muy simple: EDITAR un mensaje, no avisa a los interesados del cambio, publicar un nuevo mensaje posiblemente se vea, en cualquier caso son publicaciones distintas.
Por otro lado, determinados foros, reúnen en un mismo mensaje dos mensajes publicados por la misma persona en el mismo hilo, si no ha pasado cierta cantidad de tiempo, al momento de enviar.

Yo acostumbro a escribir mi mensaje y salvo que ponga código y crea conveniente repasarlo para corregir algún posible error, salto a otro lado, sin llegar a ver si hizo una u otra cosa. Los automatismos del foro, no me competen, creo que hay cierta capacidad de control desde el panel de administración del foro... y supongo que estará en las opciones que dueño del foro, le haya parecido más aceptable.
156  Foros Generales / Foro Libre / Re: IBM revela su procesador cuántico más potente en: 22 Mayo 2017, 23:01
Hombre decir eso y no decir nada es lo mismo. Algo se podrá hacer.
De momento no, porque necesitan profundizar en la tecnología, y sobretodo hacerla más fiable y diseñar soluciones para poder programarlo. De momento, sólo han creado los qubits, es decir han logrado la miniaturización adecuada para escribir y leer y punto (salvo que nos oculten información que seguramente sea así). Ahora tendrán que empezar a pensar en sistemas de controlar los qubits (para que sean fiables) y fnalmente pueda programarse.

Comparativamente es como cuando a mediados de los años 50, se lograron hacer chips de unas pocos biestables... (aún guardo alguna revista de aquellos hitos, que aparecían de cuando en cuando perdidos en algunas revistas de electónica).

Cuando se afiance la tecnología 16 qubits, sería una potencia de cálculo enorme, mucho mayor (unas 1000 veces) que la actual con los modernos procesadores de 64 bits... a 3-4Ghz. pero eso cuando se afiance... Es la diferencia entre hacer un motor de explosión en el garage de tu casa que tienes algún torno y producir en serie motores en una fábrica... Sin duda tu te sentirías orgulloso, solo con que las piezas de ese motor encajaran entre si, aunque luego ni siquiera arrancara, o arrancara pero por efecto del calor se derritiera alguna pieza y tal... démosle tiempo, 10 añitos dan para mucho.
157  Programación / Java / Re: Abrir archivo, leer datos y modificarlos en otro archivo. en: 22 Mayo 2017, 22:43
Nota que describo dos funciones traducir... hay sobrecarga...

Una traduce un texto, la otra traduce un fichero (y lo guarda en otro).
Pero si te produce confusión, puedes explicitar un nombre diferente para cada una:
TraducirFichero(...)
TraducirTexto(...)
158  Programación / Programación General / Re: ¿Como programar un depurador avanzado? en: 22 Mayo 2017, 22:24
La notación "Backus Naur Form", es un metalenguaje que se utiliza para describir lenguajes, de ahí es tremendamente fácil verificar errores.

Si tienes descrito, por ejemplo:
<numero> = <numero> <digito>
<digito> = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
entonces resulta tremendamente fácil verificar que FF, no es un número y sí 135. Pero si describes:


<separador> = [[<separador>]] <espacio> | <tabulador>
<espacio> = " "
<tabulador> = "    "
<numero> =  <separador> (<numerodecimal>| "h" <numerohexadecimal>)
<numerodecimal> = [[<digitodecimal>]] | <numerodecimal> <digitodecimal>
<numerohexadecimal> = [[<digitohexadecimal>]] | <numerohexadecimal> <digitohexadecimal>
<digitodecimal> = <digito>
<digitohexadecimal> = <digito> | <digitohex>
<digito>   = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
<digitohex> = "A" | "B" | "C" | "D" | "E" | "F" | "a" | "b" | "c" | "d" | "e" | "f"

Es fácil ver si un número cumple las normas y si en ese caso es decimal o hexadecimal, etc... por ejemplo: 135, hFF, y por ejemplo es fácil ver que hFFJ no es un número ni decimal ni hexadecimal, así como tampoco 134p0, pero no hemos definido un número decimal, por ejemplo 234'456.

Como se puede ver, ahí está definido que es un número, y se puede ver que acepta números decimales y hexadecimales y es relativamente fácil verificar.
Básicamente hay que escribir una función por cada definición, que chequea sus partes llamando a su vez a cada una de las funciones de las partes de que se compone... (hasta llegar a la básica que son letras, digitos, etc... cuando una funciópn devuelva false, se señala el punto donde está operando y se marca el error (cada función conoce por la expesión que trata, en qué consiste el error).

Igualmente es relativamente fácil describir, operadores, operaciones, funciones, propiedades, clases, etc...


Cuando se cambia de línea se verifica la que se acaba de editar. Además se puede (si es correcto) al final si se detecta una construcción especial, autocompletar partes de esa construcción, o sugerir opciones... al tiempo que si es incorrecto, señalar que falla.

Si nunca has oído hablar de ello, será por que nunca has estudiado teoría de compiladores.

p.d.: Un poco más completo, para ver mejor la potencia del sistema BNF. Tú mismo puedes describir las reglas de tu propio BNF, que eso lo hace además insuperable.
159  Programación / Programación General / Re: ¿Como programar un depurador avanzado? en: 22 Mayo 2017, 18:49
Si declaraste tu lenguaje en un formato BNF, (o EBNF), no debería serte complicado chequear la semántica ni la sintaxis.

de hecho, eso te servirá luego para poderlo compilar, pués esa fase será necesaria (suponiendo que el lenguaje sea compilable e/(o no sólo) interpretado).
160  Seguridad Informática / Criptografía / Re: cómo funciona basicamente el descifrado (mediante crackeo) en general? en: 22 Mayo 2017, 18:44
Básicamente hay dos formas:
- Prueba y error (hasta que dé acierto, o te canses)
- Puro analisis (de las claves generadas y del algoritmo que las genera). A veces contienen fallos, nada obvios pero que facilitan resolver claves. Una forma fácil de analizarlas es usar claves en la forma: "AAAAAA", "ABCDEFG", para cifrar conteniedo como AAAAAAAAAAAAA... y ver qué resultado cifrado arroja.
- Mezcla de ambas. Si por análisis puedes deducir ciertas partes, luego una fase de prueba y error puede ser considerablemente más corta.
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ... 49
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines