Recuperar bases de datos MySQL desde ficheros

El motor de almacenamiento utilizado por MySQL/MariaDB hasta su versión 5.5 es MyISAM, en versiones posteriores se incorpora InnoDB.

A modo de resumen breve, dada la popularidad en entornos web en los que las consultas de lectura (SELECT) predominan sobre las de escritura (INSERT/UPDATE) sigue siendo una de las opciones más utilizadas en entornos en los que prima: velocidad, sin bloqueo de registros o tablas, sin características ACID (Atomicity, Consistency, Isolation, Durability) internas, recursos hardware limitados…

Cada una de las bases de datos generadas en su directorio contiene 3 ficheros por cada tabla con extensiones:

  • FRM: definición de la esctructura de la tabla
  • MYD: datos almacenados
  • MYI: índices

Podemos copiar desde entornos linux a windows y viceversa, con la consideración de dar los permisos suficientes de acceso sobre los ficheros.

  • En Windows: C:\ProgramData\MySQL\MySQL Server 5.X\data
  • En Linux: /var/lib/mysql/

Puedes conocer el directorio de datos realizando consulta en las variables globales:

mysql -s -N -uUSER -p information_schema -e 'SELECT Variable_Value FROM GLOBAL_VARIABLES WHERE Variable_Name = "datadir"'

O realizando la consulta sobre la variable directamente:

select @@datadir;

Una vez localizado los directorios, debemos parar el servicio MySQL, copiar la carpeta completa de nuestra base de datos en el directorio y asignar los permisos de acceso.

Los índices puedes ser regenerados o reparados mediante sentencias posteriormente:

check table nombreTabla;

repair table nombreTabla

 

«Recuperar» claves privadas de certificados SSL en IIS

En ocasiones es posible tener alguna que otra dificultad a la hora de crear peticiones (CSR) o renovar si no se realizan los pasos con cuidado en IIS. Debemos tener en cuenta que a la hora de crear una petición de certificado, la clave privada se almacena en el equipo que la realiza y solo en este es posible recuperarla.

Pese a ello en ocasiones se producen errores en el proceso, llegados a este extremo podemos intentar dos opciones:

  1. Desde la linea de comandos podemos intentar reparar el almacen de certificados:
    certutil -repairstore my "ThumbprintDelCertificadoConoSinEspacios"

    Si el comando encuentra las claves privadas asociadas al certificado indicado con el thumprint las asocia, en otros casos es posible que muestre errores del tipo «Insertar tarjeta inteligente» ya que busca en todos los medios y proveedores criptográficos existentes, en tal caso no podrá acabar.

    NOTA: este comando también se puede utilizar para asociar las claves privadas con la renovación de un certificado CER de manera rápida dentro del mismo equipo, es decir, certificado completo del año 2010 (PFX) y renovación de 2011 (CER) en el mismo almacén de certificados.

  2. Si hemos solicitado el certificado a una autoridad online, es posible que tenga almacenadas las claves privadas en la solicitud web, en este caso podremos unirlas con el certificado de respuesta para obtener el PFX resultante mediante OpenSSL, puedes probar online pero nunca en producción
    openssl pkcs12 -export -inkey clave.pem -in pki.crt -out certificadoCompleto.pfx

 

NOTA: Una pequeña aclaración rápida, los archivos CRT contienen la información entre las etiquetas —–BEGIN CERTIFICATE—– y —–END CERTIFICATE—– mientras que las claves de ficheros PEM utilizan: —–BEGIN RSA PRIVATE KEY—– y —–END RSA PRIVATE KEY—– habitualmente.

.NET Framework hoy y mañana

En ciertas ocasiones, más habituales de lo que uno desearía, te encuentras en la obligación de interactuar con componentes antiguos… muy antiguos… si hablamos de un COM en Visual Basic 6 nos remitimos 20 años atrás. Si la evolución del software y hardware cada 6 meses puede ser notable, en algunos ámbitos la adopción de ciertos hitos tecnológicos lleva décadas.

Existe una mejora y facilidad de uso entre los Common Language Runtime (CLR), aunque Microsoft le encanta cambiar y variar los nombres (Project K, vNext…) , intentaremos resumir…

Actualmente la definición de .NET Standard intenta facilitar a los desarrolladores una API común para aplicaciones de escritorio, móvil, juegos y cloud, tenemos por un lado Full Framework y por otro lado Core Framework, dos ramas con diferentes propósitos.

  • Full Framework es monolítica, instalas todo o nada solo para Windows
  • Core Framework es modular, puedes referenciar solo las partes que utilices para entorno Windows, Linux o Mac, además es Open Source y con web/Cloud en mente inicialmente.
  • Dejamos Xamarin como multiplataforma a partir de la evolución de Mono (Linux) cuando Microsoft no quería llevar .NET fuera de Windows (eran otros tiempos sin iOS ni Android…)

A futuro Microsoft parece querer unificar toda su tecnología sobre C# en .NET Core: Entity (ORM), WPF, MVC, SignalR, MVC, Web API… pero hasta entonces tenemos largos años de Full Framework todavía ¿cuantos?

 

Voz IP VLAN + Akuvox

A la hora de planificar el despligue de una infraestructura de telefonía sobre voz ip dentro de una red local, una de las recomendaciones básica pasa por separar en una red diferencia. No hablamos de IP fijas en otro rango, subnetting ni similares; sino de una separación totalmente diferenciada.

Segmentar nos ayudará a tener mayor control y trazabilidad frente a eventuales problemas:

  • Autoprovisionamiento controlado mediante Organizationally unique identifier (OUI) tanto para el envio de configuración a los terminales, como para la asignación de VLANs en la eletrónica de red. Utilizando la parte inicial de la MAC del fabricante (habitualmente el mismo en un despliegue).
  • Seguridad adicional, una mayor restricción a la hora de conectar cualquier aparato en cualquier toma. Limita y dificulta pero no impide.
  • Priorizar tráfico mediante políticas QoS, necesitaremos que entre los puntos de comunicación todos los dispositivos dispongan de esta posibilidad.

En este caso concreto con terminales Akuvox, con una configuración previa funcional con otro fabricante, los equipos se quedan permanentemente «Obteniendo dirección IP«. Finalmente parece tratarse de un error en el firmware del propio fabricante, en el cual no se añade correctamente el etiquetado de los paquetes…

Firmware afectado: 55.0.6.134

Firmware funcional sin problemas en VLAN: 55.203.6.230

 

Movistar SIP VoIp: Cisco SPA + Askey 3505VW

Con el paso del ADSL/cobre a tecnologías de fibra hasta el hogar (FFTH), la transmisión de voz ha pasado a digitalizarse también. Con un punto de fibra hasta la puerta de nuestra casa y un ONT (Optical Network Terminal) las operadores convierten mediante este dispositivo, integrado o no en el router, la señal digital para los terminales hasta ahora análogicos para seguir funcionando; es decir, nos permite conectar el teléfono de 2 hilos y seguir llamando sin problemas.

En el mundo de la empresa y las comunicaciones unificadas el paso se dió hace tiempo, aquellos que apostaron por desplegar cableado estructurado lo tuvieron más sencillo.

Para todos los casos necesitaremos conocer los datos de configuración para efectuar llamadas desde puntos digitales, en este caso como prueba utilizaremos un antiguo Linksys / Cisco SPA941 como este:

 

En los equipos actuales no son necesarias muchas de las opciones, han sido simplificadas, tengamos en cuenta que el modelo acabo su ciclo de vida en febrero de 2010.

Con el teléfono conectado y accediendo a la IP del mismo debemos aplicar en partícular la configuración regional para los tonos de llamada y timbre en español, desde el menú de administración en modo avanzado:

  • Dial Tone: 425@-19;10(*/0/1)
  • Busy Tone: 425@-19;10(.2/.2/1)
  • Reorder Tone: 425@-19;10(.2/.2/1)
  • Ring Back Tone: 425@-19;*(1.5/3/1)

Con todas las opciones «Vertical Service Activation Codes» en blanco

En los parametros SIP forzamos para utilizar puertos RTP a partir del 4000:

Los datos que necesitaremos estan disponibles para su consulta en el modo de configuración avanzada del Router + ONT, en este caso con Movistar y modelo Askey 3505VW aunque es igualmente válido para otros equipos:

  • Proxy: telefonica.net:5060
  • Outbound proxy: 10.31.255.134:5070
  • User ID: (tu número de teléfono)
  • Password (tu número de teléfono)

Con estos datos podemos configurar, en este caso la extensión 1 y registrarla contra el sevicio de Voz Ip de nuestro router/ono/adaptador:

Si todo es correcto, se iluminará la extensión en verde y tendremos comunicación digital-digital entre los puntos dentro de nuestro hogar incluidos.