Cada instalación tiene sus peculiaridades, pero siempre es interesante la recopilación de datos sobre intentos de ataques: sobre todo porque muchos son automatizados y tratan de explorar contraseñas comunes, debilidades frecuentes y esas cosas.
En Analysis of WordPress Login Attempts hay justamente eso, un análisis de 241082 intentos de acceso a una instalación de WordPress y un resumen de las claves utlizadas, sus tamaños, …
También hay un análisis temporal donde puede verse que hay dos intentos bastante ‘ruidosos’ pero el resto del tiempo parece tratarse de una actividad mantenida, contrarrestada por las medidas de seguridad habilitadas por el propietario.
Lo cuento a veces, cuando hay que explicar que hay que ser cuidadosos con las medidas anti-fraude: estás en una conexión que no es la tuya, tienes prisa y el Google (o Facebook, o tu banco) de turno te hace pasar por algún paso extra de verificación. Más nervioso te pones y todo va peor. O cuando por pereza vas retrasando compras por no ir a buscar la tarjeta que no la tienes a mano y se te acumulan unas cuantas: las haces todas de vez y en tu banco saltan las alarmas correspondientes y et paran las operaciones.
The suspicious transactions: one small purchase from an online retailer we use often, and three $100-plus payments over the course of 30 minutes to what turned out to be the local cable company, electric company and a mobile phone provider.
Está claro que los sistemas anti-fraude tienen que mejorar, pero tenemos que ser conscientes como usuarios de su existencia y estar preparados para ser ‘frenados’ en cualquier momento.
Ya hablamos sobre como Enviar una imagen por correo en Python. Por eso me pareció interesante leer Adjunto MIMEtizado donde Sergio Brisa da un repaso a las consideraciones que hay que tener a la hora de abrir y analizar un mensaje de correo electrónico sospechoso.
Para ello nos da un repaso a cómo se envía un correo electrónico con adjuntos, la forma de verlo, decodificarlo…
Supongamos que tenemos un montón de ficheros de texto que contienen datos que queremos procesar de una determinada manera con nuestra hoja de cálculo.
El proceso de extracción de la información se puede hacer con más o menos facilidad utilizando un script sencillito (con sus grep, awk, …) y generamos algo que parece que tiene filas y columnas con datos.
Si los datos forman agrupaciones sobre las que querríamos hacer ciertos cálculos (por ejemplo, la media de un valor cada cierto número de filas) podríamos trabajar con el propio script, pero a veces necesitamos ‘masajear’ los datos para ver qué sucede.
Por eso estuve el otro día viendo cómo se podría hacer y lo comparto aquí. Primero, libreoffice permite insertar fórmulas en un CSV (comma separated values) siempre que la fórmula vaya entre comillas y al insertarla desde un fichero (importarla) no tengamos marcada la opción (‘Quoted field as text’).
Y luego insertamos la fórmula correspondiente en los lugares que nos parezca oportuno. Por ejemplo:
En estas fórmulas:
[ROW()](https://help.libreoffice.org/Calc/Spreadsheet_Functions#ROW) es el número de la fila actual (puede llevar una referencia). Se le pueden sumar y restar valores, ROW()-10 hace referencia a la fila menos 10. COLUMN() es análogo.
[ADDRESS()](https://help.libreoffice.org/Calc/Spreadsheet_Functions#ADDRESS) se refiere al nombre de la celda como texto (y por eso se utiliza el & para concatenar y las comillas (dobles, para que no se interpreten como las comillas que finalizan la fórmula) para introducir texto…
[INDIRECT()](https://help.libreoffice.org/Calc/Spreadsheet_Functions#INDIRECT) es la referencia especificada por una cadena de texto.
Finalmente, con SUM hacemos la suma de esos valores. En las dos líneas de arriba vemos dos ejemplos (el primero podríamos usarlo para sumar los diez valores de una columna, y el segundo para hacer la división entre el número de valores -no tienen por qué ser válidos todos-).
¿Se podría hacer de otra manera?
Claro, en lugar de los scripts (o con ellos, pero con algo más de trabajo) podríamos incluir las sumas y operaciones en el propio programita.
Otra alternativa sería utilizar sistemas orientados a la generación final del informe, como Documentos de Latex que incluyen código de R a los que tal vez algún día podamos dedicar algo de nuestro tiempo y paciencia.
Por algún motivo he estado leyendo unas cuantas cosas sobre generación de números aleatorios (la última vez en Aleatoriedad y seguridad) que no soy capaz de agrupar en menos entradas, así que vuelve a salir como tema recurrente.
En How do you know if an RNG is working? justamente hablan de ese tema(afortunadamente con un enfoque diferente): ¿podemos confiar en nuestro generador de números aleatorios? Siempre se habla de que hay que medir la entropía pero no es algo que sea fácil de realizar ni que todo el mundo esté dispuesto a hacer.
If you look at the literature on random number generators, you’ll find a lot of references to statistical randomness testing suites like Diehard or NIST’s SP 800-22. The gist of these systems is that they look a the output of an RNG and run tests to determine whether the output is, from a statistical perspective, “good enough” for government work (very literally, in the case of the NIST suite.)
Luego pasa a analizar las cosas que pueden ir mal (la propia inclusión de código para evaluar un generador podría introducir sus propios problemas, por ejemplo).
¿La conclusión?
Solving this problem, at least in software, so we can ensure that code is correct and does not contain hidden ‘easter eggs’, represents one of the more significant research challenges facing those of us who depend on secure cryptographic primitives. I do hope some enterprising graduate students will give these issues the attention they deserve.
Que sería otro aviso de: no tratéis de hacerlo solos y en casa. O algo así.