Sistemas de seguridad en las aplicaciones

Sistemas de seguridad en las aplicaciones que usamos normalmente.

En este artículo vamos a hablar de las distintas maneras o sistemas de seguridad que hay en las aplicaciones comerciales, para intentar paliar la creciente piratería de sus programas. Explicaremos algunos de los métodos más comunes que utilizan, software tan conocido como Windows y Office.

Como siempre digo en mis artículos, hemos venido a compartir conocimiento y desde Somos Binarios, no nos hacemos responsables de la manera en la que sean utilizados.

Los antecedentes que todos conocemos

A todos nos ha pasado: Un amigo nos pasa un CD con unos cuantos programas excelentes, actualizados y… caros. Que si un buen Office, que si el último Windows 8.1 Pro, que si un Corel Draw, un Autocad o un Photoshop.

O, cómo olvidar ese otro caso en el que nos hacemos con un enlace Bittorrent para cualquiera de esos programas tan necesarios pero de precio elevado. ¿Cómo renunciar a bajárnoslo…?

Te suena la película ¿verdad?

Bien, pero tener ese software en nuestro equipo es sólo la primera mitad del Nirvana. Después viene la trampa que las compañías de software han ideado para tratar de impedir que esos programas se queden en nuestro sistema mucho tiempo si no hemos desembolsado los cientos de euros que cuestan. Estamos hablando de las claves de producto o de la activación del producto.

Método manual versus programas activadores

Como ocurre con todo en la vida, siempre existen dos formas de hacer las cosas: manualmente, o de manera automatizada. La tecnología suele hacer casi todas las labores mucho más cómodas y rápidas. Pero a los que, como un servidor, tenemos un espíritu de hacker y adoramos liberar la tecnología, no hay nada como adentrarse en las librerías de un sistema y toquetear todo lo que se ponga a tiro.

Por lo general (y por experiencia) la forma “manual” más eficaz con la que aseguran sus programas se encuentra entre las distintas librerías en busca de la carpeta o carpetas, de las siguientes nomenclaturas: “/keylog”, “/key”, “/activation”, “/keyproduct” o similar.

Esa carpeta (una vez la hayamos encontrado en algún subdirectorio, dado que no nos aparecerán en las cabeceras de las librerías raíz) contiene un pequeñísimo ejecutable destinado a pedirnos la mencionada clave de producto, compararla con la que tiene guardada por eliminación y dar el “Sí”, o el “No”.

Por ello la primera medida de protección es la carpeta o ficheros de activación, pero por si a alguien se le ocurre, que con eliminarla no se consigue saltarse todas las medidas de seguridad del software. Sino eliminar una de las múltiples protecciones. Pero, comprendo que para el usuario medio o el que no se sienta demasiado hacker, esta metodología puede ser aburrida y demasiado “manual”.

Leer más

Raspberry Pi sensor IR y mando a distancia

Raspberry Pi con mando a distancia y sensor IR.

 

En esta entrada os vamos a enseñar como conseguir manejar vuestro XBMC con el mando del salón, sin tener que recurrir a mandos especiales (mandos universales o configurables) de una manera más o menos sencilla y lo mejor de todo muy económica.

Materiales que necesitamos

Lo primero de todo es buscar aquellas partes que vamos a utilizar y que seguramente tendremos que comprar:

  • Una Raspberry Pi, el manual está pensado para hacerlo con este aparato y no sé si se podría hacer con otro aparato.
  • Unos cables con conectores, es la manera más sencilla de poder usar los pines GPIO de la Raspberry Pi y evitar tener que soldar y conseguir que cada conector quede aislado. (Los podéis buscar poniendo “Dupont Wire Color Jumper”).
  • Un receptor Infrarrojo, esto es como un pequeño LED montado en un transistor. Yo he utilizado este: TSOP4838

Cómo hacer un sensor IR

Todo nuestro manual se basa en la tecnología infrarroja, para no extendernos diremos que los mandos de televisión y otros controles remotos, suelen usar una parte del espectro que no es visible denominado infrarrojo, por esos “canales” envían la información de manera que no interfieran con otras tecnologías como el WiFi o el propio Bluetooth, que también usan parte del espectro no visible al ser humano.

Lo que nosotros vamos a realizar es, instalar un receptor IR para capturar la señal de nuestro mando y una vez capturada, asignar cada señal a un botón de XBMC (desplazamientos, play/pause, stop etc). Así podremos manejar nuestro XBMC con el mismo mando que el de la televisión.

El circuito

Lo primero que debemos hacer es conectar nuestro sensor IR a nuestro Raspberry Pi para ello solo tenemos que usar los cables anteriormente mencionados, no hace falta ninguna resistencia ni electrónica auxiliar.

Conexión del sensor IR en los puertos GPIO de la Raspberry PI
Conexión del sensor IR en los puertos GPIO de la Raspberry PI

Leer más

Humor en Bits Versión 2.7

la foto-2 copia 3

Hoy en Humor en Bits  la recopilación semanal de los tweets vistos por la red social de Twitter:

#01 Sin /*                    */

#02 Google compra museos

#03 Cosas de Informático

Leer más

Como crear una web: 7 El SEO

SEO es el acrónimo de Search Engine Optimization, así que lo podemos traducir, por optimización para herramientas de búsqueda.

Qué es el SEO

Una de las cosas que comúnmente solemos tratar en el diseño y gestión de páginas web es el SEO. Que consiste en la capacidad de posicionarnos lo mas alto posible cuando un usuarios nos busca en los buscadores como Google Yahoo o Bing.

 

Algunos consejos para mejorar el SEO

Para mejorar el seo hay que seguir una serie de normas entre las que podemos destacar:

  • Friendly urls es decir urls que usen palabras y letras formadas por únicamente las letras en minúscula del alfabeto ingles junto con la barra – para separar palabras. Google “prefiere” páginas del tipo: como-crear-una-web, a cosas del tipo: como/crear/una/web, como_crear_una_web, cómo-crear-una-web.
  • El uso de títulos en tus paginas mediante las etiquetas que trae por defecto HTML como son <h1> y el establecimiento de una jerarquía de títulos, es decir tener sólo un título principal con la etiqueta <h1>, varios subtítulos <h2>,  utilizar <h3> para los subtítulos del propio subtítulo etc.
  • La inclusión de URLs para ampliar el contenido, es decir que tu página tenga enlaces tanto internos como externos y no sea únicamente texto.
  • La repercusión social de tus publicaciones como los me gusta de Facebook, las veces que te comparten en Google +, los RT de Twitter y otras interacciones.

Leer más

Microsoft regala 300 libros sobre tecnología

Rompemos un poco el calendario de publicación establecido para informaros de la nueva iniciativa de Microsoft en la cual regalan gran cantidad de libros sobre tecnología. Aunque principalmente está enfocada en sus productos, como Word, Excel, SQL Server o Windows en sus distintas versiones, también hay otros más generalistas.

Biblioteca

Cómo sacarle provecho a los libros

Un ejemplo sencillo es que si tu buscas aprender SQL lo mismo no hay ningún libro que enseñe SQL exacto, pero seguramente si descargas el de SQL Server vaya explicando el lenguaje SQL y elijan como entorno SQL Server lo cual te puede permitir aprender el lenguaje, ya que la base con la que trabajes es más o menos independiente y por lo tanto no te dará muchos problemas.

Los mejores libros

En esta sección voy a destacar los siguientes:

Como os indicamos hay muchos libros y lo mejor será que cada uno entre y vea cuales le interesan. Podéis entrar desde aquí.

Además Microsoft indica que ya se ha pasado el hito del millón de descargas y han publicado un top que es accesible desde aquí.

Actualización: hoy nos hemos enterado de que Microsoft sigue poniendo a nuestra disposición más libros de manera pública y gratuita, que se pueden consultar aquí entre ellos podemos encontrar uno sobre Windows 10, varios sobre Azure (la nube de Microsoft) y uno muy interesante de desarrollo de aplicaciones móviles multidispositivo con Xamarin. Yo me he bajado este último y la verdad tiene una calidad excepcional, más de 400 páginas donde enseñan lo principal, con ejemplos, fotos, diagramas etc.

Desde Somos Binarios esperamos que algunos de ellos os sean útiles y si os enteráis de alguna iniciativa similar, nos podéis informar vía comentarios o redes sociales.

Mejorando los algoritmos: las matemáticas

El otro día hablábamos de cómo crear algoritmos y de la manera en la que deben evolucionar, para ir mejorando su comportamiento. Hoy queremos proponeros un acercamiento más a este mundo de la algoritmia usando como base las matemáticas.

La algoritmia y las matemáticas

La algoritmia como ciencia, está basada principalmente en las matemáticas, ya que son con estas herramientas con las que podemos medir el comportamiento de un algoritmo u orden de un algoritmo. Pero las matemáticas muchas veces aportan grandes recursos para realizar o mejorar algoritmos.

Las fórmulas matemáticas, progresiones o patrones matemáticos, son ampliamente estudiados en matemáticas y en muchas ocasiones se obtienen métodos más o menos sencillos, para calcular exactamente el problema que queremos resolver, sin tener que realizar un cálculo “a ojo” o por “fuerza bruta”.

La suma de los n primeros números

Gauss el matemático que descubrió la fórmula matemática que vamos a utilizar.
Gauss el matemático que descubrió la fórmula matemática que vamos a utilizar.

Gauss, uno de los más importantes matemáticos de la historia, descubrió una sencilla fórmula para sumar los n primeros número de una sucesión, el problema es el siguiente:

Queremos saber cual es la suma de todos los números entre 1 y 100, es decir la siguiente cuenta: 1+2+3+4+5…..+99+100

Hacer la cuenta en papel, tiene su trabajo, pero realizar en un ordenador es muy simple, basta con un bucle for y una variable donde vamos acumulando la suma. Pero y cuando no había ordenadores cómo realizaban este tipo de cuentas, la respuesta es utilizando una fórmula de Gauss:

Gauss pensó, bueno si hago parejas 1+100=101 , 2+99=101, 3+98=101 todas las parejas suman 101 y si hay 100 valores entonces tengo 50 parejas, luego el resultado es 101*50=5050. la fórmula es sencilla:

(A1+An)*n/2  siendo A1 el primer término, An el último, y n el número de casos.

Con esto os invito a buscar, antes de realizar nuestros algoritmos si hay una fórmula exacta con la que obtener directamente la cantidad, pues es el método más optimizado para calcularlo. Si hacemos una pequeña comparación vemos que utilizando la fórmula hacemos 3 operaciones aritméticas, mientras que utilizando nuestro bucle for estamos haciendo más de 100 operaciones aritméticas.

Leer más

Humor en Bits Versión 2.5

AVATARarquitecto

Hoy en “Humor en Bits”  la recopilación semanal de los tweets vistos por la red social de Twitter:

#01 Friki-profesores

#02 FanBoys

#03 Los machos si lloran

Leer más

Cómo escribir código limpio, claro y ordenado

 

Codigo claro limpio y ordenado

 

En este artículo de hoy, vamos a repasar algunos de los conceptos claves para conseguir que nuestro código sea fácil de leer por otra persona ajena a nuestro desarrollo. La pregunta de cómo mejorar la presentación de nuestro código, es ampliamente formulada y no tiene una contestación única pero intentaremos dar una serie de reglas para mejorarlo.

Uso de bibliotecas

Biblioteca

Esta es una de las maneras más sencillas de hacer nuestro código más limpio y ordenado y además nos va a ayudar en gran medida al mantenimiento del proyecto.

El uso de bibliotecas consiste, en que todas las funciones relacionadas con algo en concreto estén en el mismo archivo de biblioteca. Por ejemplo, si parte de nuestro programa, es un sistema contador de tiempos (para medir eficiencias, o cosas así) nuestra biblioteca debería tener, las siguientes funciones:

  • inicializarTemporizador()
  • activarTemporizador()
  • desactivarTemporizador()
  • mostrarTiempo () para mostrar el tiempo transcurrido en un formato HH:MM:SS (horas, minutos y segundos).

Uso de notación CamelCase

La notación CamelCase, que no suele tener una traducción al español, es un tipo de notación que consiste en eliminar los espacios entre las palabras y marcar el inicio de una nueva palabra con una mayúscula. Las funciones del apartado anterior están escritas con notación CamelCase: mostrarTiempo() o calcularTiempoTotal.

Esta notación está muy extendida en programación y es muy recomendable que sea adoptada, con ello evitamos nombres de variables o funciones del tipo: calcular-tiempo-total, calcular-Tiempo-Total y cualquiera que se os pueda ocurrir. Con la notación CamelCase todo el mundo verá el código mucho más limpio y será más fácil entenderlo.

Como curiosidad la notación CamelCase se llama así porque las mayúsculas, nos recuerdan a las jorobas de los camellos.

Leer más

La importancia de un buen algoritmo

 

La importancia de un buen algortimo

 

Hacía tiempo que no dedicábamos una entrada específica relacionada con el mundo de la programación. Hoy vamos a hablar sobre los algoritmos, las distintas maneras de crearlos y los comportamientos de unos frente a otros.

Podríamos resumir el término algoritmia, como la ciencia que estudia los algoritmos, tanto su creación como su análisis. Para conseguir mejoras y seleccionar el más efectivo para cada tarea.

La algoritmia : la base de un buen programa

Muchos usuarios cuando empezamos a programar, utilizamos la típica frase de “lo importante es que funcione”, claro que es importante que el programa funcione. Pero si hay cuatro programas que cumplen con el objetivo, seguramente los cuatro no afronten el problema de la misma manera.

Para resolver un problema, se pueden utilizar múltiples métodos y algoritmos ya creados, aunque normalmente estos los tenemos que utilizar como base para crear nuestro algoritmo. El algoritmo debe ser refinado tanto como sea posible para agilizar el tiempo que tarde en ejecutarse nuestro programa.

Por ejemplo, si partimos de un programa que gestione facturas con unas 1000 líneas de código, no hay que buscar la optimización línea por línea, sino mirar que parte es la que tarda más tiempo, por ejemplo la ordenación y afrontar esta parte del programa, buscando mejorar su algoritmo. Hay algunos algoritmos que son difícilmente mejorables y otros que simplemente no se pueden mejorar, pero la mayoría de ellos suelen tener mejoras muy interesantes.

La creación de un algoritmo : un sencillo problema

Supongamos el problema: quiero que me hagas una lista de los números múltiplos de 4 y de 5 al mismo tiempo que hay en el rango 1-1.000.000

Lo primero que piensa un usuario, principalmente si es novato es utilizar el típico método de fuerza bruta:

#include <stdio.h>
#include <stdlib.h>
 
int main(){
int i;
int flag=0;
    for(i=1;i<1000001;i++){
        if(i%4==0){
            flag=1;
        }
        if(i%5==0 && flag==1){
            printf("%d\n",i);
        }
    }

return 0;
}

Este es el típico ejemplo de “pero si ya funciona, para que lo voy a mejorar”. Lo importante es que este sistema hace 3.000.000 comparaciones, por cada número compara si es múltiplo de 4 y si es de 5 y si cumple las dos condiciones, lo muestra.

Leer más

El Test de Turing ha sido superado

Por primera vez en la historia un terminal informático (más concretamente, un software de inteligencia artificial ejecutado en él) consiguió superar el Test de Turing. Uno de los mayores hitos tecnológicos de esta década, que no ha tenido la repercusión que debería en los medios de comunicación.

El Test de Turing

El Test de Turing (denominado así por haber sido desarrollado por su creador, Alan Turing, el padre de la informática, primero mecánica y luego analógica, así como el no menos padre del criptoanálisis que hizo saltar por los aires las comunicaciones blindadas de los nazis en la Segunda Guerra Mundial) fue creado con un único propósito: determinar cuándo llegaría la tecnología y la inteligencia artificial inherente a ella, a igualar, o cuanto menos a confundir, a la inteligencia del ser humano.

Es una prueba en la que un determinado número de evaluadores situados en una habitación inconexa con la que ocupa un terminal informático con el software IA instalado, mantienen una conversación con dicho software mediante registros de entrada y salida (teclado, pantalla, voz) para comprobar la capacidad de dicho software de responder e interactuar como lo haría una persona de carne y hueso.

Si más del 30% de los evaluadores, al terminar la prueba, constatan y declaran que no han tenido forma de saber si trataban con un ser humano o con una máquina, dicho software habría pasado el Tet de Turing.

El test de turing ha sido superado

Leer más