tag:blogger.com,1999:blog-50876896380669869722024-02-21T01:05:10.287-08:00TheMr's HouseAnonymoushttp://www.blogger.com/profile/05721004032567344791noreply@blogger.comBlogger4125tag:blogger.com,1999:blog-5087689638066986972.post-51340395509736183032015-06-28T20:16:00.000-07:002015-06-28T20:24:10.471-07:00[RFID] Comprendiendo su funcionamiento<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial,Helvetica,sans-serif;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigNKf5_w61VVc7G9n9gohM1s0rC5Xf1L_YQ61FwEt2YXEwI1LrzC2I3gXBVb1ufw7TjvOo86kKnnYyG0hqXilJ5LiO7PIMnZvP9n-EAAp0Jc987UU3PFjzIoV-DzcYBLdZQAteoNOZSg/s1600/RFD_02-512.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigNKf5_w61VVc7G9n9gohM1s0rC5Xf1L_YQ61FwEt2YXEwI1LrzC2I3gXBVb1ufw7TjvOo86kKnnYyG0hqXilJ5LiO7PIMnZvP9n-EAAp0Jc987UU3PFjzIoV-DzcYBLdZQAteoNOZSg/s320/RFD_02-512.png" width="320" /></a></span></div>
<br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br /></span>
<br />
<h3>
<span style="font-family: Arial,Helvetica,sans-serif;">
¿Qué es?</span></h3>
<span style="font-family: Arial,Helvetica,sans-serif;">Por sus siglas <i>Radio Frequency Identification, </i>es un sistema que mediante tarjetas o tags con un circuito interno y un lector para estas, realiza una comunicación que, a menudo, se usa para realizar inventario de productos o (lo que nos interesa realmente) autenticación en sistemas, por ejemplo, de transporte público como el metro.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Todo esto se hace de manera inalámbrica, pero también existen varios tipos tags, están los <b>pasivos</b> y los <b>activos</b>, los activos tienen una fuente de poder propia y tienen mucho más alcance que el primero, por el contrario, los pasivos usan la energía del lector para realizar la comunicación, entre estos<b> </b>se encuentran las tarjetas de transporte público.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br /></span>
<br />
<h3>
<span style="font-family: Arial,Helvetica,sans-serif;">¿Cómo es una tarjeta?</span></h3>
<span style="font-family: Arial,Helvetica,sans-serif;">En este caso hablamos de tarjetas del tipo <i>Mifare Classic</i>, de éstas hay dos tipos, las de 1K y las de 4K, con K nos referimos a kilobytes, osea que las de 1K almacenan 1024 bytes de datos.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">En ambos casos las tarjetas se dividen por sectores, los sectores, a su vez, se componen de bloques, los bloques en ambos casos se componen de 16 bytes.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: Arial,Helvetica,sans-serif;">Las tarjetas de <b>1K</b> contienen 16 sectores, y cada sector contiene 4 bloques.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Las tarjetas de <b>4K</b> contienen 40 sectores, los primeros 32 sectores contienen 4 bloques, los otros 8 sectores se componen de 16 bloques.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: Arial,Helvetica,sans-serif;">El bloque 0 del sector 0 contiene información como el UID, BCC, e información del fabricante, de la siguiente manera.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqIJS9jZnmI42RkwxEM-tEukQaa0P7ZZhV9P61XwpUm5k-sdn6AdWwqWAbwFT4eL1l3nAdHTTHx9Ctvpl0gxAY6wZGWUuzf3hEDbMVlPuPmu9DKDEkLz80HzWROJnwvGDJUdK3nLTm-A/s1600/Rfid.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="70" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqIJS9jZnmI42RkwxEM-tEukQaa0P7ZZhV9P61XwpUm5k-sdn6AdWwqWAbwFT4eL1l3nAdHTTHx9Ctvpl0gxAY6wZGWUuzf3hEDbMVlPuPmu9DKDEkLz80HzWROJnwvGDJUdK3nLTm-A/s400/Rfid.png" width="400" /></a></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: Arial,Helvetica,sans-serif;">El último bloque de cada sector es llamado <i>trailer, </i>contiene la <b>Key A</b> en los primeros 6 bytes, El <b>Access Bits</b> en los siguientes 4, y los últimos 6 contienen la <b>Key B</b>, con esto se da por entendido que cada sector tiene 2 claves, por lo mismo una sola tarjeta se puede usar en varios servicios, donde cada servicio usas sectores diferentes y sólo pueden modificar los sectores de los que conozcan las claves.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><i><br /></i></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5AU3YdIdJv_akR96yXlNlEkD-p2lAECU7Mub7qaD6s5_iYrvQlhAlyHwt_nDCGcgUZzTgttC6UrzIHS73hmsRSOK0uRhAZS-fPyj0kE2_eCuGYhxSBWYMdIHJ2WwV6q94r2pt5413GQ/s1600/Trailer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="70" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5AU3YdIdJv_akR96yXlNlEkD-p2lAECU7Mub7qaD6s5_iYrvQlhAlyHwt_nDCGcgUZzTgttC6UrzIHS73hmsRSOK0uRhAZS-fPyj0kE2_eCuGYhxSBWYMdIHJ2WwV6q94r2pt5413GQ/s400/Trailer.png" width="400" /></a></div>
<br />
<h3>
<span style="font-family: Arial,Helvetica,sans-serif;">¿Cómo se comunican lector y tarjeta?</span></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6izxIZ9Yv3_5rsLF3P9KA_MEZLY0Yi8dPl6qOrpbKOHEBG1Obq9eSDt76y3jHFvXnSYVr8IsXlqmxMszJb2SgKs_c76vNloXFsTAfH8u1O4tNRfSTtrKfF4gkjZ2Cdkwxj0YDbg-htQ/s1600/Comunicacion.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6izxIZ9Yv3_5rsLF3P9KA_MEZLY0Yi8dPl6qOrpbKOHEBG1Obq9eSDt76y3jHFvXnSYVr8IsXlqmxMszJb2SgKs_c76vNloXFsTAfH8u1O4tNRfSTtrKfF4gkjZ2Cdkwxj0YDbg-htQ/s320/Comunicacion.png" width="299" /></a></div>
<span style="font-family: Arial,Helvetica,sans-serif;">Las tarjetas usan cifrado en su comunicación, específicamente crypto-1, entonces para realizar la lectura de una de estas tarjetas debe haber un sistema de autenticación, ésta se produce en varias faces, en la primera face el lector le comunica a la tarjeta que desea leer el X sector, luego la tarjeta envía 32 bits que deberán ser cifrados con la clave privada anteriormente conocida, luego la tarjeta devuelve 64 bits, donde envía 32 bits de la respuesta cifrada, y los otros 32 bits para que la tarjeta los cifre, por último el lector envía la respuesta cifrada para que finalmente se genere la autenticación.</span><br />
<hr />
<span style="font-family: Arial,Helvetica,sans-serif;"><b>Fuentes:</b></span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><b><a href="http://www.nxp.com/documents/data_sheet/MF1S503x.pdf" target="_blank">http://www.nxp.com/documents/data_sheet/MF1S503x.pdf</a></b></span>Anonymoushttp://www.blogger.com/profile/05721004032567344791noreply@blogger.com0tag:blogger.com,1999:blog-5087689638066986972.post-90127623225708906202015-04-20T02:16:00.000-07:002015-04-20T04:14:25.995-07:00[HttpComponents-Client] Realizar peticiones http con JavaEs muy común que mientras estamos programando algún script nos encontremos con la necesidad de realizar una petición a alguna <i>página web </i>ó a una <i>web api</i> para obtener información de ella, en Java tenemos varias soluciones a este problema, las librerías nativas de Java nos ofrecen la librería <a href="http://docs.oracle.com/javase/7/docs/api/java/net/package-summary.html" target="_blank">java.net</a>, pero en esta ocasión trataremos una librería externa creada por <a href="https://www.apache.org/" target="_blank">Apache</a> llamada <a href="https://hc.apache.org/httpcomponents-client-ga/" target="_blank">HttpComponents Client</a>.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-J-94p1vuHVhFG9aHqerSvO0HRDTAn16PYF8cjnb7oqDKR1RvHE5m0CMamXIe7bUbnrPCffTvSv2YXsbcUM-9RKvy9i2_dLYo5mUE_VWhXNPbCbBPi2M8Yc-x_4G6Y_jmJNgwOzoNVw/s1600/httpcomponents.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-J-94p1vuHVhFG9aHqerSvO0HRDTAn16PYF8cjnb7oqDKR1RvHE5m0CMamXIe7bUbnrPCffTvSv2YXsbcUM-9RKvy9i2_dLYo5mUE_VWhXNPbCbBPi2M8Yc-x_4G6Y_jmJNgwOzoNVw/s1600/httpcomponents.png" /></a></div>
<br />
Como es común con los productos de Apache tienen muy buena documentación, pero en este post trataré de explicarlo de una manera más sencilla.<br />
<br />
La librería puede obtenerse por <a href="https://hc.apache.org/downloads.cgi" target="_blank">descarga directa</a> o por el <a href="http://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient" target="_blank">repositorio de Maven</a>.<br />
<br />
<span style="font-size: x-large;"><b>Petición GET</b></span>
<br />
Para comenzar creamos una clase llamada <i>Peticiones</i> para poner ahí los métodos que usaremos para crear las peticiones, inicialmente haremos una petición GET a example.com e imprimiremos el resultado en consola, para ello creamos un método de tipo <i>String</i> llamado <i>httpGetSimple </i> que llevará como argumento la url.<br />
Para realizar una petición simple necesitamos una instancia de <i>HttpClient</i>, que como su nombre lo indica es el cliente para realizar las peticiones al que podemos agregar una configuración, por ahora no lo haremos entonces instanciaremos con <i>createDefault</i>.<br />
<pre class="brush: java">HttpClient httpClient = HttpClients.createDefault();</pre>
Luego instanciaremos un <i>HttpGet</i> que es el que contendrá nuestra petición en cuestión.<br />
<pre class="brush: java">HttpGet httpGet = new HttpGet(url);</pre>
Ahora declararemos un <i>HttpResponse</i> en que almacenaremos la respuesta de la petición, y con el método <i>execute </i>del cliente para obtenerla.<br />
<pre class="brush: java">HttpResponse httpResponse = httpClient.execute(httpGet);</pre>
Finalmente el HTML de la respuesta la obtenemos con la ayuda de <i>EntityUtils </i>con su método <i>toString</i>.<br />
<pre class="brush: java">String source = EntityUtils.toString(httpResponse.getEntity());</pre>
Quedando sí nuestro código.<br />
<pre class="brush: java">public String httpGetSimple(String url){
String source = null;
HttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(url);
try {
HttpResponse httpResponse = httpClient.execute(httpGet);
source = EntityUtils.toString(httpResponse.getEntity());
} catch (IOException e) {
e.printStackTrace();
}
return source;
}</pre>
<br />
Ahora creamos una instancia en nuestro <i>main</i> a la clase <i>Peticiones</i> y ejecutamos <i>httpGetSimple</i> para imprimirlo, así:<br />
<pre class="brush: java">public static void main(String[] args) {
Peticiones peticiones = new Peticiones();
System.out.println(peticiones.httpGetSimple("http://www.example.com/"));
}</pre>
<br />
Y nos devuelve:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0KHp2P-3zaoyCUNvXPzLbjIlk-04pzqeSbFL-yn_CBZpk6IKYLeuwj3nej51sjz_sbaF6DUETuav4KFmAl3PdKWV7MorpTJJr8HNtdDD-g_nzLjOtnIrIACdRflJUuK34dGsnCpZKPg/s1600/Screenshot_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0KHp2P-3zaoyCUNvXPzLbjIlk-04pzqeSbFL-yn_CBZpk6IKYLeuwj3nej51sjz_sbaF6DUETuav4KFmAl3PdKWV7MorpTJJr8HNtdDD-g_nzLjOtnIrIACdRflJUuK34dGsnCpZKPg/s1600/Screenshot_2.png" height="179" width="320" /></a></div>
<br />
<span style="font-size: x-large;"><b>Petición POST</b></span><br />
Aquí configuraremos el cliente de la misma forma y aunque en este caso podríamos usar la clase <i>HttpPost</i>, usaremos <i>RequestBuilder</i>.
Primero crearemos un método llamado <i>httpPostSimple</i> que llevará como argumentos la url y otro con argumentos ilimitados para recibir los parámetros.
<br />
<pre class="brush: java">public String httpPostSimple(String url, NameValuePair...parametros){
}</pre>
<br />
<i>NameValuePair</i> es la clase usada por la librería para guardar parametros para las peticiones, su uso es de la siguiente manera:
<br />
<pre class="brush: java">NameValuePair valuePair = new BasicNameValuePair("nombre", "valor");</pre>
<br />
Creamos una instancia del RequestBuilder de la siguiente manera:
<br />
<pre class="brush: java">RequestBuilder requestBuilder = RequestBuilder.post().setUri(url);</pre>
<br />
Ahora pasamos los parámetros al builder y luego "buildeamos" en una <i>HttpUriRequest</i>
<br />
<pre class="brush: java">for(NameValuePair parametro:parametros)
requestBuilder.addParameter(parametro);
HttpUriRequest uriRequest = requestBuilder.build();</pre>
<br />
Luego ejecutamos la petición de la misma manera que en la vez anterior:
<br />
<pre class="brush: java">try {
HttpResponse httpResponse = httpClient.execute(uriRequest);
source = EntityUtils.toString(httpResponse.getEntity());
} catch (IOException e) {
e.printStackTrace();
}</pre>
<br />
Ahora probemos su funcionamiento en nuestra clase main, enviaremos la petición a un script en php que imprimirá los parametros que reciba.
<br />
<pre class="brush: java">public static void main(String[] args) {
Peticiones peticiones = new Peticiones();
NameValuePair parametro = new BasicNameValuePair("nombreParametro", "miValor");
System.out.println(peticiones.httpPostSimple("http://localhost/Prueba01.php", parametro));
}</pre>
<br />
Y nos devuelve esto:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhLo_xO4sHaOsGHo-1L6ZJQWoEr-7n6OuwZIKTQqq1HM_SJt5U1VZjfObYWo9X8AeiuV_Z83EF2ljo2tCdD9yGyLPS6zBqf7Ww4m4EUaE0of4T-vOUfUlUFijXIwsKyWtR_sibcvnCTA/s1600/Screenshot_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhLo_xO4sHaOsGHo-1L6ZJQWoEr-7n6OuwZIKTQqq1HM_SJt5U1VZjfObYWo9X8AeiuV_Z83EF2ljo2tCdD9yGyLPS6zBqf7Ww4m4EUaE0of4T-vOUfUlUFijXIwsKyWtR_sibcvnCTA/s1600/Screenshot_3.png" /></a></div>
<br />
<b><span style="font-size: x-large;">CookieStore</span></b><br />
<br />
<span style="font-size: small;">Si queremos añadir una cookie antes de una petición o almacenar u obtener las cookies luego de alguna petición podemos usar la cookie store que nos ofrece esta librería, su uso:</span>
<br />
<pre class="brush: java">BasicCookieStore cookieStore = new BasicCookieStore();
HttpClient httpClient = HttpClients.custom().setDefaultCookieStore(cookieStore).build();</pre>
Añadir cookie:<br />
<pre class="brush: java">Cookie cookie = new BasicClientCookie("nombre", "valor");
cookieStore.addCookie(cookie);</pre>
Obtener cookies:<br />
<pre class="brush: java">List< Cookie> cookies = cookieStore.getCookies();
for(Cookie cookie: cookies)
System.out.println(cookie.getName() + ":" + cookie.getValue());</pre>
<br />
<b><span style="font-size: x-large;">Configuración</span></b><br />
Estas peticiones también nos permiten configurar otras cosas como timeouts, proxys, máximas redirecciones, etc.<br />
Su uso:<br />
<pre class="brush: java">RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(8000).build();
requestBuilder.setConfig(requestConfig);</pre><br />
Aquí usamos <i>setConnectTimeOut</i> para establecer en milisegundos el tiempo máximo que esperara la petición para conectarse al servidor.<br />
Podemos usar muchos otros métodos de configuración que puedes ver <a href="http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/client/config/RequestConfig.Builder.html">aquí</a>.
Esto es todo por este POST, saludos!Anonymoushttp://www.blogger.com/profile/05721004032567344791noreply@blogger.com0tag:blogger.com,1999:blog-5087689638066986972.post-26285243437104093542015-04-17T19:55:00.003-07:002015-04-19T20:53:55.901-07:00[ForceBindIP] Forzar aplicación a usar una red específicaA veces pasa que tenemos acceso a diferentes redes, varias redes wifi, nuestra red ethernet, etc.<br />
Y si tenemos varios adaptadores para usarlas podemos aprovechar la velocidad de todas ellas, una de las maneras de hacerlo es usar es usar una por ejemplo para el navegador, y otra para un gestor de descargas, cada quien que le de su uso.<br />
<br />
Para esto podemos usar <a href="http://old.r1ch.net/stuff/forcebindip/">ForceBindIP</a>, un software que hace exactamente lo que acabo de describir, es de un uso muy simple, ejecutamos un comando que tendrá por argumentos la red que queremos usar y el programa que queremos iniciar con esta red configurada.<br />
<br />
Para empezar necesitamos bajar el programa, lo puedes bajar de <span id="goog_1226170129"></span><a href="https://www.blogger.com/"></a><span id="goog_1226170130"></span><a href="http://old.r1ch.net/stuff/forcebindip/" target="_blank">http://old.r1ch.net/stuff/forcebindip/</a><br />
Puedes bajar el instalador o un archivo zip, luego de bajado e instalado el programa, procedemos a usarlo, a continuación un comando de ejemplo.<br />
<br />
<pre class="brush: ps">ForceBindIP 192.168.0.1 "C:\Program Files (x86)\Mozilla Firefox\Firefox.exe"</pre>
<br />
Donde <i>192.168.0.1</i> es mi IP local en la red y el segundo argumento es el programa que queremos ejecutar, si no sabes obtener tu ip local más adelante en el post lo explicaré.<br />
En la página del programa sugieren que si al ejecutar comando, el programa crashea, agregues <i>-i</i> para solucionarlo, quedando así nuestro comando.<br />
<br />
<pre class="brush: ps">ForceBindIP -i 192.168.0.1 "C:\Program Files (x86)\Mozilla Firefox\Firefox.exe"</pre>
<br />
Para obtener la ip local en alguna de las redes a las que estás conectado debes abrir el cmd y ejecutar:<br />
<pre class="brush: ps">ipconfig</pre>
<br />
Te arrojará un resultado similar a este<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZ-QG3-ynx4BrC3LyNFEpV7j-CFAmOLhriUbLwREgoSP1wrPhm-kPGJ1yqNzBZxLoHvxtcpTWaOj4VnmL8xZ_KFsIMhjZupbmv02jOcH_P351fujx5kM7FxhrBttHCUQG84x1_YouhJA/s1600/Sin+t%C3%ADtulo-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZ-QG3-ynx4BrC3LyNFEpV7j-CFAmOLhriUbLwREgoSP1wrPhm-kPGJ1yqNzBZxLoHvxtcpTWaOj4VnmL8xZ_KFsIMhjZupbmv02jOcH_P351fujx5kM7FxhrBttHCUQG84x1_YouhJA/s1600/Sin+t%C3%ADtulo-1.png" height="162" width="320" /></a></div>
Donde la dirección IPv4 es nuestra IP local y es la que usaremos para usar el ForceBindIP.<br />
Eso es todo por este post. Saludos! Anonymoushttp://www.blogger.com/profile/05721004032567344791noreply@blogger.com0tag:blogger.com,1999:blog-5087689638066986972.post-2149446664008407682015-04-17T19:03:00.001-07:002015-04-17T19:03:50.901-07:00PresentaciónHola, soy TheMr, me gusta la programación y la seguridad informática, me gustan los lenguajes PHP y JAVA, y sé un poco de algunos otros. En este blog compartiré lo que sé y lo que vaya aprendiendo a lo largo de mis experiencias.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6m3jSy1T1eZuEcKQbc_e10gMidiEl9Se5WTvKbAjJhSqdAQdwU2lJpj120VAF2MPyfO7EFFo43RHcEqAgeFnagY9wMKFI25U76F7L30AknXUZG9FtCLSWvNrHygKZScPb00TRdh96gA/s1600/helloworld.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6m3jSy1T1eZuEcKQbc_e10gMidiEl9Se5WTvKbAjJhSqdAQdwU2lJpj120VAF2MPyfO7EFFo43RHcEqAgeFnagY9wMKFI25U76F7L30AknXUZG9FtCLSWvNrHygKZScPb00TRdh96gA/s1600/helloworld.gif" height="137" width="320" /></a></div>
<br />Anonymoushttp://www.blogger.com/profile/05721004032567344791noreply@blogger.com0