lunes, 29 de julio de 2013

Windows: urlmon.dll no encontrado

Este finde he tenido mucho lío. Al menos, desde el viernes al medio día hasta el sábado por la tarde/noche. Mi recomendación, si es que has llegado aquí porque tienes este problema, es que te lo leas entero. Eso sí: después actúa bajo tu responsabilidad. Lo que me a mi me ha funcionado, podría ser nefasto para tí.

Os pongo en antecedentes. Me llamaron para solucionar un problema con un equipo headless, léase, sin monitor. Por lo que lo primero que quise hacer fue intentar acceder a él por red. Muy bien. Para resumir: toda una tarde/noche entera sólo para conseguir ese acceso. Que si el ping a veces funcionaba, otras veces no. Otras veces, el escritorio remoto se empezaba a cargar y después se caía... Vamos. Un desastre. Incluso tuve que hacer alguna llamada para ver si a alguien se le ocurría alguna cosa para poder solucionar ese problema. Es lo típico: te obcecas en una cosa, que al final, hace falta que otra persona te ayude a serenarte y ponerte orden. Una desesperación.

Muy bien. Ya teníamos acceso y, en esto, mientras que se está cargando esa pantalla remota, que nos sale el siguiente mensaje de error:

El programa no puede iniciarse porque falta urlmon.dll en el equipo.  Intente reinstalar el programa para corregir el problema
El programa no puede iniciarse porque falta urlmon.dll en el equipo.
 Intente reinstalar el programa para corregir el problema
Y esto se vuelve otro quebradero de cabeza. Además, compruebas que efectivamente, no se encuentra la librería en el disco. ¡Se ha perdido! Pero, como ya es muy, muy tarde, te vas y ya mañana será otro día. Aún así, ya en casita, ¿qué es lo primero que haces? Lo primero, es buscar el Google. La verdad, es que hay algo por ahí que te suena que podías utilizar, pero no te acuerdas muy bien de lo que era. Pero bueno. ¿Qué respuestas encuentras? Encuentras varias.

"Bájate la dll de este sitio, y después la pegas. Ya está".,  Otros, además de eso, te dicen: "una vez la tienes, tendrás que registrarla con regsvr32 urlmon.dll desde C:\Windows\System32\". Ya, al otro día, pruebas otras ideas menos peligrosas. Ejecutar desde el cmd:

sfc /scannow

Aunque te dice que ha encontrado cosas que ha tenido que reparar, y que hay algunas que no ha sido posible, haces caso omiso al los logs que te ofrece en C:\Windows\Logs\CBS\CBS.log. Más adelante explicaré algo al respecto.

También pruebas a hacer el 

chkdsk /r /f

que no resuelve nada. 

Y surgen varias ideas. A ver si hay algún parche que falte por poner que modifique esta dll por lo que se resolvería el problema a poner una nueva. Pero, surgió otro problema más:

Error windows update código: 8024000E
Error windows update código: 8024000E
Y te pones a buscar. Lo que encuentras es que te ofrecen una serie de fixit para solucionar ese problema. No voy a negar que ahora mismo no tengo acceso a dichos ficheros. Que, además, te permitían bajártelos para poderlos ejecutar desde otro ordenador (que ese era mi caso). Otras soluciones que daban era instalar un programa (que me bajé, pero no utilicé) también de Microsoft, que se llama algo así como Windows Update Readiness Tool. Según la explicación de Microsoft, esta herramienta resuelve los posibles problemas que produzcan que una actualización no se instale. Pues bueno: El fixit que cogí, se quedó parado a mitad sin reaccionar, por lo que opté por matarlo. Además, ya éramos dos los que estábamos al lío: yo presencial, y el otro amigo por teléfono. La siguiente idea: Poner un punto de restauración anterior. Por no tentar a la suerte: de hace dos días para atrás. La verdad: tardó muy poco, apenas 5 o 10 minutos (¡ojo! que si lo intentas, a tí te podría tardar mucho más). Pero, sin resultado.

Tras un buen descanso y viendo que esto no tiraba, decidí mirar el log CBS.log que he comentado unos párrafos más arriba. Me dio por buscar el fichero urlmon.dll y me encontré con la sorpresa de que, en efecto, se había detectado que faltaba y que no era capaz de restaurarlo:

Cannot repair member file [...] urlmon.dll
Cannot repair member file [...] urlmon.dll
Además, se puede ver que pone un texto que llama mucho la atención:

This component was referenced by [...] "Package_2_for_KB2846071" 

(se me cortó el knowledge base en la foto. No hace falta decir que le subrayado son los valores importantes que no aparecen. Por lo tanto, dices: ¿Y si busco esta actualización, me la bajo, la ejecuto, y así se pone ese fichero? Una vez más, te encuentras que con que el ejecutarla no surte el efecto deseado. Aún así, te das cuenta que esa actualización es muy, muy reciente. Aunque no era esta la página donde vi la fecha, en la que acabo de referenciar se puede ver que su fecha de publicación es el 10 de julio de 2013. Por lo tanto, si tenemos esta actualización instalada, y, dado que cada vez que se hace un update del sistema se crea un punto nuevo, podremos hacer un downgrade / rollback / ir a un punto anterior y probar suerte. Ya no hay nada que perder. 

Por lo tanto, desde Inicio, podremos buscar Restaurar sistema, lanzarlo con privilegios de administrador, y seguir las instrucciones, teniendo en cuenta que tendremos que seleccionar el checkbox para que nos muestre el resto de puntos creados:

Restaurar sistema
Restaurar sistema
Por favor, ten en cuenta que esta pantalla no es la que tenía en su momento. Además, tendrás muy mala suerte si resulta que no se han creado más puntos o éstos se han ido eliminando. 

Una vez ya tienes la fecha correcta, que tiene que ser anterior al día que se actualizó (por no poner esa fecha misma, aunque no debería de haber ningún problema), podrás comprobar que ya no se queja y que todo vuelve a funcionar. 

Así es cómo pude arreglarlo. Hay algún paso que a lo mejor lo hice antes y otro después: Se que entre la primera  vez que hice la restauración y la última hice los intentos de los fixits, vi que el internet explorer no se abría, encontré que alguna librería más que me decían que tenía que registrar para hacer la solución "a mano" no la encontraba... Pero bueno. Más o menos estas son las cosas con las que me fui pegando para arreglar esto. 

Ahora que todo vuelve a funcionar, ¿Qué te queda? ¿No tienes el sistema desactualizado? Claro que sí: Has puesto un punto anterior, por lo que tendrás que ir a al windows update, y reinstalar las actualizaciones.

Por desgracia, si esto no hubiera sido posible arreglarlo así, la siguiente opción hubiera sido la última: reinstalar. Bueno. A lo mejor hubiera sonado la flauta si se hubiera cogido la librería de una instalación del mismo tipo de Windows (del pro al pro,  de personal al personal...), arquitectura: (x86, x64), incluso, si apuramos, compilación. Teniendo la suerte de tener otro equipo tuyo con las mismas características, podría (y digo podría), funcionar. Pero, los visos de que eso suceda...

miércoles, 24 de julio de 2013

Roomba!! A mapear!

Recientemente me he comprado una Roomba. Ya que me acabo de independizar (más o menos: ¿se considera independizarse estar en la otra punta de la ciudad donde están los padres?) y para hacerla más sencilla, pues un aspirador automático no viene mal. Después de comprarla por eBay y esperar impacientemente una semana, me llegó. ¿Qué es eso de que no llegue el trasto a la media hora de haberlo comprado??

El modelo que me he comprado a sido el 770. Para resumir un poco las características: anda sólo (¿si no, qué gracia tiene?), permite definirle distintos horarios, un mando a distancia con 3 o 4 botones: adelante, izquierda, derecha, clean (es el que se usa para despertarla, para configurar opciones…). Un complemento que tiene es el que llaman virtual wall. Es un aparatito que va aparte que colocándolo correctamente y con las pilas lo suficientemente cargadas simula una pared. De tal forma que cuando la aspiradora detecte la señal, lo tome como si fuese una pared.

Una cosa curiosa es que trae un conector mini-din. Es un conector serie. Con el hardware y software adecuado, la podrías controlar con un ordenador, o, si vamos más allá, con un móvil. ¿Un móvil? Si. Si se le pone el adaptador bluetooth adecuado, podrías hacer bastante cosas muy curiosas.

Ahora, vamos a la historia que quería contar. Aquí empiezo a divagar. Se sabe que conectándose con bluetooth, además de poder manipular el cacharro, puedes hacer tests de cada uno de sus sensores. En realidad, esta marca en concreto, al menos hasta donde yo sé, no guardan un mapa del lugar por donde están pasando. Pero: ¿Qué impide eso que alguien se conecte y la manipule para hacer un mapeo del lugar? ¿No sería tan sencillo como forzar a que se desplace por el lugar en línea recta e ir marcando los obstáculos que va encontrando? ¿Y si fuéramos más allá? Pongamos que sí que guarda el mapeo del lugar: ¿Qué impediría localizar la zona donde está almacenando esos datos y que el formato sea fácilmente legible? Ya tendríamos el camino abierto “sin sorpresas”. Eso sí, el virutal wall nos puede jugar una mala pasada.

Me diréis: Pero: ¿esos cacharros no llevan contraseña? En realidad sí. Según he podido leer default o 1234. Son unas contraseñas muy, muy difíciles.

Pero. Como he dicho, son una serie de divagaciones que se me han ocurrido mientras que buscaba cosas para enchufarle la maquinita. Me gustaría que me diérais vuestra opinión.

lunes, 22 de julio de 2013

Ingeniería social en coderanch

A veces, cuando estás codificando algún programa, te encuentras con que tienes problemas en cómo puedes hacer alguna de las tareas necesarias. Por lo tanto, no queda otra opción que hacer una búsqueda y ver si alguien ha tenido la feliz idea y lo ha explicado o si ha tenido que ir en busca de la respuesta y la tenemos en algún foro.

En estas me encontré hace poco. Por lo que me dispuse a buscar la respuesta y en un foro bastante conocido (o, al menos, que me he encontrado muchas veces), me encontré con algo parecido a esto:

Foro en coderanch
Foro en coderanch
Si resulta que las respuestas que dan no son válidas para lo que necesitas y además te encuentras un "mensaje" que dice que "está de acuerdo, pero que tiene un enlace que le ha ahorrado mucho tiempo", ¿qué haces? Vas y lo visitas. Y, para colmo de los colmos, te encuentras con que no es lo que buscabas. Te acuerdas de la familia del que lo ha puesto hasta que lo miras fijamente y descubres que no es un mensaje. Es un $*#!= anuncio que te lo han colado. 

La verdad, es algo que tendría que haberme dado cuenta. Pero  bueno. Al menos se quedó en eso. No fuera a ser que me hubieran colado algo más. 

viernes, 19 de julio de 2013

Instalando sistemas operativos sin CD o DVD

Hace poco un amigo me dijo que iba a vender su portátil. Realmente un notebook. Un equipo sin unidad óptica. Vamos. Que no tiene ni CD, ni DVD ni...

Por supuesto, su idea era "formatearlo" con el famoso sistema del recovery que suelen traer todos los equipos hoy en día. A lo que yo le advertí de que tuviera cuidado. Eso no implica que no se puedan recuperar los datos que hubiera en el disco. Al menos, hasta donde puedo afirmar, eso es así.

Mi propuesta, un tanto descabellada para lo que necesitaba, era más o menos lo que sigue.

Primero, realizar una imagen de la partición que tiene el sistema operativo. No vaya a ser que la caguemos.

Después, arrancar el ordenador con una distribución Linux y aplicar algún tipo de borrado seguro. Por poner un ejemplo: hacer 3 pasadas con el dd de todo 0s, todo 1s, eleatorio... Pero mínimo, tres pasadas. Evidentemente no se lo expliqué así. Pero, claro. Sin tener unidad óptica... complicado. Y, para complicado, yo. Sería un wipe en toda regla.

Tercero: montar un ordenador un servidor pe para que el portátil pudiera arrancar el sistema a través de la red. Así, se podría hacer la tarea descrita.

¿Hay otra forma más sencilla? Sí. La hay. Y no se me ocurrió hasta unas horas (o días) después: Un usb con la imagen. Seguro que es algo mucho más sencillo que no montar otro ordenador, mirar cómo se configura para que haga de servidor...

Todo esto me hizo recordar que hace casi una década, cuando empecé en todo esto de la informática, había otro problema: no todas las BIOS tenían la posibilidad de arrancar las unidades de CD. Por eso, algunos discos traían una herramienta para que cargase en un diskette el programa que, una vez éste era leído al iniciar el sistema, lanzase el CD. Uno de los que vimos era el que traía SCO: la compatibilidad con el torito.

Voy a dejar caer una pregunta más: ¿qué otros métodos utilizaríais para llevar a cabo esta tarea? Además de desmontar el disco y meterlo en otro sistema. Esa tampoco me vale, ¿eh?

miércoles, 17 de julio de 2013

Utilizando gran lista de passwords

Cuando hace unos días os conté que me descargué el gran listado de contraseñas que reseñó Hackplayers, os decía que me el hecho de ejecutar

type nombreFixh.lst


dejaba terminaba a los pocos segundos de haberlo ejecutado, a pesar de tener casi 15GB de datos en texto puro... me estaba imaginando que podría ser algún tema relacionado con el sistema. Y, en efecto, ha sido ponerme a hacer un

cat nombreFixh.lst

y después no se cuantos mínutos, esto sigue tirando.

Además, si desde Windows quiero utilizar este listado con john the ripper,  éste no me deja. Pero, si lanzo desde backtrack

john --format=raw-md5 --wordlist=/rutaDeMiListado/nombreFich.txt /rutaDeHashes/hashes.ext

va como un tiro. Verás los resultados moverse a bastante velocidad. Eso sí, tardará un rato.

Es más. Si quiero, puedo intentar hacer lo siguiente. Que ya de paso, se me ha ocurrido: buscar alguna de mis contraseñas. ¿Cómo se puede hacer? Para el que ya lo sepa no será ningún misterio, para el que no lo sepa:

fgrep tuContraseña nombreFich.lst

donde tuContraseña será tu contraseña entera o, puede ser un trozo de la misma. Después, te podrás llevar una sopresa, buena o mala, según el resultado obtenido y el esperado. Eso sí, tardará bastante.

De todas formas, está siendo un poco decepcionante. Resulta no se han encontrado todas las contraseñas que se debían de haber encontrado y, al pasar algunas opciones distintas, muy, muy básicas, está encontrando bastantes más.

john --format=raw-md5 --single /rutaDeHashes/hashes.ext

 ó

john --format=raw-md5 --incremental=Alnum /rutaDeHashes/hashes.ext

La verdad, me ha decepcionado. Aún así, perece ser que hay otro fichero de estos, que cada x tiempo están actualizando, que también tiene este tipo de información. Se llama uniqpass. Aunque cueste 12€, posiblemente sí que merezca la pena pagarlos. Habría que pensarlo. Además, el pagar implica que tienes derecho a que te envíen un nuevo enlace de descarga por cada nueva actualización.

Yo, por mi parte, además de pensarme lo de invertir (¿o regalar?) esos 12€, me he quedado un poco chof con los resultados que he obtenido. Bueno. ¿Qué le vamos a hacer?

lunes, 15 de julio de 2013

Mis accesos directos, .lnk, no funcionan

Recientemente me han pasado un portátil para que lo revisase. Vamos, lo típico:
  • Mirar virus
  • Mirar toda la porquería instalada y quitar la máxima posible.
  • Ver si hay algún proceso sospechoso con el process explorer, de sysinternals.
Lo primero de todo, me encontré con que el monitor no funcionaba. Esa fue mi primera sorpresa. La pantalla en verde. Al menos, durante un buen rato. Después, se veía algo mejor que con el plus codificado ¿os acordáis cómo era eso? En este caso, algo se podía hacer. Aún así, decidí utilizar la mayoría del tiempo un monitor VGA.

 Después de esa desagradable sorpresa, empecé a mirar qué  podía hacer. Y, la verdad,no tenía ni idea de por dónde empezar.

Mi primera visión es que  habían instalado un montón de programas, algunos de esos para acelerar el funcionamiento del sistema. Otros, como algún antivirus nuevo, a punto de caducar. Y, aún así, sin saber por dónde tirar.

Una de las cosas que hice fue coger un DVD con cuatro herramientas, y lancé el process explorer. En ese momento, ves que hay un montón de cosas instaladas. Gestores de descargas del torrent, algunos programas que, aún habiéndose instalado de forma consciente te llevas las manos a la cabeza.

Además, ves que los accesos directos tienen todos la misma imágen. Y, para colmo de los colmos, se abre una cosa que parece que se llamaba... ¿power viewer? No se. Un nombre muy similar.

Por lo tanto, después de dar muchas vueltas a ver por dónde pillarlo, mi decisión fue la siguiente.

Primero: poner los programas que yo conocía para hacer limpieza del registro, antivirus nuevo, etc. Por supuesto, para instalar el antivirus, desinstalar el anterior, a punto de caducar. Para hacer la limpieza: CCleaner.

Segundo: hacer desinstalaciones varias. Como me permitieron quitar lo que estimase oportuno, fue desinstalando los otros programas que ya puesieron para hacer las tareas del ccleaner, pero que después del análisis pedían pasar por caja. Las desinstalaciones las fue alternando como pude desde varios sitios:
  1. El propio panel de control de Windows
  2. El ccleaner también tenía alguna herramienta para, o, al menos, para inhabilitar complementos de los navegadores.
  3. Una herramienta para desinstalación "en profundidad" (quita más porquería residual después de la desinslación) que se llama IOBitUninstaller.

Tercero: Buscar una solución para los accesos directos. Que todos los accesos directos apuntasen a una herramienta que parecía de imágenes, con Apple de por medio... Muy raro. Pero también si no se tiene cuidado con una instalación, y en un momento determinado se seleccionan todos los checks que te ofrecen, pueden pasar cosas como estas. Mi búsqueda en Google me dio dos resultados bastantes útiles:
  1. El primero, uno directo de Microsoft. Que no acababa de convencerme del todo. Tenía un noseque que no acababa de cuadrar con los datos que tenía en otro equipo de referencia.
  2. El segundo, fue el que hizo que todo funcionase de nuevo. Yo voy a contar más o menos lo que he hecho siguiendo estas instrucciones. Pero, como todo disclaimer se precie, mucho ojo que puedes quedarte sin sistema si lo haces mal. Yo no me responsabilizo de lo que pueda pasar.
 Lo primero de todo: buscar regedit, y lanzarlo con permisos de administrador.

Después, tienes que ir a la rama:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.lnk

ó

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.exe

Si bien yo no toqué la rama .exe.

Debajo de  .lnk, tiene que haber otras dos subclaves (o ramas) más:
  • OpenWithList
  • OpenWithProdigs 
Si hubiese algo más, tendrás que eliminarlo.

Eso no es todo: En cada una de ellas tendrá que haber, o no, unas claves. Por ejemplo, tanto en .lnk como en OpenWithList sólo deberá de haber una clave de tipo REG_RS, con valor no establecido y nombre predeterminado. Además de tener esta misma clave, OpenWithProdigs, tendrá otra más con nombre lnkfile, tipo de registro REG_NONE, y la columna dato con valor binario de longitud cero. La siguiente captura debería de ayudar bastante a entender a qué me refiero:

Regedit para los accesos directos / .lnk
Regedit para los accesos directos / .lnk
Cuando reinicies, tendrás todos los accesos directos funcionando otra vez. Sólo queda hacer una limpieza básica de todos los bichos que encuentre el nuevo antivirus y... Poco más se podrá hacer. Se ha dejado el sistema lo mejor posible. Si hubiese tenido forma de iniciar el equipo con un CD, algo muy complicado con la pantalla en ese estado, hubiese lanzado un antivirus desde el liveCD. Por supuesto, siempre se es consciente de que cuando dice "no he encontrado nada" no significa que no esté ahí.

Esto es un resumen de lo que fui haciendo. En algunos casos, yendo de un sitio a otro. De todas formas, me gustaría saber qué habríais hecho si os hubieseis encontrado en esta situación de que la pantalla no permitía hacer el trabajo lo mejor posible.

miércoles, 10 de julio de 2013

Contraseñas en tus aplicaciones web

Recientemente en Hackplayers publicaron un post en el que nos mostraban cómo un grupo llamado Crackstation había recopilado una lista de casi, casi 15GB y medio de contraseñas distitnas que se han ido filtrando a lo largo del tiempo. Ese fichero, que se puede descargar en un .zip de poco más de 4GB, está a disposición del público que lo desee en algún enlace a un .torrent, que se podrá encontrar en su página.

Yo, mi parte, me lo descargué, (ya contaré cómo, aunque no haya mucho secreto en ello), y, por desgracia, el ejecutar

type nombreFixh.lst

desde una consola cmd no acaba de dar buenos resultados. Como he dicho, ahí hay otra historia.

Ahora. Si se hace una pequeña navegación por el sitio, encontramos cosas bastantes curiosas. Entre otras, además de un listado de sitios que se sabe que guardan las contraseñas en texto claro. Mucho, mucho miedo tiene que dar ponerlas ahí. Otro listado, de los que sospecha que no es que pongan mucho esfuerzo en cómo guardan las contraseñas. Es un pequeño hall of shame.

Pero, eso no es todo. También da consejos sobre cómo almacenar contraseñas (y su aliño o salt) de una manera segura. He de decir que algunas las sabía, otras más o menos me sonaban y otras, no tenía ni idea.

Para recordar un poco qué es eso de saltear (aliñar) una contraseña se trata de pasarle un parámetro que permite que el hash utilizado devuelva un resultado distinto para la misma palabra utilizada de contraseña, dependiendo de ese aliño.

Ahora bien. Cuando se tratan de servicios en los que tenemos que guardar la contraseña, hay que tener mucho cuidado de cómo se hace. Si no se hace bien, tal y como sucedió con LinkedIn, la cosa se puede poner muy fea. Eso sí, mejor como estaban que no que las hubieran guardado en claro.

¿Y cómo guardamos o tratamos las contraseñas? Muy bien. Lo primero de todo, utilizar una función hash que sepamos que en ese instante no es vulnerable. Por ejemplo, se sabe que MD5 ya no es de fiar. Por lo que habría que descartarlo. Y, si no me acuerdo mal, SHA1 también tiene algo por ahí... Por supuesto, no crear un algoritmo propio.

Después, pensar en aplicar alguna forma de salteo.

Lo primero de todo: No reutilizar el aliño. Ya sea hardcodeado, o uno obtenido aleatoriamente (por ejemplo, en utilizando un rango determinado). Si dos usuarios ponen la misma contraseña, y el salt es el mismo, tendrán el mismo hash de contraseña. Un ataque a dicho listado, una vez obtenido, devolvería la misma contraseña. Tampoco serviría aplicar uno corto. Lo mejor: que el salt tenga la misma longitud que el hash.

Otro ejemplo que ponen como erroneo. En este caso... Yo hubiera dudado qué decir, la verdad. Incluso ellos reconocen que hay cierta controversia. Se trata del hasheo múltiple. Es decir, hashear el resultado de un hash. Por una parte, afirman que se tiende a pensar que complica un poco el crackeo de las contraseñas en lo que tiempo de cómputo se refiere. Y eso es algo que yo hubiera afirmado.  Sobretodo hacen incapie en que el factor diferenciador en lo que a tiempo se refiere es ínfimo. Además, y ahí está el tema que yo también me temía (y por lo que en ciertas situaciones no me hubiera gustado hacer ciertas cosas), es que si alguien ha conseguido acceso a la base de datos (o donde quiera que se encuentren las contraseñas almacenadas), es altamente probable que tenga acceso al código fuente que trata esas contraseñas. Sólo es cuestión de prepararse un script que las calcule utilizando el algoritmo necesario. Todo independientemente de que se tenga

md5(md5(pass)+md5(salt))

ó

md5(md5(md5(sha1(pass))+md5(salt1)))

Y no digamos si ya se tira de GPU.

La idea para crear un buen salteado es utilizar funciones Cryptographically Secure Pseudo-Random Number Generator (CSPRNG). Estas funciones, que dependerán del lenguaje de programación utilizado, creará una secuencia aleatoria que no será (en teoría) predecible. Después, sólo es cuestión de almacenar el hash y el salt en la base de datos para después, poder validar la posible contraseña introducida.

¿Qué más se puede hacer? Por lo que he entendido, se puede utilizar una técnica llamada key stretching. De lo que se trata es que la función realice los cálculos de una forma lenta. Al menos, es lo que he entendido: Lo suficientemente lenta para que un ataque de cracking sea inviable, pero lo suficientemente rápida como para que la validación sí que funcione.

lunes, 8 de julio de 2013

Ping: Error general - Desinstalando Norton

Recientemente me pasaron un portátil para hacerle una instalación del chrome. Algo que es fácil de hacer, pero, cuando lo intentas explicar a una persona, no lo es tanto.

Por lo tanto, me llevaron el aparato y se lo instalé. Pero, en esto, que ves que además, el Norton dice que está desactualizado y que hay que hay que renovar la licencia. Al parecer, llevaba mucho tiempo sin hacerse. Por lo que decidí tirar por lo sencillo: instalar el Avira. Lo hice, y, por no desinstalar el otro (Norton), decidí bajarme el autoruns (de sysinternals), y desactivar todo aquello que tuviera que ver con Symantec. Esta versión del Avira, la gratuita, no tenía el firewall, por lo que inicié el servicio de firewall de Windows. Para resumir: una configuración que debía de inoportunar mucho a la persona que me lo pasó.

Y, aquí que a los pocos días me llama: no se conecta a Internet. Conseguía conectarse a la wifi, pero Internet que no iba. Una instalación de un navegador no podía provocar eso. Y le estuve dando instrucciones, que supo llevarlas a cabo a la perfección. Y no eran cosas sencillas. Quitar una configuración del firewall de Windows con seguridad avanzada y varios comandos del símbolo de sistema (cmd).

Una de mis primeras instrucciones fue hacer:

ping www.google.com

en el que le devolvía

Error general.

para cada uno de los cuatro paquetes enviados. El mismo resultado se obtenía al hacer

ping {IP_DNSs}

Otro comando os cuatro paquetes enviados. Otro comando que se intentó fue

ipconfig

Pero los datos que me dio no los supe interpretar o no le entendí bien. Lo del Error general me sonaba mucho. Por lo que también le dije que ejecutara

netsh int ip reset

También se puede cambiar ip por ipv4. Ahora mismo no sabría decir la diferencia. La cosa es que funciona.  El resultado, después de reiniciar era el mismo. A todo esto, os podéis imaginar, cómo le indicaba las instrucciones:

- A ver: 'n' de Navarra, 'e' de España, 't' de Tarragona...

Para cada uno de los comandos necesarios, así. Y nada... No funcionaba. La decisión fue quedar para que tuviera el equipo delante poder trabajar "sobre el terreno".

El día que lo tuve delante, estuve probando las mismas cosas... Y nada. Que no reaccionaba. Incluso, llegué a desinstalar la tarjeta de red y todo para que volviera a detectarla. Así que, buscando, buscando, vi que en algún sitio decían que a veces el Norton podía provocar ese comportamiento. Y aquí empezaron a saltar las alarmas. Una decisión que se tomó fue que, ya que llevaba mucho, mucho tiempo el Norton en el estado desactualizado, y que no se estaba usando, que no pasaría nada en quitarlo. Y eso empecé a hacer: Fui a programas desde el panel de control, y lo seleccioné para quitarlo de en medio. Empezó la lenta tarea. Casi, casi 45 minutos (donde podían ser 30 o 60), con la barrita moviéndose poco a poco... Y en esto, que la barrita llega al final del todo, no se ve un ápice de color blanco de que aún falten cosas, el ratón con el circulito de estar esperando (¿se habrá quedado cuajado el programa?), la CPU en el task manager (administrador de tareas), estaba por los suelos... Ampliar su prioridad (habiendo elevado privilegios) tampoco ayudaba... Decisión: Reiniciar.

En este punto, se puede decir que fue otro error. Porque, al volver al sistema, y ver que no se había eliminado, casi, casi me da un algo. Además, no permitía reanudar la desintalación dándo un error referido al Norton Internet Security y un mensaje indicando que no puede encontrar .\Support\SPBBC\SPBBC32.msi. Además, si le decíamos aceptar, nos abría un explorador para buscarlo. Algo que en un portátil plataformado en formato OEM no es sencillo.

Esto era un desastre. No funcionaba la red, que era lo que tenía que arreglar en ese instante, y, además, había dejado el Norton bien frito. Pero, haciendo una búsqueda desde otro ordenador, pude encontrar alguna cosa curiosa.

La primera, que ya había alguien que, a su vez, tenía el mismo mensaje de error.

La segunda: que le indicaban una herramienta que le podía servir para hacer la desinatalación. La herramienta se llama Norton Removal Tool. Total: que desde ese equipo hice una descarga al móvil conectado por usb y, una vez lo tuve, pasé el móvil al ordenador que estaba arreglando. Fue lanzar la herramienta, y, en prácticamente 5 minutos, a lo sumo, se había quitado toda la porquería. Ya no había señal alguna en la ventana de programas del panel de control. Fue increíble: algo que por un lado tarda mucho, mucho tiempo, por otro apenas tarda unos pocos minutos.

Además, eso no fue todo. Una vez que ya no estaba el programa de por medio, los resultados de lanzar ping fueron satisfactorios. Incluso, haciendo la prueba de fuego visitando páginas que no se hubieran visitado (por eso de evitar la caché), también funcionaron a la perfección.

Una pregunta a tener en cuenta sería: ¿La herramienta funcionó así de rápido porque ya había cosas que se habían eliminado, o es que hace las cosas utilizando otro camino que hace que vaya más rápido? Si la respuesta es la segunda. ¿Por qué no lo hace así de buenas a primeras no dando tantos quebraderos de cabeza?

miércoles, 3 de julio de 2013

Notepad++: Expresión regular I

Recientemente me he descargado el Notepad++. Tenía un fichero de texto, con unas contraseñas hasheadas y con sus correspondientes nombres de usuario. Al encontrarme en Windows, y no tener mucha idea de perl, python, etc... que me permitiera obtener un resultado distinto a lo que tenía almacenado, tomé la decisión de instalarlo. ¿La razón? Es un bloq de notas ampliado. Entre otras cosas, permite realizar búsquedas con expresiones regulares.

¿Qué tenía almacenado? Más o menos, sería algo parecido a esto:

usr001:aabbccddeeff112233445566778899
usr002:a1b1c1d1
usr003:a2b2c2d2
usr004:a3b3c3d3
...
usr333:a1b1c1d1e1ff112233445566778899
...

Bueno, y así sucesivamente.

Mi idea era ver qué podía hacer para dividir en columnas el contenido, teniendo en cuenta que el separador sería el carácter ':' que estuviera más cerca del hash. Pero, una búsqueda rápida no da buenos resultados, ya que casi todo lo que se encuentra sobre selección de columnas con el notepad++ es que la selección se tiene que hacer pulsando la tecla alt. Pero esta opción no tiene en cuenta la separación por carácter, sino por la posición en la que se en encuentra el cursor.

Por lo tanto, hubo que buscar otra solución. Entre otras, saber que por cada parte en la que se divida una búsqueda con expresiones regulares, tendrá un nombre de variable. Si en Windows cada parámetro que se usaba en un batch era %1, %2... En Linux era $1, $2 para los scripts... Aquí se utiliza \1, \2...

Por lo tanto, sólo me quedaba generar mi consulta. He de reconocer, que poco a poco la he ido afinando, porque, la primera búsqueda que monté era algo parecido a esto (de memoria):

\w:[a-zA-Z0-9]

Pero, no me servía, porque sólo cogía la primera letra antes del carácter ':', este mismo, y la siguiente.

Diremos: No pasa nada. A cada uno de los dos grupos, le pongo lo que nos han enseñado siempre:

\w{1,}:[a-zA-Z0-9]{1,}

Pero nada. No hay tutía. Y eso que hice varias combinaciones: poniendo el símbolo '^' y el '$' al final (aunque lo acabaría dejando), poniendo paréntesis... Pero nada. Buscando un poco, encontré que se podía hacer una pequeña solución: utilizar el símbolo '*' para forzar una continuidad. Y sí. Esto funcionó. Para mi no es la solución correcta, pero es válida. Supongo que me entendéis. Para resumir un poco en qué punto estamos, tendríamos algo así:

^([\w]*):([a-fA-F0-9]*)$

Con el inconveniente de que no todas las filas acaban cuadrando con esta expresión. Si os fijáis, estoy solicitando, con '\w', que contenga valores alfanuméricos. Aún así, hay alguno que otro de los que tengo que no entra en esa categoría. Por lo que toca buscar qué líneas no se se han sustituido, utilizando los dos puntos para la búsqueda, e ir afinando la búsqueda. Por ejemplo, añadir en la búsqueda '\W', que excluye los caracteres alfanuméricos e incluye los demás (explicado de una forma muy simple).

Con esta última expresión regular, podremos hacer los cambios que estimemos oportunos para esta necesidad específica. ¿En qué va a consistir la expresión que vamos a poner para el replace? Vamos a hacer un swap de las dos "secciones" que hemos creado, y, además, haremos que sea otro separador el que tengan entre ambas. Pongamos, por ejemplo, el carácter de tabulación. Este se representa con '\t'. Por lo tanto, el replace sería:

\2\t\1

Si os preguntáis para qué puede servir meter una tabulaicón entre medias, recordemos cómo podemos añadir un gran listado de hashes al cain sin morirse de viejo editando sus ficheros de texto.

Si os estáis preguntando por qué  no utilizar una hoja de cálculo, la razón es que éstas tienen un tamaño limitado de filas.Si tu fichero se pasa de esas filas, las estarás perdiendo.

Antes de que se me olvide, algunos enlaces de donde he ido viendo qué hacer: