martes, 14 de diciembre de 2010

Reduccionistas Humorísticos

Los reduccionistas y su humor endemoniado. Agrego un par más de reducciones.

La Sociología se solo Psicología aplicada. La Psicología es solo Biología aplicada. La Biología es solo Química aplicada. La Química es solo Física aplicada. La Física es solo Matemática aplicada. La Matématica es solo Computación aplicada. La Computación es solo Lógica aplicada. La Lógica aplicada es solo Filosofía aplicada. La Filosofía es solo Metafísica aplicada. La Metafísica es solo Misticismo aplicado.

La Sociología es solo Misticismo aplicado, lo que hay en el medio solo son papers, y cuantos papers, ¡y que útiles!

jueves, 18 de noviembre de 2010

Verificar CUIT/CUIL usando el Modulus 11 en Python

Basado en una versión de 10 dígitos de Pablo Canello para el CUIT/CUIL de Argentina en Visual Basic (en la Wikipedia), implementé una versión del algoritmo de control de códigos llamado Modulus 11 en Python.

En el caso del CUIL/CUIT de Argentina el código de contro de un dígito es el último, por ejemplo 8 para 20-29582925-8. De cualquier manera este código se usa en mucho otros lados, ya que fue diseñado para bancos por HP.

#!/usr/bin/python
# -*- coding: utf-8 -*-

def VerificarModulus11(Numero, CodigoUnDigito):
'''
Input en la forma:

Numero="23-34568734" y CodigoUnDigito="7"
o
Numero=2334568734 y CodigoUnDigito=7
'''


if str(Numero) != Numero:
Numero = str(Numero)

x = 0
factor = 2
for c in reversed(Numero):

try:
int(c)
except ValueError:
# not numeric
continue
else:
# numeric
x += int(c) * factor
factor += 1
if factor == 8:
factor = 2
#Calcula el dígito de control.
Control = (11 - (x % 11)) % 11
#Verifica si el dígito de control ingresado
# difiere con el calculado.
return Control == int(CodigoUnDigito)


if __name__ == '__main__':

print '4 OK'
print VerificarModulus11( '20-29582925', '8' )
print VerificarModulus11( 3065876301, '2' )
print VerificarModulus11( 2029582925, '8' )
print VerificarModulus11( 3065876301, 2 )
print '4 Not OK'
print VerificarModulus11( '20-29582925', '7' )
print VerificarModulus11( 3065876301, '3' )
print VerificarModulus11( 2029582925, '4' )
print VerificarModulus11( 3065876301, 1 )

lunes, 8 de noviembre de 2010

Se cayó el sistema: tarjetas de débito duplicadas

En esta ocasión les voy a contar una curiosidad bancaria que me ocurrió. Espero que alguien me pueda explicar que pasó o la información les sea de utilidad para evitar futuras complicaciones.
  1. Pierdo las tarjetas de débito en el recital de Rush.
  2. Cancelo las tarjetas de débito llamando al servicio de denuncia de Banelco. Cancelo 3 tarjetas de débito, una de Standard Bank, una de Patagonia y una del Banco Francés.
  3. A los pocos días llega por correo postal una nueva tarjeta de débito del Banco Patagonia junto con una tarjeta de débito nueva del Standard Bank.
  4. Pruebo las tarjetas y nos funcionan, estaban inválidas.
  5. Luego de algunos días más llega por correo postal un código PIN de Banelco, pero no especifica a que tarjeta pertenece o para que sirve. Yo asumia previamente que las tarjetas nueva se activaban con el primer uso (¿no es inseguro eso?). Ahora parece que mandan el PIN por correo postal aunque no terminé de entender para qué.
  6. Pasan más días y llegan más tarjetas de débito por correo postal. Standard Bank me manda ahora otra tarjeta duplicada de la anterior (?) y una tarjeta extra más con una nota que diciendo "la anterior fue invalidada no la use". Es decir me mandaron en total 3 tarjetas de Standard Bank.
  7. Ninguna de las tarjeta de Standard Bank funcionó.
  8. Voy al Banco Standard Bank y pido una blanqueo de tarjeta para poder usar alguna. Confundida la cajera consulta con un compañero y llegan a la conclusión mirando el sistema que la última tarjeta es la válida, la blanquean y felizmente... ¡funciona!
Mis explicaciones posibles son:
  • El operador de denuncias de Banelco se confundió y me pidió 1 tarjeta de Patagonia y 2 de Standard en vez de una de Patagonia, una de Standard y una de Francés. Luego se dió cuenta y canceló las de Standard y pidió otra para mí.
  • Alguién encontró mi tarjeta débito de Standard Bank antes que yo la denuncie y haciendo algún uso o llamado a algún servicio se la cancelaron y automáticamente mandaron nuevas tarjetas. Este hecho se repitió en dos ocasiones.
  • Es un bug del software de Banelco según el cual si cancelas varias tarjetas al mismo tiempo hay errores. Esta explicación no parece muy plausible porque se supone que sus sistemas estan recontra-probados.
La nota de color curiosa del historia es que la última tarjtea de Standard Bank tiene un color azul un poco más claro que las otras. ¿Será una estrategia del banco para distinguir ediciones de las tarjetas o las tarjetas duplicadas que mandaron son falsas y forman parte de algun estafa (esta es la alternativa conspiranoica)?

martes, 2 de noviembre de 2010

Visualizando Retweets con Sonia

Estuve haciendo unas pruebas con Gephi para visualizar grafos dinámicos de Twitter, en este caso retweets. Con Gephi 0.7beta tuve problemas porque no se puede hacer todo automático (hay que mover el cursor temporal a mano) y además no esta muy estable la característica dinámica.

Finalmente probé con SoNIA 1.2.0 y tuve resultados muy buenos. ¡Excelente herramienta!
  • Nodos: usuarios de Twitter
  • Conexiones: dirigidas, retweets o mensajes reenviados en Twitter, desde emisor a seguidor que reenvia el mensaje
  • 1000 ReTweets (usando Twitter API)
  • Desde Sat Jun 05 2010 19h29m33s hasta 21h20m58s
  • Tiempo total 1 hora 50 minutos aprox
  • Visualización: Sonia 1.2.0
  • Ubicación inicial circular, dinámica tipo resorte
  • Fracciones de tiempo, 2 minutos, duración de los RTs 4 minutos
Observamos:
  • La distribución temporal de RTs/rumor no es uniforme
  • Ídem para distribución de tamaño/difusión del rumor
El próximo paso sería hacer una visualizaciÓn para algun tweet que haya tenido mucha difusión, dado que los tweets que recolecté en esta ocasión son diversos se vé que no llegan mucho lejos, es decir, no se difundieron mucho.

VER EN TAMAÑO GRANDE




viernes, 24 de septiembre de 2010

Huge Graph Manipulation: Symmetrizing a Directed Edgelist Graph

After months of struggling with efficient proccesing of graph on Python, I am starting to use very old tools from the bash command line to process graph. Remember: Always return to the basics.
In this case we want to extract the maximal symmetric subgraph of a directed graph and convert it to it's undirected representation. It is common to work with edge list representation file including one edge per line, without repeated edges.
The idea is to:
  1. Swap directed edges resulting in a lexicographical order for source and destination for each edge. Needed for next step. Using awk tool.
  2. Sort edges to put together symmetric connections, i.e. nodes connected by edges in both directions. Needed for the next step. Using sort tool.
  3. Filter repeated edges. That is, print only edge with more than one ocurrence. Use uniq tool.
cat graph.txt | awk -F'[ ]' '{ if ($1 <= $2) print $1, $2; else print $2, $1 }' | sort | uniq -d > graph.txt.symm

I benchmarked this one line script in my computer (Core 2 Duo 2.66MGz, 1GB RAM) with a LiveJournal social networks involving 77 million directed edges and the result was obtained after 20 minutes: 28 million undirected edges!
The secret behind standard POSIX tools is the correct usage of memory and disk to sort and process files. These tools don't abuse memory nor disk.

viernes, 6 de agosto de 2010

Logo Plagiarism, Facebook, Currency and New World Order (and Illusions)

We continue these logo plagiarism series with a conspiratorial discovery. In this case we noticed that the World Bank logo is very similar to the logo of the newly 2010 data protocol designed by Facebook to take over the Semantic Web arena: the Open Graph Protocol. Watch it by yourself and analyse it, the message is clear, they want to became the most important World Database. Curiously, at the same time Facebook was presenting the Open Graph Protocol, they were also presenting their Facebook currency. Virtual money to be used in games and possibly everywhere via micropayments and mobile phones. For the sake of irony, both logos are known to produce an optical illusion when seen, famous virtual dots in the line-crossings (grid illusion). Read also about the rest of the Facebook plan: The Future of Facebook.

World Bank Logo (by Anonymous banker)
Open Graph Protocol Logo (by Facebook)


Facebook Currency Logo (a.k.a Credits)

lunes, 2 de agosto de 2010

Blogging Deja-vu: Ghost Posts

Is not the first time that a blog post appears in my Google Reader besides being erased in the present time feed. In this case a post by Michael Zalewski, a Security Researcher (upper-case). He is apparently working for Google now, and he was blogging about the relation between the WikiLeaks versus USA affair and the disclosure of security vulnerabilities endless debate. Censorship? Conspiracy? Who knows, in either case mirroring the post is worthwhile due to the relevancy of the writer.

Linguistic deja vu

The New York Times, July 2010 (link):

"Steven Aftergood, head of the project on government secrecy at the Federation of American Scientists, in his blog posting on June 28 accused WikiLeaks of 'information vandalism' with no regard for privacy or social usefulness.

'WikiLeaks must be counted among the enemies of open society because it does not respect the rule of law nor does it honor the rights of individuals,' he wrote."

Scott Culp, October 2001 (link):

"If we can't eliminate all security vulnerabilities, then it becomes all the more critical that we handle them carefully and responsibly when they're found. Yet much of the security community handles them in a way that fairly guarantees their use, by following a practice that's best described as information anarchy.

It's simply indefensible for the security community to continue arming cybercriminals."


domingo, 1 de agosto de 2010

Una invitación crítica a la Web Semántica


Estoy empezando a leer un libro sobre la Web Semántica: A Semantic Web Primer. Con mayúsculas, esa que auguran ávidos comedores de subsidios científicos, prometiendo un futuro de transacciones automáticas, confort y agentes web que nos hacen las compras mientras nos rascamos el ombligo.

Para invitarlos a meterse de lleno en este fantástico mundo que tal vez felizmente desemboque en una web mejorada voy a criticar algunos puntos conceptuales turbios del status quo científico sobre el tema. Espero que esto nos permita luego avanzar hacia una versión mejorada de la web semántica que podremos llamar Web Ergonómica. También la podemos llamar como se nos plazca.
  • Wrappers: programas para extraer información estructurada de datos poco o nulamente estructurados. Ejemplos: Reconocimiento óptico de carácteres, expresiones regulares para extraer precios de comercios online.
    Their functionality is provided by wrappers, programs that extract information from an online store. [..] This heuristic approach is error-prone; it is not always guaranteed to work.
    Entonces los wrappers serían malos porque no son confiables. Tal vez habría que hacer mas precisa la tasa de error y propiedades de los wrappers. Pero no se pueden evitar a menos que querramos obligar a todo el mundo a usar los mismos formatos, de la misma manera, o querramos tirar a la basura todos los datos historicos que tenemos.
  • Hay mucho enfasis (enfatitis?) en B2C y B2C, es decir aplicaciones para el consumidor final e inter-negocios.
    Auctioning, negotiations, and drafting contracts will be carried out automatically (or semiautomatically) by software agents.
    Pareciera como si quisieran que la actividad humana fuera dejada en manos de máquinas, que operarían y vivirían por nosotros, mientras nos dedicamos a interpretar sus interfaces amigables. Esto esta un poco en contradicción con un punto que veremos más abajo, que es la prueba de veracidad de los resultados de la consultas y operaciones.
  • La consistencia como obviedad y requisito primero.
    This [semantic web] information could then be used for context-specific presentation of pages, advanced querying, and consistency verification.
    Ya es difícil meter una misma oración los conceptos de consistencia y presentación dependiente del contexto. Más luego como mantener la consistencia si los repositorios de datos, es decir las fuentes, son heterogéneas y, lo más importante, controladas por sistemas (políticamente) autónomos.
  • Extraña jerarquía de capas. Usualmente cuando se habla de un diseño por capas es para lograr cierta independencia entre características del sistema. Pero no acá. Parecería que el significado es otro. Queremos "downward compatibility of languages", y "partial upward compatibility of languages". Esto básicamente seria que si un interprete de ontología entiende OWL entonces tiene que entender XML, porque OWL esta descripto con XML. Si hacemos una analogía con lenguajes de alto nivel y bajo nivel, esto no seria cierto porque para que un interprete entienda Java no hace falta que conozca el código de máquina abstracta de Java ni el código de máquina Intel (en niveles inferiores). Luego parecería que como diseño de capas no es bueno o realmente no se quiere independencia de los distintos niveles, por ejemplo reglas de deducción y ontologías/categorías.
  • Proof: todas las respuestas son verificables por el usuario, porque todas tiene un desarrollo/deducción lógica de donde vinieron. Puede pasar que la deducción de algo importante sea muy largo e impracticable de verificar a ojo. También puede pasar que sea necesario verificar en sí los elementos de la demostracion per se, de esta manera necesitamos otro sistema IA/web semantico para verificar la verificación y así sucesivamente.

  • Hay un sobre enfasis en seguridad y confianza.
    Being located at the top of the pyramid, trust is a high-level and crucial concept: the Web will only achieve its full potential when users have trust in its operations (security) and in the quality of information provided.
    Esto esta bien por ejemplo para una aplicación financiera, donde no se quiere perder dinero y se quiere que la gente confíe (sino no va a usarla). Otro ejemplo tal vez menos explicito pero mas interesante. Si la gente/sistemas web generan mucha información negativa sobre un jugador de fútbol, más alla de si es bueno o no, esta información puede indicar que el jugador juega en primera división. Es decir también son importantes las propiedades y filtros cuantitativos, (volumen, tiempo) no solamente los filtros cualitivativos (confiable, seguro).

  • Hay un problema más ético de fondo que es la delegación de la responsabilidad sobre decisiones a los agentes web inteligentes. Debería la web asistir al hombre que toma decisiones en vez de la web tomar la decisiones. De alguna manera habría que categorizar que tan abstracta o importante es una decisión para ver si la queremos delegar a una máquina, en vez de por defecto delegar lo máximo o todo. Es decir no todo funciona como dentro de una compañia o corporación comercial con objetivos claros, en esos casos sí es mas facil delegar a una computadora para abaratar costos.
Concluyendo, en mi humilde opinión, tengamos en cuesta más los datos heredados, tengamos en cuenta que apuntamos a un mejoramiento humano del conocimiento sobre el mundo, tengamos en cuenta que la consistencia distribuida es una fantasía, tengamos en cuenta que las capas y estándares son para ganar independencia en vez de lo contrario, tengamos en cuenta la confianza y la seguridad pero es más importante en este contexto la colaboración y las medidas cuantivativas, finalmente modelicemos dentro de este contexto también la cuestión máquina-hombre a la hora de tomar decisiones equilibradas.

En breve espero seguiré escribiendo y críticando conceptos y herramientas de la web semántica. Otros pequeños artículos del blog relacionados son:

jueves, 15 de julio de 2010

The social media fun is over, or Google is sending contacts to Facebook

Welly well, apparently the fun in social media is over. Google is sharing your contacts now with Facebook. There is no chance to separate your friends and family from your co-workers and providers (they are the same?). We will click and accept this unless we understand what is happenning.
  • Obviously, Google has began to surrender part of their social data in this social media fight for audience, within the attention-equals-money economy.
  • Will Facebook take over another arenas such as nanoblogging, online advertising, currency or semantic web?
  • I am most worried about Facebook taking over the electronic government arena. NGOs and democratic dependencies are increasingly using this social site as headquarters for communications and political propaganda, despite the fact that Facebook commonly censors individuals closing accounts.

lunes, 3 de mayo de 2010

The Future of Facebook

Well, my friends, I will post a summary of the main talk at f8, the FB developer conference, that I have just viewed deferred. Basically they comment broadly the evolution of the Facebook API available for apps and how was implemmented the new interconnection with other sites more or less social.
  • New Facebok Input: now the Facebook's partner sites (e.g. CNN and IMDB) can include a open markup called Open Graph Protocol to incorporate a standard semantic reference into the social information. For example sports, celebrities, friends and places can be unified by this structured and extensible information. The important issue to remark here is that Facebook wants to receive as input this social data, that is, they want to process social information from third parties for agregation on their own feeds. For example I recommended an article into my FB feed from CNN's site.
  • New Facebook Output: the same way as FB consumes social content from their strategic partners, these partners will be able with a few little HTML lines to enable social life into their classic, but slightly anti-social websites. That is, now FB will register relations from external sites and this relations will be shown externally also. This is what is called Social Plugins.
  • New API: this is the most interesting area for me as a social network and public information researcher. The new API, called Graph API, is the same but simpler because it uses standards OAuth and JSON. Also access to URLs is more uniformly and clearly available. Something new in the API, I think, are the callbacks for realtime alerts. Also remarkable is the removal of the akward restriction of a 24 hour limit to the API cookies, this was previously bypassed for one user but not for social apps.
  • New Currency: also they are trying to unify their FB dollars, called credits. That is, there will be an only virtual currency in FB, in the future.
  • New policy to share data with third parties: another minor but strategic novelty is the unification of the sharing with third party apps configuration. That is now I am only able to share everything or nothing with any external app, there is no intermediate point. Configuration granularity was lowered, before an item-by-item check-list was available.
Summarizing, FB wants new structured data inputs from third parties, wants to relate socially this third-party data and show the information externally in other domains, FB keeps the same general model in the FB platform/API but making it more fluid and realtime, also wants to unify virtual currrency inside their platform, and reduces abruptly the granularity of user configuration related to third-party access to user data via FB platform apps.

El Futuro de Facebook

Bueno amigos, les hago un resumen de la charla principal de f8, la conferencia para desarrolladores, que acabo de ver por en diferido. Basicamente comentan a grandes rasgos la evolución de la API de Facebook disponible a las aplicaciones y como es la nueva interconexión con otros sitios mas o menos sociales.
  • Nuevo Input de Facebook: Ahora los sitios asociados a Facebook (por ejemplo CNN y IMDB) pueden incluir un markup abierto llamado Open Graph Protocol para darle un valor semántico estandard a la información social. Por ejemplo deportes, celebridades, amigos y lugares pueden estar unificados por esta información estructurada y extensible. Lo importante a destacar en este caso es que Facebook quiere recibir como input estos datos sociales, es decir quieren consumir información social de terceros para agregarla a sus propios feeds. Como ejemplo recomendé un artículo de CNN en mi FB feed desde el sitio de CNN.
  • Nuevo Output de Facebook: de la misma manera que ahora consumirá contenido social de socios estratégicos de FB, estos socios también podrán con pocas lineas de código HTML darle vida social a sus clásicos, y levemente anti-sociales sitios webs. Es decir ahora FB registrará relaciones en sitios externos y estas relaciones se mostraran externamente. Esto es lo llamado Social Plugins.
  • Nueva API: esto es lo que mas me interesa a mi como investigador de redes sociales e información pública. La nueva API, llamada Graph API, es lo mismo pero más simple porque usa los estandares OAuth y JSON. Además los URLs de acceso están mucho más uniformes y claros. Algo nuevo en la API me parece son los callbacks para avisos en tiempo real. También es notable que quitaron la limitación de 24 horas para las cookies de la API, esto podía ser evitada para un usuario pero no para todos.
  • Nueva Moneda: También se unificó el tema de los FB pesos, que son llamados credits. Antes parece que cada aplicación manejaba su propia moneda interna. Es decir, habrá una única moneda virtual en FB.
  • Nueva política de datos para terceros: Otra novedad menor pero estratégica es la unificación de la interfaz de configuración de información compartida con aplicaciones externa. Es decir ahora comparto todo o no compartó nada con una aplicación externa, no hay puntos intermedios. La granularidad bajo, antes era un check-list detallado item por item.
En resumen FB quiere nuevas entradas de datos estructurados de terceros, quiere relacionar socialmente los datos de terceros y mostrar esta información externamente, mantiene el mismo modelo en general de la plataforma FB/API pero lo hace mas fluído y cercano al tiempo real, quiere unificar la monedas virtuales en una sola y reduce notablemente la granularidad de configuración en el acceso a datos de para aplicaciones de su plataforma.

Libre comercio y redes complejas

Parece que finalmente se empezaron a estudiar las propiedades estadísticas de las redes de comercio: Characteristics of Real Futures Trading Networks. En este caso, unos investigadores chinos publicaron un artículo sobre redes de comercio de futuros en una bolsa de comercio. Para bajar el artículo ver la entrada en arXiv (fue enviado para referato a la revista Physica A).

Puedo destacar que se observan en las distribuciones estadísticas, por ejemplo de grados, carácteristicas de tipo ley de potencias. Estas carácteristicas las veniamos observando en redes sociales y otras redes complejas como ser las de Internet, aeropuertos y reacciones bioquímicas.

Veamos un ejemplo de los investigadores chinos.

Lo interesante en estos casos económicos es que estas distribuciones aparecen porque no hay un límite a la cantidad de operaciones que pueden realizar los agentes. Igual hay que observar que se perdió un poco de información en el análisis del artículo porque usaron grafos no dirigidos/no orientados cuando en realidad las operaciones de compra y venta son dirigidas, no son simétricas.

Es importante comentar que en caso de intercambios comerciales las reglas de juego son artificiales, al igual que en los servicios de redes sociales. Es decir, se puede decir que surgen patrones determinados solamente frente a determinadas reglas de juego económicas. Entonces se plantea que estas leyes de potencias en las curvas (ver abajo) indican desigualdades económicas que pueden ser distintas en otros sistemas económicos.
Lo que puede variar es el exponente de la curva potencial o podría aparecer otro tipo de distribución. Por ejemplo alguién podría especular que la cantidad consumidad de cierto producto, por ejemplo pasta de dientes, sigue una distribucion distinta a la pontencial (por ejemplo gaussiana o Gamma). En este último caso tal vez no tendríamos un mercado líquido, ya que hay una limitación supuesta en la cantidad de veces que la gente esta interesada en lavarse los dientes y en acumular pasta de diente en sus despensas.

Para terminar, algo muy curioso que pusieron en el artículo Desigualdad en los ingresos de Wikipedia es:
Tanto en términos utilitarios como ético-morales, existe polémica por determinar si la existencia de la desigualdad económica es un fenómeno positivo o negativo.

domingo, 4 de abril de 2010

Basic privacy queries in Facebook and Argentina using Tuplets

I included some basic but interesting features on Tuplets in these days:
Read the tutorial for the complete list of external tuplets available!

(photo extracted from here, copyright Ryan Etter)

lunes, 22 de marzo de 2010

Cloudlight and Facebook friends privacy

I wanted to present Cloudlight, another experimental framework for analysing complex graphs and collecting graph data. It extends NetworkX, a wonderful Python library. As an example the following graph node is able to retrieve Facebook friends and Facebook complete names. You need just python-mechanize to test FacebookNode.friends(). The original source is here.

Disclaimer: Don't abuse otherwise your Facebook account will be banned as usual.


First I show you an example using FacebookNode. You need the complete Cloudlight, or just Networkx and only FacebookNode.

############################################################################
from cloudlight.src.nodes.facebook import FacebookNode
from networkx import Graph
# or from cloudlight.clasess.graph import Graph

FacebookNode.initialize({}, 'mail_for_facebook_login',
'password_for_facebook_login', False)

node = FacebookNode(1151613578)

node.grab_user_details()
print node.name

g = Graph()
node.visit_friends(g, 2)

print map(lambda x : x.name, g.nodes() )

g2 = Graph()
node.visit_friends(g2, 5000, False)

print map( lambda (x,y): (x.id, y.id), g2.edges() )
############################################################################

jueves, 18 de marzo de 2010

BlueHat Security Briefings: Buenos Aires 2010

I will brieftly comment my technical highlights of the BlueHat Security Briefings hosted at Buenos Aires today. This conference is organised by Microsoft and for the second time is hosted outside United States. The reason why is located here is that Core Security Technologies and the Ekoparty Security Conference assistants are collaborating a lot to the international computer security community.

Some personal highlights:
  • Anchies Moraes Guimaraes noticed that there is little interaction between the Brazilian and the Argentine security research communities. I agree with that, there is no Southamerican conference or community effort in that direction yet.
  • Mark Curphey made a very attractive presentation on how he entered Microsoft to evolve the processes related to security involved in software development, particularly Agile Methodologies and Secure Architectures. He mentions also some funny Software Patterns related to security described on an article called Big Ball of Mud.
  • Chris Hoff replicated a previous talk from another conference, focusing on surveying Cloud Computing Models and Security. I take notes on an attack he mentioned involving VMotion subversion, that is, virtual machine migration attacks.
  • Nelson Murilo discussed a survey on mobile devices security. I take notes on a simple attack that took my attention, involving smartphone's Safari browser and auto dialing to consume resources.
  • Peter Varangot made a very insightful presentation on OSINT and Social Networks Infiltration. We are working on a new version of Exomind, a little framework in those directions.
  • Felix Linder also made a survey but in this case related to embedded devices inside companies. Most remarkable he pointed to research on the security of routers and printer machines.
  • The Discussion Panel of various Southamerican experts was very interesting also, including old school and new security researchers and managers.
Happy Conference Networking!

Detailed Schedule:

Keynote: The Evolution of TrustWorthy Computing – Towards a Safer, More Trusted Internet and
Hackers & You: Panel discussion
Keynote and Panel Moderator—Andrew Cushman (Senior Director, TwC Security, Microsoft) + Various Guests of the Security Community

The Vulnerability Market: A Latin American Perspective - Anchises Moraes Guimarães
de Paula (Latin America Threat Intelligence Analyst, iDefense) & Kristen Dennesen (Intelligence Analyst and Deputy of the International Cyber Intelligence Team, iDefense)

State of the Art Automation of Open Source Intelligence and Impersonation in Social
Networks - Pedro Varangot (Security Researcher, Corelabs)

The Whole Nine Years (of Web App Security) - Mark Curphey (Product Unit Manager,
Microsoft)

Cloudifornication: Indiscriminate Information Intercourse Involving Internet
Infrastructure - Chris Hoff (Director of Cloud and Virtualization Solutions, Data Center Solutions at Cisco Systems)

Your Other Network - Felix 'FX' Lindner (Head of Recurity Labs)

[S]erious [M]obile [S]ecurity, is there such thing? - Nelson Murilo (YSTS Co-founder)


Behind-the-Scenes of the Microsoft Security Response and Engineering Centers
Mike Reavey (Director of Microsoft Security Response Center, Microsoft) & Damian Hasse (Principal Security Development Manager, Microsoft)

Lightning Talks - Various attendees

Update (2010-03-19): detailed schedule added!

lunes, 15 de marzo de 2010

Proxy regional para Twitter [Idea]

Estaba pensando que aprovechando este impulso que tomó en los últimos años la información abierta y el conocimiento libre en Internet y para fomentar un poco la industria informática local podríamos implementar un proxy local de acceso a Twitter. Propongo esta tecnología por:
  • su sencillez;
  • tiene una política de acceso automático bastante activa mediante APIs (Twitter API) porque es parte de su negocio (igual todavía no saben bien como ganar plata);
  • y porque por defecto todas las cuentas de los usuarios son abiertas.
También hay que agregar que no pude encontrar todavía una sección de tendencias locales (trends) centrada en Argentina lo cual me puso muy triste. Esto significa que todavía no tenemos un pie tan firme en la Internet como país.
Los beneficios podrían ser:
  • extraer tendencias locales para Argentina y otro países de mediano o pequeño Internet foot-print;
  • tener bases de datos que sirvan para los investigadores y emprendimientos locales;
  • generar conciencia de que los servicios informáticos son elementos centrales de la economía actual y que su soberanía tiene que ser defendida en Argentina y cualquier otro país independiente o que se precie de ello;
  • y también fomentar a los programadores locales o regionales a replicar y mejorar las tecnologías y servicios existentes.
¿¡Quién se suma al proyecto!?

viernes, 12 de febrero de 2010

BitlyFS: Another Filesystem Abusing a URL Shortener

It has been a while since I notice the existence of GmailFS and I also wanted to use FUSE (File System in Userspace) to implement some parasitic storage on Internet free services. Parasitic storage is explored in detail in Zalewski's book and is a very new field in security research. Check this paper for an academic research effort on this field. After reading Mario Vilas's post on URL shorteners fun I decided to experiment abusing URL shorteners. I also notice that the Bitly service provides custom URLs, a valuable feature when encoding data to be stored. Mario also implemented a file uploaders abusing storage on TinyURL and ITO.mx and rfreebern also implemented a multiple URL shortener parasitic uploader on PHP. Aparrently, TinyDisk was also released on 2005 to abuse TinyURL, but as everyone notices the implementation is not available now. So let's roll our own implementation!

I decided to use Bitly's custom short url to avoid the use of local storage of short url for each data chunk. My Python prototype code using FUSE wrapper is based on pyraid and only supports one file, read-only.. Then the first time you mount the filesystem you specify that you are uploading the file, next time anyone with the correct key can mount the filesystem and read the file as long as they have access to the Internet. I use base64 encoding for the false URLs containing the data chunks and MD5 hashes for the custom URLs. Base64 encoding 768-byte chunks leads to 1024 bytes of base64 data in the false URLs. I also tried with 2KB with negative results.

http//example.com/IFdlIHNlZWsKYWZ0ZXIga25vd2xlZ... data to complete 1024 base64 bytes...

Something remarkable of Mario's implementation on ITO.mx is that he uses a chain of short urls to encoded the file. In my case, I hash the filename, the sequential chunk number, the chunk size and the access key to generate the custom short urls. This is desirable because as I wanted to implement a transparent filesystem you may want to seek any file offset an read data from there. TinyURL chunks can be much bigger as our implementation using Bitly is very slow.

Installation (tested on Ubuntu Linux):

$ sudo apt-get install python-fuse
...
$ wget http://www.mechpoet.net/mechpoet_files/bitlyfs.zip
# unzip bitlyfs.zip
...

Example usage storing conscience.txt:

$ cd bitlyfs
$ mkdir mountpoint
$ ./bitlyfs-mount.py --initialize --mount-point mountpoint --key secret conscience.txt
full url:
http://bit.ly/?url=http%3A%2F%2Fexample.com%2FMzg4MQ%3D%3D&keyword=6183ae8f1346fe63dde36a5e844ac967
block count: 0 of 5
block_id dcc83fb03f3bc05b712e3b5ad95370aa
full url:
http://bit.ly/?url=http%3A%2F%2Fexample.com%2FRmlsZTogYXJjaG ...
...
(in another shell test differences)
$ ls -l mountpoint/conscience.txt
-r--r--r-- 1 root root 3881 1969-12-31 21:00 mountpoint/conscience.txt
$ diff conscience.txt mountpoint/conscience.txt
$ cat mountpoint/conscience.txt

After the file is uploaded then you can mount anywhere the filesystem to access it. For example you can access a photo I stored using the default key without any initialization.

$ ./bitlyfs-mount.py -m mountpoint pibito.jpg &
$ gimp mountpoint/pibito.jpg

Future steps should include using custom URLs to reference URL shorteners with larger supported URL size, to achieve realtime reproduction of MP3! Bitly Underground Radio!

Source code:

http://code.assembla.com/bitlyfs/subversion/nodes

viernes, 8 de enero de 2010

Análisis de políticos usando buscadores web y grafos

Esto es algo viejo que hice hace un par de años pero lo publico porque es interesante y me acordé cuando estaba mirando el proyecto Ensamblea Matanzas - Riachuelo. Estaba probando la generación de grafos sociales usando buscadores web y distancia de datos en minería web, en particular la Distancia Normalizada de Google (Normalized Google Distance). Entonces para armar algun ejemplo interesante como estaban las elecciones presidenciales del 2007 proyecté los grafos de los candidatos presidenciales en algunos temas de discusión candentes en ese momento o clásicos de cualquier canditatura presidencial argentina.

Aca les muestro los ejemplos más interesantes que fueron el tema derechos humanos y el tema INDEC. Otros temas son confusos porque aprecen demasiados enlaces, casi todos con todos. Si aparece un enlace entre dos nodos/candidatos significa que ese momento aparecieron junto a ese tema de discusión en algunas páginas web. Por ejemplo: "CandidatoA y CandidatoB opinaron sobre derechos humanos". El tamaño de los nodos y de los enlaces depende de cuantas veces hayan aparecidos juntos y separados y de las medidas elegidas, en este caso la NGD.

(hacer click para ver en tamaño grande)