Alters

Remote tools: Presentación (II)

Buenas!

Estoy teniendo serios retrasos (con todo en general); es una lástima porque realmente me gustaría avanzar lo antes posible este proyecto, ya que creo que puede llegar a ser útil para algunas personas (si bien no como herramienta en si, podría ser útil en el campo de la investigación - es decir, en el campo de la ejecución de la teoría y cómo es resuelta ésta).

Se acaba el mes de marzo, el primer trimestre anual; y esto supone que debería tener una cuarta parte de mis propósitos anuales completados... veremos qué puedo hacer.

En fin, sigamos con lo que toca: Remote Tools.

En esta entrada estaba planificado hablar de las dos primeras funciones (y las más costosas de elaborar): la encriptación y "desencriptación" tanto en MD5 como en SHA1.

Quizás os preguntáis porqué está entre comillas "desencriptar"; esto es porque - supuestamente - algo que está encriptado no se puede "desencriptar" (si se pudiera, sería un cifrado).

Entonces, para enriquecer nuestro vocabulario, podemos decir que se distinguen dos procesos similares pero distintos a su vez:

 - Cifrar: ocultar un mensaje de manera que luego puede recuperarse el mensaje original, solo por aquellos que conozcan la clave establecida o el método de cifrado.

Hay métodos clásicos de cifrado como el "Cesar" o el "Bigenere".

- Encriptar: ocultar un mensaje de manera que el original no puede ser recuperado. También es conocido como "hash".

El método estándar de encriptado es el SHA (Secure Hash Algorithm).

Pero, sin embargo, sí hay métodos que nos permiten saber el mensaje original. El método más sencillo es elaborar un gran diccionario (tal como un diccionario en si) en el que almacenamos parejas de texto - hash.

Es decir, supongamos que hacemos:

sha1("1");

Esto nos devolverá:

356a192b7913b04c54574d18c28d46e6395428ab

Podemos guardar la pareja "1 - 356a192b7913b04c54574d18c28d46e6395428ab" en un fichero o base de datos, de manera que podamos buscar más adelante el valor "356a192b7913b04c54574d18c28d46e6395428ab" y obtener como respuesta "1". Sería algo como:

h = sha1("1"); //h = 356a192b7913b04c54574d18c28d46e6395428ab
t = unsha1(h); //t = 1

Lo mismo es aplicable para el algoritmo MD5, o para cualquier función de "hash" que os venga a la cabeza.

Las mentes eruditas han logrado encontrar un método "calculable" para deshacer un hash en SHA1. Éste es un método que requiere vastos conocimientos y que en un futuro me gustaría saber...

Así, podríamos decir que crearemos un basto diccionario para encriptar y desencriptar palabras.

Si la lógica no me falla, con el tiempo podremos llegar a comprobar un valioso teorema: las colisiones.

Pero de eso ya hablaremos en el punto 3.1.1.2...

Y quizás, con el tiempo, dedico una sección entera a los temas de cifrado - descifrado y encriptado - desencriptado...

De momento es todo; que las vacaciones son cortas y servidor está agotado (malditos cambios, no huyáis!).

Para bien o para mal, os espero, como siempre.

¡Hasta la próxima!

Remote Tools: Presentación (I)

Buenas!

Empezamos con el proyecto de Remote Tools. En esta serie de entradas veremos qué se pretende con este proyecto y cómo está pensado llevarse a cabo.

En concreto (contando a partir de ésta) serán cinco entradas de explicación. Que se repartirán como sigue:

I. Intro, ¿Qué es?, ¿Para qué sirve?
II. SHA - unSHA, MD5 - unMD5
III. Claves wifi
IV. Fuerza bruta
V. nmap bridge

Así, en esta entrada responderemos dos cuestiones imprescindibles.

¿Qué es?

Es un juego de herramientas que provee de ciertas utilidades a todo aquel que le pueda servir. Desde encriptar en SHA1 o MD5 (o intentar desencriptar) hasta analizar hosts.

Está compuesto de tres partes:

- Servidor "externo": es una base de datos externa, que almacena datos de usuarios registrados en la aplicación, funciones para compartir archivos, etc.

- Servidor "interno": es el PC en el que alojamos nuestra instancia de Remote Tools. Esta instancia está a la espera de órdenes desde la parte del cliente, para, en cuanto las recibe, hacer lo correspondiente con el servidor externo.

- Cliente: nuestro dispositivo Android. Ésta es la parte que nosotros "ejecutamos", bien sea para compartir un archivo, apagar nuestro PC (servidor interno), u obtener la clave wifi de nuestro router.


¿Para qué sirve?

Podemos hacer una triple vertiente de este punto:

- Local: nos permite gestionar nuestro servidor interno (es decir, nuestro PC); bien sea para apagarlo, programar un apagado, consultar el estado del PC, ejecutar un archivo o comando... prácticamente disponemos de un control remoto

- Global: mediante funciones locales podemos interactuar con otros usuarios (esta parte ya la veremos en su momento): pedir o intercambiar archivos, o (siempre y cuando tengamos autorización expresa) controlar el servidor de un amigo.

- Herramientas: todo un complejo de herramientas que nunca viene mal tener a mano. Podemos generar diccionarios de Brute Force, hacer "hashes" de archivos o cadenas de texto, o intentar desencriptar un "hash".

Tengo pensado (con el tiempo) hacer algo así como "juegos de herramientas", o una sección donde cada usuario pueda definir sus propias funciones (e incluso definir algún tipo de "macro").

Por último, y antes de acabar esta entrada, me gustaría comentar una cosa:

Ciertos aspectos de la saga "Remote Tools" contendrán información acerca de temas tales como "hacking wifi".

Insisto (e insistiré) en que, por favor, hagáis uso de estos conocimientos solo con fines locales (podéis montar una pequeña LAN en casa y probar la seguridad de la misma), o bien dentro del marco legal vigente. Yo, durante todos los ejemplos, pondré siempre datos NO verídicos, basados en ejemplos HECHOS EN MI ROUTER.

Si aplicáis los conocimientos explicados aquí (o en cualquier otro foro/blog/web) para otros fines será siempre bajo vuestra responsabilidad...

Remote Tools: Intro

Buenas!

He tardado tiempo en publicar... he estado muy liado; es lo que tiene intentar manejar todos los cambios (aunque por desgracia siguen posponiéndose, de momento hasta final de mes)

También ha cambiado mucho (pero mucho) el proyecto que tenía pensado hacer. Y es que frente a una "adversidad" técnica me surgió una idea escéptico-paranoica, de esas que me abordan algunas veces...

Si leísteis la última entrada del año pasado, sabréis que puse una lista de futuros proyectos tanto personales como relacionados con el Blog...

Uno de ellos era "control reomoto". Pues bien, la "adversidad" técnica hizo que me replanteara todo el sistema que quería llevar a cabo, haciendo que lo ligara a este proyecto.

La cosa fue algo como:

Quiero hacer un proyecto relacionado con Android y algo de criptografía (muy básico). Lo que se me ocurrió fue hacer una gran "Rainbow Table" para el algoritmo SHA1.

Pero claro, intenté llevar a cabo esto mediante PHP+MySQL, y vi que no era viable por muchas razones (la principal: el límite de tiempo y recursos de los hostings gratuítos).

Así que pensé: ¿Cómo obtener mayor velocidad y todos los recursos? y la respuesta, por partes, es:
  • Recursos: Hacerlo de manera local
  • Velocidad: ... ¡COBOL!

Y ahí surgió todo: enlazar el proyecto al actual "control remoto" (ya explicaré para que sirve), e incluso no detenerme en una mera "Rainbow Table", sino añadir algunas funciones aprovechando las que ya tenía en mente...


Entonces, el proyecto (rebautizado) que haremos entre los temas de matemáticas será éste.

"Remote Tools".

Lo he dividido en ocho bloques, para ir viendo cada bloque entre cada tema de Mundo exterior - Matemáticas

Dejo el índice aquí. Como veréis, está lleno de teoría y varios aspectos diferentes... para aquellos que gusten de las peripecias escéptico-paranoicas les resultará divertido seguir esta aventura... ¡Vamos allá!

Remote Tools
  1.  Presentación
    1.   ¿Qué es?
    2. ¿Para que sirve?
    3.  Funciones
      1. SHA - unSHA
      2. MD5 - unMD5
      3. Claves wifi
      4. Fuerza bruta
      5. nmap bridge
  2. Teoría de programación
    1. COBOL
      1.  Teoría
        1. Array
        2. Fichero dinámico
    2. .NET
      1. Teoría
        1. Procesos
        2. Repaso FTP
    3. nmap
      1. ¿Qué es?
      2. ¿Para qué sirve?
      3. Teoría
        1. Línea de comandos
        2. Comunicación
  3. Otros conecptos
    1. Criptografía
      1. SHA1
        1. Funcionamiento
        2. Limitaciones teóricas
      2. MD5
        1. Funcionamiento
        2. Limitaciones teóricas
      3. Rainbow
    2. Ataque web
      1. Fuerza bruta
    3. Ataque wifi
      1. Claves wifi
  4. Implementación
    1. Servidor externo (PHP + MySQL)
      1. CSS avanzado
        1. Float
        2. Display
        3. Herencia
      2. Web
        1. Requsitos
        2. Análisis
        3. Diseño
        4. Implementación
      3. Base de datos
        1. Requerimientos
        2. E - R
        3. Modelo relacional
        4. Normalización
        5. Implementación
      4. Sistema de órdenes y peticiones
      5. Funciones de consulta
    2. "Servidor" (.NET)
      1. "Line Command"
        1. Requerimientos
        2. Análisis
        3. Diseño
        4. Implementación
          1. Estructira de órdenes y peticiones
          2. Algoritmos
      2. Revisar peticiones
      3. Autenticación
    3. "Cliente" (Android)
      1. Requerimientos
      2. Análisis
      3. Diseño
      4. Diseño, estructura y jerarquía de Clases
      5. Algoritmos
      6. Implementación
      7. Versiones
    4. Gestión de ficheros (COBOL)
      1. SHA - unSHA & MD5 - unMD5
        1. Función bucle
        2. Índices
        3. Generar texto - hash
        4. Generar hash - texto
      2. Claves wifi
        1. Algoritmo por defecto
        2. Generar archivo & índices VS. cálculo directo
      3. Fuerza bruta
        1. Generar diccionario
        2. Llamada exterior
        3. Ampliar opciones
          1. Caracteres
          2. Números
          3. Símbolos
          4. Rango
          5. Longitud max/min
    5. Ampliación general
      1. Subir / Bajar fichero
      2. Compartir fichero
      3. Gestión de procesos
      4. Ejecución de programas (EXE/Batch)
      5. Programación de tareas
      6. Keylogger

Como veis es muy extenso... esto nos dará fiesta para un buen tiempo! A su vez, servirá para documentar todo el proceso...

El índice tiene varios colores; cada color representa cada una de las franjas que veremos entre tema y tema de matemáticas.

Así, en la próxima entrada empezaremos ya a dar caña.

Saludos, y...

¡Hasta la próxima!

Preámbulo

Buenas!

Sigo avanzando con el proyecto intermedio... tengo casi todo preparado para hacer la próxima serie de entradas.

Y qué contar; los cambios se demoran una vez más, pero tiempo al tiempo. Ojalá todo saliera como servidor piensa y el lunes haya ya algún atisbo de cambio...

Aprovecho la entrada para dejaros un pequeño relato que presenté a concurso. Se titula "Cigüeñas y patos".

Aquí lo podéis leer

Y poco más que contar... en la próxima entrada dejaré ya un índice para la nueva serie de entradas.

Como siempre saludos, y...

¡Hasta la próxima!

Mundo exterior: Matemáticas - Tema I: Operaciones con vectores de Rn

Buenas!

Empezamos la última entrega del apasionante mundo de los vectores. Tras esta entrada haremos una pequeña serie de entradas informáticas, con un cierto regusto a estadística mezclado con criptografía, y (seguramente) aplicaciones Android...

¿¡A que suena emocionante!?

Pero no nos adelantemos...

Como siempre, dejo el índice de este primer tema.


  1. Matrices y vectores 
    1. Operaciones básicas
      1. Suma
      2. Resta
      3. Multiplicación
    2. Propiedades
    3. Otras operaciones
      1. Traza
      2. Simétricas
      3. Antisimétricas
    4. Determinantes
      1. Explicación
      2. Determinantes de orden 3
      3. Determinantes de orden 4
      4. Propiedades
      5. Representación geométrica de determinantes de orden 3
    5. Rango
    6. Inversas
    7. Uso de parámetros
    8. Vectores de Rn
      1. Tipos
      2. Operaciones básicas
        1. Suma
        2. Producto escalar
      3. Dependencia / independencia lineal
      4. Subespacios de Rn
      5. Familias generadoras y bases
      6. Otras operaciones
        1. Norma euclidiana
        2. Producto de vectores
        3. Producto vectorial (restringido a R3)
    9. Sistemas de ecuaciones lineales
      1. Tipos


8.6. Otras operaciones

Veamos,  primero, como definimos el producto escalar de dos vectores:


(X1, …, Xn)*(Y1, …, Yn) = SiXiYi


  8.6.1. Norma euclidiana

Definimos el resultado de la norma euclidiana del vecto "V" como la raíz cuadrada de su cuadrado escalar, es decir:


V = (X1, …, Xn);

||V|| = (V2)-1 = (V*V)-1 = (SiXiXi)-1 


  8.6.2. Producto de vectores

El producto de vectores se basa en la norma euclidiana, usando, en vez de "V", "U" y "V".
Para normalizar las direcciones de los vectores, usamos un factor, en este caso el coseno que forman los vectores.

Es decir, el producto escalar de vectores es la multiplicación de:

 - ||U||
 - ||V||
 - cos(U, V)

Explicado de manera concisa, es:

V = (X1, …, Xn);
U = (Y1, …, Yn);


UV = ||U|| * ||V|| * cos(U, V) = (SiXiXi + SiYiYi)-1 * cos(U,V)



A sabiendas de esto, si U es perpendicular a V, el resultado será 0.

  8.6.3 Producto vectorial (Restringido a R3)

Para hallar el producto vectorial de dos vectores en R3, nos ayudamos de las matrices. Ejecutamos lo siguiente:



De esta operación, podemos extraer varias conclusiones:

  • El producto es un vector perpendicular a los vectores dados
  • Valdrá 0 si "U" y "V" son L.D.
  • Tienen orientación positiva respecto "U" y "Y" (ley de la mano derecha)
  • ||U^V|| = ||U|| * ||V|| * |sin(U,V)|
  • Esta operación se extrapola para operar con planos

9. Sistemas de ecuaciones lineales

  9.1. Tipos

Hay tres tipos de sistemas de ecuaciones lineales:

  • Incompatibles: 0 soluciones
  • Compatibles determinados: 1 solución
  • Compatibles indeterminado: infinitas soluciones
Esto es todo de este primer tema.

En la próxima entrada haremos un preámbulo para la nueva serie de entradas. De momento no se cuánto durará la nueva serie de entradas... a ver si para la próxima entrada lo puedo tener concretado.

Un saludo, y...

¡Hasta la próxima!

Mundo exterior: Vectores de Rn - Parte II

Buenas!

Esta entrada vuelve a tratar sobre el mundo exterior... para tratar de nuevo el tema de los vectores de Rn.

Por otra parte, mis proyectos siguen trayectorias diferentes a lo que realmente me gustaría, pero así es la vida y poco se puede hacer con las cosas que son como son...


  1. Matrices y vectores 
    1. Operaciones básicas
      1. Suma
      2. Resta
      3. Multiplicación
    2. Propiedades
    3. Otras operaciones
      1. Traza
      2. Simétricas
      3. Antisimétricas
    4. Determinantes
      1. Explicación
      2. Determinantes de orden 3
      3. Determinantes de orden 4
      4. Propiedades
      5. Representación geométrica de determinantes de orden 3
    5. Rango
    6. Inversas
    7. Uso de parámetros
    8. Vectores de Rn
      1. Tipos
      2. Operaciones básicas
        1. Suma
        2. Producto escalar
      3. Dependencia / independencia lineal
      4. Subespacios de Rn
      5. Familias generadoras y bases
      6. Otras operaciones
        1. Norma euclidiana
        2. Producto de vectores
        3. Producto vectorial (restringido a R3)
    9. Sistemas de ecuaciones lineales
      1. Tipos


8.5. Familiar generadoras y bases

Definimos una familia generadora "V1, ..., Vn" de la siguiente forma:

"V1, ..., Vn" es una familia generadora de "F" sii para cualquier elemento perteneciente a "F" éste es una combinación lineal de "V1, ..., Vn".

Es decir, si "F" es la colección de combinaciones lineales de "V1, ..., Vn"

Dado un "V1, ..., Vn" que es familia generadora (FG) de "F", si "V1, ..., Vn" es L.I. podemos decir que es una base de "F".

Todas las bases de "F" constan del mismo número de elementos (misma dimensión).

Dado un espacio "F" de dimensión "r", podemos afirmar:


  • Si hay más de "r" elementos ==> son L.D.
  • Si hay "r" elementos ==> si son independientes (como máximo "r" elementos) <==> son generadores (como mínimo "r" elementos)
Ahora hablemos de la otra parte, "F" (la base):

"F" se describe de dos maneras:

 - Por generadores:

(ejemplo)

F = <(1, 2, 0, 1), (-2, 0, 3, 1), (-1, 2, 3, -2)>

Esta opción nos trae dos problemas:
  • Es difícil extraer una base
  • Es difícil extraer una serie de ecuaciones para "testear" la base

- Por ecuaciones:

F = {(x, y, z, t) | x – 2y = z; 2x + 4z = 3t}

Al usar este sistema, tenemos que tener en cuenta varias cosas:
  1. Las ecuaciones no pueden ser cuadráticas (X2)
  2. Las ecuaciones no pueden ser trigonométricas (sin/cos)
  3. Las ecuaciones no pueden tener términos independientes (x + 1) => Todas las "F" pasan por el origen
Amén de dos problemas:
  • Se tienen que "limpiar" las ecuaciones
  • Problemas al encontrar una base
Para ello, tenemos el método para pasar de generadores a ecuaciones y viceversa.

- De ecuaciones a generadores




Por si no se lee del todo bien, explico los pasos:

 - Se toman los coeficientes de las ecuaciones y se monta una matriz, ampliando con los resultados
 - Triangulamos por la parte inferior, quedando dos zonas:
     * De la D.P a la izquierda: soluciones
     * De la D.P a la derecha: parámetros
 - Armamos unas nuevas ecuaciones con las soluciones y parámetros
 - Despejamos las soluciones en base a los parámetros
 - Usando los parámetros, creamos un vector que represente todas las soluciones en base a los parámetros.
 - Extraemos factor común donde se pueda
 - Para cada vector, hacemos una "versión" en el que un parámetro vale 1 y el resto 0
 - De la colección anterior obtenemos la base en vectores

De este ejemplo extraemos dos conclusiones:

 - Como tiene dos libertades (parámetros), podemos decir que tiene 2 dimensiones
 - Es un plano (2D) dentro de un espacio de cuatro dimensiones (las ecuaciones tenían cuatro incógnitas).

- De generadores a ecuaciones (doble ejemplo, esta vez)



Veamos el seguimiento de ambos ejemplos:

 - Dado un "F", lo agrupamos en una serie de ecuaciones lineales
 - De estas ecuaciones lineales podemos extraer una matriz (véase que no son más que los vectores "A", "B", y "C" transpuestos), ampliada con las incógnitas.
 - Triangulamos la parte inferior izquierda a la D.P, y obtenemos las ecuaciones transformadas.
 - Tomamos las igualadas a 0, ya que son las L.I, y listo.

Del primer ejemplo, podemos decir que es un plano dentro de un ámbito de cuatro dimensiones.

El segundo ejemplo es algo más rápido; y se puede ver en funcionamiento el primer procedimiento (de ecuación a generador).

Bien, y con esto decir que aquí acaba la segunda parte de los vectores de Rn. La próxima parte (quinta y última entrega del primer tema) seguiremos un poco más con los vectores de Rn, y veremos también el resto de tema.

Espero que os guste, y....

¡Hasta la próxima!

¡Sorpresa!

Buenas!

Quiero daros una buena noticia,

estreno un nuevo blog: "Cosplay & Co.", en el que enseñaremos cómo hacer cosplay (y otras cosas) al más puro estilo DIY! (Do It Yourself).

Con ello, amén de conseguir práctica con varias habilidades, nos ahorraremos un dinero en todos los propósitos que nos propongamos...

Aquí podéis encontrar el blog.

Saludos, y...

¡Hasta la próxima! (con matemáticas)

Break tecnológico

Buenas!

Como comenté en la anterior entrada, en esta vamos a hacer un break tecnológico.

Por otra parte, los cambios importantes se demoran, pero nuevas señales se acercan; no se cómo acabará esta aventura!

Y es que he conseguido otro gadget para mi colección. En este caso, un móvil nuevo.

Nada más que el Samsung Galaxy Ace II NFC. Este modelo salió en mayo de 2012 (hace 9 meses), y puedo bien decir que el cambio ha sido espectacular como mínimo.

Pasar de una BlackBerry Bold 8520 a mi actual smartphone ha sido un paso (llevaba con la BlackBerry 3 años largos)...

No digo que sea mal terminal la 8520; es más, me ha dado un resultado brutal, de esos que esperas de lo mejor del mercado. Y es que ha aguantado 3 añazos como el que más.

Incluso se le ha caído uno de los botones de silicona del costado (de tanto usarlo), tiene innumerables golpes involuntarios, y otros muchos golpes de descarga de ira (pobrecito, pagaba todos mis cabreos).

Y puedo corroborar que la BlackBerry 8520 aguanta:

 - Puñetazos en la pantalla
 - Lanzamientos contra la pared
 - Lanzamientos contra el suelo
 - Puñetazos en el teclado
 - Golpes tales que desmonten el teléfono

Y nada... a día de hoy sigue funcional.

Pero, volviendo al nuevo smartphone... ¿Qué decir?

 - El wifi funciona tan bien que asusta (usando los 30mb de ONO se nota...); con la BB apenas se notaba la velocidad wifi.

 - Pantalla mucho más grande
 - Cámara de 5mp con flash
 - Mogollón de apps buenas, por obra y gracia de San Google ( :-P )
 - Video en HD

Y un montón de pequeñas cosas que lo hacen muy atractivo, como el tema del estilo interno de los menús, el que puedas "swippear" en el teclado, el que tenga NFC, gestionar todas las conexiones con una pulsación...

Lo que más me gustó de conseguirlo es que obtuve un buen descuento...

Y aquí una imagen de mi nuevo terminal:




Y esto es todo por ahora.

En la próxima entrada volvemos a las matemáticas, penúltima parte antes del break de tema. Tengo un par de cosas pensadas para hacer, pero falta que las desarrolle...

Saludos, y...

¡Hasta la próxima!