tag:blogger.com,1999:blog-45290976463210817362024-03-13T23:16:53.709+01:00Un enfermo de los bitsLo que me apetezca contar de todo lo que da vueltas en mi vida personal y profesional que tenga alguna relación, aunque sea de lejos, con el mundo de los bits.
Hoy en día ¿Hay algo que no esté relacionado con los bits?Anonymoushttp://www.blogger.com/profile/15346558725245256076noreply@blogger.comBlogger64125tag:blogger.com,1999:blog-4529097646321081736.post-13417544925606876872012-02-23T01:02:00.000+01:002012-02-23T01:02:04.076+01:00Jornada de Calidad y fiabilidad en los servicios de telefonía de hoy<div style="text-align: justify;">Esta tarde he asistido, en el <a href="http://www.eic.cat/" target="_blank">Col·legi d'Enginyers Industrials de Catalunya</a> (Colegio de Ingenieros Industriales de Cataluña), a un jornada titulada "Calidad y fiabilidad en los servicios de telefonía de hoy" con el objetivo de ver que podía substraer de todo esto y ver si<b> me servirá para una ponencia que es posiblemente daré en mayo</b>, en el mismo colegio, sobre <b>calidad en las TI</b>, aunque el objetivo es que vaya más bien <b>centrada en <a href="https://en.wikipedia.org/wiki/ISO/IEC_27000-series" target="_blank">ISO 27000</a></b>.<br />
<br />
Al margen de si me va ser útil o no para preparar mi posible ponencia, la jornada ha sido amena y entretenida, además de haberme provocada la reflexión sobre algunos puntos que no me había planteado.<br />
<br />
Los temas tratados sobre la calidad y fiabilidad se han centrado desde el punto de vista técnico (al nivel alto), y de los retos que se plantean para mejorar en estos dos factores, que han ido desde la saturación de estas redes debido a todos los servicios que se están ejecutando hoy en día y que han evolucionado más rápido que el despliegue de la tecnología necesaria para soportarlos hasta como hacer que estas infraestructuras de comunicación sean capaces de continuar funcionando después de ciertos desastres naturales, poniendo como ejemplo del <a href="http://www.youtube.com/watch?v=5-zfCBCq-8I" target="_blank">desastre natura que ocurrió en Japón el año pasado</a>.<br />
<br />
La mesa de debate que ha estado compuesta por:<br />
<ol><li style="text-align: left;">Ferran Amago i Jordi López, Col·legis Enginyers de Telecomunicacions.</li>
<li style="text-align: left;">Antoni <span style="font-family: inherit;">Elias</span>, ETSETB-UPC.</li>
<li style="text-align: left;"><span style="font-family: inherit;">Josep Mª Rabés, Orange.</span></li>
<li style="text-align: left;">Xavier Casajoana, VozTelecom.</li>
<li style="text-align: left;">Javier Ruiz, Alcatel-Lucent.</li>
<li style="text-align: left;">Gabriel Treiban, Qualcomm</li>
</ol><br />
Desde mi perfil profesional (Ingeniero Informático) puedo decir que la mesa se ha animado mucho cuando Antoni Elias ha empezado a decir que "<b>los informáticos están causando el CAOS en estás redes</b>" desarrollando aplicaciones que se han desarrollado para funcionar sobre estas redes (podríamos centrarlo en las famosas Apps para <i>smartphones</i>) al no garantizar ninguna calidad, añadiendo que "la informática es así que no existe un proceso ingenieril como tal y que por lo tanto no se garantiza la calidad de lo que se hace"; en esos momentos, yo que debía ser uno de los pocos (no sé si el único) ingenieros informáticos del público he empezado a sacar humo por la nariz (desde el respeto de la opinión de cada uno).<br />
<br />
Es molesto que como <b>muchos ingenieros informáticos luchamos, y con consecuencias, por hacer la cosas bien hechas y con calidad</b> y como otros tiran eso por el suelo optando por descartar tus propuestas por otras mucho más económicas, pero con la consecuencia que no deja de ser una autentica basura porque no se ha pensado en nada y lo único que se ha hecho es poner los ladrillos como se ha podido. Algo que si quiero indicar sobre estas últimas palabras, es que no quiero que se interprete, aunque yo sea ingeniero, que solo un ingeniero informático puede hacer las cosas bien, porque conozco gente muy hábil y con un nivel de inteligencia elevado a base de su esfuerzo ha aprendido de manera autodidacta lo que muchos no han aprendido estudiando la Ingeniería Informática, pero realmente esto no es una cosa intrínseca de la informática, es algo que se da en todo, el hecho de tener un título no es una garantía del 100% segura que esa persona sea competente en esa área, al final el más competente es quien hace algo porque realmente le gusta y lo lleva en el interior, haciendo que el fruto de su trabajo sea catalogada con un nivel alto de profesionalidad.<br />
<br />
Luego Antoni, también se ha metido con los financieros, alegando que están a la cabeza de empresas tecnológicas, y que como solo miran la pasta, así de bien van la calidad de los servicios, porque se prescinde de las buenas soluciones frente a las de bastante peor calidad por simples aspectos económicos; en fin aquí no voy a salir en defensa de los financieros, pero en gran parte creo en lo que dice, pero no creo que el problema sean ellos sino que se les cede el control total cuando lo que tendría que ser es un equipo multidisciplinar, que es lo que muchos se jactan de predicar y muchos de ellos directivos de este tipo.<br />
<br />
Al final mis humos se han evadido cuando en el turno de <b>Xavier Casajoana (Ingeniero Informática) ha salido a la defensa con argumentos</b> muy buenos sobre la existencia de estos "servicios gratuitos" y que no solo se les puede atribuir a éstas el colapso de estas infraestructuras.<br />
<br />
También me gustaría resaltar la intervención de <b>Gabriel Treiban por exponer términos como OTT (<i>Over The Top</i>)</b> para referirse a las aplicaciones, con el significado de que son realizado por terceros y que funciona encima de todo lo que hace funcionar esto y que desde el punto de vista de chip que es lo que hace Qualcomm, es complicado llegar a controlar el comportamiento de éstas, si lo vemos desde el punto de vista de quien ejecuta las instrucciones, que son los chips. Gabriel también ha puesto sobre la mesa el <b>compromiso Coste-Tiempo-Calidad</b> y como de estos tres factores siempre tienes que escoger dos, aspecto que realmente es para que cada uno haga su reflexión.<br />
<br />
Después de terminar las intervenciones de los interventores ha habido rueda de preguntas y entre varias de estas se ha preguntado sobre que la calidad que el cliente percibe muchas veces es por otro aspecto, que es la atención al cliente que ofrecen los operadores; de esto no comento nada ya que muchas ya sabéis por donde van los tiros.<br />
<br />
Para terminar solo quiero comentar un aspecto que me ha hecho gracia, porque hasta hace bien poco tenía que dar argumentos muy similares debido al sector de la empresa donde trabajaba y de lo mucho que se rajaba de la informática; lo que se ha dicho es que estas infraestructuras que dependen de servidores se dimensionan en función de un resultado estadístico y que es normal que cuando haya un demanda superior a lo que ha indicado la estadística el servicio no da la calidad que se esperaba pero que esto sucede igual, por ejemplo, con las autopistas.<br />
<br />
Hasta la próxima enfermos.</div>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-4529097646321081736.post-71132010678620706592012-01-15T11:48:00.001+01:002012-01-15T12:02:11.351+01:00Profundizando en PAM: Passwd sobre PAM (2/2)<div style="text-align: justify;"><br />
<div style="font-family: "Courier New",Courier,monospace; text-align: left;"><span style="font-size: 85%; font-weight: bold;">conjuntoEntradas() { </span></div><div style="font-family: "Courier New",Courier,monospace;"><span style="font-size: 85%; font-weight: bold;"> <a href="http://enfermodelosbits.blogspot.com/2012/01/profundizando-en-pam-passwd-sobre-pam.html">Profundizando en PAM: Passwd sobre PAM (1/2)</a></span><br />
<span style="font-size: 85%; font-weight: bold;"> Profundizando en PAM: Passwd sobre PAM (2/2)</span><br />
<span style="font-size: 85%;">}</span><br />
<span style="font-size: 85%;"><br />
</span></div><br />
<span style="font-size: large;">La luz del final del túnel</span><br />
<br />
Hace unas tres semanas tuve que cambiar el <i>password</i> porque estaba a punto de caducarse y como no el diablo que me perseguía apareció; harto de él y con ganas de enfrentarme a él, nos metimos en el lío.<br />
<br />
Preguntando al Sr. Google, encontré <a href="http://blog.subaquatic.net/archives/setting-up-stronger-password-policy-rules-in-linux/" target="_blank">un post de un tal Jason Howk, que habla de aplicar una política fuerte de contraseñas bajo Linux</a> donde se explica cosas que ya sabía y otras no, concretamente lo del <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Linux_PAM" target="_blank">PAM</a>; así que en el post encontré la madre del cordero.<br />
<br />
<a href="https://secure.wikimedia.org/wikipedia/en/wiki/Linux_PAM" target="_blank">PAM (Pluggable authentication module)</a>, permite definir un proceso de autenticación asociado a un ejecutable/proceso a modo de <i>plugin</i>, es decir que se integra sin la necesidad de alterar el binario o código fuente que lo requiere. <br />
<br />
Así que una vez tener a partir de la definición como actúa y después de haber leído <a href="http://blog.subaquatic.net/archives/setting-up-stronger-password-policy-rules-in-linux/" target="_blank">el post del tal Jason Howk</a> entendí que con un fichero de configuración se puede definir el modo de autorización totalmente externa, llamando al servicio <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Linux_PAM" target="_blank">PAM</a>, evitando que tengas que implementarlo, y encima puedes amoldarlo a tus necesidades, siempre y cuando haya un módulo <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Linux_PAM" target="_blank">PAM</a> que haga lo que quieres, y sino lo hay, ya sabes que te toca implementarte uno.<br />
<br />
<span style="font-size: large;">Tirando del hilo</span><br />
<br />
Cuando ya me había enterado que con un fichero de configuración de <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Linux_PAM" target="_blank">PAM</a> se puede definir como se comporta el cambio del <i>password</i> de acceso al sistema a través comando <span class="commandExec">passwd</span>, concretamente el fichero <span class="systemPath">/etc/pam.d/passwd</span>, me fui a ver que había ahí dentro para ver porque sucedía lo de solicitar el cambio de <i>password</i> por duplicado y encontré esto<br />
<br />
<div class="configfilebox"><pre>#%PAM-1.0
auth sufficient pam_rootok.so
auth include system-auth
account include system-auth
password include system-auth
</pre></div><br />
Como podemos ver en el fichero no se define nada, se delega cada grupo (auth, account, <i>password</i>), al fichero <span class="systemPath">/etc/pam.d/system-auth</span>, el cual tiene el siguiente contenido<br />
<br />
<div class="configfilebox"><pre>auth required pam_env.so
auth required pam_unix.so try_first_pass likeauth nullok
auth optional pam_permit.so
account required pam_unix.so
account optional pam_permit.so
password required pam_cracklib.so difok=2 minlen=8 lcredit=1 ucredit=1 dcredit=2 ocredit=2 retry=3
password required pam_passwdqc.so min=8,8,8,8,8 retry=3
password required pam_unix.so try_first_pass use_authtok nullok sha512 shadow
password optional pam_permit.so
session required pam_limits.so
session required pam_env.so
session optional pam_mktemp.so
session required pam_unix.so
session optional pam_permit.so
</pre></div><br />
El fichero llama a varios modulos <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Linux_PAM" target="_blank">PAM</a> en cada fase, y como no tenía ni idea que hacía cada uno de ellos me fui a buscar la documentación para tener una idea de lo que hace cada uno, bueno solo de los que he encontré de manera rápida, y poder definir el flujo de del servicio <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Linux_PAM" target="_blank">PAM</a> que deseaba sobre el comando <span class="commandExec">passwd</span>.<br />
<br />
Después de tener más o menos claro lo que hace cada módulo que aparecía en el fichero <span class="systemPath">/etc/pam.d/system-auth</span>, me puse a definir el flujo que deseaba sobre el comando <span class="commandExec">passwd</span>. No obstante, no alteré el fichero <span class="systemPath">/etc/pam.d/system-auth</span>, que es el que se referenciaba en todos los ficheros de configuración de los procesos/comandos que usan <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Linux_PAM" target="_blank">PAM</a>, es decir como hacía el fichero <span class="systemPath">/etc/pam.d/passwd</span>, que delegaba la definición del flujo al fichero <span class="systemPath">/etc/pam.d/system-auth</span>, sino que modifque directamente el fichero <span class="systemPath">/etc/pam.d/passwd</span>.<br />
<br />
<span style="font-size: large;">El juicio final: definiendo el flujo PAM sobre passwd</span><br />
<br />
Con la documentación y viendo el contenido del fichero <span class="systemPath">/etc/pam.d/system-auth</span>, me puse definir el contenido de <span class="systemPath">/etc/pam.d/passwd</span>, desde 0.<br />
<ol><li>Quité todos los modules <a href="http://linux.die.net/man/8/pam_permit" target="_blank">pam_permit</a> porque solo con ver en la documentación la siguiente frase “<i>PAM module that always permit access</i>” a uno ya le queda bastante claro que no puede ser muy bueno, no obstante, por sino queda claro, la propia documentación te le deja más claro con la siguiente frase “<i>This module is very dangerous. It should be used with extreme caution</i>”.</li>
<li>Mantuve los módulos <a href="http://linux.die.net/man/5/pam_env.conf" target="_blank">pam_env</a> aunque actualmente en el fichero <span class="systemPath">/etc/security/pam_env.conf</span> está todo comentado, pero para un posible futuro puede ser útil que al meter configuraciones en él, se apliquen a las configuraciones existentes.</li>
<li>De los dos módulos de verificación de complejidad de contraseña, <a href="http://linux.die.net/man/8/pam_passwdqc" target="_blank">pam_passwdqc</a> y <a href="http://linux.die.net/man/8/pam_cracklib" target="_blank">pam_cracklib</a>, para esta situación, opté por utilizar el <a href="http://linux.die.net/man/8/pam_passwdqc" target="_blank">pam_passwdqc</a>.</li>
<li>Mantuve el módulo <a href="http://linux.die.net/man/8/pam_unix" target="_blank">pam_unix</a>, para sincronizarlo con el sistema tradicional de autenticación de los sistemas <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Unix" target="_blank">Unix</a>, pero me cargué el parámetro nullok para dejar de permitir el acceso a usuarios sin <i>password</i>.</li>
<li>Al igual que pensé con lo que hacer con el módulo <a href="http://linux.die.net/man/5/pam_env.conf" target="_blank">pam_env</a>, pensé lo mismo con <a href="http://linux.die.net/man/8/pam_limits" target="_blank">pam_limits</a>, es decir lo mantuve a pesar de que el directorio <span class="systemPath">/etc/security/limits.d/</span> esté vacío, para si establezco configuraciones futuras dentro de éste.</li>
<li>Mantuve <a href="http://debathena.mit.edu/pam_mktemp/" target="_blank">pam_mktemp</a>, a pesar de que en mi caso no se vaya a dar el caso de tener directorio <i>home</i> en sistemas de ficheros compartidos por la red, pero creí que no estaba de más mantenerlo.</li>
</ol>El resultado de todo esto fue este<br />
<br />
<div class="configfilebox"><pre>#%PAM-1.0
auth required pam_env.so
auth required pam_unix.so try_first_pass nullok
account required pam_unix.so
password required pam_passwdqc.so min=disabled,disabled,15,10,8 passphrase=3 retry=3 ask_oldauthtok check_oldauthtok
password required pam_unix.so try_first_pass use_authtok sha512 shadow
session required pam_limits.so
session required pam_env.so
session optional pam_mktemp.so
session required pam_unix.so
</pre></div><br />
<span style="font-size: large;">Final de la pesadilla</span><br />
<br />
Y a aquí termino todo, una vez definido esto, comprobé que el comando <span class="commandExec">passwd</span> funcionaba correctamente y que solo me pedía el <i>password</i> (y claro está, su verificación) una sola vez.<br />
<br />
Aunque seguro que está muy claro, menciono explicitamente el porque ahora no se pide el <i>password</i> más de una vez; básicamente es porque si nos fijamos en el fichero <span class="systemPath">/etc/pam.d/system-auth</span>, se realiza dos llamadas al proceso de verificación de complejidad, una sobre al módulo <a href="http://linux.die.net/man/8/pam_cracklib" target="_blank">pam_cracklib</a> y otra <a href="http://linux.die.net/man/8/pam_passwdqc" target="_blank">pam_passwdqc</a>.<br />
<br />
Para finalizar solo quiero decir que para realizar las distintas pruebas antes de definir por completo el flujo <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Linux_PAM" target="_blank">PAM</a> sobre <span class="commandExec">passwd</span> cree un nuevo usuario en el sistema, para evitar que probando no me vaya a cargar el acceso de mi usuario habitual, y cuando todo funcionó, me lo cargué.<br />
<br />
<br />
Hasta la próxima enfermos.</div>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-4529097646321081736.post-8958084032984395572012-01-01T14:37:00.000+01:002012-01-15T11:50:46.082+01:00Profundizando en PAM: Passwd sobre PAM (1/2)<div style="text-align: justify;"><br />
<div style="font-family: "Courier New",Courier,monospace; text-align: left;"><span style="font-size: 85%; font-weight: bold;">conjuntoEntradas() { </span></div><div style="font-family: "Courier New",Courier,monospace;"><span style="font-size: 85%; font-weight: bold;"> Profundizando en PAM: Passwd sobre PAM (1/2)</span><br />
<span style="font-size: 85%; font-weight: bold;"> <a href="http://enfermodelosbits.blogspot.com/2012/01/profundizando-en-pam-passwd-sobre-pam_15.html">Profundizando en PAM: Passwd sobre PAM (2/2)</a></span><br />
<span style="font-size: 85%;">}</span><br />
<span style="font-size: 85%;"><br />
</span></div><span style="font-size: large;">Introducción</span><br />
<br />
En varias ocasiones leo o oigo hablar de algo que en un primer momento no conozco, en algunas de ellas tengo la oportunidad de preguntarle a la persona que está hablando que me explique lo que es, otras no tengo esa oportunidad y es cuando entonces decido preguntarle a Mr. Google, si puedo en ese mismo momento y sino en otro momento, es lo que tiene que siempre esté a tu disposición.<br />
Una vez que he tenido una breve descripción de lo que es, entonces ya estoy en contexto, y normalmente (hablando de temas focalizados en el mundo de la informática) puedo comprender, lamentablemente no siempre al 100%, lo que estoy leyendo o lo que me están contando, si es el caso la problemática y la posible solución o mitigación.<br />
<br />
Una de estas situaciones, aunque no recuerdo ni cuando ni donde, fue lo que me pasó con <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Linux_PAM" target="_blank">PAM</a>; en ese momento me enteré de lo que era y luego cuando me hablado en otras ocasiones de algo donde <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Linux_PAM" target="_blank">PAM</a> se siente involucrado no tengo problema en entender lo que me están contando.<br />
Dejando de banda de como voy dando mis primeros pasos en este mundo tan amplio, me centro un poco en lo que es la entrada en sí.<br />
<br />
<span style="font-size: large;">Los inicios</span><br />
<br />
<a href="http://enfermodelosbits.blogspot.com/2009/12/aprendiendo-ostias.html" target="">Cuando decidí meter Gentoo en la mi máquina de casa</a>, lo hice, <a href="http://enfermodelosbits.blogspot.com/2010/02/gentoo-domesticando-la-criatura-12.html" target="">intentando enterarme, de para que sirve y porque se hace todo</a> lo que el <i><a href="http://www.gentoo.org/doc/en/handbook/" target="_blank">handbook</a></i> explica paso a paso, así consideré que era una manera de aprender aspectos que hasta el momento desconocía y añadir algún granito más al monto de conocimientos que voy almacenando sobre este enorme mundo; además, como el <i><a href="http://www.gentoo.org/doc/en/handbook/" target="_blank">handbook</a></i> en ciertos puntos deja abiertas indicaciones que se puede hacer esto y esto otro, en algunas de ellas me fui informando para hacerlo en un futuro o directamente me informé y me puse a configurarlo como me gustaría tenerlo, por eso que dicen de “no dejes para mañana lo que puedes hacer hoy”.<br />
<br />
Una de esas cosas, fue securizar la configuración de acceso de las cuentas de usuarios del SO (<span class="systemPath">/etc/login.defs</span>), es decir meter un mínimo de valores en los parámetros necesarios para garantizar un <i>password</i> con longitud mínima y con una caducidad para, básicamente, auto-obligarme a cambiarlo de vez en cuando.<br />
<br />
Con esto yo ya creía que todo estaba, de hecho en parte no porque no había puesto la mínima complejidad requerida, algo que me preocupaba poco porque <i>by default</i> me complico la vida en el momento de asignar <i>passwords</i> de acceso a cualquier sistema.<br />
<br />
<span style="font-size: large;">El día a día</span><br />
<br />
<a href="http://enfermodelosbits.blogspot.com/2010/02/gentoo-domesticando-la-criatura-12.html" target="">Después de tener el sistema listo</a>, el empacho me duró un tiempo, además empecé a liarme con otras cosas, demasiadas, que me ocuparon y me ocupan el tiempo para dedicarme, de nuevo, con mente y cuerpo a trabajar para el SO, eso sí, sin tener en cuenta las incidencias de actualizaciones, de despliegue de nuevos servicios/aplicaciones, etc., que me han ido surgiendo y algunas de ellas ya he ido comentando en alguna que otra entada de este <a href="http://enfermodelosbits.blogspot.com/search/label/Linux"><i>blog</i></a>. <br />
<br />
Una de las cosas que me ha ido persiguiendo desde entonces es que cada vez que cambio el <i>password</i>, el SO me solicitaba dos veces, más bien dos pares de veces, el nuevo <i>password</i>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-C8Picvk4ln0/TwBfHwiC8nI/AAAAAAAAAfw/eqD1jhg1g3M/s1600/captura+preguntando+dos+veces+por+el+cambio+de+password.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="363" src="http://1.bp.blogspot.com/-C8Picvk4ln0/TwBfHwiC8nI/AAAAAAAAAfw/eqD1jhg1g3M/s640/captura+preguntando+dos+veces+por+el+cambio+de+password.png" width="640" /></a></div><div style="text-align: center;"><span style="color: #666666; font-size: x-small;">Ejecución de <span class="commandExec">passwd</span> para cambiar el <i>password</i> de acceso al SO; se ve como se pregunta el <i>password</i> dos veces</span></div><br />
¿El motivo? Ni idea, sino lo hubiese solucionado desde un primer momento; el hecho es que no me importaba mucho, ya que metiendo las dos veces el mismo se cambiaba y como estaba perezoso en googlear para buscar un poco para saber que puñetas pasaba, la cosa se ha quedado así hasta hace un par o tres de semanas.<br />
<br />
<br />
Hasta la próxima enfermos.</div>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-4529097646321081736.post-61996577519903701142011-12-03T20:46:00.001+01:002011-12-11T20:17:27.720+01:00Peleando con Gentoo y con el DNI-E (3/3)<div style="text-align: justify;">
<br />
<div style="font-family: "Courier New",Courier,monospace; text-align: left;">
<span style="font-size: 85%; font-weight: bold;">conjuntoEntradas() { </span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: 85%; font-weight: bold;"> <a href="http://enfermodelosbits.blogspot.com/2011/11/peleando-con-gentoo-y-con-el-dni-e-1er.html">Peleando con Gentoo y con el DNI-E (1/3)</a></span><br />
<span style="font-size: 85%; font-weight: bold;"> <a href="http://enfermodelosbits.blogspot.com/2011/12/peleando-con-gentoo-y-con-el-dni-e-23.html">Peleando con Gentoo y con el DNI-E (2/3)</a></span><br />
<span style="font-size: 85%; font-weight: bold;"> Peleando con Gentoo y con el DNI-E (3/3)</span><br />
<span style="font-size: 85%;">}</span><br />
<span style="font-size: 85%;"><br /></span></div>
<span class="Apple-style-span" style="font-size: large;">Configurando Firefox</span><br />
<br />
La configuración de Firefox, es muy simple, pero a mí me toco el gordo; están fácil como ir al menú “<i>editar → preferencias</i>”, en el cuadro de dialogo ir a la sección “<i>Avanzadas</i>” y allí pulsar sobre el botón “<i>Dispositivos de seguridad</i>” y luego botón “<i>cargar</i>” y en el cuadro de dialogo poner el nombre que queramos para el módulo (¿DNI-E?) e indicar la ruta a la librería (*.so) del módulo PCKS#11, en este caso el del opensc-dnie.<br />
Probar que funciona con una web que se solicité el DNI-E, como <a href="https://av-dnie.cert.fnmt.es/compruebacert/compruebacert">la de test que ofrecen la FNMT</a>.<br />
<br />
Porque me toco el gordo a mí, pues porqué por algún motivo el Firefox 6.0 que tenía instalado, el paquete binario, cuando lo indicaba que utilizase el módulo PKCS#11, decía algo así como que no era apropiado; me rompí la cabeza mirando, volviendo a mirar, probando, volviendo a probar y aunque se me había pasado por la cabeza ya en varias ocasiones quitar la instalación del paquete binario e instalar el paquete convencional (el que se descarga el código fuente y lo compila) no lo hice y continué probando hasta que ya estando muy cansado decidí hacer, como última prueba antes de abandonar, esa sustitución que acabo de mencionar y hecho y resuelto.<br />
<br />
Me cagué en todo, pero realmente estaba contento porque por fin funcionaba sobre Firefox y podía hacer los putos trámites con la pu.. AEAT.<br />
<br />
<span class="Apple-style-span" style="font-size: large;">Cambiando el PIN con el PAD Virtual</span><br />
<br />
Otra de las cosas que me interesaba hacer es cambiar el PIN del DNI-E que me habían dado cuando me lo dieron, ya que la secuencia aleatoria generada es poco probable que la pueda memorizar por mucho tiempo, ya que es algo que por ahora, tampoco uso muy a menudo; además el PIN proporcionado es una cadena de caracteres demasiado corta para mi gusto.<br />
<br />
Para hacer este cambio, según explican en la <a href="http://www.dnielectronico.es/">Web del DNI-E</a>, tienes dos opciones, o te vas a las comisarias a cambiarlo a través de las maquinitas que tienen allí o lo cambias con un aplicación que llaman PAD Virtual y que puedes descargar de <a href="http://www.dnielectronico.es/descargas/PKCS11_para_Sistemas_Unix/cambio_pin.html">aquí</a>.<br />
<br />
Como el tiempo no me sobra mucho, y al ver que estaba hecha en JAVA, di por supuesto que no me iba a llevar mucho trabajo utilizarla, ya que siendo multiplataforma con descargarlar y ejecutarla y seguir en siguiente, siguiente, siguiente.... finalizar podía hacer el cambio.<br />
<br />
Pues bien, la descargué y la ejecuté, y se abrió el típico dialogo de siguiente, siguiente, siguiente... finalizar, no obstante el intento fue decepcionante, ya que llegué a un punto que apareció el siguiente error:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-Dicvd-CO2M8/Ttp8w7ZO-fI/AAAAAAAAAfE/_XPC1QR8Pns/s1600/Pad+Virtual+error+jpcsc.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="286" src="http://4.bp.blogspot.com/-Dicvd-CO2M8/Ttp8w7ZO-fI/AAAAAAAAAfE/_XPC1QR8Pns/s400/Pad+Virtual+error+jpcsc.png" width="400" /></a></div>
<div style="text-align: center;">
<span class="Apple-style-span" style="color: #666666; font-size: x-small;">Mensaje de error en la aplicación PAD virtual al intentar utilizarla</span></div>
<br />
Y verdaderamente después de buscar el error en Google, yo no he encontrado de manera rápida, cual puede ser el problema, así que decidí, en aquel momento, resignarme a cambiar el PIN desde mi máquina que funciona con Gentoo.<br />
<br />
<br />
Hasta la proxima enfermos.</div>Anonymousnoreply@blogger.com2tag:blogger.com,1999:blog-4529097646321081736.post-84356129415932287002011-12-03T19:09:00.001+01:002011-12-11T20:16:53.964+01:00Peleando con Gentoo y con el DNI-E (2/3)<div style="text-align: justify;">
<br />
<div style="font-family: "Courier New",Courier,monospace; text-align: left;">
<span style="font-size: 85%; font-weight: bold;">conjuntoEntradas() { </span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: 85%; font-weight: bold;"> <a href="http://enfermodelosbits.blogspot.com/2011/11/peleando-con-gentoo-y-con-el-dni-e-1er.html">Peleando con Gentoo y con el DNI-E (1/3)</a></span><br />
<span style="font-size: 85%; font-weight: bold;"> Peleando con Gentoo y con el DNI-E (2/3)</span><br />
<span style="font-size: 85%; font-weight: bold;"> <a href="http://enfermodelosbits.blogspot.com/2011/12/peleando-con-gentoo-y-con-el-dni-e-33.html">Peleando con Gentoo y con el DNI-E (3/3)</a></span><br />
<span style="font-size: 85%;">}</span></div>
<br />
<span class="Apple-style-span" style="font-size: large;">El driver del DNI-E</span><br />
<br />
Leyendo la información de la instalación de la <a href="http://opendnie.cenatic.es/wiki/index.php/6._Instrucciones_de_instalaci%C3%B3n_de_OpenDNIe"><i>wiki</i> del CENATIC</a> te indican instalar la versión de <a href="http://www.opensc-project.org/opensc">opensc</a> generada para el DNI-E y antes de ellos desinstalar, si es el caso, la versión anterior o cualquier otro versión de <a href="http://www.opensc-project.org/opensc">opensc</a>. <br />
<br />
Como ya era de esperar, no obstante no costaba nada hacer una búsqueda, en el <i>portage</i> no hay ni rastro del DNI-E, si que lo hay de <a href="http://www.opensc-project.org/opensc">opensc</a>, pero no nos sirve si queremos seguir las recomendaciones.<br />
<br />
Así que me puse a seguir los pasos que se indican en la <a href="http://opendnie.cenatic.es/wiki/index.php/6._Instrucciones_de_instalaci%C3%B3n_de_OpenDNIe"><i>wiki</i> del CENATIC</a> y los que seguí al pie de la letra no comento, ya que e mejor consultarlos directamente.<br />
<br />
En mi caso cuando llegué al paso de configurar la compilación, opté por cambiar las rutas en las que se instala la librería por defecto; lo hice así porque como me gusta complicarme la vida y no me gusta mucho donde se instalan por defecto las cosas que no instalo directamente del <i>portage</i>, ya que luego puedo tener un lió de sobreescritura de ficheros, colisiones entre versiones, etc., si un día optó por instalar lo mismo desde el <i>portage</i>, es decir que lo cambié y lo configuré para que se instalara en /opt y todo colgara de ese directorio.<br />
<span class="commandExec"><br />
bash$ ./configure –prefix=/opt/dnie<br />
</span><br />
<br />
Después a compilar la aplicación con el clásico make y la instalación con make install y ha probar si todo este berenjenal funciona.<br />
Algo que ya podíamos esperar es que si intentamos ejecutar un comando de las herramientas del opensc-dnie desde un terminal, es que el sistema no encontrara el comando, ya que como le he cambié la ruta por defecto, y no lo metí en las clásicas rutas donde Linux busca por defecto los ejecutables, el sistema no los encontraba.<br />
<span class="commandExec"><br />
bash$ dnie-tool -d -w<br />
-bash: dnie-tool: command not found<br />
</span><br />
<br />
Así que tenemos que tocar un poco las configuraciones del sistema para que éste busque los nuevos ejecutables que hay en esa nueva ruta.<br />
<br />
Una opción para no tener que alterar las configuraciones del sistema es hacer un symlink a cada uno de los ejecutables en el directorio por defecto de la instalación, pero eso es una faena y si encima un día lo cambias de ubicación te toca reenlazarlos todos de nuevo; por este motivo opté por cambiar la configuración del sistema, además que para este tipo de cosas, Gentoo, ofrece una manera de poder añadir estos directorios sin la necesidad de modificar el fichero que configura el valor de la variable PATH a nivel general del sistema y tampoco tener que configurar el valor en un fichero en el HOME del usuario, algo que a mí no me mola mucho si son ejecutables que se han instalado a nivel global de la máquina, es decir no es una aplicación instalada en el propio HOME del usuario. <br />
<br />
¿Como se hace esto? Pues bién, el <i>handbook</i> de Gentoo lo explica muy bien <a href="http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=5">aquí</a> en el apartado 5.b.<br />
<br />
En mi caso lo que hice es crear un fichero, en <span class="systemPath">/etc/env.d</span>, llamado 999Opensc-dnie con el contenido siguiente:<br />
<br />
<div class="configfilebox">
<pre>PATH="/opt/dnie/bin"
LDPATH="/opt/dnie/lib"
MANPATH="/opt/dnie/share/man"
</pre>
</div>
<br />
Luego ejecuté los comandos <span class="commandExec">env-update && source /etc/profile</span> que nos permiten releer las variables de entorno del sistema sin la necesidad de tener que reiniciar la sesión o el sistema, y como bien se refleja en el <i><a href="http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=5">handbook</a></i>:<br />
<br />
Y de nuevo a probar.<br />
<br />
<span class="commandExec"><br />
bash$ dnie-tool -d -w<br />
Waiting for a card to be inserted... <br />
DNIe Number: NNNNNNNNX <br />
SurName: FRAIXEDES <br />
Name: IVAN SERGIO <br />
</span><br />
<br />
Ahora sí, ya era hora.<br />
<br />
En la siguiente entrada comentaré, la parte más sencilla, como integrar esto en Firefox para poder utilizarlo en el acceso a las Webs del estado Español que permiten hacer trámites con el DNI-E.<br />
<br />
Hasta la proxima enfermos.</div>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-4529097646321081736.post-75142550439633421852011-11-26T12:39:00.001+01:002011-12-11T20:18:11.433+01:00Peleando con Gentoo y con el DNI-E (1/3)<div style="text-align: justify;">
<br />
<div style="font-family: "Courier New",Courier,monospace; text-align: left;">
<span style="font-size: 85%; font-weight: bold;">conjuntoEntradas() { </span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: 85%; font-weight: bold;"> Peleando con Gentoo y con el DNI-E (1/3)</span><br />
<span style="font-size: 85%; font-weight: bold;"> <a href="http://enfermodelosbits.blogspot.com/2011/12/peleando-con-gentoo-y-con-el-dni-e-23.html">Peleando con Gentoo y con el DNI-E (2/3)</a></span><br />
<span style="font-size: 85%; font-weight: bold;"> <a href="http://enfermodelosbits.blogspot.com/2011/12/peleando-con-gentoo-y-con-el-dni-e-33.html">Peleando con Gentoo y con el DNI-E (3/3)</a></span><br />
<span style="font-size: 85%;">}</span><br />
<span style="font-size: 85%;"><br /></span></div>
<span class="Apple-style-span" style="font-size: large;">Introducción</span><br />
<br />
Hace un par de seman...., mmm mejor casi un par de meses, motivado porque me iba a tocar emplear una parte de mi tiempo a realizar unos cuantos tramites para la pu.. AEAT, me decidí a pasarme el fin de semana mirando de conseguir hacer funcionar el DNI-E sobre mi equipo de casa, el que tengo instalado un Gentoo, y sobre el cual he escrito, en varias ocasiones, entradas en este blog.<br />
<br />
Era algo que tenía pendiente desde que hace poco más de un año, pasé del DNI “analógico” a el nuevo DNI-E, el “digital”; no obstante son de esas cosas que se van dejando pasar hasta que un día te se antoja meterte con el tema o simplemente llega el día que te toca meterte porque lo vas a tener que utilizar.<br />
<br />
Desde hace algún tiempo, que ya se dio soporte para usar el DNI-E sobre el sistema operativo Linux, no obstante, todos sabemos que distribuciones de Linux hay unas cuantas, aunque muchas de ellas están basadas sobre una de las populares. En el caso de Gentoo, que es con la que yo lidié, no es tan es simple como tener una paquete en el <i>portage</i> para instalar de manera sencilla mediante emerge, ni tampoco te puedes descargar desde la <a href="http://www.dnielectronico.es/">web oficial</a> un paquete de instalación como si que <a href="http://www.dnielectronico.es/descargas/PKCS11_para_Sistemas_Unix/opensc_1.4.8_menu64.html">encuentras para las distribuciones Ubuntu, Debian, Fedora y OpenSuSE</a>, bueno es lo que se tiene que sufrir por haberse liado la manta a la cabeza y haber decido utilizar un Gentoo.<br />
<br />
Finalmente la cosa me llevo un rato de un sábado y otro de un domingo, entre <a href="http://www.soloboxeo.com/golpes/">directos, crochetes y uppercuts</a>.<br />
<br />
<span class="Apple-style-span" style="font-size: large;">El lector de tarjetas</span><br />
<br />
Lo primero, que uno tiene que hacer es comprarse un lector, algo que ya hice bastante tiempo, enchufarlo y hacer que funcione; esto, en mi caso, tenía que ser la parte fácil, ya que <a href="http://www.c3po.es/pv_ltc31.html">el fabricante del lector que compré (C3PO) indicaba que funciona sobre Linux</a>, no obstante como antes, se indica que lo puedes instalar directamente desde el repositorio de las clásicas distribuciones, de las que no se encuentra Gentoo, y para el resto te deja del enlace al <a href="http://pcsclite.alioth.debian.org/pcsclite.html"><i>middleware</i> necesario para que el SO hable con la <i>smart card</i> a través del lector</a>; aunque finalmente, a los de Gentoo no nos hace falta descargarlo, para luego configurarlo, compilarlo, etc..., sino que lo emergimos del <i>portage</i> y así nos simplificamos la vida.<br />
Buscamos los paquetes de PCSC disponibles:<br />
<span class="commandExec"><br />
bash$ emerge -s pcsc <br />
* sys-apps/pcsc-lite <br />
Latest version available: 1.6.6 <br />
Latest version installed: 1.6.6 <br />
Size of files: 468 kB <br />
Homepage: http://pcsclite.alioth.debian.org/ <br />
Description: PC/SC Architecture smartcard middleware library <br />
License: as-is <br />
<br />
* sys-apps/pcsc-tools <br />
Latest version available: 1.4.17-r2 <br />
Latest version installed: 1.4.17-r2 <br />
Size of files: 110 kB <br />
Homepage: http://ludovic.rousseau.free.fr/softwares/pcsc-tools/ <br />
Description: PC/SC Architecture smartcard tools <br />
License: GPL-2<br />
</span><br />
<br />
Vemos que hay dos paquetes, uno que es propio middle ware PCSC y otro que son herramientas para operar con este; aunque parece que las herramientas no son estrictamente necesarias, por el espacio en disco que ocupan, yo preferí instalar los dos paquetes.<br />
<br />
Una vez hecho esto, había que probar si el sistema ya reconoce y puede interactuar con el lector, así que vamos a arrancar el servicio:<br />
<span class="commandExec"><br />
$ /etc/init.d/pcscd start <br />
* Caching service dependencies ... [ ok ] <br />
* Starting pcscd ... <br />
* WARNING: -c/--chuid is deprecated and will be removed in the future, please use -u/--user instead <br />
</span><br />
<br />
Arrancar, arrancó pero ya hay algo que no mola: <span class="warning">WARNING</span>.<br />
Vamos a mirar un poco más en detall a que se puede deber aunque parece que así que consulté el /var/log/messages: <br />
<br />
<div class="logbox">
<pre>Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 6 in /etc/etc-update.conf: =
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 6 in /etc/etc-update.conf: mode
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 10 in /etc/etc-update.conf: =
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 10 in /etc/etc-update.conf: clear_term
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 13 in /etc/etc-update.conf: =
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 13 in /etc/etc-update.conf: eu_automerg
e
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 16 in /etc/etc-update.conf: =
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 16 in /etc/etc-update.conf: rm_opts
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 19 in /etc/etc-update.conf: =
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 19 in /etc/etc-update.conf: mv_opts
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 22 in /etc/etc-update.conf: =
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 22 in /etc/etc-update.conf: cp_opts
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 25 in /etc/etc-update.conf: =
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 25 in /etc/etc-update.conf: pager
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 38 in /etc/etc-update.conf: =
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 38 in /etc/etc-update.conf: diff_comman
d
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 39 in /etc/etc-update.conf: =
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 39 in /etc/etc-update.conf: using_editor
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 43 in /etc/etc-update.conf: =
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 43 in /etc/etc-update.conf: merge_command
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 2 in /etc/shells: /bin/bash
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 3 in /etc/shells: /bin/csh
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 4 in /etc/shells: /bin/esh
ct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 5 in /etc/shells: /bin/fish
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 6 in /etc/shells: /bin/ksh
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 7 in /etc/shells: /bin/sash
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 8 in /etc/shells: /bin/sh
Oct 8 21:39:37 IVAN pcscd: configfile.l:225:tok_error() tok_error: invalid value line 9 in /etc/shells: /bin/tcsh
Oct 8 21:39:37 IVAN input in flex scanner failed
Oct 8 21:39:37 IVAN pcscd: pcscdaemon.c:655:clean_temp_files() Cannot remove /var/run/pcscd/pcscd.comm: No such file or directory
</pre>
</div>
<br />
<span class="enfasis">Primera impresión:</span> “Joder, ¿que pasa?, parece que hay errores en el fichero de configuración etc-update.conf, pero que coño tiene que ver ahora este fichero; bien calma vamos a analizar un poco con más detalle los mensajes del log”.<br />
<br />
Después de leer con más tranquilidad la salida me di cuenta que cada mensaje, viniese lo que viniese luego (<span class="systemPath">/etc/etc-update.conf, /etc/shells:/bin/bash, …</span>), todo estaba introducido por “pcsc”, así que llegué a la tanta simple conclusión, que todo el problema debía venir del fichero de configuración, por lo tanto lo abrí y encontré esto:<br />
<br />
<div class="configfilebox">
<pre>#!/sbin/runscript
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-apps/pcsc-lite/files/pcscd-init.3,v 1.1 2010/12/04 02:08:39 flameeyes Exp $
depend() {
need localmount
}
start() {
if ! [ -d /var/run/pcscd ]; then
mkdir -p /var/run/pcscd
fi
chgrp pcscd /var/run/pcscd
chmod 0775 /var/run/pcscd
ebegin "Starting pcscd"
start-stop-daemon --start \
--exec /usr/sbin/pcscd \
--pidfile /var/run/pcscd/pcscd.pid \
--chuid nobody:pcscd \
-- ${EXTRA_OPTS}
eend $?
}
stop() {
ebegin "Stopping pcscd"
start-stop-daemon --stop \
--exec /usr/sbin/pcscd \
--pidfile /var/run/pcscd/pcscd.pid
eend $?
}
</pre>
</div>
<br />
<span class="enfasis">Primera impresión:</span> “Y aquí que cojones debe estar mal”.<br />
Bueno, como antes, me puse a analizar de nuevo todo la información del problema; empezando por el principio, vemos que el <span class="warning">WARNING</span>, ya nos decía: <span class="commandExec">-c/--chuid is deprecated and will be removed in the future, please use -u/--user instead</span><br />
Así que parece que la opción <span class="commandExec">-c/--chuid</span> que está para la jubilación y que hay que sustituirlo por la opción <span class="commandExec">-u/--user</span>; así que con todo esto si nos revisamos de nuevo el fichero <span class="systemPath">/etc/init.d/pcscd</span> y en el buscamos <span class="commandExec">--chuid</span>, vemos que aparece en la función <span class="commandExec">start()</span>, es decir en el arranque del servicio; dada la situación lo primero era seguir la recomendación del <span class="warning">WARNING</span>, por lo tanto sustituí la opción, guardé los cambios y volví a ejecutar el servicio y solo con esto el servicio se ejecutó sin queja alguna.<br />
<br />
Ahora ya tenemos el lector funcionando en el sistema, en la siguiente entrada comentaré el asalto con la instalación de lo que es el propio driver del DNI-E.<br />
<br />
Hasta la próxima enfermos.</div>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-4529097646321081736.post-39467632150157921272011-09-17T18:48:00.000+02:002011-09-18T18:38:34.790+02:00No cON Name 2011 (2/2)<div style="text-align: justify;">
<br />
<a href="http://4.bp.blogspot.com/-wa2dxYjGyXU/TnODs9cJVgI/AAAAAAAAAdU/j8Wmv4fKZRo/s1600/logoNcN.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-wa2dxYjGyXU/TnODs9cJVgI/AAAAAAAAAdU/j8Wmv4fKZRo/s1600/logoNcN.jpg" /></a><br />
<br />
<div style="font-family: "Courier New",Courier,monospace; text-align: left;">
<span style="font-size: 85%; font-weight: bold;">conjuntoEntradas() { </span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: 85%; font-weight: bold;"> <a href="http://enfermodelosbits.blogspot.com/2011/09/noconname-2011.html">No cON Name 2011 (1/2)</a></span><br />
<span style="font-size: 85%; font-weight: bold;"> No cON Name 2011 (2/2)</span><br />
<span style="font-size: 85%;">}</span></div>
<br />
Continuamos con el resumen de las ponencias del segundo día de la NcN.<br />
<br />
<span style="font-size: large;">7) Técnicas oscuras para combatir la pederastía en Internet</span><br />
<div style="color: #666666;">
By Juan Antonio Callés y Pablo González</div>
<br />
Juan Antonio y Pablo, después de presentarse y a que se dedican hacen, han pasado a exponernos los ciberdelitos que afectan, en gran medida a menores, que corren hoy por la red. Posteriormente nos han hecho un breve resumen de hasta dónde llegan las leyes para erradicar este tipo de delitos, en España y en Colombia, ya que han tenido la experiencia de colaborar, o más bien de que les pidiesen a ellos ayuda, para desarrollar una versión a medida de su “troyano” open source, para utilizarlo por la propia policía Colombiano en la captura de un criminal que extorsionaba a una menor de este país; experiencia que nos han explicado como empezó y fue evolucionando hasta terminal con la captura del delincuente.<br />
<br />
Luego nos han hecho 6 demos de varias de las utilidades que tiene el su <a href="http://www.flu-project.com/sobre-flu">troyano Flu</a> para que viésemos de lo que es capaz y aprovechar para ver si nos animamos a colaborar en este gran proyecto.<br />
Verdaderamente ha sido muy acertada, por parte de la organización, de meter esta charla tan amena al principio de la sesión del segundo día.<br />
<br />
<span style="font-size: large;">8) La Sibila (The Sibyl)</span><br />
<div style="color: #666666;">
By Pedro Fortuny y Rafael Casado</div>
<br />
Pedro nos ha explicado con un gran sentido del humor una posible solución que han diseñado y desarrollado que evita los ataques de fuerza bruta sobre los típicos <i>hashes</i> utilizados para no almacenar las contraseñas en claro en las BBDD, sin tener que obligar al usuario a utilizar combinaciones de caracteres de ésas que ponen los pelos de punta a los usuarios que no están paranoicos con la seguridad.<br />
<br />
La solución propuesta permite entre otras cosas, aislar la autenticación a otra máquina que solo haga eso y así se mejora la prevención de comprometer la máquina a través de otros servicios, es decir el concepto de que los servidores sean definidos por roles y no que hagan de todo. En la parte de cifrado de las contraseñas se utilizan claves RSA y cadenas aleatorias, permitiendo aumentar la seguridad ofrecida por los sistemas más habituales (<i>hashes</i>).<br />
Podéis consultar todos los detalles y descargar el sistema para que lo utilicéis en vuestro sistema en, ya que es <i>open source</i>, <a href="http://thesibyl.net/">aquí</a>.<br />
<br />
<span style="font-size: large;">9) (In)seguridad para jugones: apuestas, casinos y otros juegos de azar</span><br />
<div style="color: #666666;">
By Rafael Rodríguez</div>
<br />
Rafael no has explicado las mil y una pirulas que los amigos del lado oscuro aplican en los distintos tipos de juego y no juego, como máquinas de cambio de billetes, etc., para llevarse bypaseando las reglas de juego establecidas por los tan “lícitos” casinos.<br />
<br />
Hemos escuchado, de todo, desde trucos relacionados con soporte interno o sin él, pasando por el hacking de máquinas, redes, etc. y terminando con truqillos de obtención de información relevante para tomar decisiones óptimas en las futuras jugadas, vamos todo un festival.<br />
Luego ha dado el salto al negocio de los casinos on-line, donde has explicado que se han liberado de los problemas que se les presentan con los medios que utilizan para caer en los problemas que las TIC tienen, es decir ha sido la bienvenida al festival 2.0.<br />
<br />
Finalmente nos ha explicado las contramedidas que se toman los dueños de este gran negocio para evitar estas pirulas, para que a más de uno no caiga en la tentación de creer que este tipo de timos es como la gallina de los huevos de oro, es decir para que no seamos malos.<br />
<br />
Nos hemos entretenido a lo grande viendo todos los artilugios que emplean y aplican estos individuos. <br />
<br />
<span style="font-size: large;">10) Debugging (Exploit) Payloads</span><br />
<div style="color: #666666;">
By Jose Serlvi</div>
<br />
Jose nos ha dejado, o al menos a mí, atónitos con su charla; es la segunda que vez que asisto a una de sus charlas y como la primera esta hecha para absorber una cantidad de conocimientos increíbles. Ha sido una charla de 100% técnica donde nos ha explicado de que se trata el mundo de los <i>exploits</i>, pero centrándose en los <i>payloads</i>.<br />
<br />
Para meterse en el mundo de los <i>payloads</i> nos ha explicado una dos de sus experiencias, una sobre el conocido <i>0 day</i> de Internet Explorer que usaron los chinos para atacar a Google y otro para abrir un <i>reverse shell</i> en un iPad.<br />
<br />
En su primera experiencia hizo uso de <a href="http://metasploit.com/">metasploit</a> con el <i>payload</i> de aurora (el <i>0 day</i> comentado en el párrafo anterior) pero en ella tuvo que analizar el <i>payload</i> para conseguir que le funcionase en el entorno que tenía que auditar, por aspectos de idioma, y raíz de eso vio que es lo que el <i>payload</i> hace y también vio que si se usa como una demostración sobre un entorno real luego hay que avisar al administrador del equipo afectado para que restaure las configuraciones, ya que el <i>payload</i> los modifica para su menester pero no los restaura.<br />
<br />
En su segunda experiencia, partió de la base que si había una web donde se puede hacer un <i>jailbreak</i> de IOS 4.3 entonces es que tiene un <i>exploit</i>. Así que se puso manos a la obra para ver que hacía ese botón gordo de la web para conseguir el <i>jailbreak</i>, para posteriormente utilizar el <i>exploit</i> para ejecutar su <i>payload</i> que abre la conexión con la <i>shell</i> invertida.<br />
<br />
<span style="font-size: large;">11) Retorno de Inversión en la adecuación a la normativa PCI-DSS</span><br />
<div style="color: #666666;">
By Javier Moreno Molinero</div>
<br />
Javier ha hecho una ponencia de temática menos entretenida ya que las normativas aunque importantes, son un tostón; no obstante, considero que este tipo de charlas, no son menos ni importantes ni menos útiles.<br />
<br />
Por la parte que profesional que a mi me toca, no es que PCI-DSS me afecte de manea directa, pero puedo establecer una analogía de la defensa de la adopción de la normativa PCI-DSS, por parte de una empresa, frente los costes económicos defendidos por parte de los financieros, ya que en bastantes ocasiones me tengo que pegar de ostias con estos y los directivos para defender necesidades que normalmente se imputan como un gasto sin ningún beneficio vistos desde fuera del departamento de TI, es decir la defensa que tenemos que hacer con el famoso ROI (<a href="https://secure.wikimedia.org/wikipedia/en/wiki/Return_on_Investment"><i>Return of Investment</i></a>) para conseguir presupuesto en la aplicación de normativas legales, adquisición de vienes <i>(hardware </i>y<i> software</i>), etc.<br />
<br />
<span style="font-size: large;">12) Reversing / Forensic Android</span><br />
<div style="color: #666666;">
By Sebastián Guerrero</div>
<br />
Otra de las charlas con un listón altísimo, tanto de contenido como el propio ponente.<br />
<br />
Sebastián ha dado una charla de esas densas, no ha apenas respirado desde la primera sílaba hasta la última, momento en que ya se ha pasado a la ronda de preguntas; no obstante para nada se ha hecho pesada y mucho menos difícil de procesar la información, le ha dado humor por un tubo, mientras comentaba todo le iba metiendo inyecciones de bromas, coñas, etc.<br />
<br />
El contenido ha sido de lujo, partiendo de la pila de capas de la que se compone Android, pasando luego por de que se componen una aplicación de Android, herramientas útiles para hacer <i>reversing</i>, como se hace un <i>reversing</i> y análisis forense, para posteriormente decirnos como saltarse las protecciones para usar aplicaciones de pago <i>by de face </i>y finalizando con una demo de la PoC (<i>Proof of Concept</i>) que han desarrollado para cargar cualquier <i>payload</i> y conseguir hacer un <i>touchjacking</i>.<br />
<br />
<br />
<br />
Ahora toca la mesa redonda, pero aquí sobre esta no va ha haber nada así que si os interesa las tendréis que ver en <a href="http://www.globbtv.com/">GlobbTv</a>. <br />
<br />
Hay que agradecer a la organización <a href="http://noconname.org/">No cON Name</a> la profesionalidad que ha tenido en la planificación, organización y ejecución del congreso, todo ha estado currado a tope, tanto contenido de las ponencias, ponentes, como el orden de estas, que ha garantizado combinar las charlas que te mantiene despierto sea cual sea tu condición y otras que por temática, no menos importante, hagan del cansancio tu pero enemigo. <br />
<br />
<br />
Esto es todo amigos sobre este congreso; hasta la próxima enfermos.</div>
Anonymousnoreply@blogger.com1tag:blogger.com,1999:blog-4529097646321081736.post-55450641415183299722011-09-16T19:37:00.000+02:002011-09-18T18:38:56.010+02:00No cON Name 2011 (1/2)<div style="text-align: justify;">
<br />
<a href="http://4.bp.blogspot.com/-wa2dxYjGyXU/TnODs9cJVgI/AAAAAAAAAdU/j8Wmv4fKZRo/s1600/logoNcN.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-wa2dxYjGyXU/TnODs9cJVgI/AAAAAAAAAdU/j8Wmv4fKZRo/s1600/logoNcN.jpg" /></a><br />
Este año he repetido por segunda vez mi asistencia a la <a href="http://noconname.org/"><b>No cON Name</b></a> y por ahora ha sido igual o más fructuosa que el año pasado.<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: 85%; font-weight: bold;">conjuntoEntradas() { </span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: 85%; font-weight: bold;"> No cON Name 2011 (1/2)</span><br />
<span style="font-size: 85%; font-weight: bold;"> <a href="http://enfermodelosbits.blogspot.com/2011/09/noconname-2011-22.html">No cON Name 2011 (2/2)</a></span><br />
<span style="font-size: 85%;">}</span></div>
<br />
Con esta esta entrada os dejo un breve resumen de cada una de las ponencias del primer primer día.<br />
<br />
<span style="font-size: large;">1) Show me your Kung Fuzz</span><br />
<div style="color: #666666;">
By Iñaki Rodríguez</div>
<br />
Iñaki nos ha explicado inicialmente que es el <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Fuzzing"><i>fuzzing</i></a>, que básicamente lo ha resumido como: “Se trata de generar mucha mierda para que una aplicación reviente”.<br />
<br />
Inicialmente nos ha dicho para que nos puede servir el <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Fuzzing"><i>fuzzing</i></a>; lo que me gustaría destacar de estos es que a remarcado que no solo es un ámbito interesante para las empresas que se dedican a aspectos de seguridad, sino que también tiene un gran valor para el resto de empresas que han desarrollado aplicaciones y quieren descubrir posibles vulnerabilidades que tienen, claro está para corregirlas y ofrecer aplicaciones más robustas a tus clientes, en el caso que las comercialices, o a tus usuarios, en el caso que sea para uso interno.<br />
<br />
Luego de darnos la introducción nos ha mostrado un conjunto de aplicaciones, dentro de la lista interminable que hay, de aplicaciones para hacer <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Fuzzing"><i>fuzzing</i></a>, básicamente, como es normal, nos ha nombrado las que él utiliza, posteriormente nos ha dado una pequeña lista de lo que necesitaremos para montarnos un pequeño laboratorio de <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Fuzzing"><i>fuzzing</i></a>, unas cuantas máquinas, unas cuantas aplicaciones, un poco de conocimientos de programación en algún lenguaje de <i>scripting</i> y muchas ganas de ponerse a currar y a gastar horas jugando con todo esto. Poca broma con éste ámbito, el <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Fuzzing"><i>fuzzing</i></a> es entendible a todo, explotación de vulnerabilidades ficheros, aplicaciones locales, de red, protocolos de red, aplicaciones web, etc.<br />
<br />
Luego ya han venido un par de demos, mostrándonos cómo en pocos minutos ha encontrado un agujero en una aplicación comercial cuyo coste no es que sea precisamente “<i>low cost</i>”. <br />
<br />
Posteriormente un resumen de lo encontrado, de los problemas que surgen en el proceso de <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Fuzzing"><i>fuzzing</i></a>; algo que quiero mencionar es que como un aplicación pasa por múltiples estados, no podemos decir que una aplicación está libre de vulnerabilidades si no hemos encontrado ninguna en nuestro proceso de <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Fuzzing"><i>fuzzing</i></a> ya que es posible que solo hayamos barrido un % muy pequeño de todos estos estados.<br />
<br />
<span style="font-size: large;">2) Seguridad en el diseño: desde el principio</span><br />
<div style="color: #666666;">
By Ricardo J. Rodríguez</div>
<br />
Ricardo nos ha explicado y ha defendido en su ponencia que el diseño de un sistema tiene que incorporar la también la seguridad; es decir que actualmente, el diseño de sistemas, eso que se trata de pensar y valorar la solución que necesitamos para cumplir con los requerimientos que el sistema tiene que cumplir, ya ha obtenido un cierto reconocimiento a nivel mundial, y lenguajes como <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Unified_Modeling_Language">UML</a> ya se han consolidado como estándar, pero por ahora la seguridad no es uno de los ámbitos que se tiene en cuenta en el diseño de un sistema, y eso es lo que él y sus compañeros del equipo de investigación de la universidad están trabajando para conseguir obtener una aprobación teórica que agrade a los que necesitan que todo esto sea práctico, es decir, como de costumbre en el campo de la investigación, pasar de las demostraciones teóricas a la práctica que el mundo de los negocios requiere.<br />
<br />
No me voy a meter en concreto en metodologías, estándares, etc, que ha comentado en la ponencia, esa información puede obtenerse de manera amplia en los <i>papers</i> de investigación que han publicado.<br />
<br />
Lo que me ha gustado de la ponencia, es que yo soy 100% partidario de pensar, reflexionar y valorar las múltiples variable que pueden afectar a lo que pretendes crear o poner en funcionamiento, ya que eso garantiza que en el momento del despliegue se reduzca el riesgo de que surjan imprevistos y después durante la explotación tenga un mayor nivel de control sobre las incidencias que puedan surgir garantizando velocidad de detección de la fuente del problema y de la velocidad de reacción; es decir que al haber defendido que la seguridad tiene que estar incluida en la fase de diseño de un sistema como en el desarrollo de software es algo que me ha llegado al alma, porque en mi día a día profesional me veo obligado a vivir en el caos y con una mínima dedicación a la planificación y a la organización, y no será porque lo pongo constantemente encima de la mesa, teniendo que sufrir que me tomen como un paranoico.<br />
<br />
<span style="font-size: large;">3) Geolocalización Wi-Fi basada en API</span><br />
<div style="color: #666666;">
By Yayo F. Hansen</div>
<br />
Primero de todo hay que mencionar la entrada inicial que ha hecho Yago en su ponencia, la musiquita, el texto que aparecía en pantalla y finalmente su entrada a oscuras con un sombrero en la cabeza, creo, que nos ha permitido a todos partirnos la caja. <br />
Dejando de banda el show, nos ha dado un repaso sobre los sistemas de <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Geolocation">geolocalización</a> y los virtudes y demencias de cada una; de cada sistema GPS, GSM, Wi-Fi y GeoIP, nos ha explicado como operan y como accedemos a esa información.<br />
Lo más destacable y que más ha expuesto, de ahí el título de la ponencia, es la geolicalización Wi-Fi que está un poco en auge, con lo del HTML 5 y la famosa API de Google que tanto ha dado que hablar, y con razón.<br />
Me he puesto algo más al día de como está todo este embrollo de la <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Geolocation">geolocalización</a>, además de meterme el miedo sobre la seguridad de los sistemas móviles Android, algo que ya conocía, pero su manea de decirlo y de interpretarlo, y ahora que hace un par de semanas que llevo un Android en el bolsillo, el miedo se me ha calado todavía más al fondo, por lo que me va tocar a dedicar un poco de tiempo al cacharraro que va en mi bolsillo, porque en estas dos últimas semanas apenas he tenido tiempo para explorarlo a fondo y ver como puedo, al menos, conseguir tener algo más de control sobre éste.<br />
Verdaderamente ha sido una ponencia estupenda, y se ha hecho muy amena, gracias a la pizca de humor que ha ido aplicando durante su presentación.<br />
<br />
<span style="font-size: large;">4) Terminal Hackapplications – old and new tricks hacking Citrix and Terminal Services</span><br />
<div style="color: #666666;">
By Chema Alonso y Juan Garrido</div>
<br />
De esta ponencia, no voy a describir muy concretamente lo que nos han mostrado, ya que tiene una una gran densidad técnica, mediante demo en directo, para el tiempo que tenían; además muchos de vosotros habréis ido siguiendo lo que <a href="http://www.elladodelmal.com/">Chema</a> y <a href="http://windowstips.wordpress.com/">Juan</a> escriben en sus respectivos <i>blogs</i>, además de poder ver esta misma ponencia, presentada en la Black Hat USA 2011, donde la presentaron, que la podéis ver en algún vídeo colgado por ahí.<br />
<br />
Como en todas las que he asistido, las ponencias de Chema son todo un show, que os voy a contar, el nivel de conocimiento que se expone y que puedes absorber es increíble, ya que técnicamente son muy buenas y amenas, y con el cachondeo que se trae, los conocimientos entran solos; quiero resaltar que el duo que esta vez ha hecho con Juan, ha sido muy muy bueno, yo siempre lo había visto exponer solo, pero la mezcla con Juan y la interpretación de este han dejado el listón tal alto, como siempre él me había dejado en sus exposiciones en solitario.<br />
<br />
Bueno resumiendo rápido, nos han expuesto como explotar AGUJEROS de seguridad en aplicaciones de Terminal Services y Citrix, tan de moda hoy en día y publicadas en Internet sin mucho reparo, verdaderamente si yo tuviese este tipo de entornos ya me veo solicitando una reunión con dirección para exponer la seriedad del asunto y pedir los recursos necesarios para aplicar las consecuencias con las medidas que Chema y Juan nos han indicado, aunque la soluciones sean muy complicadas, llevan mucho tiempo y aún así, no te garantizan que lo hayas cerrado todo.<br />
<br />
<span style="font-size: large;">5) Ejercicios de demostración JWID (Joint Warrior Interoperability Demostration)</span><br />
<div style="color: #666666;">
By Pedro Sánchez</div>
<br />
Pedro nos ha expuesto los esfuerzos de los estados por conseguir tener herramientas, desarrollar estrategias y estar al día en la defensa/ataque frente a los ataques cibernéticos, englobados a los que ellos entienden como ciberguerra.<br />
<br />
Nos explicado que hay congresos, concursos, etc, sobre todo esto; la verdad es que es impactante que pueda llegar el día que si tienes una idea feliz, le dedicas tiempo y llegas a algo útil que pueda ser útil en este campo, puedas acabar en un congreso sobre esto, lleno de “tíos con uniforme”, de esos que hasta ahora la mayor parte de la población piensa que llevan un fusil en la mano, cuando hoy en día ya parece que está creciendo el número de “tíos de estos” que ya no llevan un fusil en la mano, sino un ordenador.<br />
<br />
Estoy sorprendido ya que pensaba que los estados no estaban invirtiendo tantos esfuerzos como lo que Pedro ha expuesto, y sobre todo algo que me deja más tranquilo, es que están subcontratando servicios profesionales para mejorar la seguridad en este ámbito; tendré que empezar a creerme que nuestro estado nos defiende.<br />
<br />
<span style="font-size: large;">6) Medical Device Security: State of Art</span><br />
<div style="color: #666666;">
By Shawn Meginger</div>
<div style="color: #666666;">
<br /></div>
Shawn no ha puesto al día con todo lo relacionado con la seguridad que hay en los dispositivos y aplicaciones del ámbito médico.<br />
<br />
Ha sido una ponencia muy descriptiva de como está este ámbito; a descripto tipo de dispositivos y aplicaciones que hay y que problemas de seguridad pueden tener y el alcance que puede tener un ataque sobre uno de estos.<br />
También ha reclamado que es un aspecto peliagudo, los fallos de estos ponen en juego la vida de un grupo de personas, pero aún así los fabricantes de este ámbito parece que ignoren la seguridad by defautl.<br />
<br />
Finalmente ha listado los investigadores que han escrito <i>papers</i> y descubierto agujeros de seguridad en productos de este ámbito, además también ha citado ciertos grupos de investigación, “normativas” que se han desarrollado o están en desarrollo y algo más que seguro que me dejo.<br />
<br />
<br />
<br />
<br />
Finalmente el día ha terminado con la mesa redonda que estaba anunciada, “Ataques a las grandes Corporaciones”, la cual ha estado entretenida, pero no voy a dar más detalle; los interesados que no han podido asistir seguro que tendrán la posibilidad de verla retransmitida por algún lugar.<br />
<br />
<br />
Nos vemos mañana enfermos.</div>
Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-4529097646321081736.post-22235524833090432952011-09-10T22:01:00.000+02:002011-09-10T22:01:40.293+02:00Root power a lo old school<div style="text-align: justify;"><br />
Después de haber caído de nuevo en la tentación de dar preferencias a otros temas profesionales y personales por distintas causas antes que a este <i>blog</i>, aprovecho esta tarde de sábado, de un fin de semana de esos que estoy agotado físicamente por liarme a organización de eventos deportivos, concretamente de BTT, para escribir una de las entradas que hace tiempo que tenía ganas de escribir.<br />
<br />
Bueno después de lavarme la conciencia con excusas vamos al lío.<br />
<br />
Menciono de antemano que nadie se tome el contenido de esta entrada como una buena práctica, y menos para usuarios no catalogados como <i>frikis</i> de muchos de las distribuciones Linux que corren por ahí, sino como algo totalmente de gusto personal, aunque muchas de los aspectos los argumente desde un sentido que pueda parecer racional. Advertidos estáis, paso a meterme de lleno en el tema.<br />
<br />
Todos sabemos que desde ya hace bastante tiempo en gran parte de las distribuciones de Linux viene con la herramienta <a href="http://www.sudo.ws/">sudo</a> instalada y con una configuración básica que permite ejecutar cualquier comando del sistema desde el usuario que se crea en la instalación del SO.<br />
<br />
A mi la herramienta me parece cojonuda, pero cuando me topé con ella sin haber consultado su documentación y habiendo enterado de ella cuando volví a la carga con un SO Linux, después de un tiempo sin usarlo, me saltaron chispas al ver que no podía entrar con la cuenta de <i>root</i> al sistema; en ese tiempo sabático que me tomé después de haber terminado la universidad y haber empezado lo que podríamos llamar entre comillas “mi vida completamente laboral/profesional”, no estuve muy al día sobre el mundo Linux y los recuerdos que me quedaron fueron los de la universidad, tiempo en el que la herramienta <a href="http://www.sudo.ws/">sudo</a> o no existía, o yo no la conocía, y con las distribuciones que tocaba, no venía instalada y preconfigurada como ahora viene, es decir, que cuando instalabas un Linux, metía las contraseña de <i>root</i> y luego según si eras aplicado y te dejabas recomendar, optabas por crear una cuenta sin privilegios administrativos para usar el sistema tu día a día.<br />
<br />
El momento inicial me jodí y adopte lo que venía dado, ejecutar todo lo que necesitaba derechos administrativos con <a href="http://www.sudo.ws/">sudo</a>.<br />
<br />
El tiempo ha ido pasando, y finalmente en mi mundo personal (el de trastear por casa con los equipos que más utilizo) opté por seguir cultivándome con Linux, ya que en el mundo profesional estaba y estoy inmerso en el mundo Microsoft (que esto no se tome como una discriminación entre ambos, cada uno, como todo en este mundo, tiene cosas buenas y otras malas, cosas que nos gustan y que no nos gustan, pero yo soy de los de según lo que necesitemos optar por la que mejor cumpla las necesidades de cada momento, sin casarme con nadie); eso si mi cultivo no era el de productor agrario sino el del típico dominguero que tiene un huerto en su segunda residencia, es decir que gran parte de mi tiempo libre me dedico a jugar en este inmenso mundo de la informática, con ojos de generar beneficio económico, pero si no lo hay, me divierto un poco según lo que me voy topando y también si me va viniendo en gana.<br />
<br />
Hace algún tiempo, le tocó el turno a profundizar un poco en el tal <a href="http://www.sudo.ws/">sudo</a>; algo que no vino antes, porque como <a href="http://enfermodelosbits.blogspot.com/2009/12/aprendiendo-ostias.html">mi evolución del uso personal de un Linux, cambió de distribución, de una Ubuntu a una Gentoo</a>, perdí de manera intrínseca las cadenas que me ataban a no ser el amo del sistema, y que vino más tarde porque me metí un poco en aspectos de la seguridad, añadiéndola a la lista de curiosidades tecnológicas que me gustan, aprovechando que encima, eran importantes para mi posición profesional actual.<br />
<br />
Después de ver de manera general como funciona la herramienta, no es que sea un gurú de ésta, la configuré sobre mi Gentoo, para evitar tener que ir cambiando de cuenta cuando a la vez que administraba el sistema, por ejemplo lo actualizaba, tuviese que estar constantemente cambiando de sesión con mi cuenta de usuario cuando la tarea administrativa toma algún tiempo, ya que la opción de usar el sistema de manera convencional (navegar por internet, etc.) desde un Dios, no me gusta nada, porque ya somos muy vulnerables para encima meter más leña al fuego. No obstante la configuración no fue como la que acostumbra a venir por defecto en la instalación de varias de las distribuciones disponibles, sino que limité las aplicaciones y/o comandos a ejecutar como <i>root</i> desde el usual usuario, así creo que hay menos riesgo si me usurpan la contraseña de éste.<br />
<br />
Mi vida con Gentoo fue tirando así, pero ya hace bastante menos tiempo, que decidí cambiar la configuración de <a href="http://www.sudo.ws/">sudo</a> del Ubuntu que tengo instalado en mi <i>netbook</i>, máquina que uso para llevármela por ahí y para estar tirado en algún lugar de casa haciendo el ganso, como ahora mientras escribo este <i>post</i>, es decir que necesito que esté estable de manera fácil lo máximo posible y que el hardware esté disponibles sin tener que romperme mucho la cabeza, sin perder lo que ya he mencionado, estar inmerso en el mundo y filosofía Linux en mi tiempo libre. La configuración que establecí partió del mismo concepto que la de Gentoo pero como <i>root</i> continuaba sin ser accesible mediante una sesión tuve que investigar el porque, ya que hasta entonces lo ignoraba, descubriendo el porque no se podía iniciar sesión, que concretamente es porque la cuenta <i>root</i> es bloqueada con la opción <span style="color: blue;">--lock</span>, comando <span style="color: blue;">passwd</span>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-o_Tt7U_h95U/TmvBnQyp4cI/AAAAAAAAAdQ/Q_nlgJx6vtA/s1600/opcion+lock+passwd.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="241" src="http://2.bp.blogspot.com/-o_Tt7U_h95U/TmvBnQyp4cI/AAAAAAAAAdQ/Q_nlgJx6vtA/s640/opcion+lock+passwd.png" width="640" /></a></div><div style="color: #666666; text-align: center;"><span style="font-size: x-small;">Descripción de la opción --lock del comando passwd</span></div><br />
Así que activé la cuenta <i>root</i> con la manera tan fácil como asignándole un nuevo <i>password</i> ya que entiendo que al no haberme pedido ninguno en el momento de la instalación la cuenta estaba bloqueada pero no tenía ninguno asignado y si lo tenía lo desconocía, y desde ese momento ya podía hacer lo que siempre había deseado, que si quiero dedicarme a solo administrar la máquina no tenga que estar constantemente ejecutando <a href="http://www.sudo.ws/">sudo</a>.<br />
<br />
Bueno ya acabando con esto voy a responder algunas de las preguntas que yo mismo me hice.<br />
<ol><li>Con el cambio que he hecho en la configuración de <a href="http://www.sudo.ws/">sudo</a> ¿mi sistema es más vulnerable?<br />
Yo entiendo que no, incluso menos, porque habiendo quitado la configuración estándar de <a href="http://www.sudo.ws/">sudo</a>, que viene por defecto en la instalación de Ubuntu, he eliminado aspectos, como el tiempo que se guarda la autorización, cambiándola a 0 segundos, es decir que cada ejecución de <a href="http://www.sudo.ws/">sudo</a> siempre me pide el <i>password</i>, independientemente del tiempo que haga de la última ejecución, y además he limitado que V solo autorice un número limitado de comandas y/o aplicaciones en vez de poder ejecutar cualquiera de estos.<br />
<br />
</li>
<li>Ahora que <i>root</i> puede logearse en el sistema mi equipo ¿es más vulnerable?<br />
Podría ser lo si no le hemos asignado ningún <i>password</i>, o si hacemos mal uso de ella, utilizándola para otros menesteres que no sean los de administrar. Además, aunque tenga poco impacto, y sea una paranoia personal, teniendo otra cuenta con otro <i>password</i> que nos permita administrar la máquina, considero que es más seguro porque también exponer mucho menos el <i>password</i>, ya que usando <a href="http://www.sudo.ws/">sudo</a> cada vez que ejecutas aplicaciones con derechos administrativos necesitas proporcionar el <i>password</i> de usuario exponiendo esté continuamente.<br />
<br />
</li>
<li>¿Es aplicable esta configuración a todos los distintos perfiles/tipos de usuarios?<br />
Considero que no, que la configuración por defecto de la instalación del SO es más aceptable para un usuario si no conocemos a que tipo pertenece, ya que los usuarios que no son unos <i>frikis</i> de los sistemas, no les gusta hacer muchos esfuerzos en mantener dos cuentas de usuarios, teniendo que recordar dos <i>passwords</i> distintos, así que configurándolo como a mi me mola, creo que una parte de estos caería en la tentación de utilizar la cuenta de <i>root</i> como la habitual, dejando olvidado la de usuario, corriendo el riesgo que se corre ejecutando la mayor parte de las aplicaciones con derechos administrativos, y más concretamente hoy en día, con la manera masiva en que utilizamos los navegadores conjuntamente con Internet.<br />
<br />
</li>
</ol><br />
<br />
Hasta la próxima enfermos.</div>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-4529097646321081736.post-61822380498152020352011-08-13T18:57:00.000+02:002011-08-13T18:57:02.788+02:00Otro vulgar scammer más<div style="text-align: justify;"><br />
Aunque ya me ha pasado el 90% de las veces que me pongo a vender algo en <a href="http://www.segundamano.es/">segundamano.es</a>, está va a ser la primera vez que publico los mails que me he cruzado con el vulgar <i><b>scammer</b></i> de turno, más bien motivado, porque estoy de vacaciones, aunque esto no quiere decir que me haya sobrado el tiempo, ya que vuelvo al curro la semana que viene y en la pila de cosas que quería hacer no se ha quedado en 0 elementos.<br />
<br />
La historia es la de siempre; aprovechando el servicio de <a href="http://www.segundamano.es/">segundamano.es</a> me he puesto a vender un artilugio que tenía por casa el cual no tengo intención de utilizar más y ya que el mundo físico no se comportar de manera tan boyante como el mundo virtual, en términos de espacio de almacenamiento, decido venderlo para sacarle algo de provecho, es decir algo de pasta.<br />
El primer mail del vulgar <i><b>scammer</b></i> no era más que una pregunta que hace muchos de los posibles interesados por artículo:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-zxafbXgLXKw/TkanT8Cf-8I/AAAAAAAAAcs/PBFUoxB0e8I/s1600/mail+01+-+contacto.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="283" src="http://4.bp.blogspot.com/-zxafbXgLXKw/TkanT8Cf-8I/AAAAAAAAAcs/PBFUoxB0e8I/s640/mail+01+-+contacto.png" width="640" /></a></div><br />
<div style="text-align: center;"><span style="color: #666666;"><span style="font-size: x-small;">Toma de contacto del <b>scammer </b></span></span></div><br />
Aunque ya se empezaba a notar las complicaciones que estos individuos acostumbran a tener con el Español y las costumbres que nosotros tenemos y que estos no es que se hayan informado mucho.<br />
<br />
El tío se llama “Jose María”, vamos que más Español, el nombre no podía ser y con la gramática que había utilizado ya no encajaba mucho, pero bueno aunque es un indicio, la gente que contacta a través del formulario web no suele esmerarse mucho en escribir más o menos correcto, y cuento las faltas de ortografía, ya también soy bastante malo para eso; luego resulta que la dirección de mail es mariajose12000@yahoo.com, dejando lo de 12000, se deberá al <i>overbooking</i> que hay de “mariajose” en las direcciones bajo el dominio yahoo.com, el tío parece que le mola lo del cambio de sexo, y con esto no es que yo tenga algún problema con ello, tengo 100% de respeto a este asunto, ya que para mí esto es una práctica de la libertad de un derecho que no hace daño a los demás, pero no nadie negará que no es una situación extraña, sobre todo cuando las costumbres de muchos países de habla no española suelen tener un apellido y muchas veces cuando tu vas con dos apellidos se piensan que tu 1er apellido es parte de tu nombre (nombre compuesto) y el segundo es tu único apellido, <a href="http://enfermodelosbits.blogspot.com/2010/03/reencuentro-con-eduard-jodas.html">con esto ya me encontré en las oficinas de Google de Zurich, cuando me fuí a visitar a un colega, no había manera de que lo encontraran, por este mismo hecho</a>.<br />
<br />
Dicho esto, continuamos con la historia:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-34ke5It6a5k/TkanUJ1bQtI/AAAAAAAAAcw/Ehi_kPo8xwg/s1600/mail+02+-+interesandose+en+la+compra.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="364" src="http://2.bp.blogspot.com/-34ke5It6a5k/TkanUJ1bQtI/AAAAAAAAAcw/Ehi_kPo8xwg/s640/mail+02+-+interesandose+en+la+compra.png" width="640" /></a></div><div style="text-align: center;"><span style="color: #666666;"><span style="font-size: x-small;">El <b>scammer</b> se interesa en comprar al artículo y te cuenta la típica historia paternal para tocarte el corazón</span></span></div><br />
Ahora le dí un poco de juego para ver como reacciona sobre una posible víctima:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-GeDtT-5g2P0/TkanUh7yT5I/AAAAAAAAAc0/oW3jBua4g04/s1600/mail+03+-+respuesta+para+seguirle+la+corriente.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="244" src="http://3.bp.blogspot.com/-GeDtT-5g2P0/TkanUh7yT5I/AAAAAAAAAc0/oW3jBua4g04/s640/mail+03+-+respuesta+para+seguirle+la+corriente.png" width="640" /></a></div><div style="text-align: center;"><span style="color: #666666;"><span style="font-size: x-small;">Que sí que sí que me creo tu historia</span></span></div><br />
Que conste que el número de cuenta, que por supuesto no es mío, lo saque de una de las múltiples <i>webs</i> que meten su número de cuenta bancaria para recibir cobros de clientes, es decir que la he sacado de entre información que está accesible al público.<br />
<br />
Y ahora viene lo mejor, BANK OF AMERICAN, hace ofrece un tipo de servicios que en mi vida he visto, será porque los norte americanos son así de serviciales con los clientes que les dan bien de comer.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-11fOEY7ZvYE/TkanVjnH07I/AAAAAAAAAc4/-WDj90-Bqrs/s1600/mail+04+-+primer+contacto+del+supuesto+banco.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="http://3.bp.blogspot.com/-11fOEY7ZvYE/TkanVjnH07I/AAAAAAAAAc4/-WDj90-Bqrs/s640/mail+04+-+primer+contacto+del+supuesto+banco.png" width="446" /></a></div><div style="text-align: center;"><span style="color: #666666;"><span style="font-size: x-small;">Bank of American nos confirma la transferencia que ha hecho el comprador, joder como se lo curran</span></span></div><br />
"<span style="color: #38761d;">Ostia, no sabía yo que esto de la crisis había tocado tanto a los bancos que han tenido que vender sus dominios al mejor postor y empezar a utilizar dominos más asequibles (bank.of.american@v.gg)</span>"<br />
<br />
Por cierto este mail, al contrario que el resto, si que gmail, lo metió en el buzón de SPAM.<br />
<br />
Continuamos viendo el problema detectado con el nombre utilizado, ¿es un tío o una tía?<br />
<br />
Por si no te quedó claro con el mail anterior que encima te lo envían a ti con copia a ti mismo, el banco te envía otro, pero ahora con os he cargado las imágenes para que veáis lo corporativos que son:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-TYF12q7dSn0/TkanW8Utg-I/AAAAAAAAAc8/Ia49qUz5P70/s1600/mail+05+-+segundo+mail+del+supesto+banco.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="618" src="http://1.bp.blogspot.com/-TYF12q7dSn0/TkanW8Utg-I/AAAAAAAAAc8/Ia49qUz5P70/s640/mail+05+-+segundo+mail+del+supesto+banco.png" width="640" /></a></div><br />
<div style="text-align: center;"><span style="color: #666666;"><span style="font-size: x-small;">Si no te ha quedado claro, te mandamos otro mail, pero con nuestras bonitas imágenes corporativas</span></span></div><br />
Es más parece que si te meten unos cuantos dolares al final del mail, te va a convencer más que esto no es un bulo:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-Mp14TpKMkR0/TkanXZYvVpI/AAAAAAAAAdA/K_WpRxdUTSo/s1600/mail+05+-+segundo+mail+del+supesto+banco+%2528footer%2529.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="310" src="http://4.bp.blogspot.com/-Mp14TpKMkR0/TkanXZYvVpI/AAAAAAAAAdA/K_WpRxdUTSo/s640/mail+05+-+segundo+mail+del+supesto+banco+%2528footer%2529.png" width="640" /></a></div><div style="text-align: center;"><span style="color: #666666;"><span style="font-size: x-small;">El final del segundo mail enviado por el banco viene con unos cuantos dólares</span></span></div><br />
Ahora, que todo está hecho el <i><b>scammer</b></i> te dice que todo está hecho y te suelta el rollo de que el banco ha confirmado que el dinero está listo para entrar en tu cuenta.<br />
<br />
"<span style="color: #38761d;">joder que amables y confiados son estos extranjeros y sobre todo agradecidos, me han dado 50 € más de lo que pedía; esto son buenos clientes y lo demás son tonterías</span>"<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-rKP3NgV1a94/TkanXzl0nTI/AAAAAAAAAdE/S6QxEJl5_sE/s1600/mail+06+-+scammer+confirmando+la+transferencia.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="236" src="http://2.bp.blogspot.com/-rKP3NgV1a94/TkanXzl0nTI/AAAAAAAAAdE/S6QxEJl5_sE/s640/mail+06+-+scammer+confirmando+la+transferencia.png" width="640" /></a></div><div style="color: #666666; text-align: center;"><span style="font-size: x-small;">El <b>scammer</b> informando que ha pagado y encima más de lo que pedías</span></div><br />
Bueno llegado a este punto ya me cansé de jugar así que como no he respondido al último mail con lo que pide me ha enviado otro soltando un rollo de que es una persona honrada y que está al corriente de este tipo de timos, pero que él/ella no es así.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-WC9_B07DyFY/TkanYQ0or6I/AAAAAAAAAdI/kblKKfBf2Is/s1600/mail+07+-+el+scammer+se+inquieta+al+no+responder.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="342" src="http://3.bp.blogspot.com/-WC9_B07DyFY/TkanYQ0or6I/AAAAAAAAAdI/kblKKfBf2Is/s640/mail+07+-+el+scammer+se+inquieta+al+no+responder.png" width="640" /></a></div><div style="text-align: center;"> <span style="color: grey;"><span style="font-size: x-small;">El <b>scammer</b> jurando que es una hermanita de la caridad</span></span></div><br />
<br />
Visto esto y todas las veces que me ha pasado siempre que intento vender algo en <a href="http://www.segundamano.es/">segundamano.es</a> (y eso que ellos mismos avisan de este tipo de prácticas), creo que me queda claro que aunque a este tipo de timos se le vé el plumero por todos lados, parece que siempre, aunque parezca mentira, debe picar alguien por eso de la ley de los grande números, sino ¿porqué lo continúan intentando?<br />
<br />
Bueno por si alguien duda estos días y decide meter buscar en google las direcciones mariajose12000@yahoo.com y bank.of.american@v.gg para ver si alguien ha reportado algo, al menterlas aquí espero que alguien dé con el <i>post</i> y le queden claras todas sus dudas.<br />
<br />
Por otra parte, para quien no esté al corriente, hay que tener en cuenta que por mucho <a href="http://enfermodelosbits.blogspot.com/2011/05/spf-v1-en-gmail-como-funciona.html">que vengan los mails de direcciones con el dominio apropiado a la entidad bancaria, no es una fuente de garantía, y si usáis gmail, hace un tiempo, no sé si actualmente continúa igual, no siempre avisa</a>.<br />
<br />
<br />
Hasta la próxima enfermos.<br />
<br />
</div>Anonymousnoreply@blogger.com6tag:blogger.com,1999:blog-4529097646321081736.post-55689611588184395362011-08-10T21:57:00.000+02:002011-08-10T21:57:30.670+02:00Gnome loves ConsoleKit<div style="text-align: justify;"><br />
El otro día, como hago cada semana durante el fin de semana que es cuando uso mi PC de casa para frikear, <a href="http://enfermodelosbits.blogspot.com/2009/12/aprendiendo-ostias.html">me puse a actualizar el Gentoo que tengo instalado</a>, es decir que ejecute el comando:<br />
<br />
<span class="commandExec">$ emerge --deep --update --newuse world</span><br />
<br />
No obstante, como también siempre hago, revisé que es lo que iba a actualizar (opción <span class="commandExec">-pv</span>), y sin ver nada que me llamará la atención o actualizaciones que requieren que luego haga otra cosa, como actualización de las fuentes del kernel, las cuales me implican migrar el fichero de configuración de la versión anterior a la versión recientemente descargada y luego compilar y reconfigurar el boot, lancé la ejecución del comando mencionado.<br />
Entre las distintas actualizaciones había la <b>actualización del Gnome</b>, escritorio que utilizo, a la <b>versión 2.30</b>.<br />
<br />
Hasta aquí nada raro, se empezó a descargarse cada paquete en el orden estipulado, a compilarse y desplegarse. Una vez terminada las actualizaciones a reiniciar la máquina, y a partir de aquí fue cuando empezaron los dolores de cabeza por una estupidez, pero que se me alargo unas cuantas horas, todo por que Mr. Google, no me daba la respuesta que quería, con las preguntas que yo le hacía, seguramente porque no estaba haciendo las preguntas correctas.<br />
<br />
Los inconvenientes que tuve después de actualizar, no eran graves, pero si toca pelotas:<br />
<ol><li>No podía apagar, reiniciar, hibernar, etc. la máquina desde la sesión del usuario, sin privilegios, que utilizo día a día; no solo era porque no tenía derechos, sino porque <b>en el menú de la interfaz gráfica no aparecían los botones correspondientes</b>.</li>
<li><b>Los Pen Drives, que pinchaba no se automontaban</b>, así que tenía que hacerlo manualmente desde un usuario con privilegios.</li>
</ol>Después de leer varias historias de la peña que va preguntando en <i>posts</i>, otros que escriben en blogs, como yo estoy haciendo ahora, respuestas de listas de correo y otras de las distintas fuentes que corren por este mundo intangible, no encontré nada que me dijera como tenía que solucionar el problema.<br />
<br />
Así que con todo lo que iba leyendo, iba enterándome de cosas que desconocía, y mezclándolas con las cosas que ya conozco, empecé a trastear en el sistema que si meto las entradas en el <span style="color: blue;">/etc/fstab</span> de los <i>Pen Drives</i>, que si reviso la configuración de Gnome con el gconf-editor, a revisar los servicios iniciados, etc.<br />
<br />
Algo que ya sabía y que debido a la antigüedad de alguna de la información que encontraba, no estaba reflejado, es que <a href="https://secure.wikimedia.org/wikipedia/en/wiki/HAL_%28software%29">HAL (Hardware Abstraction Layer)</a> ya no se usa, es decir que está deprecated, así que lo de cargar el servicio <a href="https://secure.wikimedia.org/wikipedia/en/wiki/HAL_%28software%29">HAL</a>, nada de nada; otras de las historias que me llevo a trastear eran las referencias que la peña hacía a <b>udev</b> y <b>udisk</b> y apartir de aquí, junto con la frase que venía a decir algo así como “<b>Gnome necesita ConsoleKit para su correcto funcionamiento</b>”, que obtuve de la documentación del propio proyecto de Gnome, me encaminé hacia la dirección correcta para solucionar el problema.<br />
<br />
El servicio <b>udev</b> estaba iniciado, pero <b>udisks</b> no se iniciaba, daba un error al hacerlo, así que algo pasaba; a raíz de esto y de la frase que he comentado que obtuve de la documentación del proyecto Gnome, revisé si <b>ConsoleKit</b> estaba iniciado, y no lo estaba así que lo inicié y entonces si que <b>udisks</b> se iniciaba así que parecía que todo estaba solucionado, añadí al inicio del sistema la ejecución del servicio:<br />
<br />
<span class="commandExec">$ rc-update add consolekit boot</span><br />
<br />
y a reiniciar para acabar de ver si solucionaba los inconvenientes.<br />
Inicio sesión con mi usuario sin privilegios y buahlá ya tenía botones de apagar, reiniciar, suspender e hibernar la máquina y si pinchaba un <i>Pen Drive</i>, grrrrr, nada de nada, “espera, espera, ….. que antes he tocado el <span style="color: blue;">/etc/fstab</span> y no lo he dejado como estaba, así que vamos a borrar esas entradas (la del <i>Pen Drive</i>) que había metido y que no he quitado”; y ahora sí los <i>Pen Drives</i> ya vuelven a automontarse de nuevo.<br />
<br />
Así que solucioné los inconvenientes, me enteré de bastantes cosas, como habitualmente me pasa cuando me veo obligado a solucionar problemas, esta es una de las razones por las que instalé un Gentoo, y de rebote solucione el inconveniente que tenía desde el inicio del sistema, que las unidades ópticas (DVD-ROM, etc) no se automontaban, ¿porqué? Porque había metido las entradas en el <span style="color: blue;">/etc/fstab</span>.<br />
<br />
Así que ya sé para la siguiente vez que el Gnome haga cosas raras revisar si <b>ConsoleKit</b> está iniciado ya que con algún cambio del sistema puede que no se inicie o directamente haya desparecido de la lista de servicios a iniciar en el arranque del sistema.<br />
<br />
Hasta la próxima enfermos.<br />
<br />
</div>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-4529097646321081736.post-80194543416762865082011-07-21T23:44:00.002+02:002011-07-21T23:44:00.651+02:00Ponencia-Taller de Dr. Metrics<div style="text-align: justify;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/--wS-Lj69vUo/Tih8GT5oaMI/AAAAAAAAAco/XpZIacUrc-Y/s1600/metricas+web.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="http://3.bp.blogspot.com/--wS-Lj69vUo/Tih8GT5oaMI/AAAAAAAAAco/XpZIacUrc-Y/s200/metricas+web.png" width="195" /></a></div>El pasado día 19 de Julio del 2011, me pasé por una Ponencia-Taller que realizaba <a href="http://www.doctormetrics.com/"><b>Dr. Metrics</b></a> (Enric Quintero), organizado por <a href="http://iniciador.com/barcelona/">Iniciador Barcelona</a>, sobre <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Web_analytics">Web Anlytics</a> (<a href="https://secure.wikimedia.org/wikipedia/es/wiki/Analisis_web">Análisis Web</a>) para ver que podía sacar de allí para abrir mi mente a futuras ideas, expectativas profesionales, absorber algo más de conocimiento y si se daba la ocasión, hacer algo de <i>networking</i>.<br />
<br />
En el anunció del “Taller” se indicaba que <a href="http://www.doctormetrics.com/"><b>Dr. Metrics</b></a> era un crack de los productos <a href="http://www.google.com/intl/en/analytics/">Google Analytics</a> y <a href="https://www.google.com/accounts/ServiceLogin?service=websiteoptimizer&continue=http://www.google.com/analytics/siteopt/?hl=en&hl=en">Optimizer</a>, así que me hizo pensar que <i>spamearia</i> bastante de estos productos, algo que ya me parecía bien, por eso asistí, porque seguro que siempre se puede aprender algo; no obstante la ponencia me sorprendió porque el nivel de SPAM sobre Google fue bajo, además de ser crítico con lo que estos productos aportan y no aportan.<br />
<br />
<a href="http://www.doctormetrics.com/"><b>Dr. Metrics</b></a>, claramente, anunció que el <b>analizar el éxito de tu <i>site</i></b> no solo se trata de el número de visitas, que páginas se han visitado y cuanto tiempo se ha visitado cada página, sino que al final toda esa información es importante si puedes ligarla con otros aspectos que te puedan describir el comportamiento de los visitantes y del porque de sus interacciones.<br />
<br />
Lo que espera todo el mundo cuando consulta las <b>métricas de su <i>site</i></b>, es ver que beneficio le está aportando, definiendo beneficio como venta de productos, venta de servicios, presentación de la empresa para posterior contacto, fama, etc.<br />
<br />
<a href="http://www.doctormetrics.com/"><b>Dr. Metrics</b></a> dejó claro que las <b>métricas</b> son importantes, pero solo son una pieza de un puzzle, es decir que sin relacionarlas con otros aspectos, se puede decir que no sirven para nada. Entre las otras piezas del puzzle mencionó aspectos como análisis de lo que sucede en tu backend (por ejemplo las transacciones interesantes realizadas en la BBDD, como sería el cierre de un proceso de compra), encuestas al usuario cuando decide abandonar tu site en procesos importantes no finalizados (por ejemplo en medio de el pago con tarjeta de crédito de una compra o contratación de servicio) y algunos aspectos más que mencionó.<br />
<br />
Me entusiasmo la idea que recalcó sobre de buscar “los tres pies al gato” cuando ves que las visitas de tu site son bajas o que hay bastantes abandonos en páginas que no tiene mucho sentido (por ejemplo en medio del proceso de compra); lo primero que dijo sobre este aspecto es que antes de ponerse a cruzar datos como un loco es que revises la infraestructura donde se organiza todo este circo, es decir si tu/s servidor/es a lo largo del mundo, plataforma y horario tienen un adecuado rendimiento, tienen una disponibilidad adecuada y todo tu site funciona bien y no van errores 400, 500, … Resumiendo que primero empieces la casa por los fundamentos y no por el tejado, así que primero a invertir en un desarrollo con un nivel adecuado de calidad (incluyendo seguridad) y óptimo, eso si desde mi punto de vista no te pases con lo de óptimo, que luego el desarrollo, llamemos código, es un Jeroglífico solo entienden los iluminados que lo han creado y como esto se larguen de la empresa ya verás los dolores de cabeza que tendrás; y una vez tengas un desarrollo de calidad aceptable te va a tocar invertir en servidor/es, comunicaciones, y buen sys admin que sepa configurar y optimizar, y no nos olvidemos de securizar, los cabr... que van a servir tu site.<br />
<br />
Sobre los sistemas/servicios/implementaciones de análisis de <b>métricas</b>, también habló, y no solo de <a href="http://www.google.com/intl/en/analytics/">Google Analytics</a>, sino de otros como <a href="http://web.analytics.yahoo.com/">Yahoo Analytics</a>, u otros sistemas de uso privado como el archiconocido, no gratuito, <a href="http://www.urchinsoftware.es/">Urchin</a>; no obstante finalizó este apartado venerando a <a href="http://www.google.com/intl/en/analytics/">Google Analytics</a> por su facilidad de uso <u>para usuarios no técnicos</u>, es decir que Google, parece tener “la madre del cordero” en usabilidad dando la importancia que tiene en el hecho de sacarle provecho, ya que tener muchas funcionalidades no sirve de nada si luego no sabes usarlas.<br />
<br />
Finalmente llegó el tuno de las preguntas, se preguntaron unas pocas, pero realmente solo recuerdo la mía, así que la voy a dejar aquí, que para eso es mi blog:<br />
¿Te has planteado como va a cambiar todo este mundo de analizar a los usuarios ahora que los gobiernos se están poniendo las pilas en legislaciones de privacidad y que se están realizando, por fin, unas campañas de concienciación sobre la privacidad de los datos en la red? (bueno no fue exactamente así, pero similar)<br />
<br />
Y la conclusión de al respuesta fue que la información no es gratis, aunque lo parezca, así que si vas a querer que tus usuarios dejen en tu site tu rastro tendrás que recompensarlos, por ejemplo, descuentos, sorteos, etc; algo que deberían tomar no ta muchos de los explotadores que corren por este país, que parece que todo los tiene que salir gratis, es decir a cambio de nada.<br />
<br />
Podéis consultar el resumen de la ponencia realizado por <a href="http://iniciador.com/barcelona/">Iniciador Barcelona</a>, junto con slides de la presentación, <a href="http://iniciador.com/barcelona/2011/07/21/resumen-iniciador-barcelona-con-enric-quintero-como-sacarle-partido-a-tu-web/">aquí</a> (y si queréis verme a mí, lo podéis hacer en la foto que hay al público).<br />
<br />
<br />
Hasta la próxima enfermos.<br />
<br />
</div>Anonymousnoreply@blogger.com1Carrer de Llull, 321, 08019 Barcelona, España41.4067172 2.209691799999973241.4062872 2.2091187999999731 41.407147200000004 2.2102647999999734tag:blogger.com,1999:blog-4529097646321081736.post-60605428832457657472011-07-08T21:55:00.000+02:002011-09-17T12:57:21.107+02:00[PHP] Verificación de entradas en arrays multidimensionales (2/2)<div style="font-family: "Courier New",Courier,monospace;"><span style="font-size: 85%; font-weight: bold;">conjuntoEntradas() { </span></div><div style="font-family: "Courier New",Courier,monospace;"><span style="font-size: 85%; font-weight: bold;"> <a href="http://enfermodelosbits.blogspot.com/2011/06/php-verificacion-de-entradas-en-arrays.html">[PHP] Verificación de entradas en arrays multidimensionales (1/2)</a></span><br />
<span style="font-size: 85%; font-weight: bold"> [PHP] Verificación de entradas en arrays multidimensionales (2/2)</span><br />
<span style="font-size: 85%;">}</span></div><br />
<div style="text-align: justify;"><br />
Llegado al punto que al no ser las dos opciones comentadas en el primer post de esta serie de mi gusto por el motivo que ya expuse, además estar desfavorecidas frente a otras, por su menor rendimiento en velocidad de ejecución, podría haber optado por tirar por el derecho y decidir utilizar la función <i><a href="http://www.php.net/manual/en/function.isset.php">isset()</a></i>, es decir la que en el comentario de la documentación de función <i><a href="http://www.php.net/manual/en/function.is-null.php">is_null()</a></i>, se dejaba claro que era la más óptima entre estas tres opciones.<br />
<br />
No obstante, durante mi búsqueda de como hacer la verificación de la existencia de claves dentro de los <b><i>arrays</i> multidimensionales</b>, me tope con otra función, que por nombre y definición (Verifica si el índice o clave dada existe en el <i>array</i>) debería ser la más apropiada para realizar dicho menester; estoy hablando de la función <i><a href="http://www.php.net/manual/en/function.array-key-exists.php">array_key_exists()</a></i>.<br />
<br />
No obstante, en los comentarios de la documentación de <i><a href="http://www.php.net/manual/en/function.array-key-exists.php">array_key_exists()</a></i>, <a href="http://www.php.net/manual/en/function.array-key-exists.php#82867">alguien y había comentado la diferencia de velocidad de ejecución con <i>isset()</i></a>, siendo de nuevo, favorable para ésta última.<br />
<br />
Aún habiendo este comentario, yo quería hacer mis pruebas, ya que al final del comentario, se menciona que la diferencia de rendimiento no es tan grande en un sistema operativo Mac o Linux, como lo es un MS Windows; además la prueba del comentario se realiza sobre un <i>array</i> unidimensional y no <b>multidimensional</b>, que son con los que yo me iría encontrando en mis implementaciones y por otra parte, me entró la vena friki por realizar la prueba sobre un <i><a href="https://secure.wikimedia.org/wikipedia/en/wiki/Profiling_%28computer_programming%29">profiler</a></i>, <a href="http://enfermodelosbits.blogspot.com/2011/03/php-arrays-pasados-por-parametro-copias_19.html">y como ya había utilizado en una vez anterior</a>, el elegido fue <a href="http://www.xdebug.org/docs/profiler">Xdebug</a>, utilizando, con el mismo motivo, el visor <a href="http://kcachegrind.sourceforge.net/html/Home.html">KCachegrind</a>; así que manos, la obra.<br />
<br />
Primero la implementación de las funciones que me permitirán discernir entre las dos distintas formas de verificar la presencia de claves en <b><i>arrays</i> multidimensionales</b> con la función <i><a href="http://www.php.net/manual/en/function.array-key-exists.php">array_key_exists()</a></i>.<br />
<br />
<div class="srccodebox" style="margin: 10px;"><pre>function aa_verificacion_a_una_instruccion_fallo_2d($var1) {
for ($i = 0; $i < 10000; $i++) {
if (@array_key_exists('clave2.5', $var1['clave1.3'])) {
}
}
}
function ab_verificacion_por_dimension_fallo_2d($var1) {
for ($i = 0; $i < 10000; $i++) {
if (array_key_exists('clave1.3', $var1) &&
(array_key_exists('clave2.5', $var1['clave1.3']))) {
}
}
}
function ba_verificacion_a_una_instruccion_fallo_3d($var1) {
for ($i = 0; $i < 10000; $i++) {
if (@array_key_exists('clave4.1', $var1['clave1.3']['clave2.1'])) {
}
}
}
function bb_verificacion_por_dimension_fallo_3d($var1) {
for ($i = 0; $i < 10000; $i++) {
if (array_key_exists('clave1.3', $var1) &&
array_key_exists('clave2.1', $var1['clave1.3']) &&
array_key_exists('clave4.1', $var1['clave1.3']['clave2.1']) ) {
}
}
}
function ca_verificacion_a_una_instruccion_fallo_4d($var1) {
for ($i = 0; $i < 10000; $i++) {
if (@array_key_exists('clave4.1', $var1['clave1.3']['clave2.1']['clave3.0'])) {
}
}
}
function cb_verificacion_por_dimension_fallo_4d($var1) {
for ($i = 0; $i < 10000; $i++) {
if (array_key_exists('clave1.3', $var1) &&
array_key_exists('clave2.1', $var1['clave1.3']) &&
array_key_exists('clave3.0', $var1['clave1.3']['clave2.1']) &&
array_key_exists('clave4.1', $var1['clave1.3']['clave2.1']['clave3.0'])) {
}
}
}
function da_verificacion_a_una_instruccion_fallo_3d_sobre_4d($var1) {
for ($i = 0; $i < 10000; $i++) {
if (@array_key_exists('clave4.1', $var1['clave1.3']['clave2.1']['clave3.1'])) {
}
}
}
function db_verificacion_por_dimension_fallo_3d_sobre_4d($var1) {
for ($i = 0; $i < 10000; $i++) {
if (array_key_exists('clave1.3', $var1) &&
array_key_exists('clave2.1', $var1['clave1.3']) &&
array_key_exists('clave3.1', $var1['clave1.3']['clave2.1']) &&
array_key_exists('clave4.1', $var1['clave1.3']['clave2.1']['clave3.0'])) {
}
}
}
</pre></div>Aunque se podía intuir con total certeza que la verificación a una instrucción, directamente haciendo referencia a la clave en la dimensión que se quiere verificar, será más óptima que la verificación dimensión por dimensión hasta llegar a la profundidad de la dimensión que realmente se quiere comprobar; opté por realizar la prueba y así poder ver de manera cuantificable la diferencia que había, y tener que tragarme mis gustos y optar por hacer la comparación con <i><a href="http://www.php.net/manual/en/function.isset.php">isset()</a></i>, haciendo referencia a posiciones de memoria inexistentes si las dimensiones de menor profundidad a al que se quiere verificar, ya no existen, como a comenté en la primera entrada de esta serie. Los resultados obtenidos fueron estos:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-Cm-r-rqGayI/Thdcd98fSvI/AAAAAAAAAcY/GIrR4Pep0z4/s1600/array_key_exists_diagrama_llamadas.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="201" src="http://4.bp.blogspot.com/-Cm-r-rqGayI/Thdcd98fSvI/AAAAAAAAAcY/GIrR4Pep0z4/s640/array_key_exists_diagrama_llamadas.png" width="640" /></a></div><div style="text-align: center;"> <span style="font-size: x-small;"><span style="color: #666666;">Diagrama de llamadas a funciones de comparación de la dos maneras de utilizar <i><a href="http://www.php.net/manual/en/function.array-key-exists.php">array_key_exists()</a></i></span></span></div><br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-4VR-ybsoPNY/Thdceotfg-I/AAAAAAAAAcc/K_4hVsL9F4E/s1600/array_key_exists_grafico_ordenacion_por_tantoporciento.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="293" src="http://3.bp.blogspot.com/-4VR-ybsoPNY/Thdceotfg-I/AAAAAAAAAcc/K_4hVsL9F4E/s400/array_key_exists_grafico_ordenacion_por_tantoporciento.png" width="400" /></a></div><div style="color: #666666; text-align: center;"><span style="font-size: x-small;">Diagrama de llamadas a funciones de comparación de la dos maneras de utilizar <a href="http://www.php.net/manual/en/function.array-key-exists.php"><i>array_key_exists()</i></a> de menos a mayor % utilizado </span></div><br />
Bueno, una vez hecho un poco el ganso, tocaba realizar la comprobación definitiva, comparar la eficiencia de ejecución entre <i><a href="http://www.php.net/manual/en/function.array-key-exists.php">array_key_exists()</a></i> e <i><a href="http://www.php.net/manual/en/function.isset.php">isset()</a></i>, así que esté fue el script que utilicé: <br />
<div class="srccodebox" style="margin: 10px;"><pre>function aa_usando_array_key_exists($var1) {
for ($i = 0; $i < 10000; $i++) {
if (@array_key_exists('clave4.1', $var1['clave1.3']['clave2.1']['clave3.0'])) {
}
}
}
function ab_usando_isset($var1) {
for ($i = 0; $i < 10000; $i++) {
if (isset($var1['clave1.3']['clave2.1']['clave3.0']['clave4.1'])) {
}
}
}
function ba_usando_array_key_exists_fallo_dimension_anterior($var1) {
for ($i = 0; $i < 10000; $i++) {
if (@array_key_exists('clave4.1', $var1['clave1.3']['clave2.5']['clave3.0'])) {
}
}
}
function bb_usando_isset_fallo_dimension_anterior($var1) {
for ($i = 0; $i < 10000; $i++) {
if (isset($var1['clave1.3']['clave2.1']['clave2.5']['clave4.1'])) {
}
}
}
</pre></div>Y los resultados obtenidos fueron estos: <br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-kRHa_NY79wk/ThdcfBJcgHI/AAAAAAAAAcg/2U0HIfcRLxw/s1600/array_key_exists_vs_isset_diagrama_llamadas.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="http://3.bp.blogspot.com/-kRHa_NY79wk/ThdcfBJcgHI/AAAAAAAAAcg/2U0HIfcRLxw/s640/array_key_exists_vs_isset_diagrama_llamadas.png" width="640" /></a></div><br />
<div style="color: #666666; text-align: center;"><span style="font-size: x-small;">Diagrama de llamadas a funciones de comparación entre la utilización de <a href="http://www.php.net/manual/en/function.array-key-exists.php"><i>array_key_exists()</i></a> e <i><a href="http://www.php.net/manual/en/function.isset.php">isset() </a></i></span></div><br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-O3a1FfgCsNI/ThdcfWEMIYI/AAAAAAAAAck/D_SeVz3Hs4s/s1600/array_key_exists_vs_isset_grafico_ordenacion_por_tantoporciento.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="282" src="http://1.bp.blogspot.com/-O3a1FfgCsNI/ThdcfWEMIYI/AAAAAAAAAck/D_SeVz3Hs4s/s400/array_key_exists_vs_isset_grafico_ordenacion_por_tantoporciento.png" width="400" /></a></div><br />
<div style="color: #666666; text-align: center;"><span style="font-size: x-small;">Diagrama de llamadas a funciones de comparación entre la utilización de <a href="http://www.php.net/manual/en/function.array-key-exists.php"><i>array_key_exists()</i></a> e <i><a href="http://www.php.net/manual/en/function.isset.php">isset()</a></i> de menos a mayor % utilizado</span></div><br />
Así que como dice el dicho, “una imagen vale más que 1000 palabras”, la eficiencia queda demostrada.<br />
<br />
Para concluir solo me queda aclarar un aspecto que alguno le debe descuadrar; se trata de ¿porqué en el caso de la utilización de <i><a href="http://www.php.net/manual/en/function.isset.php">isset()</a></i> no tengo ninguna pega por lo que he comentado con el resto? Me refiero al hecho de no gustarme hacer referencias a posiciones de memoria inexistentes. Pues bien, el caso de <i><a href="http://www.php.net/manual/en/function.isset.php">isset()</a></i> lo veo sustancialmente distinto, ya que por definición la función sirve para “determinar si una variable esta definida y no es NULL”, así que aparte de considerar que lo que va a hacer es verificar la existencia o inexistencia de una posición de memoria (en términos de definición de posiciones de memoria alocadas en tu programa), si la posición no existe no aparece ningún mensaje de notificación informando de ello, claro está sin anteponer @ a la llamada de la función; así que no me da la sensación de estar realizando algo que no es del todo correcto.<br />
<br />
<br />
Hasta la próxima enfermos.<br />
<br />
</div>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-4529097646321081736.post-6464516912994499502011-07-01T00:33:00.002+02:002011-07-01T00:33:00.138+02:00Un poco de colaboración y organización de equipos de trabajo sobre SharePoint 2010<div style="text-align: justify;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-tBojXlZAXP4/TgyzDSdGfqI/AAAAAAAAAcU/cP0riN9B6vo/s1600/fusion.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="196" src="http://3.bp.blogspot.com/-tBojXlZAXP4/TgyzDSdGfqI/AAAAAAAAAcU/cP0riN9B6vo/s200/fusion.png" width="200" /></a></div>Esta semana, concretamente el martes, he terminado las jornadas de formación de <i><a href="http://sharepoint.microsoft.com/">SharePoint</a></i> que ha realizado Gepesa.<br />
<br />
A lo largo de los tres días me enterado del potencial de está herramienta, que hasta el momento lo único que sabía es que permitía trabajar con archivos en un entorno compartido por múltiples usuarios controlando los accesos y gestionando el acceso concurrente, bloqueado y/o detectando conflictos.<br />
<br />
Ahora ya sé que no solamente ofrece esa funcionalidad sino muchas más, las cuales aumentan la productividad de los entornos de <b>equipos de trabajo</b> o, incluso, de una organización al completo.<br />
<br />
No obstante, después de todo lo que tiene la herramienta, sigue sin proporcionar las necesidades del entorno que tiene la empresa donde prestó mis servicios. Actualmente y desde hace ya un largo tiempo la empresa utiliza una herramienta, desarrollada íntegramente dentro de esta misma, que hace la funcionalidad de explorador de ficheros sobre carpetas compartidas en los servidores, pero controlando y garantizando que sólo un usuario puede estar modificando un documentos al mismo tiempo, es decir lo que viene ha hacer <i><a href="http://sharepoint.microsoft.com/">SharePoint</a></i>, pero aquí no hay copia del documento al disco local de la estación de trabajo sino que se trabaja directamente sobre el documento almacenado en el servidor (Esto, por lo que me contaron, sólo se da de serie en <i><a href="http://sharepoint.microsoft.com/">SharePoint</a> </i>sobre ficheros de <i>MS Word</i> y utilizando <i>Office 2007</i> hacia arriba).<br />
<br />
En el entorno que se da actualmente en la empresa, realmente, no se accede a los servidores de ficheros directamente sino que se hace a través de un DFS junto con su servicio de replicación (DFSR), replicando los archivos en los distintos servidores de las distintas sedes de la empresa. <br />
<br />
En el entorno mencionado, los usuarios se quejan constantemente de la lentitud de acceso a los ficheros, y llevan razón si lo comparamos con un acceso a un fichero en el disco local, pero si lo comparamos con un acceso remoto no lo es tanto, con ciertas excepciones, justificada por la inversión en hardware que se hace y el tiempo y recursos que se asignan a “los informáticos” para optimizar los sistema.<br />
<br />
En fin, que tal y como está ahora, sí le pedimos a los usuarios que tiene que descargar cada vez que tiene que modificar un fichero (se trabaja con ficheros de distintos tipos, ficheros de programa de cálculo, planos de Autocad, ofimáticos y bastantes más) y luego volverlo a subir y desbloquearlo, nos montan una revolución, y no sería sin razón, ya que estarían empleando más tiempo en hacer lo que ahora hacen, aunque quedaría por analizar si empezar a usar este entorno aportaría ciertos beneficios que compensasen el tiempo de más que tendrían que emplear cada usuario, es decir ver la relación entre el tiempo empleado en los procedimientos de trabajo y la productividad obtenida en global, por ejemplo, este proceso es más costoso pero se obtiene beneficios por otra parte que optimizan el tiempo de otros procesos, aumenta la satisfacción del cliente, etc.<br />
<br />
Además de la funcionalidad comentada, que es la que justifica mi asistencia a las jornadas, y como ya he dicho, <i><a href="http://sharepoint.microsoft.com/">SharePoint</a></i> ofrece otras funcionalidades que ahora he podido ver que en la empresa se realizan a través de Lotus Notes (principalmente me refiero a la funcionalidad de <a href="https://secure.wikimedia.org/wikipedia/es/wiki/Base_de_datos">BBDD</a> documentales y “flujos” de trabajo (<a href="https://secure.wikimedia.org/wikipedia/es/wiki/Workflow"><b><i>Workflows</i></b></a>)) pero ni de lejos se llega al nivel de funcionalidad requerido y menos todavía a la sencillez de parametrización; que conste que con esto no estoy diciendo que IBM no tenga una herramienta o complemento de Lotus Notes que permita ponerse al mismo nivel que <i><a href="http://sharepoint.microsoft.com/">SharePoint</a></i>, y tampoco estoy diciendo que nosotros estemos utilizando correctamente la herramienta, pero con el nivel de conocimiento actual y con los recursos que se asignan al Dpo. de TI, ya es mucho lo que se consigue, y llegar más allá requería una inversión, aún más, de nuestro tiempo libre, el cual nunca será valorado y mucho menos recompensado de algún modo.<br />
<br />
Bueno dejando de parte la precaria situación, quiero mencionar que <i><a href="http://sharepoint.microsoft.com/">SharePoint</a></i> ofrece (a mi parecer) de manera sencilla la definición de <b>flujos de trabajo</b>, no obstante su sencillez, no quiere decir que los "flujos” se crean automáticamente, sólo es una herramienta, la lógica la pone una persona con conocimiento del negocio"; espero que este último comentario no ofenda a nadie debido a su trivialidad, pero hay muchos que están ahí, en las cumbres directivas, que viendo una demo de esto, como yo he visto, ya se piensan que todo esto se hace automáticamente o con sólo 5 minutos del tiempo de uno de los "frikis" del Dpo. de TI, y con este erróneo concepto, se limitan a comprar una licencia del producto, creyendo que con esto ya lo tienen todo; y aún peor pasa cuando existe una versión que no se paga, porque el día que se enteran te sueltan que “los del Dpo. de TI de la empresa son unos apalancados, no innovan nunca, sino ¡mira!, ¡mira! Esto es gratis y ¿porqué no lo tengo en mi empresa?, La empresa tal (la de un colega suyo) tienen un sistema que hace todo esto, y yo no acabo de entender porque no lo tengo en la mía, blabla blabla”.<br />
<br />
En conclusión, <i><a href="http://sharepoint.microsoft.com/">SharePoint</a></i>, como muchas otras que habrán pero que no he tenido la ocasión de ver en una demostración, es una potente herramienta para entornos de <b>equipos de trabajo</b>, ofrece múltiples funcionalidades que permiten controlar accesos a los recursos compartidos, organización de la información, definición de <b>flujos de trabajo</b>, creación de espacios para compartir el conocimiento, y todo eso que favorece (no hace, eso lo hace la dirección creando políticas organizativas) que un equipo y en general una <a href="https://secure.wikimedia.org/wikipedia/es/wiki/Empresa">empresa</a>, sea lo que por definición es: una <b>ORGANIZACIÓN</b>.<br />
<br />
Para finalizar, quiero agradecer a Gepesa por el buen trabajo que ha hecho organizando estas sesiones, ya que han sido de muy buena calidad, demostrando a nivel práctico un buen conjunto de las funcionalidades y posibilidades que ofrece <a href="http://sharepoint.microsoft.com/"><i>SharePoint 2010</i></a>.<br />
<br />
Hasta la próxima enfermos.</div>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-4529097646321081736.post-59727658155466269952011-06-19T21:53:00.005+02:002011-07-08T21:57:35.314+02:00[PHP] Verificación de entradas en arrays multidimensionales (1/2)<div style="font-family: "Courier New",Courier,monospace;"><span style="font-size: 85%; font-weight: bold;">conjuntoEntradas() { </span></div><div style="font-family: "Courier New",Courier,monospace;"><span style="font-size: 85%; font-weight: bold;"> [PHP] Verificación de entradas en arrays multidimensionales (1/2)</span><br />
<span style="font-size: 85%;"> <a href="http://enfermodelosbits.blogspot.com/2011/07/php-verificacion-de-entradas-en-arrays.html">[PHP] Verificación de entradas en arrays multidimensionales (2/2)</a></span><br />
<span style="font-size: 85%;">}</span></div><div style="text-align: justify;"><br />
Ya hace un tiempo que empecé un desarrollo de unas de mis pajas mentales con el conocido <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Web_application_framework"><i>framework Web MVC</i></a> (<a href="https://secure.wikimedia.org/wikipedia/en/wiki/Model_View_Controller"><i>Model View Controller</i></a>) denominado <a href="http://framework.zend.com/">Zend Framework</a>. Desde que empecé este desarrollo, el cual he tenido que interrumpir en algunas algunas ocasiones por ciertas obligaciones las cuales me gusté o no tengo que darle preferencias, además de solo poderle dedicar parte de los días que no me empleo en la empresa en la cual estoy contratado a tiempo completo, y digo parte, porque me es imposible no dedicar una parte de esos días a descansar, atender asuntos personales, buscarme la vida por otras partes o hacer otros <i>hobbies</i> muy necesarios para mí, me han ido surgiendo dudas sobre ciertos aspectos del lenguaje <b>PHP</b>; uno de ellos ya lo dejé plasmado en una entrada en este mismo <i>blog</i> hace algún tiempo.<br />
<br />
Cuando empecé a descubrir las cosas que me ofrece el propio <i>framework</i>, a día de hoy aún me queda alguna cosa que funcionalidad más bien no por descubrir, sino por utilizar y conocer bien como se utiliza, me dí cuenta que a medida que iba desarrollando mis idas de olla, podría ir <b>modularizando</b> ciertos componentes, que me podrían servir para futuras pajas mentales, además de poder utilizar de manera extensiva en el desarrollo de esta; es decir lo que resumiríamos en arquitecturar código de programación para favorecer el <b>reaprovechamiento</b> mediante creación de componentes genéricos; algo así como ya han hecho los propios desarrolladores de dicho <a href="http://framework.zend.com/">Zend Framework</a>, de ahí que haya acabado en eso, en un <i>framework</i>.<br />
<br />
Con todas esta paranoia que me dio y me continúa dando, por el <b>reaprovechamiento</b> basándome en la <b>modularización</b>; una de las cosas que más utilizo es la configuración de los componentes mediante ficheros de configuración, ya sean <a href="https://secure.wikimedia.org/wikipedia/en/wiki/INI_file">INI</a> o <a href="https://secure.wikimedia.org/wikipedia/en/wiki/XML">XML</a>, para poder reutilizarlos sin tener que escribir código de programación.<br />
<br />
<a href="http://framework.zend.com/">Zend Framework</a>, <a href="http://framework.zend.com/manual/en/zend.config.html">ofrece unas clases para leer este formato de ficheros</a>, y alguno más, y después poder obtener un <b><i>array</i> multidimensional</b> de clave=>valor para posteriormente poder tratar el contenido desde PHP de una manera sencilla. De hecho el propio <i>framework</i> utiliza estos formatos para especificar las configuraciones de la aplicación web que se va a desarrollar y también para configurar parte de sus componentes.<br />
<br />
Al empezarlo a utilizarlos en mis componentes y ver que necesitaba, en muchos casos, verificar la existencia de ciertos parámetros obligatorios en los ficheros de configuración, y esto lo tenía que hacer con la verificación de la existencia de claves dentro de los <b><i>arrays</i> multidimensionales</b>, descubrí que desde <b>PHP</b> se ofrecen varias funciones o maneras de poder verificar la existencia de valores dentro de <i>arrays</i>, así que la paranoia de la <b>optimización</b> se apoderó de mi, provocando una curiosidad, necesaria por hacer cada componente algo más óptimo, por saber cual de ellas tiene un mayor rendimiento en cuanto a velocidad de proceso.<br />
<br />
En los comentarios que dejan los usuarios en la <a href="http://www.php.net/manual/en/index.php">documentación de PHP</a>, en varias de las funciones que se pueden utilizar para verificar la existencia de claves, ya se puede saber que algunas de ellas son más óptimas que otras, por ejemplo, <a href="http://www.php.net/manual/en/function.is-null.php#83588">la función <i>is_null()</i>, tiene un rendimiento mucho peor que la comparación directamente con <i>NULL</i>, pero esta tiene un rendimiento más bajo si la comparamos con <i>isset()</i></a>, no obstante de todos estas funciones, aunque nos podrían servir para verificar la existencia de una clave, a mí, particularmente, no me gusta mucho tener que hacer referencia a valores que no van a existir si la clave no existe, que sería lo que tendríamos que hacer con <i>is_null()</i> y con la comparación con <i>NULL</i>, pongamos un ejemplo:<br />
<br />
Defino un <i>array</i> que voy a utilizar para todos mis ejemplos y pruebas, dentro de este conjunto de entradas<br />
<br />
<div class="srccodebox" style="margin: 10px;"><pre>$var1 = array(
'clave1.0' => 'valor1.0',
'clave1.1' => 'value1.1',
'clave1.3' => array (
'clave2.0' => 'value2.0',
'clave2.1' => array(
'clave3.0' => array(
'clave4.0' => 'value4.0'
)
)
)
);
</pre></div><br />
Si quisiéramos verificar la existencia de una clave, con las dos maneas que he comentado, tendríamos que hacer lo siguiente:<br />
<br />
<div class="srccodebox" style="margin: 10px;"><pre>if (is_null($var1['clave1.4'])) {
print "La clave1.4 no exise \n";
}
if($var1['clave1.4'] === NULL) {
print "La clave1.4 no exise \n";
}
</pre></div><br />
Funcionar, funciona pero no me gusta, porque para la verificación accedemos a una posición del array inexistente, por lo cual se genera para ambos caso el siguiente mensaje de notificación (eso si tenemos el PHP configurado para que notifique los errores del nivel NOTICE):<br />
<br />
<div style="color: red;"><span style="font-size: x-small;"> PHP Notice: Undefined index: clave1.4 in /path/al/script.php on line NN</span></div><br />
Aunque dicho mensaje podríamos provocar que no apareciese anteponiendo @ delante la función o delante la variable en el caso de la comparación con <i>NULL</i>.<br />
<br />
<br />
Hasta la próxima enfermos.</div>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-4529097646321081736.post-68063204499673212672011-06-13T17:57:00.000+02:002011-06-13T17:57:38.089+02:00El Gobierno de las TIC en la PyME de nuestra querida España<div style="text-align: justify;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-dEkRgAuA-V0/TfYzLe4bW2I/AAAAAAAAAcM/8-K0hpOaj4E/s1600/los+informaticos.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="250" src="http://1.bp.blogspot.com/-dEkRgAuA-V0/TfYzLe4bW2I/AAAAAAAAAcM/8-K0hpOaj4E/s320/los+informaticos.png" width="320" /></a></div>Llevando más de un mes sin pisar el Blog para escribir alguna de mis tonterías, acogiéndome a la gran excusa que utilizamos gran parte de los mortales, “no he tenido tiempo”, aprovecho este maravilloso día, festivo en Barcelona, para perder el tiempo escribiendo una entrada, en este maldito blog, desde el balcón de casa.<br />
<br />
Ahora que ya me he disculpado, con la mentira de siempre, voy a pasar a decir de que puñetas voy a hablar; durante este tiempo de “reflexión”, he ido acumulando cosas de las que escribir, algunas incluso las he empezado y no las he terminado y otras se quedarán como cosas que puede escribir pero al no hacerlo, han caducado, al menos por el interés que pueden tener ahora mismo, aunque realmente, pienso que lo que escribo aquí no va mucho más allá de mi propia y absurda satisfacción. <br />
<br />
“¡Mierda! Ya me he vuelto a ir por las ramas, perdonad”; el tema gira entorno a este artículo publicado en <a href="http://www.tecnonews.info/">TNI</a>, el 25 de mayo del 2011, titulado de la siguiente manera: <a href="http://www.tecnonews.info/Como-conseguir-departamento-informatica-mas-eficiente/_pE0Aj1BfZN7VtoFZxcYP-LzlbLIOYYaz--BhBBJVeOc">¿Cómo conseguir un departamento de informática más eficiente?</a><br />
<br />
Sí, habla de la eficiencia del <b>departamento de informática</b>, o más conocido actualmente como <b>departamento TIC</b>, no habla de <a href="https://secure.wikimedia.org/wikipedia/es/wiki/Pyme">PyME</a>, ni se enmarca dentro de España, esto lo añado yo, 1) porque empleo mi tiempo currando en una <a href="https://secure.wikimedia.org/wikipedia/es/wiki/Pyme"> PyME</a>, 2) está dentro de España.<br />
<br />
El artículo, a mi parecer dice verdades como puños:<br />
<ol><li><b>Externalizar sí, pero sólo lo necesario. </b><br />
<br />
Como en la mayor parte de las tendencias, modas, ideologías políticas, religiones, etc..., irse a los extremos es poco apropiado a medio-largo plazo, esto lo deberíamos saber todo si miramos un poco al pasado; cuantas veces se ha oído, por algún que otro cabreo con o sin fundamento por parte de “directivos”: “me voy a cargar el departamento de informática, lo voy a subcontratar y listo”.<br />
Así que, directivo, si fue un calentón, no pasa nada a todos nos pasa, sino lo fue echa le un ojo al artículo, que te irá bien para reflexionar.<br />
Por otra parte, no quiero que se llegue a pensar que estoy diciendo que una <a href="https://secure.wikimedia.org/wikipedia/es/wiki/Pyme">PyME</a>, más bien P que M, no deba subcontratar todo su departamento de informática, cuando el tamaño, en cuanto a empleados, es algo normal, ya que no solo se hace con el departamento de informática, sino con muchos otros. Por otra parte, si la mentalidad del directivo de a pié, ya sea de una P o M (no dedicada al negocio de las TIC), es: “la informática que sea invisible, que se limite a funcionar y ya está”, entonces subcontrata este departamento ya que si nos basamos por lo que dice el artículo: “<i>y únicamente externalizar todo aquello que no se considere como valor competitivo diferencial para la empresa.</i>”, claro está que el únicamente se convierte en el 100%.<br />
<br />
</li>
<li><b>Organización y procesos del departamento.</b><br />
<br />
Volvemos a lo mismo sobre lo de no irse a los extremos; parte de una metodología de organización ya probada, ya que si tiene cierta antigüedad y continúa existiendo, es porque muchos se dieron de ostias durante su creación, eso si no te aferres a ella como si de la única verdad se tratara y adáptala a tu negocio, que nadie más bien que tú sabe que peculiaridades tiene.<br />
Lo que está claro es que tu <b>departamento TIC</b>, tiene que estar organizado y gestionado y con unos procesos claros, definidos y acorde con la empresa y este no se convierta en un grupo de <i>frikis</i> que tienes ahí que continuamente todo los empleados de la empresa tienen el derecho de solicitar las cosas a salto de mata, y si lo prefieres así, luego no pidas plazos (esto se traduce en compromisos) con respecto a otras cosas, que vienen del equipo directivo o que requieren una cierta cantidad de recursos.<br />
<br />
</li>
<li><b>Arquitectura tecnológica definida.</b><br />
<br />
Otras de las cosas que he oído muy habitualmente de la boca de algunos directivos y mandos intermedios es que “<i>no quiero ni oír y menos hablar del software a medida, esto no es una empresa de informática</i>”; muchos creo que no saben ni lo que dicen, porque luego resulta que la empresa, como poco, tiene una Web que no han hecho con ninguno de las aplicaciones de creación de <i>sites</i> que ofrecen las numerosas empresas de <i>hosting</i> y unos cuantos ficheros <a href="https://secure.wikimedia.org/wikipedia/en/wiki/.mdb">mdb</a> con algunas tablas, formularios e informes que ha tenido que hacer alguno de los miembros o ex-miembros del <b>departamento TIC</b>; “sí, señores míos, eso también es desarrollo propio, a más pequeña escala, pero lo es”.<br />
Creo que casi todos, sabemos que dentro de una empresa <b>NO TIC</b>, no se va a desarrollar un paquete de software de ofimática convencional, no se va a desarrollar un DBMS (<a href="https://secure.wikimedia.org/wikipedia/en/wiki/Data_base_management_system">Data base management system</a>, o para que se entienda más <a href="https://secure.wikimedia.org/wikipedia/es/wiki/SGBD">SGBD</a>) y un largo etc. de aplicaciones de uso general, global o estándar, como prefieras llamarlo; lo que si te tienes que enterar es que tu negocio puede tener ciertas particularidades que difícilmente te lo va a ofrecer una solución comercial, al menos en su totalidad, es decir que si quieres que se adapte totalmente a ti, tendrás que parametrizarla y/o implementar ciertos servicios, mecanismos, <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Addin">addins</a> o como quieras llamarles, para no tener que pasar, si no quieres, por el tubo.<br />
<br />
</li>
<li><b>Mejor prevenir que curar.</b><br />
<br />
Esta famosa frase que llevamos escuchando todos desde que llegamos a este mundo y que todos comprendemos pero pocas veces la tenemos presente a la hora de tomar decisiones, y no tiene más transcendencia que correr algún que otro riesgo, que en determinadas ocasiones el riesgo es diversión y como todos nos tenemos que ir a la tumba de vez en cuando incurrimos en él para justificar nuestro corto tiempo que pasamos en este mundo; no obstante no creo que la mayor parte de las decisiones que se toman en una empresa, sean puramente para pasar un buen rato, ya que estas acostumbran a tener una transcendencia a corto, medio y largo plazo. Cierto es, que lo que acabo de comentar se aplica a todas las decisiones, pero si que normalmente se encasillan en ciertas unidades funcionales (normalmente asociadas a un determinado departamento).<br />
En el caso que me atañe, en el <b>departamento TIC</b> donde trabajo actualmente, esto se da en su totalidad:<br />
<br />
<ol style="list-style-type: lower-alpha;"><li><b>¿pasividad? LA HAY</b>, porque después de tomarse las cosas en serio, e intentar que la dirección se las tome o al menos te escuche, y ver como ni se toman en serio, ni te escuchan, el responsable a pié se acaba cansando con el paso del tiempo y opta por esta postura.<br />
<br />
</li>
<li><b>¿siempre a remolque? SÍ</b>, con los recursos que se destinan, como se inculca a todos los empleados que son (si he dicho que, no quien) “los individuos que están ahí trasteando con las máquinas” y ver las pocas expectativas de cambio te obligan a ir a remoque, muchas veces asumiendo responsabilidades que no llevan a ningún lugar más que tener que dedicar horas de tu tiempo libre a cambio de nada; en este caso por lo que respecta a la tecnología, si que es cierto que puede parecer imposible de cambiar, pero no es por la propia tecnología, más bien por lo que acabo de comentar.<br />
<br />
</li>
<li><b>¿anticiparse? NUNCA</b>, después de emplear tiempo y esfuerzos muchas veces, y la mayor parte fuera del tiempo de trabajo estipulado, para proponer cambios antes de llegar al día 0, y ver que no han servido de nada porque llega el día 0 y los cambios hay que hacerlos ya sí o sí, con la consecuencia de que todo se hace más bien mal por las prisas y falta de previsión acarreando futuros problemas que todavía provocará que el <b>departamento TIC</b> vaya más “a remolque”.<br />
<br />
</li>
<li><b>¿cambios organizativos en el resto de la empresa para que el departamento TIC funcione mejor? JAMAS,</b> los del departamento TIC están para la informática sea invisible a efectos de problemas y funcionamiento individual de cada empleado, así que si que “si usted tiene algún problema informático, sea cual sea, levante el teléfono y marque las extensión del departamento TIC sin ningún reparo, sea urgente o no, ya que lo suyo siempre lo será y las actividades que hacen allí que no sea esta no tienen la mayor importancia”.<br />
</li>
</ol></li>
</ol><br />
Bueno, comentado el artículo y extrapolandolo a la situación que yo estoy viviendo y me atrevo (siempre teniendo en cuenta que es mi punto de vista personal) después de haber contrastado con otros compañeros del sector y dentro de España y haberlo visto a primera vista en alguna que otra <a href="https://secure.wikimedia.org/wikipedia/es/wiki/Pyme">PyME</a>, a concluir qué: <b>es una tónica habitual dentro de la <a href="https://secure.wikimedia.org/wikipedia/es/wiki/Pyme">PyME</a> de esta España, para empresas cuyo negocio no son las TIC</b>, dejando comentarios de estas a parte ya que no he tenido la experiencia de haberlo vivido ni tampoco oído de manera explícita.<br />
<br />
Y a tú, si te encuentras en esta situación de directivo y detectas todo esto, si crees que esto puede ayudar a mejorar tu negocio cara al futuro puedes empezar a tomar medidas, no hace falta que las apliques de golpe, Roma no se creo en un día; eso sí, si eres de los que te has comido un <a href="https://secure.wikimedia.org/wikipedia/es/wiki/Maestr%C3%ADa_en_Administraci%C3%B3n_de_Negocios">MBA</a>, creo que verás claramente que muchos de los aspectos, o al menos una parte, se enmarcan claramente dentro de las buenas prácticas de administración del negocio y sino es así empieza a plantearte si no perdiste el tiempo haciéndolo, ya que creo, que poco de todo lo que te contaron te llego.<br />
<br />
<br />
Hasta la próxima enfermos!<br />
<br />
</div>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-4529097646321081736.post-77478106133872443332011-05-01T22:35:00.000+02:002011-05-01T22:35:52.068+02:00SPF v1 en Gmail ¿como funciona?<div style="text-align: justify;"><br />
Un día mirando un poco el buzón de SPAM de una cuenta de Gmail me encontré con un correo de <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Phishing">phishing</a> de Twitter el cual Gmail, además de haberlo etiquetado como SPAM, le había metido una alerta, muy resaltada, avisando de que el email no era legítimo del emisor indicado.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-zF6g-K7yugc/Tb2w8l3NAKI/AAAAAAAAAbQ/_cNrtoVhmYY/s1600/warning+the+message+phishing+from+gmail.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://3.bp.blogspot.com/-zF6g-K7yugc/Tb2w8l3NAKI/AAAAAAAAAbQ/_cNrtoVhmYY/s400/warning+the+message+phishing+from+gmail.png" width="351" /></a></div><div style="color: #666666; text-align: center;"><span style="font-size: x-small;">Mensaje clasificado como SPAM con aviso de un remitente no legítimo</span></div><br />
A raíz de esto me empezó a picar la curiosidad y decidí ver las cabeceras de ese email.<br />
<br />
Además me fui al <a href="http://mail.google.com/support/bin/answer.py?hl=en-GB&ctx=mail&answer=8253">link informativo ("Learn more")</a> para ver que me contaban más acerca de este aviso (echarle un ojo al <i>link</i> si queréis ver que dice gmail acerca de todo esto).<br />
<br />
Todo esto me hizo recordar a <a href="http://www.elladodelmal.com/2010/12/cual-te-gusta-mas-spf-o-senderid-1-de-2.html">un conjunto de post que escribió el Maligno</a>, los cuales me leí con mucho mimo para entender bien lo que explicaba y ahora que los menciono aquí aprovecho para darle las gracias por escribirlos; en ellos explicaba las sutiles diferencias entre <b>SPF</b> y SenderID y como eran interpretados por los servicios de correo de Gmail y Hotmail.<br />
<br />
Maligno nos indicaba como conclusiones de sus pruebas que Gmail, las cuales cito de nuevo a continuación:<br />
<ul><li>PRIMERO: Gmail aplica <i>From:</i> y no <i>Sender:</i>.</li>
<li>SEGUNDO: No elimina el correo aún cuando lee la política del dominio que él ha decidido.</li>
<li>TERCERO: No muestra ninguna alerta al usuario.</li>
</ul><br />
Claro está que la conclusiones que él sacó eran totalmente ciertas para la prueba que realizó, pero después de haber visto el correo comentado arriba ya no tengo claro si siempre es así o no.<br />
<br />
En el caso de este correo phisheado de <a href="https://twitter.com/">Twitter</a>, parece que:<br />
<ol><li>Gmail no siempre coge el campo <i>From:</i> para verificar el resultado de <b>SPF</b> (<a href="https://secure.wikimedia.org/wikipedia/en/wiki/Sender_Policy_Framework"><i>Sender Policy Framework</i></a>); en este caso deduzco que ha cogido el campo <i>Return-Path:</i> o a saber el que durante la transmisión del email a los servidores de Gmail.</li>
<li>A veces si que muestra alertas.</li>
</ol><br />
A parte de estas evidencias, me dedique a revisar la política <b>SPF</b> del dominio indicado en la dirección presente en el campo <i>Return-Path:</i> (pcavote.com). Revisando dicha política, yo no logré identificar que la IP [85.92.129.132] que envió el correo, que correspondía al servidor reseller06.pcextreme.nl, fuese un servidor reconocido del domino pcavote.com; aunque la política de dicho dominio es SOFTFAIL (~), es decir que el receptor debería dejar pasar los correos recibidos de servidores no reconocidos por la política <b>SPF</b>, si que es cierto que puede clarificarlos de manera especial para alertar al usuario, que parece que es lo que ha hecho Gmail al etiquetarlo como <b>SPAM</b>, pero realmente si revisamos dichas cabeceras, no es así, ya que el resultado del <b>SPF</b> es PASS, y según is observaciones (<span style="color: red;">ATENCIÓN</span> puedo haberme equivocado) el emisor no está reconocido por la política así que el resultado tendría que ser SOFTFAIL.<br />
<br />
A continuación os dejo la serie de consultas DNS para lograr obtener todas las IPs que estarían autorizadas para enviar correos bajo el dominio pcavote.com:<br />
<br />
<div class="commandconsolebox" style="margin: 10px;"><pre>> server 8.8.8.8
Servidor predeterminado: google-public-dns-a.google.com
Address: 8.8.8.8
> set type=txt
> pcavote.com
Servidor: google-public-dns-a.google.com
Address: 8.8.8.8
Respuesta no autoritativa:
pcavote.com text =
"v=spf1"
"mx"
"a:mailhost.sparkred.com"
"include:sparkred.com"
"~all"
> set type=mx
> pcavote.com
Servidor: google-public-dns-a.google.com
Address: 8.8.8.8
Respuesta no autoritativa:
pcavote.com MX preference = 10, mail exchanger = dmx1.bfi0.com
>set type=a
>dmx1.bfi0.com
Servidor: google-public-dns-a.google.com
Address: 8.8.8.8
Respuesta no autoritativa:
Nombre: dmx1.bfi0.com
Address: 208.70.143.4
> set type=a
> mailhost.sparkred.com
Servidor: google-public-dns-a.google.com
Address: 8.8.8.8
Respuesta no autoritativa:
Nombre: mailhost.sparkred.com
Address: 67.228.250.41
> set type=txt
> sparkred.com
Servidor: google-public-dns-a.google.com
Address: 8.8.8.8
Respuesta no autoritativa:
sparkred.com text =
"v=spf1"
"a"
"mx"
"a:mailhost.sparkred.com"
"~all"
> set type=a
> sparkred.com
Servidor: google-public-dns-a.google.com
Address: 8.8.8.8
Respuesta no autoritativa:
Nombre: sparkred.com
Address: 75.126.129.131
> set type=txt
> sparkred.com
Servidor: google-public-dns-a.google.com
Address: 8.8.8.8
Respuesta no autoritativa:
sparkred.com text =
"v=spf1"
"a"
"mx"
"a:mailhost.sparkred.com"
"~all"
> sparkred.com
Servidor: google-public-dns-a.google.com
Address: 8.8.8.8
Respuesta no autoritativa:
sparkred.com MX preference = 10, mail exchanger = webmail.sparkred.com
> set type=a
> webmail.sparkred.com
Servidor: google-public-dns-a.google.com
Address: 8.8.8.8
Respuesta no autoritativa:
Nombre: webmail.sparkred.com
Address: 174.37.50.21
</pre></div><br />
Y el resultado de IPs obtenido de las consultas anteriores:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-GMIl80mYEgg/Tb24clN2ASI/AAAAAAAAAbU/waCc6exl3oQ/s1600/lista+ips+consulta+SPF.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="144" src="http://2.bp.blogspot.com/-GMIl80mYEgg/Tb24clN2ASI/AAAAAAAAAbU/waCc6exl3oQ/s640/lista+ips+consulta+SPF.png" width="640" /></a></div><br />
<br />
En este punto ya no entendía nada, es decir, o yo no entiendo como funciona bien el <b>SPF</b> y por lo tanto algo se me escapa, o Gmail no implementa el <b>SPF</b> como se índica en el estándar (<a href="http://www.ietf.org/rfc/rfc4408.txt">RFC 4408</a>); debido a esto no me quedé tranquilo y me fui a buscar lugares donde pudiese hacer alguna prueba de concepto más, como hizo el Maligno en su día.<br />
<br />
Así que me busque una bonita web que me dejase enviar cosas a los colegas y envié un email al Gmail indicando que era un pavo de La Caixa (lacaixa.es), es decir utilicé el mismo dominio que utilizó el <a href="https://twitter.com/#%21/chemaalonso">Maligno</a> en sus pruebas.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-o_k3MxfNKuY/Tb27khKSWGI/AAAAAAAAAbY/w-D7zXuJmS4/s1600/send+to+friend+www.voyages-lelan.be.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="281" src="http://2.bp.blogspot.com/-o_k3MxfNKuY/Tb27khKSWGI/AAAAAAAAAbY/w-D7zXuJmS4/s400/send+to+friend+www.voyages-lelan.be.jpg" width="400" /></a></div><div style="text-align: center;"><span style="color: #666666; font-size: x-small;">Envío de email a través del formulario de “enviar a un amigo” de una web</span></div><br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-wAv8C8KS9Lw/Tb2_6ixl0BI/AAAAAAAAAbo/2Hbw9t8M4pw/s1600/mail+message+gmail+phishing+lacaixa.es+01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="http://2.bp.blogspot.com/-wAv8C8KS9Lw/Tb2_6ixl0BI/AAAAAAAAAbo/2Hbw9t8M4pw/s400/mail+message+gmail+phishing+lacaixa.es+01.png" width="400" /></a></div><br />
<div class="separator" style="clear: both; text-align: center;"></div><div style="text-align: center;"><span style="font-size: x-small;"><span style="color: #666666;">Recepción en Gmail del email enviado desde el formulario web “envía a un amgio”</span></span></div><br />
Y el resultado obtenido es el mismo, se colo en buzón de entrada sin ningún tipo de alerta y con un resultado de <b>SPF</b> a FAIL; aunque esta vez la cabecera del correo no lleva ni el campo <i>Sender:</i> ni <i>X-Sender:</i>, pero sí <i>Retun-Path:</i>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-9Pg6aur48OE/Tb3AhNy_7XI/AAAAAAAAAbw/TkyfHbEtrO0/s1600/headers+of+message+phishing+from+lacaixa.es+to+gmail+01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="420" src="http://2.bp.blogspot.com/-9Pg6aur48OE/Tb3AhNy_7XI/AAAAAAAAAbw/TkyfHbEtrO0/s640/headers+of+message+phishing+from+lacaixa.es+to+gmail+01.png" width="640" /></a></div><br />
<div class="separator" style="clear: both; text-align: center;"></div><div style="text-align: center;"><span style="font-size: x-small;"><span style="color: #666666;">Cabeceras del email recibido enviado desde el formulario web de “envía a un amigo”</span></span></div><br />
Aún después de todo esto no me quedé satisfecho y decidí probar el mismo ejemplo sobre otra web de las que también permite enviar cosas a colegas y ver de nuevo que pasaba.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-98WRo5qv2MI/Tb2_7O95CMI/AAAAAAAAAbs/4eaS47HM-xc/s1600/mail+message+gmail+phishing+lacaixa.es+02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="250" src="http://3.bp.blogspot.com/-98WRo5qv2MI/Tb2_7O95CMI/AAAAAAAAAbs/4eaS47HM-xc/s400/mail+message+gmail+phishing+lacaixa.es+02.png" width="400" /></a></div><div style="text-align: center;"><span style="font-size: x-small;"><span style="color: #666666;">Recepción en Gmail del email enviado desde otro formulario web “envía a un amgio”</span></span></div><br />
El resultado obtenido con esta última prueba fue sutilmente distinto, se coló en el buzón de entrada, pero el resultado del <b>SPF</b> fue PASS, tampoco tenía campos <i>Sender:</i> ni <i>X-Sender:</i>, pero si que tenía también el campo <i>Return-Path:</i>, pero no con el valor de la cuenta de correo del supuesto emisor, sino con una cuenta del dominio que envía los correos introducidos en el formulario web, de ahí a que el resultado del <b>SPF</b> fuese PASS, ya que este dominio no tiene una política <b>SPF</b> definida.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-N9LdfOxvEJU/Tb2_6aL5usI/AAAAAAAAAbk/M0ByJ_opxXY/s1600/headers+of+message+phishing+from+lacaixa.es+to+gmail+02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="466" src="http://3.bp.blogspot.com/-N9LdfOxvEJU/Tb2_6aL5usI/AAAAAAAAAbk/M0ByJ_opxXY/s640/headers+of+message+phishing+from+lacaixa.es+to+gmail+02.png" width="640" /></a></div><div style="text-align: center;"><span style="color: #666666; font-size: x-small;">Cabeceras del email recibido enviado desde otro formulario web de “envía a un amigo”</span></div><style type="text/css">
p { margin-bottom: 0.21cm; }
</style> <br />
<div align="JUSTIFY" lang="es-ES" style="font-style: normal; font-weight: normal; margin-bottom: 0cm;">Y las consultas que hice sobre el dominio voc-servicios2.sarenet.es fueron:</div><br />
<div class="commandconsolebox" style="margin: 10px;"><pre>> set type=a
> voc-servicios2.sarenet.es
Servidor: google-public-dns-a.google.com
Address: 8.8.8.8
Respuesta no autoritativa:
Nombre: voc-servicios2.sarenet.es
Address: 194.30.33.176
> set type=txt
> voc-servicios2.sarenet.es
Servidor: google-public-dns-a.google.com
Address: 8.8.8.8
sarenet.es
primary name server = ns1.sarenet.es
responsible mail addr = dnsmaster.sarenet.es
serial = 2011032204
refresh = 86400 (1 day)
retry = 7200 (2 hours)
expire = 2592000 (30 days)
default TTL = 300 (5 mins)
> set type=mx
> voc-servicios2.sarenet.es
Servidor: google-public-dns-a.google.com
Address: 8.8.8.8
sarenet.es
primary name server = ns1.sarenet.es
responsible mail addr = dnsmaster.sarenet.es
serial = 2011032204
refresh = 86400 (1 day)
retry = 7200 (2 hours)
expire = 2592000 (30 days)
default TTL = 300 (5 mins)
</pre></div><br />
De todo esto puedo sacar algunas <b>conclusiones</b>, además de las que ya sacó el Maligno, como que Gmail no garantiza un aviso aunque el resultado <b>SPF</b> de los emails recibos sea FAIL.<br />
<ol><li>Gmail utiliza el dominio del campo Return-Path: para calcular el resultado <b>SPF</b>.<br />
He podido observar que en varios emails que el campo siempre está presente, o con una dirección (parte local, o del dominio o ambas) distinta del campo <i>From:</i> o sino con el mismo valor.</li>
<li>Si el valor del campo <i>Return-Path:</i> difiere del campo <i>From:</i> entonces aparece en los detalles de la cabecera del email un campo denominado <i>mailed-by</i> con el dominio de la dirección presente en el campo <i>Return-Path:</i>.</li>
</ol><br />
Hasta la próxima enfermos.<br />
<br />
<br />
</div>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-4529097646321081736.post-78516249272786618212011-04-21T23:35:00.000+02:002011-04-21T23:35:45.345+02:00Se nos pasa por la cabeza meter nuestros ficheros en la nube (Dropbox)<div style="text-align: justify;"><br />
<span style="font-size: large;">Introducción</span><br />
El otro día cuando ya me largaba de la empresa me llegó lo que ya hacía un tiempo que esperaba que llegase; “Oye que estamos valorando esto del <a href="http://www.dropbox.com/">Dropbox</a>, que todo el mundo está utilizando y que se habla tan bien, para meterlo como herramienta de trabajo, ya que tenemos que aprovechar este tipo de servicios que están ahí ¿que opinas?”<br />
<br />
Bueno llegado a este punto, a mi que no me gusta, como norma general y siendo bastante estricto, decir que algo es como es cuando no estoy el 99% seguro de que es así, el 1% restante considero que es pocas veces alcanzable, quitando lo de la muerte, empecé a decir lo que ya conocía que era cierto, lo que conocía sin seguridad advirtiendo de que no estaba seguro (porque ha venido de voces en off) y de lo que podía intuir, claro está indicando que lo intuía pero que tenía que contrastarlo.<br />
<br />
El que me pillo por banda es uno de los directivos junto con varios miembros del grupo de trabajo, el cual él también dirige (la empresa no es tan grande para que el directivo solo dirija la empresa), y todo venía, entiendo, porque algunos de los miembros del grupo de trabajo ya están utilizando los servicios de <a href="http://www.dropbox.com/">Dropbox</a> a nivel personal, y que me les mola (con esto no quiero decir que el servicio no mole), han empezado a darle la brasa al <i>manager</i> seguramente pensando: “si vamos al departamento de IT a pedirle esto con lo paranoicos que siempre están con ciertos temas, como la seguridad, la privacidad, etc. y lo poco que les gusta implantar nuevas soluciones en la empresa, nos van a mandar a tomar por c....”.<br />
<br />
Dejando de banda lo “bien vistos” que estamos los del departamento de IT, por el resto de personal interno de la empresa, todo acabó en que nos reuniríamos un día y hora concreto (el cual llegado el día no ha habido ni reunión ni comunicación de aplazamiento, es decir como si no se hubiese dicho nada), el cual yo tendría que estar informado de el funcionamiento (tal y como se explique o se informe por parte del equipo técnico de <a href="http://www.dropbox.com/">Dropbox</a>, no estoy hablando de que tuviese que hacer ningún tipo de Ingeniería Inversa, ni de poner en duda lo que ellos anuncien y vendan de su servicio) para poder explicarse y resolver las dudas que se habían surgidos en la previa.<br />
<br />
Así que como, no soy un usuario activo, por ahora, de este tipo de servicios, no porque los encuentre inútiles, sino porque por ahora no he tenido necesidad de utilizar este tipo servicios, de ahí que no tenga todas sus características en mente, me puse a mirar la <a href="https://secure.wikimedia.org/wikipedia/en/wiki/FAQ">FAQ</a> de <a href="http://www.dropbox.com/">Dropbox</a>, la cual encontré muy completa, para saber más de su funcionamiento y de ahí ver que posibilidades puede ofrecer, además de poder responder a las dudas que ya se habían planteado (algunas con sugerimientos de que este suprimiese a servicios que ahora ofrecemos desde nuestros servidores) y a las nuevas que podían surgir en la reunión; y de todo esto salio un resumen de las características, el cual os dejo a continuación.<br />
<br />
<span style="font-size: large;">Resumen de características de Dropbox</span><br />
<u><b> </b></u><br />
<u><b>Cuentas de miembros</b></u><br />
<br />
<ul><li>No se específica un límite de equipos que se sincronizan con una misma cuenta. En la gestión de la cuenta se puede ver los equipos adheridos a la cuenta.</li>
<li>Tamaño máximo de ficheros igual a la cuota disponible en la cuenta. En el caso de subir ficheros a través de la web el límite es de 300 Mb.</li>
<li>No hay máximo número de ficheros, la cuota de almacenamiento marca el límite. Actualmente se estima que el rendimiento puede verse afectado si se almacenan más de 100.000 ficheros.</li>
<li>Transferencia de información aplicando diferencia binaria; solo se sincroniza la información que realmente ha variado.</li>
<li>Soporta la sincronización de atributos de los ficheros (derechos, meta datos, etc.), pero se pueden perder si se modifica la información en unidades con formatos de ficheros que no soportan metadatos, por ejemplo FAT32.</li>
<li>Recuperación de estines anteriores.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-kZbu4TlApLo/TagjdmERB2I/AAAAAAAAAbI/VuV3wUno-CI/s1600/menu+de+recuperacion+versiones+ficheros.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="326" src="http://4.bp.blogspot.com/-kZbu4TlApLo/TagjdmERB2I/AAAAAAAAAbI/VuV3wUno-CI/s400/menu+de+recuperacion+versiones+ficheros.png" width="400" /></a></div><div style="color: #666666; text-align: center;"><span style="font-size: x-small;">menú de recuperación versiones ficheros</span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-74ly7YkA55A/TagjdFvcaQI/AAAAAAAAAbE/RHmUonKJWeQ/s1600/listado+de+versiones+de+un+fichero.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="111" src="http://1.bp.blogspot.com/-74ly7YkA55A/TagjdFvcaQI/AAAAAAAAAbE/RHmUonKJWeQ/s400/listado+de+versiones+de+un+fichero.png" width="400" /></a></div><div style="color: #666666; text-align: center;"><div align="CENTER" style="margin-bottom: 0cm; margin-left: 1.25cm;"><span style="color: grey;"><span style="font-size: x-small;">listado de versiones de un fichero</span></span></div></div><br />
Se mantienen la versiones de cambios durante <u><b>30 días</b></u>, no obstante hay la opción, en las cuentas <b>Pro</b>, de activar el <i>Pack-Rat</i>; las versiones mantenidas no computan en la cuota de espacio de la cuenta.<br />
No obstante se permite eliminar los ficheros de manera permanente.</li>
<li>Permite vínculos únicos a los ficheros en los directorios de acceso público. Con esta funcionalidad se puede agregar estos vínculos en páginas web, e-mails, etc.</li>
<li>Se puede compartir directorios con los usuarios registrados en Dropbox que se quiera, atendiendo al uso de espacio en la cuenta.<br />
<span style="color: red;">Cuando se comparte un directorio, <b><u>se comparte con derechos de modificación total</u></b> (adición, modificación y borrado de ficheros existentes), puesto que derechos de solo lectura aplicados sobre un sistema operativo no tiene porque transcender sobre otros sistema operativo, no obstante los atributos del fichero si que son copiados en los servidores de Dropbox. Además los usuarios que han sido invitados, por el propietario de la cuenta, para poder acceder al directorio compartido <u><b>pueden invitar a otros usuarios al directorio</b></u>. Solo el propietario puede eliminar usuarios que tienen acceso al directorio compartido.</span></li>
<li>Se puede añadir comentarios sobre los directorios compartidos para facilitar la comunicación con el resto de miembros con acceso al directorio.</li>
<li>Se puede renombrar y mover directorios compartidos a nivel de cuenta y gestión interna de la información, no obstante el nombre y la ubicación como ha sido compartido permanecerá inalterable bajo estos cambios.</li>
<li>La gestión de conflictos de cambio de ficheros al mismo tiempo se gestiona con el algoritmo “La primera versión que se sube al servidor, gana”, es decir no se utiliza ningún algoritmo de fusión de versiones; no obstante no se descartan las versión que han “perdido”, se mantiene con la siguiente nomenclatura: {nombre del fichero} ({nombre usuario que ha creado esa versión} copy {momento de creación de la versión}) <br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-uqe_x41cTtg/Tagjcw12fqI/AAAAAAAAAbA/9-JHi8-UDY4/s1600/ejemplo+de+version+de+un+fichero+generada+por+conflicto.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="116" src="http://4.bp.blogspot.com/-uqe_x41cTtg/Tagjcw12fqI/AAAAAAAAAbA/9-JHi8-UDY4/s400/ejemplo+de+version+de+un+fichero+generada+por+conflicto.png" width="400" /></a></div><div style="text-align: center;"><span style="font-size: x-small;"><span style="color: #666666;">ejemplo de versión de un fichero generada por conflicto</span></span></div><div style="text-align: center;"><br />
</div></li>
<li> Sincronización <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Local_area_network">LAN</a>. Se incorpora un mecanismo de detección de ordenadores que se sincronizan con una misma cuenta o directorios compartidos con acceso de las distintas cuentas que utilizan distintos ordenadores dentro de una misma Red de Área Local (<a href="https://secure.wikimedia.org/wikipedia/en/wiki/Local_area_network">LAN</a>) para sincronizar los ficheros o directorios cambiados entre ellos antes de sincronizar con los servidores de Dropbox; evitando el consumo de ancho de banda de la conexión de Internet de la <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Local_area_network">LAN</a>.<br />
<span style="color: red;"> Este mecanismo solo es aplicable en una misma subred.</span></li>
<li> Como Dropbox puede utilizarse en múltiples sistemas operativos y esto tienen distintas reglas en los nombres de los ficheros, codificaciones, etc, normalmente al sincronizar este tipo de ficheros con otro sistema operativo que lo ha generado puede degenerar en la creación de una nueva versión del fichero marcada como conflicto o no llegarse a descargarse en el sistema operativo receptor. Las distintas casuísticas documentadas se pueden consultar en <a href="https://www.dropbox.com/help/145">https://www.dropbox.com/help/145</a></li>
</ul><b><u> Añadidos para cuentas de grupos</u></b><br />
<ul><li> Gestión de usuarios centralizada desde las cuentas de administradores.</li>
<li> El administrador puede ver la cuota de almacenamiento utilizada sobre el total (todos los miembros) y la cuota utilizada por cada miembro.</li>
<li> Cuota de espacio de almacenamiento computada en sobre el grupo no limitado al espacio de cada cuenta de miembro individual.</li>
<li> Se puede quitar a un miembro del grupo el acceso a un directorio compartido y se puede optar por solo quitarle el acceso al directorio o también indicarle que le elimine los ficheros almacenados en su disco duro.</li>
<li> Los miembros que vayan a formar parte de una cuenta de grupo deben convertir su cuenta existente a una del tipo miembro de grupo o crear una una cuenta de miembro de grupo. Si utilizan una cuente existente y la convierten en una cuenta de grupo, el usuario mantendrá sus ficheros, directorios compartidos y sus documentos públicos; si se genera un nueva cuenta, tendrán que proporcionar una dirección de correo distinta, no obstante el usuario puede cambiar su cuenta de correo asociada a la cuenta de Dropbox en cualquier momento desde la interfaz web.</li>
</ul><br />
<span style="font-size: x-small;"><b style="color: #666666;"><u>Nota informativa</u>:</b><span style="color: #666666;"> Información extraída del centro de ayuda <a href="http://www.blogger.com/goog_1707367514">(</a></span><a href="https://www.dropbox.com/help">Help Center</a><span style="color: #666666;">) de la Web de </span><a href="https://www.dropbox.com/">Dropbox</a><span style="color: #666666;"> a fecha de 15/04/2011 y no está exenta de errores de interpretación o traducción.</span></span><br />
<br />
<br />
Hasta la próxima enfermos.</div>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-4529097646321081736.post-22511755536232100342011-04-16T20:06:00.001+02:002011-04-16T20:08:20.198+02:00OWASP VII Spain Chapter Meeting<div style="text-align: justify;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-eUjQk3bHV-Y/TanZ7REOFmI/AAAAAAAAAbM/74RH0a_-g0E/s1600/Owasp+spain.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-eUjQk3bHV-Y/TanZ7REOFmI/AAAAAAAAAbM/74RH0a_-g0E/s1600/Owasp+spain.png" /></a></div>Después de asistir el viernes por la tarde a la <a href="https://www.owasp.org/index.php/Spain">OWASP VIII</a> en Barcelona, puedo decir que me ha sido muy útil para enterarme de los ataques de <i>Session Fixation</i>, algo que me sonaba de oído pero que al no haber profundizado sobre el tema, básicamente leyendo, consultando, viendo, escuchando o cualquier otra manera que se os ocurra de absorber conocimiento, desconocía de que se trata realmente, que <i>modus operandi</i> tiene y como se pueden abordar medidas preventivas para evitar que las aplicaciones web sufran este tipo de ataque.<br />
<br />
La ponencia realizada por Raúl Siles, de <a href="http://www.taddong.com/">Taddong</a>, denominada “S<i>AP: Session (Fixation) Attacks and Protections (in WebApp)</i>” ha sido, a mi criterio, de lo más interesante, ha explicado que es, que tipo de aplicaciones son atacables, como se ataca, directrices para prevenir o al menos mitigar lo máximo posible el ataque y ha expuesto como ejemplo su experiencia sobre la vulnerabilidad que detectó en SAP y cual fue su trascendencia desde el descubrimiento y notificación hasta su solución y la notificación pública de ésta.<br />
<br />
El resto de ponencias también me han aportado, en menor medida, seguramente porque mi interés era menor, y en el caso de la primera, “<i>Web Attacks In The Wild: An overview of las year's probes</i>” de Adrián Pastor, por haber llegado al menos a la mitad de la ponencia, conocimiento sobre ataques web, el estado de los estándares de medios y certificaciones de aplicaciones de pago y como responder a incidentes de infecciones web, desde la preparación del entorno hasta el análisis de los incidentes, pasando por la respuesta que hay que dar sobre estos, de la mano de Carles Fragoso Mariscal, responsable de respuesta a incidentes de <a href="http://www.cesicat.cat/">CESICAT</a>.<br />
<br />
Después de todo esto ya se pasó al debate, donde se discutió de ciertos aspectos bajo el tema principal: El robo de datos de tarjeta como objetivo de los ciberdelicuentes: ¿conocemos el mercado negro asociado?; el cual, al menos yo, disfruté mucho, ya que siempre me gustar escuchar, valorar y si tengo opción, ser crítico en lo que se dice, respetando las creencias y pensamientos de cada uno siempre que se argumenten.<br />
<br />
<br />
Hasta la próxima enfermos.</div>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-4529097646321081736.post-55939874773374140302011-04-06T22:57:00.004+02:002011-05-01T22:36:57.386+02:00Si eres un banco, cuida tu SPF<div style="text-align: justify;"><br />
El otro día pedí una información, por email, de los servicios que ofrece una de las nuevas entidades bancarias que están apareciendo con el revuelo económico que últimamente está habiendo con las cajas de ahorro.<br />
<br />
Aunque lo que realmente pedí fue que me llamasen, posterior conversación telefónica me enviaron un email con todo lo que me habían comentado por teléfono, junto con un enlace donde darse de alta como cliente.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-CkiMAO4eibY/TZyJTJhaRdI/AAAAAAAAAa0/wTokPdxBhfw/s1600/parte+de+cuerpo+de+email+link+registro+cliente+bancacivica.es.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="224" src="http://2.bp.blogspot.com/-CkiMAO4eibY/TZyJTJhaRdI/AAAAAAAAAa0/wTokPdxBhfw/s640/parte+de+cuerpo+de+email+link+registro+cliente+bancacivica.es.png" width="640" /></a></div><br />
<div style="color: #666666; text-align: center;"><span style="font-size: x-small;">Parte del cuerpo del email de bancacivica.es con el enlace al formulario de alta de nuevos clientes</span></div><br />
Debido a todo lo que leo, escucho, etc. de todo lo que pasa con la seguridad del mundo virtual y después de <a href="http://prensa.pandasecurity.com/wp-content/uploads/2011/01/Mercado-Negro-del-Cybercrimen.pdf">leer informes de claramente indican que zapato calzan las organizaciones criminales que se encuentran detrás</a>, a uno le entra la paranoia constante de sino te están intentando timar además de tener la inseguridad de que cada vez que inicio sesión en el la <i>extranet</i> de una entidad financiera no te estarán robando los credenciales bancarios para que puedan hacer una mejor administración e inversión de la que tu haces con tus ahorros.<br />
<br />
Bueno, debido a que al leer el correo entré en estado paranoico, me aseguré de verificar un poco las cabeceras del email recibido para ver de donde viene y por donde ha pasado (que me refiero a lo que ha quedado registrado).<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-VoMsVAW4WVY/TZyJS6K5lqI/AAAAAAAAAaw/GqyUQH7jJmA/s1600/cabeceras+email+bancacivica.es.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="344" src="http://2.bp.blogspot.com/-VoMsVAW4WVY/TZyJS6K5lqI/AAAAAAAAAaw/GqyUQH7jJmA/s640/cabeceras+email+bancacivica.es.png" width="640" /></a></div><br />
<div style="color: #666666; text-align: center;"><span style="font-size: x-small;">Cabeceras del email recibido de bancacivica.es con el enlace al formulario de alta de nuevos clientes</span></div><br />
Todo me parecía normal si no fuese porque el resultado del <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Sender_Policy_Framework">SPF</a> había dado error, y como no, Gmail no había notificado mediante algún aviso de ello.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-1muKBBfyzQw/TZyJRZ8pu5I/AAAAAAAAAas/cTwmx2TM_i8/s1600/cabecera+webmail+email+bancacivica.es.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="161" src="http://1.bp.blogspot.com/-1muKBBfyzQw/TZyJRZ8pu5I/AAAAAAAAAas/cTwmx2TM_i8/s400/cabecera+webmail+email+bancacivica.es.png" width="400" /></a></div><br />
<div style="color: #666666; text-align: center;">Cabecera del email bancacivica.es sin aviso alguno del fallo <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Sender_Policy_Framework">SPF</a></div><br />
El error que se había producido era un “temperror” debido a un <i>timeout </i>en la consulta DNS para la obtención del valor del registro TXT del dominio.<br />
Así que no me quede muy tranquilo viendo esto, por lo entonces un simple fallo en la consulta puede originar que no se verifique el filtro <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Sender_Policy_Framework">SPF</a>, dando un “temperror” y el mail se cuele sin aviso alguno.<br />
Lo primero que pensé es que debía haber sido un error esporádico, pero no fue así ya que como tenía otro correo recibido, desde la misma dirección de envío, anterior a este, me fui a ver las cabeceras de este y … ¡sorpresa! Se había producido el mismos error.<br />
<br />
“Pues vaya, vamos a ver que pasa con el registro <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Sender_Policy_Framework">SPF</a> de bancacivica.es”; así que me fui ha consultar el registro TXT del dominio y ver si podía sacar algo en claro.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-E6oF4p9MpxA/TZyJUYBSNNI/AAAAAAAAAa8/krALfQxgR4w/s1600/resultado+nslookp+sobre+varios+dns+registro+txt+bancacivica.es.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="370" src="http://2.bp.blogspot.com/-E6oF4p9MpxA/TZyJUYBSNNI/AAAAAAAAAa8/krALfQxgR4w/s400/resultado+nslookp+sobre+varios+dns+registro+txt+bancacivica.es.png" width="400" /></a></div><div style="color: #666666; text-align: center;"><span style="font-size: x-small;">Valor del registro TXT del dominio consultado en varios servidores DNS</span></div><br />
Como podéis ver en la captura anterior al intentar conseguir el valor del registro TXT del dominio desde el servidor DNS de Google, se origina un error de <i>timeout</i>, así que de ahí que se explique el resultado que obtiene los servidores de Gmail. No obstante también podéis ver el resultado de la consulta sobre otros dos servidores DNS, el de Terra y el OpenDNS, los cuales no generan error y nos devuelven el resultado del registro. <br />
<br />
Claramente podemos ver que tienen una sintaxis incorrecta:<i> ~all-</i> (el guión final no debería estar).<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-QcKRLwjo88c/TZyJT9xEKjI/AAAAAAAAAa4/80VfmlIsgK8/s1600/resultado+de+verificacion+registro+SPF+bancacivica.es.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="257" src="http://3.bp.blogspot.com/-QcKRLwjo88c/TZyJT9xEKjI/AAAAAAAAAa4/80VfmlIsgK8/s320/resultado+de+verificacion+registro+SPF+bancacivica.es.png" width="320" /></a></div><div style="color: #666666; text-align: center;"><span style="font-size: x-small;">Verificación de la sintaxis del registro TXT en <a href="http://www.kitterman.com/spf/validate.html">Kitterman</a></span></div><br />
Bueno son cosas que pasan, todos nos equivocamos y muchas veces a la hora de teclear se nos van los dedos, pero claramente podemos ver que después de aplicar el filtro nadie se ha preocupado de verificarlo.<br />
<br />
Con todo esto acabo de aprender dos cosas:<br />
<ol><li>Gmail no me dará ningún aviso si hay un error de <i>timeout</i> sobre la verificación <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Sender_Policy_Framework">SPF</a>.</li>
<li>Si me toca crear algún filtro <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Sender_Policy_Framework">SPF</a> en futuro, acordarme que luego lo verifique (sobre todo si es para un sector donde la autenticidad de los emails es importante, como una entidad bancaria).</li>
</ol><br />
<br />
Hasta la próxima enfermos.</div>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-4529097646321081736.post-75430566936276905152011-03-19T17:44:00.010+01:002011-06-19T21:33:00.945+02:00[PHP] Arrays pasados por parámetro ¿copias o referencias? (2/2)<div style="font-family: "Courier New",Courier,monospace;"><span style="font-size: 85%; font-weight: bold;">conjuntoEntradas() { </span></div><div style="font-family: "Courier New",Courier,monospace;"><span style="font-size: 85%;"> <a href="http://enfermodelosbits.blogspot.com/2011/03/php-arrays-pasados-por-parametro-copias.html">[PHP] Arrays pasados por parámetro ¿copias o referencias? (1/2)</a> </span><br />
<span style="font-size: 85%; font-weight: bold;"> [PHP] Arrays pasados por parámetro ¿copias o referencias? (2/2)</span><br />
<span style="font-size: 85%;">}</span></div><br />
<div style="text-align: justify;"><br />
<b><span style="font-size: large;">El rendimiento</span></b><br />
<br />
Hasta aquí podía apaliar una de mis inquietudes, que era el nivel de integridad de los atributos de un objeto para cada una de las maneras de tratar los parámetros de los métodos y su asignación a estos, pero todavía me quedaba otra pendiente, que era saber el rendimiento de cada una de estas formas.<br />
<br />
Ya se que en el rendimiento de una aplicación están involucrados muchos factores y cuando tu escribes un código, el orden de ejecución de las instrucciones puede ser alterado por el compilador con el objetivo de optimizar el código para una ejecución más eficiente, no obstante siempre que programa y me encuentro delante de los ojos que el orden de ciertas instrucciones podría ser cambiado, a priori por una más optima, si no me aleja enormemente de lo que estoy haciendo, hago el <i>refactoring</i>, o sino me lo marco con <i>@todo</i>; ya sé que ha veces esto puede ser un poco de maniático o de paranoico, pero es algo intrínseco en mi personalidad junto con la concepción de que las pequeñas cosas forman el todo, por lo que si ese pequeño cambio puede llegar a optimizar una mil millonésima parte de la ejecución, lo aplico de todas formas, siempre pienso “mejor eso que nada”.<br />
<br />
Bueno dejando de lado mis paranoias, os dejo la modificación del código de la prueba anterior de manera que me permitiera analizar la carga de ejecución de cada manera de pasar parámetros y de asignación de estos atributos.<br />
<br />
<div class="srccodebox" style="margin: 10px;"><pre>class A {
private $arrValor;
private $arrValorToRef;
private $arrReferencia;
private $arrRefToRef;
public function setArrayByValue(array $setArr) {
$this->arrValor = $setArr;
}
public function setArrayByValueToRef(array $setArr) {
$this->arrValorToRef = &$setArr;
}
public function setArrayByRef(array &$setArr) {
$this->arrReferencia = $setArr;
}
public function setArrayByRefToRef(array &$setArr) {
$this->arrRefToRef = &$setArr;
}
}
$numIt = 1000000;
$arr = array('key0' => 'value0');
$objA = new A();
for ($it = 0; $it < $numIt; $it++) {
$objA->setArrayByValue($arr);
$objA->setArrayByValueToRef($arr);
$objA->setArrayByRef($arr);
$objA->setArrayByRefToRef($arr);
}
</pre></div><br />
La modificación del <i>script</i> de prueba está clara, solo he dejé en los métodos de las clases declarada la asignación del parámetro al atributo, que es lo que quería comparar a nivel de coste de ejecución, y en la ejecución del <i>script</i> iterar unas cuantas vueltas dentro de un bucle la llamada a los cuatro métodos.<br />
<br />
Para saber el coste de ejecución lo que hice es ejecutar el script en un <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Profiling_%28computer_programming%29"><i>profiler</i></a>, concretamente el de <a href="http://www.xdebug.org/docs/profiler">xdebug</a>; hice dos pruebas, una con 1.000.000 iteraciones y otra con 3.000.000 de iteraciones; ¿porqué tantas? para que el <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Profiling_%28computer_programming%29"><i>profiler</i></a> pudiese medir con mayor precisión la diferencia entre cada llamada y ¿porqué dos veces?, para ver si los valores se obtenidos daban valores diferenciales similares entre las llamadas de los distintos métodos.<br />
<br />
El resultado que obtuve fue el siguiente:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://lh6.googleusercontent.com/-OvzcQF8PkV4/TYHltog2FdI/AAAAAAAAAZ0/-TFDbze1meI/s1600/grafico+de+llamadas+-+1000000+iterations.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="270" src="https://lh6.googleusercontent.com/-OvzcQF8PkV4/TYHltog2FdI/AAAAAAAAAZ0/-TFDbze1meI/s400/grafico+de+llamadas+-+1000000+iterations.png" width="400" /></a></div><div style="color: #666666; text-align: center;"> <span style="font-size: x-small;">Gráfico de llamadas a los métodos con 1.000.000 de iteraciones</span></div><div style="color: #666666; text-align: center;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://lh6.googleusercontent.com/-O6oPWBklMcI/TYHlwCO4flI/AAAAAAAAAaA/3g7dkTkri3c/s1600/grafico+tiempos+de+llamadas+-+1000000+iterations.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="103" src="https://lh6.googleusercontent.com/-O6oPWBklMcI/TYHlwCO4flI/AAAAAAAAAaA/3g7dkTkri3c/s640/grafico+tiempos+de+llamadas+-+1000000+iterations.png" width="640" /></a></div><br />
<div style="color: #666666; text-align: center;"><span style="font-size: x-small;">Tabla de porcentaje de tiempo de carga sobre el total de llamada a los métodos con 1.000.000 de iteraciones</span></div><div style="color: #666666; text-align: center;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://lh5.googleusercontent.com/-dKXnngJhQ7w/TYHlvnBdhHI/AAAAAAAAAZ8/0Xr8edDJogU/s1600/grafico+de+llamadas+-+3000000+iterations.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="266" src="https://lh5.googleusercontent.com/-dKXnngJhQ7w/TYHlvnBdhHI/AAAAAAAAAZ8/0Xr8edDJogU/s400/grafico+de+llamadas+-+3000000+iterations.png" width="400" /></a></div><div style="color: #666666; text-align: center;"><span style="font-size: x-small;">Gráfico de llamadas a los métodos con 3.000.000 de iteraciones</span></div><div style="color: #666666; text-align: center;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://lh5.googleusercontent.com/-RKjWg3RGKGM/TYHlw5rgJ9I/AAAAAAAAAaE/kmqAApZMiBo/s1600/grafico+tiempos+de+llamadas+-+3000000+iterations.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="90" src="https://lh5.googleusercontent.com/-RKjWg3RGKGM/TYHlw5rgJ9I/AAAAAAAAAaE/kmqAApZMiBo/s640/grafico+tiempos+de+llamadas+-+3000000+iterations.png" width="640" /></a></div><div style="color: #666666; text-align: center;"><span style="font-size: x-small;"></span></div><div style="color: #666666; text-align: center;"><span style="font-size: x-small;">Tabla de porcentaje de tiempo de carga sobre el total de llamada a los métodos con 3.000.000 de iteraciones</span></div><br />
Después de los resultados obtenidos a partir de los ficheros generados por el <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Profiling_%28computer_programming%29"><i>profiler</i></a> con la ejecución del <i>script</i>, y haber sacada los gráficos y las tablas anteriores de cada ejecución con el visor <a href="http://kcachegrind.sourceforge.net/html/Home.html">kcachegrind</a>, me decidí a poner los valores en un hoja de cálculo para poder analizar de manera más cómoda los resultados.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-L7DJI2FZnUA/TYHsI5-GAaI/AAAAAAAAAaI/VYwb7aSDiBg/s1600/diferencias+costes+ejecucion.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="184" src="https://lh3.googleusercontent.com/-L7DJI2FZnUA/TYHsI5-GAaI/AAAAAAAAAaI/VYwb7aSDiBg/s640/diferencias+costes+ejecucion.png" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://lh4.googleusercontent.com/-QMgOMZCuQSk/TYHlvJpujhI/AAAAAAAAAZ4/yz7Lispx1zY/s1600/diferencias+costes+ejecucion.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div><div style="color: #666666; text-align: center;"> <span style="font-size: x-small;">Valores de los resultados, medias y diferencias entre ellos</span></div><br />
Como podemos observar, y era de esperar, el método más eficiente es pasar el parámetro por referencia y asignar la referencia al atributo, ya que no se hace ninguna copia del array pasado por parámetro. Lo más curioso es que el siguiente más eficiente es el método que se pasa el parámetro por valor y se asigna por valor (<i style="color: #444444;">setArrayByValue</i>), estando por delante de los otros dos, yo, si no hubiese hecho esta prueba, hubiese intuido que éste sería el menos eficiente, ya que debería estar haciendo dos copias del array, una cuando lo pasa por parámetro y la otra cuando lo asigna a la variable, mientras que los otros dos deberían tener costes similares ya que hacen una copia del array.<br />
<br />
<b><span style="font-size: large;">Conclusiones</span></b><br />
<br />
Después de lo visto tengo claro que para mantener la integridad y el <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Encapsulation_%28object-oriented_programming%29">encapsulamiento</a> de los atributos de una clase en PHP, tengo que pasarlo por parámetro y asignarlos por parámetro, ya que si todo son referencias (parámetro y asignación al atributo), como ya suponía, los valores pueden ser modificados desde fuera; además después, de lo observado, también tengo claro que de nada sirve pasar el parámetro o asignarlo al atributo por referencia, ya que no introduce optimización ninguna, es más, el rendimiento disminuye, ya que la ejecución es más costosa.<br />
Además de todo esto, me puedo despreocupar de que ciertas referencias queden apuntando espacios de memoria liberados, ya que el interprete garantiza la destrucción de los espacios de memoria, solo cuando no haya ninguna variable que pueda referenciar a éste.<br />
<br />
<br />
Hasta la próxima enfermos. </div>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-4529097646321081736.post-6510065088794537552011-03-12T15:16:00.001+01:002011-06-19T21:36:18.525+02:00[PHP] Arrays pasados por parámetro ¿copias o referencias? (1/2)<div style="font-family: "Courier New",Courier,monospace;"><span style="font-size: 85%; font-weight: bold;">conjuntoEntradas() { </span></div><div style="font-family: "Courier New",Courier,monospace;"><span style="font-size: 85%; font-weight: bold;"> [PHP] Arrays pasados por parámetro ¿copias o referencias? (1/2)</span><br />
<span style="font-size: 85%;"> <a href="http://enfermodelosbits.blogspot.com/2011/03/php-arrays-pasados-por-parametro-copias_19.html">[PHP] Arrays pasados por parámetro ¿copias o referencias? (2/2)</a></span><br />
<span style="font-size: 85%;">}</span></div><br />
<div style="text-align: justify;"><br />
<b><span style="font-size: large;">Introducción</span></b><br />
<br />
Realizando mis jugueteos con la programación en PHP, una de las cosas que necesitaba hacer era pasar arrays a objetos de clases creadas por mi mismo; en algunas de estas clases he considerado oportuno mantener los valores que se pasan por parámetro a través de un array en uno de los atributos de la clase debido a que me pueden ser necesarios para realizar operaciones futuras con o sobre esos valores.<br />
<br />
Hasta aquí nada nuevo, ya que es una práctica muy utilizada; pero a mí, que no soy, para nada, un “ninja” del PHP, me hizo pensar que realmente sucedía al pasar un array por parámetro de las distintas maneras que permite el lenguaje, valor o referencia y la manera de asignarlo a un atributo, valor o referencia. Por mis conocimientos, sabía los distintos comportamientos que podían suceder pero, al no estar seguro de cual sería el que se aplicaría en PHP, y si teniendo lo muy claro en otros lenguajes donde tu puedes controlar las posiciones de memoria con referencias y, con mayor control, con punteros, como es el caso de C y su hermano C++.<br />
<br />
Como después de buscar y revisar un poco la documentación y algunos enlaces de cuatro búsquedas por Internet no me continuaba sin quedar del todo claro, decidí hacer un <i>script</i> PHP muy simple que me permitiera observar el comportamiento del lenguaje antes esta común situación.<br />
La pequeña prueba<br />
El <i>script</i> que cree, hace lo siguiente: <br />
<ol><li>Declara una clase con:</li>
<ul><li>Tres atributos; uno para almacenar el parámetro que se pasará a a cada uno de los tres métodos declarados.</li>
<li> Tres métodos, cada uno recibe un array por parámetro, pero uno lo recibe por valor y los otros dos por referencia; la diferencia entre los dos métodos que reciben el array por referencia está en su interior, además de que cada uno asigna el array a un atributo distinto, uno lo asigna el valor y otro asigna la referencia.<br />
Cada método, además de asignar el array a un atributo, realiza una modificación (añade un nuevo valor) en el array pasado por parámetro.<br />
</li>
</ul><div class="srccodebox" style="margin: 10px;"><pre>class A {
private $arrValor;
private $arrValorToRef;
private $arrReferencia;
private $arrRefToRef;
public function setArrayByValue(array $setArr) {
$this->arrValor = $setArr;
$setArr['keyMarkClassAValue'] = 'valueMarkClassA';
$this->arrValor['keyClassA'] = 'valueClassA';
}
public function setArrayByValueToRef(array $setArr) {
$this->arrValorToRef = &$setArr;
$setArr['keyMarkClassAValueToRef'] = 'valueMarkClassA';
$this->arrValor['keyClassA'] = 'valueToRefClassA';
}
public function setArrayByRef(array &$setArr) {
$this->arrReferencia = $setArr;
$setArr['keyMarkClassARef'] = 'refMarkClassA';
$this->arrReferencia['keyClassA'] = 'refClassA';
}
public function setArrayByRefToRef(array &$setArr) {
$this->arrRefToRef = &$setArr;
$setArr['keyMarkClassARefToRef'] = 'refToRefMarkClassA';
$this->arrRefToRef['keyClassA'] = 'refToRefClassA';
}
}
</pre></div><li>Declara una array con un valor en su interior, el que se utilizará para pasarlo a los tres métodos de un objeto, de la clase declarada, creado.<br />
<div class="srccodebox" style="margin: 10px;"><pre>$arr = array('key0' => 'value0');
</pre></div></li>
<li> Se van realizando <i>dumpeos</i> del array utilizado como parámetro y del objeto a medida que se van ejecutando los métodos para observar comportamiento.<br />
<div class="srccodebox" style="margin: 10px;"><pre>print "Contenido del array \$arr antes de asignarlo a la clase: \n";
var_dump($arr);
print "\n";
$objA = new A();
$objA->setArrayByValue($arr);
print "Contenido del array \$arr despues de asignarlo a la clase por valor: \n";
var_dump($arr);
print "\n";
$objA->setArrayByRef($arr);
print "Contenido del array \$arr despues de asignarlo a la clase por referencia: \n";
var_dump($arr);
print "\n";
$objA->setArrayByValueToRef($arr);
$objA->setArrayByRefToRef($arr);
print "Contenido del object de A despues de asignarle el array (valor y referencias): \n";
var_dump($objA);
print "\n";
$arr['newKey'] = 'newValue';
print "Contenido del object de A despues de ejecutar \$arr['newKey'] => 'newValue': \n";
var_dump($objA);
print "\n";
unset($arr);
print "Contenido del object de A despues de ejecutar un unset() del array: \n";
var_dump($objA);
print "\n";
</pre></div></li>
</ol><br />
<span style="font-size: large;"><b>El encapsulamiento</b></span><br />
<br />
Con la salida que genera el <i>script</i> podemos llegar a ciertas conclusiones sobre lo que sucede con la asignación del array pasado por parámetro a los atributos del objeto, con las distintas maneras que se permiten, y ver si realmente el atributo del objeto mantiene una referencia a esa posición de memoria o copia el valor, desde el punto de vista de utilización habitual del lenguaje, es decir sin buscar saltarnos lo establecido, ya que al referirme que se puede estar copiando el valor del array a otra posición de memoria, me refiero a la percepción que se tiene como desarrollador, dejando de lado el funcionamiento interno del interprete, ya que este podría estar optimizando el rendimiento de la ejecución demorando la copia de los valores a una nueva posición de memoria hasta el momento antes de que alguno de los valores de la variable sufra una modificación, garantizando e esta manera la integridad de los valores de cada variable.<br />
<br />
El resultado obtenido es el siguiente:<br />
<ol type="a"><li> <b>Parámetro por valor y asignación por valor</b>. Variable pasada por parámetro y atributo utilizan su propio espacio de memoria.<br />
</li>
<li><b>Parámetro por valor y asignación por referencia</b>. Variable pasada por parámetro es copiada a un nuevo espacio de memoria ya que cuando se asigna por referencia al atributo (su dirección de memoria), los cambios en los datos de cada variable son independientes.<br />
</li>
<li><b>Parámetro por referencia y asignación por valor</b>. Variable pasada por parámetro, supuestamente no es copiada, ya que se está pasando por referencia, pero al asignarla al atributo es cuando se realiza una copia de los datos de esta variable a nuevo espacio de memoria que será donde apuntará el atributo al que se está asignando.<br />
</li>
<li><b>Parámetro pasado por referencia y asignación por referencia</b>. No hay copias de los datos a nuevos espacios de memoria por lo que, tanto la variable pasada por parámetro como el atributo apuntan al mismo espacio de memoria.<br />
</li>
</ol><br />
Con las cuatro pruebas anteriores se puede deducir que las referencias en PHP son tratadas como en otro lenguaje, como C/C++ (donde el control de la memoria depende totalmente del desarrollador), pero con algo menos de liberta, ya que el lenguaje controla el número de variables que apuntan al mismo espacio de memoria y bajo la existencia de una sola, se imposibilita su liberación impidiendo que una variable haga referencia a un espacio de memoria destruido (caso b), además de también imposibilitar la liberación solicitada explícitamente (<a href="http://php.net/manual/en/function.unset.php">unset</a>).<br />
<br />
Esto ya me permitía saber que sucedía, en PHP, con los arrays, cuando son utilizados como parámetro en una función/método y en las asignaciones a nuevas variables, pudiendo decidir como hacerlo, si por valor o por referencia, en función de lo que realmente quiero hacer con ellos.<br />
Este tipo de dudas siempre se me plantean con los lenguajes, donde el control de la memoria se hace automáticamente mediante un <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Garbage_collection_%28computer_science%29"><i>garbage collector</i></a>, ya que en algunos, como Java, que aunque no existe el concepto de referencia y valor, si que existen los <a href="http://www.javapractices.com/topic/TopicAction.do?Id=29"><i>immutable objects</i></a> en el mismo JDK, provocando un comportamiento distinto, en objetos de ciertas clases, delante de estos casos.<br />
<br />
Hasta la próxima enfermos.<br />
<br />
</div>Anonymousnoreply@blogger.com1tag:blogger.com,1999:blog-4529097646321081736.post-91452798157107441052011-02-19T23:02:00.000+01:002011-02-19T23:02:11.039+01:00Multilingüismo intrínseco<div style="text-align: justify;"><br />
<a href="http://2.bp.blogspot.com/-TqHRWNArnpE/TWA9pzeA3YI/AAAAAAAAAZw/lvSYHHyYu0g/s1600/lenguajes.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="138" src="http://2.bp.blogspot.com/-TqHRWNArnpE/TWA9pzeA3YI/AAAAAAAAAZw/lvSYHHyYu0g/s200/lenguajes.png" width="200" /></a>Desde que aprendí a programar, siempre me han interesado conocer distintos <b>lenguajes de programación</b>. <br />
Aunque el conocimiento de distintos lenguajes me interesa, también me interesan muchas otras cosas, es que soy un poco todo terreno, así que no dedico todo mi tiempo libre al aprendizaje de estos, más bien los aprendo cuando tengo una necesidad ya sea de interés propio o bajo encargo.<br />
<br />
Recuerdo cuando aprendí a programar, no hace tanto tiempo, fue durante mi primer año de universidad, ya que yo no soy de los que en mi casa hubo un ordenador desde los inicios, porque no había una cultura tecnológica, y aunque si que es cierto que tuve un ordenador unos años antes de empezar en la universidad, solo mantuve unos pequeños contactos con la programación, pero nada serio, así que para mí, mis inicios fueron durante el primer curso universitario.<br />
<br />
Yo soy de esos a los que le enseñaron a programar en <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Pascal_%28programming_language%29">PASCAL</a>; aunque cuando yo empecé a estudiar en la universidad el lenguaje ya estaba un poco “desfasado”, <a href="http://www.torokernel.org/">aunque ahora he descubierto que parece que no tanto</a>, y muchos nos preguntábamos porque cojones nos enseñaban a programar con este lenguaje, he de reconocer que después de terminar el trimestre y empezar el segundo trimestre con <a href="https://secure.wikimedia.org/wikipedia/en/wiki/C_%28programming_language%29">C</a>, agradecí que me hubiesen enseñados las bases de la programación (imperativa) con este, ya que la sintaxis es muy parecida a <a href="https://secure.wikimedia.org/wikipedia/es/wiki/Pseudoc%C3%B3digo">pseudo código</a>, y eso te permitía aislarte de la sintaxis del lenguaje y centrarte en lo que realmente había que aprender, que era la lógica de programar, es decir la elaboración del algoritmo que debía cumplir que a partir de unas <a href="https://secure.wikimedia.org/wikipedia/es/wiki/Precondicion">precondiones</a> se obtuvieran las <a href="https://secure.wikimedia.org/wikipedia/es/wiki/Postcondici%C3%B3n">postcondiciones</a>.<br />
<br />
Después de todo esto y de haber saltado de lenguaje en lenguaje (no han sido tantos como pueda parecer la expresión) te das cuenta que, si no tenemos en cuenta un cambio de <a href="https://secure.wikimedia.org/wikipedia/es/wiki/Paradigma_de_programaci%C3%B3n">paradigma</a>, todo es más de lo mismo:<br />
<ol><li>Aprender la sintaxis a medida que escribes las primeras linea de código, consultando código ya escrito para las instrucciones más utilizadas y la documentación para las instrucciones que se usan menos.</li>
<li>Aprender la <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Api">API</a> básica de las estructuras de datos y funciones compuestas ya implementadas que se ofrece con el propio lenguaje, para ver que podemos hacer en una sola llamada y no tener que estar consultando la documentación en todo momento. </li>
</ol><br />
Está claro que ese aprendizaje requiere un tiempo, y que dependiendo del lenguaje y de los lenguajes que ya conoces, por similitudes de sintaxis que se dan entre ciertos lenguajes, la curva de aprendizaje será más o menos pronunciada; no obstante es solo dedicar un poco de tiempo, sin mucha más complejidad, estás últimas vienen más de la mano del objetivo a acometer, es decir de la funcionalidad de lo que quieres desarrollar.<br />
<br />
No obstante, cuando ya conoces un lenguaje y saltas a la aventura de uno nuevo, a mí se me plantean ciertas incógnitas que o bien las resuelvo con la documentación o buscando un poco en Internet o si no lo encuentro o veo que me va a costar más encontrar la respuesta que hacer una pequeña prueba, paso a elaborar, yo mismo, dicha prueba.<br />
Este tipo de incógnitas suelen ser aspectos simples, como ya hace mucho tiempo se me planteo que pasaba con los parámetros pasados a un método en <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Java_%28programming_language%29">JAVA</a>, si se pasaban por referencia o en copia, ya que no es algo que tu puedas indicar como en otro lenguajes, como sería <a href="https://secure.wikimedia.org/wikipedia/en/wiki/C++">C++</a>; a mí estas cosas me inquieta no saberlas porque en este caso concreto si se pasa de una manera o de otra me determina si el estado de los objetos que se están pasando pueden cambiar o no, y si es por referencia, como es el caso de <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Java_%28programming_language%29">JAVA</a>, si ese código es de un tercero y no lo tienes accesible, te tienes que fiar, a priori, de lo que se diga en la documentación, eso si existe.<br />
<br />
Alguien se puede preguntar a que viene todo esto, pues el post es una introducción para unos cuantos posts que iré escribiendo sobre ciertas incógnitas del lenguaje de programación (<a href="http://www.php.net/">PHP</a>) que estoy utilizando para el desarrollo de un “proyecto” personal que hace tiempo que tenía en mente, y a raíz de haberme metido a desarrollarlo (aunque en con este lenguaje ya lo había utilizado en una versión anterior a la actual y no de manera muy amplia) me he topado con incógnitas en la ejecución de ciertas instrucciones, algunas resueltas con la documentación y otras a base de hacer alguna pequeñas pruebas, que son las que quiero publicar en siguientes posts.<br />
<br />
<br />
Hasta la próxima enfermos. </div>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-4529097646321081736.post-25831723293975934142011-01-29T00:51:00.002+01:002011-01-29T00:51:00.740+01:00Borrados suaves<div style="text-align: justify;"><br />
<a href="http://enfermodelosbits.blogspot.com/2011/01/sin-papelera-de-reciclaje-en-el-buzon.html">Después de haber dado con la característica de "borrados suaves" (<i><b>Soft Deletions</b></i>) de las BBDD de Lotus Notes</a>, me puse a mirar a lo largo de los días, entre los pocos minutos de "relax" que quedan entre las constantes intervenciones, a mirar y probar un poquito el funcionamiento de esta característica, ya que parece que se puede usar de manera intrínseca en las BBDD de <a href="http://www-01.ibm.com/software/lotus/products/notes/">Lotus Notes</a> de la versión 8.5.<br />
El objetivo del que partía en dedicarle esos poco minutos era el de valorar el coste (en horas de trabajo), de ponerla a funcionar, que nos requeriría dotar a las prehistóricas BBDD que pululan por la empresa.<br />
Mis intuiciones, parecieron estar por el buen camino, cuando descubrí esta <a href="http://www-01.ibm.com/support/docview.wss?uid=swg21091152"><i>Technote</i></a>. Una vez que la leí, todo parecía indicar de podríamos hacer que las prehistóricas BBDD pudiesen “borrar suavemente”, sin a penas la necesidad de tener que modificar su implementación.<br />
Visto esto, antes de empezar a modificar la “genética de los dinosaurios”, quise hacer un <i>test</i> sobre una simple nueva BBDD; así que a continuación dejo el simple <i>test</i> que realicé.<br />
<br />
<ol><li>Creé una nueva simple BBDD utilizando una de las plantillas que vienen con la instalación del cliente <a href="http://www-01.ibm.com/software/lotus/products/notes/">Lotus Notes</a> (Microsoft Office Library).<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/_fvb0zjWhrys/TUKsh2vvi3I/AAAAAAAAAZU/GXCT6UakzQ0/s1600/creacion+BBDD+plantilla+office.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://4.bp.blogspot.com/_fvb0zjWhrys/TUKsh2vvi3I/AAAAAAAAAZU/GXCT6UakzQ0/s320/creacion+BBDD+plantilla+office.png" width="290" /></a></div><div style="text-align: center;"><span style="font-size: x-small;"><span style="color: #666666;">Dialogo de creación de una nueva BBDD de </span><a href="http://www-01.ibm.com/software/lotus/products/notes/" style="color: #666666;">Lotus Notes</a></span></div><br />
No obstante antes de aceptar la creación, me puse a revisar las opciones avanzadas.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/_fvb0zjWhrys/TUKsjrPX2jI/AAAAAAAAAZk/UQsEbi8-eDA/s1600/opciones+avanzadas+BBDD+en+su+creacion+-+soft+deletions.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://1.bp.blogspot.com/_fvb0zjWhrys/TUKsjrPX2jI/AAAAAAAAAZk/UQsEbi8-eDA/s320/opciones+avanzadas+BBDD+en+su+creacion+-+soft+deletions.png" width="208" /></a></div><div style="text-align: center;"><span style="color: #666666; font-size: x-small;">Dialogo de creación de una nueva BBDD de <a href="http://www-01.ibm.com/software/lotus/products/notes/">Lotus Notes</a></span></div><br />
Como se puede observar en la imagen anterior, es posible activar, en su creación, el “borrado suave” y el tiempo en el que será posible recuperar los documentos eliminados, es decir que estarán en la “papelera”, antes de ser eliminados por completo.<br />
<br />
</li>
<li>Con la BBDD creada, metí algo de información para empezar a hacer las pruebas.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/_fvb0zjWhrys/TUKsjAV-1oI/AAAAAAAAAZg/Ujn1hrDF5tA/s1600/lista+de+vista+de+todos+los+documentos+existentes.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="120" src="http://1.bp.blogspot.com/_fvb0zjWhrys/TUKsjAV-1oI/AAAAAAAAAZg/Ujn1hrDF5tA/s400/lista+de+vista+de+todos+los+documentos+existentes.png" width="400" /></a></div><div style="text-align: center;"><span style="color: #666666; font-size: x-small;">La BBDD con la información de de <i>test</i> que he metido</span></div><br />
</li>
<li>Sin haber activado el "<i><b>Soft Deletions</b></i>", eliminé un documento (con los nombres tan explícitos que les puese a cada una de la entrada de datos ya podeis ver quien era el candidato).<br />
<br />
</li>
<li>Activé el "<i><b>Soft Deletions</b></i>", y repetí la operación del paso 3, esta vez con otro documento (como el anteior documento borrado, se puede intuir de cual se trata).<br />
<br />
</li>
<li>Lo siguente fué realizar la modificación en el diseño de la BBDD que indica la <a href="http://www-01.ibm.com/support/docview.wss?uid=swg21091152"><i> Technote</i></a>.<br />
<br />
Abrí la BBDD con el <i><a href="http://www.ibm.com/developerworks/lotus/products/componentdesigner/">designer</a></i> (cliente de <a href="http://www-01.ibm.com/software/lotus/products/notes/">Lotus Notes</a> para desarrollar nuevas aplicaciones Lotus) y cree la vista, del tipo indicado, que va a permitir visualizar los documentos eliminados “suavemente” y cuyo periodo de cuarentena no ha vencido, es decir que no haya caducado y por lo tanto no se ha eliminado definitivamente.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/_fvb0zjWhrys/TUKsimOevQI/AAAAAAAAAZY/cWK3VKsCUh4/s1600/dialogo+de+creacion+de+vista+nueva.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="306" src="http://3.bp.blogspot.com/_fvb0zjWhrys/TUKsimOevQI/AAAAAAAAAZY/cWK3VKsCUh4/s320/dialogo+de+creacion+de+vista+nueva.png" width="320" /></a></div><div style="text-align: center;"><span style="font-size: x-small;"><span style="color: #666666;">Dialogo de creación de una nueva vista</span></span></div><br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/_fvb0zjWhrys/TUKshKz7ctI/AAAAAAAAAZQ/X0ua7CiRugE/s1600/arbol+de+recursos+de+la+BBDD+en+disigner+mostrando+el+de+vistas.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://3.bp.blogspot.com/_fvb0zjWhrys/TUKshKz7ctI/AAAAAAAAAZQ/X0ua7CiRugE/s320/arbol+de+recursos+de+la+BBDD+en+disigner+mostrando+el+de+vistas.png" width="181" /></a></div><div style="text-align: center;"><span style="font-size: x-small;"><span style="color: #666666;">Árbol de recursos de la BBDD con la nueva vista creada (Basura)</span></span></div><br />
</li>
<li>Guardé los cambios en el diseño dela BBDD y cerré el <i><a href="http://www.ibm.com/developerworks/lotus/products/componentdesigner/">designer</a></i>.<br />
<br />
</li>
<li>Abrí de nuevo la BBDD en el cliente de <a href="http://www-01.ibm.com/software/lotus/products/notes/">Notes</a>, viendo que aparecía la vista creada anteriormente, que había denominado Basura.<br />
Pinché en la vista y en ella, pude visualizar el documento que había borrado, después de haber activado el “<i><b>Soft Deletions</b></i>”, por otra parte y esperando que así pasara, el documento que había eliminado antes activarlo no aparecía en lugar alguno.<br />
<br />
</li>
<li>Para rematar el <i>test</i> también probé de eliminar, ahora que el “<i><b>Soft Deletions</b></i>” estaba activado y la vista estaba creada, el documento que había creado para ser eliminado bajo esta situación y como era de esperar, el documento se había eliminado pero era visible a través de la vista “Basura”.<br />
<br />
</li>
<li>Por último también comprobé, como también era de esperar, que pasado el periodo de vencimiento del borrado, es decir el tiempo que se había indicado que permanecerían los documentos eliminados antes de su destrucción permanente, los documentos habían desaparecido de la vista “Basura”.<br />
<br />
</li>
</ol><br />
Hasta la próxima enfermos.</div>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-4529097646321081736.post-62381658706137938222011-01-22T22:20:00.000+01:002011-01-22T22:20:40.299+01:00La vista de Timofone<div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/_fvb0zjWhrys/TTtJ2I3MulI/AAAAAAAAAZM/Og8gV1OOUUU/s1600/logo+invertido.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_fvb0zjWhrys/TTtJ2I3MulI/AAAAAAAAAZM/Og8gV1OOUUU/s1600/logo+invertido.png" /></a></div>Hace un mes atrás llamó por teléfono a casa mis padres un individuo dándose a conocer como un empleado de la compañía <a href="http://www.vodafone.es/">Vodadone</a>; hasta aquí todo normal ya que el servicio de conexión a Internet esta contratada a esta compañía.<br />
<br />
El personaje mencionado preguntó por el Sr. Fraixedes, es decir en un principio por mí porque la línea esta contratada a mi nombre. Mi madre, que fue quien atendió esa llamada, le sorprendió que al preguntar por a quien se refería con el Sr. Fraixedes, es decir por el nombre para diferenciar entre mi padre o o yo, el tipo divagó, hasta que mi madre le soltó el nombre de mi padre, y entonces asintió; luego le soltó un rollo de que tenía que venir a cambiar el <i>router</i> porque habían cambiado la tecnología de conexión ahora que la compañía <b>Tele2</b> había sido absorbida por <a href="http://www.vodafone.es/">Vodadone</a>.<br />
<br />
Para aclarar el lió de compañías que habré montado diciendo que el servicio que hay contratado pertenece a <a href="http://www.vodafone.es/">Vodadone</a> pero luego he indicado que el personaje hizo un comentario de un cambio desde la compañía a <b>Tele2</b> (creo que el nombre real era Comunitel), os informo que hará un par o más de años el grupo <a href="http://www.vodafone.es/">Vodadone</a> adquirió la compañía <b>Tele2</b>, y como es habitual, pasó a ser el propietario de los servicios, cartera de clientes, etc. Es decir que yo inicialmente contraté el servicio a <b>Tele2</b> y después de unos años el servicio pasó a pertenecer a <a href="http://www.vodafone.es/">Vodadone</a>.<br />
Hecho la aclaración continuó con la historia del personaje mencionado.<br />
<br />
Mi madre, aunque el se refirió a mi padre, ignoro este matiz, y concreto la vista para una hora para la que pensaba que estaría en casa.<br />
<br />
Al llegar a casa ese día mi madre me explicó la historia, y como ya os imagináis, le indiqué que todo esto me parecía muy extraño:<br />
<ol><li>¿como puñetas el tío conocía el nombre de mi padre, ya que lo asintió?</li>
<li>¿me van a cambiar el <i>router</i> gratis?</li>
</ol>Comentándole que esto me olía a timo, y ella me comentó que también le pareció todo un poco raro.<br />
<br />
Dejando el juego de las intuiciones, y viendo que no tenía disponibilidad para verme a esa hora con tal individuo, me propuse llamar al servicio de atención al cliente para indicar que no iba a estar y que no pasaran, siendo un posible timador o no y basándome en la presunción de inocencia, doy por supuesto que no lo es, así que lo correcto es avisar de la anulación de la vista; la llamada no fue muy fructífera, ya que según indicó el operado no había contacto entre ellos y las visitas de los técnicos. <br />
Mala suerte, el tío tendrá que venir y volverse, porque aunque alguien pudiese estar en esa hora, nadie va a tocar el router sin estar yo presente, dando le la posibilidad de dejarlo y yo mismo ya me encargaré de cambiarlo. <br />
<br />
El momento llegó, y el tío se presentó, indicándole que se pasará a otra hora, que yo informé que si que podía atenderle, así que se marchó.<br />
<br />
En la siguiente hora acordada, se volvió a presentar, así que le atendí. Dejándole en la puerta en un primer momento y echándome un rollo de que iban a cambiar el router y que si le podía meter en casa para ver el router, le dejé pasar para verlo.<br />
Visto este me dijo que todo esto venía por las absorción de <b>Tele2</b> y para tal cambio había que firmar un nuevo contrato, “¿nos podemos poner en una mesa y te lo explico todo?”<br />
Nos sentamos en la mesa y me saca las 4 hojas de papel que tenía la formalización de dicho cambio, tres copias de un formulario y una hoja de letra pequeña, es decir las clausulas de contrato. Después de sacar esto me empieza a soltar el rollo de que me va dar el <i>router</i> con módem 3G integrado y con no se cuantos minutos de llamadas a móviles gratis y no sé que más (más información en <a href="http://www.vodafone.es/">www.vodafone.es</a>) y sin tocarte la permanencia (algo que ya no tengo de hace mucho tiempo).<br />
<br />
<ul><li>Yo – Yo no firmo nada sin leermelo</li>
<li>Sr. Timofone- No te preocupes que te lo explico rápido. También necesitaré una fotocopia del DNI y de la página inicial de libreta la cuenta bancaria</li>
<li>Yo – No tengo ni fotocopia del DNI, ni tengo libreta de la cuenta, utilizo la entidad X que solo opera on-line</li>
<li>Sr. Timofone – No te preocupes, me puedes enviar la copia del DNI y de los datos de la cuenta por e-mail y si no sabes, nos metemos ahora mismo y yo mismo te índico como sacar una copia de la información que necesito</li>
<li>Yo – Ya te lo envío yo si hace falta</li>
<li>Sr. Timofone – Haber … tu nombre es …. Todo lo otro ya lo lleno yo, tu firma aquí.</li>
<li>Yo – Ya te he dicho que no firmo nada sin leermelo, ya me he llevado algún que otro palo por imbécil, y como comprenderás toda esa hoja llena de letra pequeña no me la voy a leer ahora, si quiere me la dejas y si todo es correcto, te llamaré y pasas recogerla, ¿y lo de respetar la permanencia, donde aparece?</li>
<li>Sr. Timofone – No lo pone pero es así, (sacando una hoja con una lista de nombre y días y horas) y sobre lo de dejarte el contrato no puede ser, yo tengo una agenda muy apretada y como puedes ver he podido pasar a esta nueva hora porque justo tenía un hueco; tendías que firmarlo ahora porque sino te van a cortar la conexión y luego te vas a quedar sin Internet varios días.</li>
<li>Yo – No te preocupes, tu déjamelo, si me quedo sin conexión ya me aguantaré y denunciaré a quien toque, y si tu no puedes pasar, si estoy de acuerdo con el contrato, yo mismo me iré a un punto de servicio <a href="http://www.vodafone.es/">Vodadone</a> y allí mismo formalizaré la situación.</li>
<li>Sr. Timofone – No puedo dejartelo, solo puedes firmarlo ahora y que yo me lo lleve, si quieres puedes ir tu mismo a un punto de servicio <a href="http://www.vodafone.es/">Vodadone</a> y allí te lo darán, pero conmigo te ahorras todo ese tiempo.</li>
<li>Yo – No te preocupes tampoco por eso, prefiero leerlo.</li>
<li>Sr. Timofone - Bueno hazlo así, entonces yo no cobro la comisión pero no pasa nada. Bueno entonces me voy, adiós.</li>
<li>Yo – Adiós. </li>
</ul><br />
Dicho esto y viendo claramente que se trataba de un timo, porque como una empresa no te va a querer dejar la copia de un contrato que tienes que firmar, si es un documento que no contienen nada más que clausulas, no hay nada confidencia ni que comprometa a la compañía; claramente el tío no quiere dejar nada para no quedar comprometido con el timo, “te van a cortar la conexión y tienes que firmar el nuevo contrato para hacer el cambio del servicio con la nueva tarifa”, además de que seguramente no es <a href="http://www.vodafone.es/">Vodadone</a>, es uno de los múltiples distribuidores, que van con la etiqueta de esta, como hacen todas las otras operadores de comunicaciones, esto último no es que le vaya a penalizar, a mi me molesta, prefiero que me digan “soy Z y somos distribuidores autorizados de <a href="http://www.vodafone.es/">Vodadone</a>” antes que decir que son <a href="http://www.vodafone.es/">Vodadone</a>.<br />
<br />
Para asegurar el tiro y con el objeto de denunciar el timo puesto en práctica, contacté con el servicio de atención al cliente, sin mucho éxito; el operador que me atendió me comunicó que es una practica muy extendida y que el cliente no está obligado a cambiar, puede seguir manteniendo el plan de precios de <b>Tele2</b>, no obstante por tu voluntad puedes optar al cambio.<br />
<br />
Después de todo esto, me doy el lujo de especular, si esta práctica es potenciada por la propia compañía como una táctica para migrar los antiguos contratos a los nuevos sin obligar al cliente, ya que si no es así, si saben que se realizan este tipo de prácticas, ¿porqué no envían un comunicado informando de esto?, no será por ahorrar gastos en papel, ya que con cada factura me envían un folleto de una o varias hojas a todo color y papel satinado con publicidad de servicios, tarifas, ofertas, etc.<br />
<br />
<br />
Hasta la próxima enfermos.</div>Anonymousnoreply@blogger.com0