Ver Mensaje Individual
  #15 (permalink)  
Antiguo 10/03/2007, 15:12
gNexus
 
Fecha de Ingreso: marzo-2007
Mensajes: 2
Antigüedad: 17 años, 1 mes
Puntos: 0
Información Re: Encriptar todo el codigo php

Para nada Hermano si el ignorante soy yo! no hay problema!, pero por todas partes en el hilo hablan de encriptar y ofuscar lo mencionas tu aunque en tu primer enlace la direccion es w.w.w.hackingballz.com/encriptar_codigo_php claramente encriptar codigo.. despues corregiste w.w.w.hackingballz.com/ofuscar-codigos-fuentes pero la verdad que las personas de esta pagina(hackingballz) no tienen claro los conceptos porq ese algoritmo encripta no ofusca ni una sentencia.

Y para aclarar explico..


Ofuscacion

La Ofuscacion se refiere al encubrimiento del significado de un codigo haciendo este mas confuso y complicado de interpretar.
Asi que el codigo ofuscado es aquel codigo que, aunque se tiene el codigo fuente, ha sido enrevesado específicamente para ocultar su funcionalidad (hacerlo ininteligible).

Ejemplo:
Si corre o no este ejemplo no se.. lo copie de php.net a manera de ejemplo..

----------------------------------------------------------------------------
<?php
conectarbd();

$consulta = mysql_query("SELECT id, nombre FROM mitabla");

while ($fila = mysql_fetch_array($consulta, MYSQL_NUM))
{
printf("ID: %s Name: %s", $fila[0], $fila[1]);
}

mysql_free_result($consulta);

//Esta funcion conectara a la base...
function conectarbd()
{
mysql_connect("localhost", "yo", "qazwsx") or
die("No se puede conectar: " . mysql_error());
mysql_select_db("mibase");
}
?>
----------------------------------------------------------------------------

Ofuscacion..

----------------------------------------------------------------------------
<?php mysql_connect("localhost", "yo", "qazwsx") or die("No se puede conectar: " . mysql_error()); mysql_select_db("mibase"); $R679E9B9234E2062F809DBD3325D37FB6 = mysql_query("SELECT id, nombre FROM mitabla"); while ($R77D05547AC7F60CE4A3A9737E8BE088F = mysql_fetch_array($R679E9B9234E2062F809DBD3325D37FB6, MYSQL_NUM)) { printf("ID: %s Name: %s", $R77D05547AC7F60CE4A3A9737E8BE088F[0], $R77D05547AC7F60CE4A3A9737E8BE088F[1]); } mysql_free_result($R679E9B9234E2062F809DBD3325D37FB6); ?>
----------------------------------------------------------------------------

En este pequeño ejemplo la ofuscacion consistio en encriptar(ojo!) los nombres de las variables y las funciones, quitar espacios en blanco y comentarios. Si tienes muchos huevos podrias llegar a hacerlo legible nuevamente porque la logica del codigo se encuentra aun ahi!. Claro que en un algoritmo de 800 lineas utilizando objetos funciones.. etc resultaria mas facil ponerse a programar de cero que gastar tiempo tratando de analizar el codigo..

Un ejemplo en C de ofuscacion es la siguiente linea:

(((!(int_-int_)<<!(int_-int_))<<(!(int_-int_)<<!(int_-int_)))|(!(int_-int_)<<!(int_-int_)));

ESTO EQUIVALE A PONER 10 OCUPANDO LAS PALABRAS RESERVADAS DEL LENGUAJE. ESTO PARA EL COMPILADOR ES TOTALMENTE LOGICO.. PARA UN SIMPLE MORTAL HAY QUE TENER HUEVOS..

Encriptacion- criptografia- cifrado.

En cambio la criptografia es una ciencia! Y su concepto segun libros y algunas pagina web es:

El termino encriptacion es traduccion literal del ingles y no existe en el idioma español. La forma mas correcta de utilizar este termino seria cifrado.

La encriptacion hace uso de diversas formulas matematicas con el proposito de transformar el texto plano en un criptograma el cual es un conjunto de caracteres que a simple vista no tiene ningun sentido para el lector. La mayoria de los metodos de encriptacion utilizan una clave como parametro variable en las mencionadas formulas matematicas de forma que a pesar de que un intruso las conozca, no le sea posible descifrar el criptograma si no conoce la clave, la cual solo se encuentra en posesion de las personas que pueden tener acceso a la información en cuestion. Algunos metodos utilizan incluso dos claves, una privada que se utiliza para la encriptacion y otra publica para la desencriptacion. En algunos metodos la clave publica no puede efectuar la desencriptacion o descifrado, sino solamente comprobar que el criptograma fue encriptado o cifrado usando la clave privada correspondiente y no ha sido alterado o modificado desde entonces.

Ahora bien el Algoritomo Base 64 es un sistema de numeracion posicional que usa 64 como base (del colegio aquellos ejercicios horribles!.. de cambiarle la base a un numero!! :). Es la mayor potencia de dos que puede ser representada usando unicamente los caracteres imprimibles de ASCII. Esto ha propiciado su uso para codificacion en correos electronicos problemas como este. Todas las variantes famosas que se conocen con el nombre de Base64 usan el rango de caracteres A-Z, a-z y 0-9 en este orden para los primeros 62 digitos, pero los símbolos escogidos para los últimos dos digitos varian considerablemente de unas a otras.

DE LA PAGINITA: hackingballz.com/ofuscar-codigos-fuentes

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

<? eval(gzinflate(base64_decode('
RVBdS8MwFH220P9wCRNSGJ2+bnN90ArCNtHpg8go
aXtLA2nTJimziv/dpK3bS7jcnHu+os06asrG9zJZ
Y2aYSnMarHzP92Z2ozthGNxB1etWJG2HqqfkEG/j
+zfg+RxqWaUK4fH1eQcVNywVjIzXp5ILBDoruLgQ
FGiyMmFKsZ6e6eew+zi8bJP9+y4IwPd+fA8AGsVr
U1Dy9LCEaw2wZxW6icxh4Py8Of5Pt8dgZe9+neyk
oxAThY7+ojP6WixibSMVXZ1xWUMmp9gMGFinKdMY
hqHvOYAZEZdeBnNXo4bduw9KhMyYKKU21hrppXtb
9n3SXyQAqYYwOUdK9hI0QtNhjmfSJRAIp3JQKalo
4GxOEhqFRSV5SknFnbOhW5sz2sA6+gM=
'))); ?>

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

Y bien este esto es lo que obtenemos de cifrar(encriptar) el codigo de php del primer ejemplo aquí no hay logica no se ve por ningun lado todo esta encriptado mediante un algoritmo reversible como lo es Base 64, podrias ocupar algoritmos no reversibles como los hash aunque habria que utilizar un mecanismo de comparacion mas algunas argucias y no una desencriptacion como tal, pero esto no viene al caso.

Los Caracteres “+” y “/” pueden ser los 2 ultimos caracteres que les da php a la funcion base64_encode(); aparte de eso la encriptacion fue compactada o comprimida gzdeflate(); para que la encriptacion no fuera muy grande.


Programas pagados.

Ahora bien hay una gran variedad de programas pagados y propietarios en su mayoria que ofuscan y encriptan, sean estos: zend safeguard, IONCUBE, sourceguardian... etc que nos dan, no solo, una simple solucion de ofuscado y encriptado sino limitacion del codigo para poderlo ejecutar nada mas en un dominnio dado o por un grupo usuarios etc.. O mediante licencias y claro para poder hacer todo esto, el programas necesita instalar en el mayor de los casos librerias en el servidor para que todo lo que ofrecen se cumpla. Claro está, que si no albergas tu sitio en un servidor propio sera muy dificil que un hosting de pago acepte el instalar esas librerias es su servidor eso sin nombrar los hosting gratuitos... casi imposible.

Asi que la mejor opcion seria tener un programa medianamente bueno para ofuscar y luego el codigo ofuscado encriptarlo con alguna pagina de la gran variedad que hay por ahi, que hacen esto de forma gratuita.

A todo esto el porque querer encriptar u ofuscar o ambas, codigo PHP siendo este GPL que la licencia puede tener sus variaciones en cada pais no lo dudo pero el fin es el mismo que se basa en la redistribucion y utilizacion del codigo.. tienes el derecho de autor pero no el total sobre tu codigo.. y de esa forma es como la comunidad subsiste viendo las buenas ideas y los malos habitos de programacion de otras personas asi es como algunos se hacen buenos programadores por no decir la mayoria..

Pero por lo que comenzo este hilo es por la seguridad del codigo PHP me imagino que cuando decidimos encriptarlo y demas.. es porque andamos en el negocio de desarrollo de software no niego que las veces que ofusque codigo fue para crear dependencia de un cliente por la mala fe de este al no querer pagarme y demas cosas... esto es un mal negocio, de mi parte ahora soy mas precavido ya que es una Mier!coles.. el trabajar doble corrigiendo, actualizando y a la vez tener que ofuscar.. encriptar.. si el codigo PHP esta desnudo para eso para corrigir y actualizar al paso y no preouparce del resto.

Aquí les dejo un sensillo ofuscador php..
w.w.w.raizlabs.com/software/phpobfuscator/


gNexus
El Salvador - Centro America.


ciao.

Última edición por gNexus; 10/03/2007 a las 18:17