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


 


Tema destacado: 4n4lDetector v1.3: herramienta de análisis estático de malware


  Mostrar Mensajes
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 35
21  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.
22  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...)
23  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
24  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.
25  Seguridad Informática / Seguridad / Re: Como han podido hackearme? en: 21 Mayo 2017, 21:47
No solo uede ser que hayas entrado desde un cyber (por ejemplo), también podría ser que tu contraseña sea la típica 123456, o el nombre de tu perro?
26  Programación / ASM / Re: Ejercicio ensamblador en: 21 Mayo 2017, 18:37
Un número negativo, es una convención de acuerdo.
Aunque pueden proveerse diferentes formas de usar números negativos, al comienzo del diseño de la lógica del hardware, se vio claro que:
 x - x = 0
 0 - 1 = -1
 -1 + 2 =1
 1 - 1 = 0
Luego en binario debería ser igual... entonces se encontró que la forma de hacelro igual es que el último bit (el de más peso), tiene la función asignada del signo.
Así, éste valor: 1111.1111 puede significar 2 valores
si no admite números negativos es 255, pero si es un número negativo, será -1
Por tanto que sea positivo o negativo, depende del tipo de datos declarado. Sin más datos al respecto (por ejemplo podríamos estar trabajando con datos BCD) lo más que se puede hacer es verificar el bit de más peso.

Hay varias maneras... una podría ser haciendo desplazamiento (o rotaciones) a la izquierda (multiplicar por 2) y consultar luego el banderín de Acarreo (incluso el de desbordamiento). Si hubo acarrero, es porque es ebit estaba a 1, por tanto es negativo.
Código
  1. MOV al, Valor
  2. SAL al, 1  <--- desplazamiento aritmetico a la izquierda (1bit)
  3. JC Negativo
  4.  --> Es positivo
  5. RET
  6. Negativo:
  7.  --> Es negativo
  8. RET
  9.  
  10.  
También se puede hacer con RCL, RCR, ROL y ROR, pero tienes que controlar que contiene previamente el acarrero. en cualquier caso, el registro afectado (al), queda modificado... Estudia el comportamiento (condiciones) de los banderines de acarreo y desbordamiento en este tipo de operaciones: Rotaciones y Desplazamientos.

Otra forma es comparar el bit 7 del valor con un valor inmediato que tiene ese bit a 1 y el resto a 0, es decir con 128
Código
  1. MOV al, Valor
  2. TEST al, 128 <--- ¿Esta activado el bit 7 del registro 'al'?
  3. JNZ Negativo
  4.  --> Es positivo
  5. RET
  6. Negativo:
  7.  --> Es negativo
  8. RET

El segundo método es superior, por su sencillez. La ventaja del 2º método sobre el primero, es que el 2º, no modifica el estado del registro 'al', en el 1º, se ha multiplicado por 2 y como operamos con un byte, si era negativo, el valor queda truncado (el valor de ese bit se conserva en el banderín, por si se precisa).

Para devolver una llamada a una función usas RET x (Retorno, Return, x es un parámetro opcional que se suma al registro SP, para descartar parámetros de llamada), y para Salir, se usan directivas end: END, END modulo, ENDM para fin de una macro... etc... esto puede variar ligeramente según el ensamblador usado, pero varían poca cosa entre sí.
Código
  1. ProcA Proc FAR
  2. ...
  3. ...
  4. Ret
  5. ProcA ENDP <---- fin del procedmientoA
27  Foros Generales / Noticias / Re: IoT: La tecnología que promete cambiar al mundo conectándolo todo a Internet en: 21 Mayo 2017, 16:48
Conectar cada aparato electrónico a Internet, nos hará más esclavos de lo que ya somos...

En razonable que determinadas cosas conectadas a Internet, facilitarán muchísimo las cosas, pero no veo ningún motivo para conectar una cafetera a Internet. Ya sé, que el vendedor (que por ello reclamará 10 veces lo que cuesta una cafetera sin conexión a internet, y ahí radica todo su interés), te dirá que así cuando se acabe el café, puede ahcer el pedido por tí... Incluso así, sería más fácl que la cafetera, simplemente se conectara a tu móvil y pusiera en tu lista de la compra: café = cero patatero... no hace falta nada más... tampoco hace falta que desede internet se controle la temeperatura o el tiempo que ha de estar la cafetera encendida, de verdad que no...

Ya me veo en un futuro no muy lejano, 'enjaulando' todos los dispositivos electrónicos caseros que NO NECESITAN ninguna conexión a Internet para absolutamente nada.
28  Foros Generales / Foro Libre / Re: Parece que Corea del Norte está detrás de WannaCry en: 21 Mayo 2017, 13:56
El problema al que se enfrenta un país que 'invada' Korea del norte, es que tras la 'liquidación', se encontraría de alguna manera forzado a mantener o facilitar un estado de transición hacia una democracia, pero al mismo tiempo (y he aquí el problema), asegurarse de mantener a la población una calidad de vida mínima que ahora mismo roza la pobreza extrema... pero por la que ahora mismo no pueden ni rechistar.

Vas a un sitio a solucionar un 'problema', y te encuentras que el trasfondo es exageradamente más grave que el problema que en principio parecía haber.

Después de todo, ir allí a "quitarle la Gameboy al niño gordito", no es para tanto, el verdadero problema sería luego atender a los millones de personas con graves carencias y que sin una democracia o un sometimiento como el actual, quién sabe por qué derroteros tirarían... sería fácil que surgieran luego muchos delincuentes.
Suele ocurrir cuando en un sitio, por robar un trozo de pan te cortan la mano, que si luego no te cortan ni el pelo por robar a unos viejitos, da pie a una especie de "envalentonamiento", que hace que surjan delincuentes y odiadores como hongos... (aunque antes estuvieran a la sombra calladitos y acobardados).
29  Programación / .NET / Re: WebBrowser Bot en Visual Basic en: 21 Mayo 2017, 13:43
Los botones en una interfaz, están para que el usuario pulse y que precisamente el usuario sea consciente de que pulsa.

Modificar esa interacción entre el usuario y la interfaz, no es ético, por muy buenas intenciones que tengas con tu bot. Si el usuario decide pulsar "like", lo pulsa, si no quiere, no pulsa. Y es importante que sea así, para que no se falsifique su voluntad.

Un bot, tiene que limitarse a la realización de tareas tediosas, o complejas PERO necesarias, nunca a las tareas que le compete hacer SI O SI, al usuario, como es pulsar un botón... ejemplos:
- Un bot, podría tener encomendado hacer tu comida a las 3 de la tarde, pero nunca sería tarea suya obligarte con la cuchara a que te lo tragues.
- Un bot podría tener encomendado la tarea de recordarte que el domingo tienes cita para ir a casa de tu primo que es su cumpleaños incluso de indicarte la ruta en carretera por el coche, pero no de secuestrarte y lllevarte a la fuerza allí.
- Un bot, podría facilitarte ciertos aspectos sobre transacciones económicas, como recordarte que si haces esa compra te queda menos de x dinero en la cuenta, pero NUNCA obligarte a hacer la compra (o a hacerla por ti), solo porque hayas visitado la página...
- Un bot, podría sugerirte que escuches tal o cual canción si estás estresado, "porque te relaja", pero no debería ponértela "por C0J0N3X", sin consultarte...
- Un bot, podría ayudar a un piloto sobre tareas tediosas durante el vuelo (como recordar a los pasajeros tal o cual cosa, o señalar que si miran a su derecha, verán...), pero jamás hacer maniobras bruscas y menos si no está el piloto automático activado y/o el corazón del piloto parado (vamos que incluso con el piloto con un derrame cerebral, sería mejor avisar al copiloto, que tomar los mandos de la nave).
- Un bot, en un sistema de un silo de lanzamiento de misiles, podría tener encomendado como tarea simplemente revisar el buen estado y funcionamniento de pequeños subsistemas, pero JAMÁS otorgarle control sobre el 'botón de disparo'. ¿No crees???

Hay cosas que SIEMPRE debe hacer uno mismo, la delegación absoluta en automatizaciones lleva a derroteros altamente peligrosos.

No me parece ético lo que intentas, aunque quizás no te hayas parado a pensar donde están los límites de lo ético y lo no ético. Los ejemplos deberian darte una idea...
30  Foros Generales / Noticias / Re: Las distros Linux no funcionarán en Windows 10 S en: 20 Mayo 2017, 23:06

Debo de ser bobo, o algo falla.

No termino de entender el título.
Como alguien no me lo explique...
Te lo explico...  :silbar:

Si no se puede instalar alegremente software, eso incluye Linux (previamente Mocosoft, había anunciado que haría concesiones con Linux, pero no para esta versión concreta).

El título es un poco ...oso "escandaloso, ostentoso", y quizás se deba a que una noticia ha venido muy seguida de la siguiente. Si en la 1ª se anunciaban concesiones para Linux, y en la siguiente se dice, Aquí no... pués listo, hay quien saca punta al lápiz para poner título llamativo, para que los linuxeros, se lancen, puñal en dientes... (en resumen: una forma de conseguir visitas, solo por un título inapropiado).
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 35
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines