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


 


Tema destacado: Página de elhacker.net en Google+ Google+


  Mostrar Mensajes
Páginas: 1 ... 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [32] 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 ... 65
311  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(...)
312  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.
313  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).
314  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.
315  Foros Generales / Dudas Generales / Re: Que lenguaje me recomendais para empezar? en: 22 Mayo 2017, 18:01
Para empezar, C, no me parece el lenguaje más adecuado... lleva una curva de aprendizaje bastante larga.
En general, si vas a aprender por tí mismo, si tras cierto tiempo, no logras avances significativos, es muy fácl que te desmoralice. Como mínimo, empieza con C#, es la misma filosofía, pero con poco puedes tener resultados y esa sensación de comprender, aprender y avanzar te da energía para seguir adelante...

Incluso te recomendaría Visual Basic, para empezar, luego que comprendas algunos fundamentos básicos y logres idear cosas y ver que eres capaz de llevarlas a cabo correctamente, puedes saltar (con más conocimiento), hacia otro lenguaje si lo ves necesario.

Para comenzar, lo ideal es hacerlo con un lenguaje que te enseñe lo básico, sin exigirte demasiado conocimiento previo...
316  Programación / .NET / Re: Problema con un string en: 22 Mayo 2017, 17:44
Vuelta a lo mismo... Qué contiene ese fichero????

Tu problema seguramente yace en el contenido dle fichero, y que se refleja luego aquí:
Código:
string[] numbers = Regex.Split(texto, @"\D+");
            foreach (string value in numbers)
foreach ... value = 0 strings?. Seguro que Regex, no devolvió un array vacío???
Al menos saca por consola, qué contiene value, incluso si numbers.lenght es mayor que 0... Son preguntas demasiado tontas, cuya solución deberías ser capaz de resolver por tí mismo.
Visual Studio, es muy potente, tiene muchas facilidades para saber en cada momento, cual es el contenido de cada variable, puedes ejecutar paso a paso, puedes poner puntos de interrupción incondicionales (líneas), o condicionales de modo que cuando se cumpla la condición se pare ahí en ese punto la ejecución... revisas que debiera tener y si es preciso, moverte paso a paso por instrucciones hasta ver dónde ocurre el fallo.

Creo que lo que te pasa es que no conoces ni de lejos el IDE de Visual Studio (examina el menú DEBUG, que sea tu amigo íntimo, más que éste foro, ahí tienes infinidad de respuestas inmediatas), sin mencionar claro está el lenguaje, que ahí es natural que no quede todo claro.... pero con las facilidades que ofrece el IDE, encontrar ciertos errores es sumamente fácil...
317  Programación / Java / Re: Abrir archivo, leer datos y modificarlos en otro archivo. en: 22 Mayo 2017, 16:33
Normalmente cuando alguien empieza, ni se explica bien, ni pone código (o pone solo 4 líneas), y suele ser un refrito de tripas revueltas. Así que lo primero es felicitarte, porque no caes en ninguna de esas cuestiones.

De entrada, yo te sugeriría que usaras tu alfabeto 1337 tanto en minúsculas como en  mayúsculas. Es decir:
Tal como tienes:
0 1 2 3 4 5 6 7 8 9
o i  z e  a s g t b p

Pero también:
0 1 2 3 4 5 6 7 8 9
O I Z E A S G T B P

de hecho, mucho mejor si todo el texto quedara en mayúsculas, pero bueno... cuando te funcione ya decidirás...

Lo segundo, es señalarte que hacerlo en la forma de 'Replace', en realidad exige recorrer 10 veces el texto, para hacer el cambio. En cada ocasión recorre todo el texto, buscando cada vez una determinada letra que cambiar.
Si el texto es corto (que es lo habitual), no importa, será tan rápido que no se aprecia  ninguna tardanza. Si el texto fuera largo, o lo haces con muchos ficheros podría ser hasta 10 veces más lento de lo que realmente necesita ser.


Para ello, habría que generar un alfabeto, para traducir de uno a otro sistema:
Código:
// Esta función podría llamarse al principio, cuando se crea la clase, que alberga el código (se genera una sola vez, se invoca una sola vez).
Funcion CrearTablasDeTraduccion
    //Primero se hace una equivalencia con el ASCII.
    Bucle K desde 0 a 255
        AlfabetoToLeetSpeak(k) = k
        AlfabetoFromLeetSpeak(k)= k
    Fin bucle

    //Luego se hacen los cambios que proceden (manualmente), yo pongo el cambio para 3 caracteres, tu completa el cambio para los 7 restantes...
    AlfabetoToLeetSpeak(111)=48 ' o =0
    AlfabetoToLeetSpeak(79)=48 ' O = 0

    AlfabetoToLeetSpeak(105)=49 ' i =1
    AlfabetoToLeetSpeak(73)=49 ' I = 1

    AlfabetoToLeetSpeak(122)=50 ' z =2
    AlfabetoToLeetSpeak(90)=50 ' Z = 2
   .... resto de letras asignarles desde 3-9

    // Y la traducción de vuelta, es intercambiar los valores previos, elegimos números por mayúsculas, es imposible regresar de números a myúsculas y minúsculas al mismo tiempo, tal como estaban en origen, hay que decantarse y lo hacemos por mayúsculas, porque se parecne más a los números que las minúsculas.
    AlfabetoFromLeetSpeak(48)=79 ' 0 =O

    AlfabetoFromLeetSpeak(49)=73 ' 1 = I

    AlfabetoFromLeetSpeak(50)=90 ' 2 =Z
   .... resto de letras asignarles desde 3-9
Fin funcion
NOTA: que yo solo he puesto la traducción para 3 caracteres, te falta poner las de los otros 7 restantes...


Luego ya se puede usar la tabla (que proceda) en una funcion de traducir.
Código:
// Una enumeración para señalar la dirección de traduccion (podría ser remplazado por un valor buleano, eso al gusto, lo dejo así por más claridad).
Enumeracion TipoDeTraduccion
    TraducirALeetSpeak = 0
    TraducirDeLeetSpeak = 1
Fin enumeracion

Funcion Traducir(Texto tipo String, Alfabeto tipo TipoDeTraduccion) Devuelve String // o un array de bytes, según se precise.
     ArrayTexto() tipo Array
     ArrayTexto= Convertir(Texto a bytearray)

     Si Alfabeto = TraducirALeetspeak entonces
         Bucle k desde 0 a ArrayTexto.Longitud
             ArrayTexto(k)= AlfabetoToLeetSpeak(ArrayTexto(k))
         fin bucle
     si no // Tradicr desde LeetSpeak
          Bucle k desde 0 a ArrayTexto.Longitud
             ArrayTexto(k)= AlfabetoFromLeetSpeak(ArrayTexto(k))
         fin bucle
      fin si
      Devolver Convertir(ArrayTexto a String) //no es absolutamente necesario La conversión) si se va a guardar a fichero, al fichero se escriben bytes, poco le importa que tu lo consideres string, char o bytes...
fin funcion

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

Y ahora mirando tú código... qué falla?.

Bueno falla que tu lees una línea de código, la conviertes y nada más convertirla la escribes a UN NUEVO FICHERO Cada VEZ.
Lo que debes hacer primero es crear el fichero de salida, y luego simplemente es mandar escribir al final del fichero, es decir la acción es APPEND (añadir al final), tu sobrescribes el mismo fichero con cada línea que lees y traduces del origen, y lo cierras con cada vez.
Cuando escribas todas las líneas, (es decir al final del bucle de lectura), es cuando debes cerrar el fichero de escritura.

Por tanto tus pasos (simplificados), serían:
Código:
Funcion Traducir(FicheroOrigen, otrosparametros...)
    Si ficheroOrigen no esta vacío ni presenta otros problemas.
        Abrir fichero de escritura: FileWrite
        Abrir fichero de lectura: FileRead
        Por cada Linea en FileRead: LeerLinea
             LineaWrite = Traducir(Linea, DireccionTraduccion)
             FileWrite.Append(LineaWrite)
        fin Cada
        Cerrar FileWrite
    si no
       advertir al usuario: "el fichero introducido, tiene tal o cual problema"
    fin si
fin funcion

Como ves el código es bien sencillo y claro... ahora tu traduce de pseudocódigo...
No olvides controlar las posibles excepciones. que yo no ponga (casi) nada al respecto, obedece a que puedas verlo y entenderlo con claridad....

No he mirado nada más en tu código (solo por encima) y tras ver ese fallo, asumo que no tienes más... en cualquier caso, corrige/modifica y ya veremos si tienes más fallos.
318  Seguridad Informática / Seguridad / Re: Como han podido hackearme? en: 22 Mayo 2017, 02:21
Entonces es muy probable que tengas un troyano con keylogger incluído...
Actualiza tu antivirus, luego corta la conexión y pasa toda la batería antivírica que tengas instalado. Si no encuentra nada, es probable que debas usar otras herramientas (ningún antivirus es eficaz al 100%, intenta con otros, si no quieres instalar y desintalar otros, también los hay online.

Si a pesar de todo sigue sin encontrar nada, pásate por el foro http://www.forospyware.com/ allí pueden ayudarte, sigue sus indicaciones para dejar completamente limpio tu PC (incluso si tu antivirus encuentra algo, sigue siendo buena idea visitar el foro y pedir que te ayuden a limpiarlo bien de infecciones, di que sospechas que tienes un troyano dentro, por la cuestión del robo de tu clave...)
319  Seguridad Informática / Seguridad / Re: ejecución de código al abrir un archivo de Word? en: 22 Mayo 2017, 02:11
Una macro son acciones ejecutables preestablecidas.
Si paras el vídeo hacia el crono: 1'21, podrás ver parte del código de la macro.

Aquí tienes la especificación de word, y otros formatos de Office (la descarga de todos, última versión son 82Mb.):
https://msdn.microsoft.com/en-us/library/office/cc313153(v=office.12).aspx
320  Foros Generales / Foro Libre / Re: IBM revela su procesador cuántico más potente en: 22 Mayo 2017, 01:57
Quita la tilde a la "a" en "cuántico" y funcionará el enlace...

Que, qué se puede hacer con 16Qubits?. Pués probar que funciona bien y servir de base para ir mejorando.

Una nave espacial no se construyó de la nocha a la mañana, primero, se empezó con las alas de cera de Ícaro... (quién sabe si fue algo más que mitología), y hasta los hermanos Mongolfier con su globo, o los Wright con su aeroplano, ha llovido mucho... luego se ha corrido más en muy poco tiempo.
Así suele suceder con todo, al principio los pasos son lentos y cortos, cuando se empieza a conocer como funciona y la tecnología da para construirlo, es cuando se produce una expansión rápida y dilatada.
Páginas: 1 ... 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [32] 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 ... 65
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines