ZTE F680 telnet jail

Cuando accedemos a un ZTE F680 v4 al servicio telnet root/root` lo normal es que tengamos una jaula en la shell que no permite hacer mucho, como vemos en este ejemplo

$ telnet 192.168.1.1
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
F680
Login: root
Password: 

BusyBox v1.01 (2017.09.15-03:17+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

/ # ps
/bin/sh: Access Denied.

/ # help
Welcome,Built-in commands:
cat /proc/cpuusage  --show CPU usage
cat /proc/meminfo  --show memory usage
cat /proc/net/arp  --show ARP table
cat /proc/sys/net/netfilter/nf_conntrack_max --show total NAT table size
cat /proc/net/nf_nat_count  --Show current NAT table size
cat /proc/net/nf_conntrack_nat  --show NAT table entries
iptables -t filter -L -vn  --show iptables filter
iptables -t mangle -L -vn  --show iptables mangle
iptables -t nat -L -vn  --show iptables nat
ifconfig  --network interfaces configuring
sendcmd 1 wlan_mgr channel 1  --set wlan 2.4G channel
sendcmd 1 wlan_mgr channel 2  --set wlan 5G channel
/ # sh
/bin/sh: Access Denied.

Esta jaula de telnet limita el acceso y la ejecucion a unos poco comandos que sirven unicamente para el diagnostico del equipo.

Aun asi hay varias formas de evitar esta limitacion, espero poder poder compartiras pronto.

ZTE F680 V4 Virgin

Uno de mis proyectos personales, que me da muchas alegrías y dolores de cabeza a partes iguales, es tratar de tener dispositivos de comunicaciones que pueda gestionar libremente. ¿ Por qué ? Porque me preocupa la seguridad. Los dispositivos de red, normalmente son bastante inseguros con fallos típicos de otros modelos, marcas o mantienen fallos a lo largo de la corta vida de firmwares publicados. Bien es cierto que los últimos años parece que los fallos son menos exagerados, y que parece que se publican algún que otro parche más, pero creo que la cantidad de bugs corregidos y fallos de seguridad que se descubren cada día, lo hace insuficiente.

Por otro lado, gestionar mi propio dispositivo me permite asignar mi propia configuración de dns, nivel de seguridad, configuración de puertos, actualzaciones de seguridad, eliminar usuarios no deseados que pueden acceder a mi dispositivo, elegir qué IP’s pueden acceder a la gestión de mi dispositivo, quitar servicios, etc…

Es cierto que un operador necesita tener ciertas herramientas para poder dar soporte técnico a los clientes, necesita provisionar los positivos, diagnosticarlos etc… pero esto debería ser flexible con los clientes y sobretodo debería velar por la seguridad de sus abonados. Me refiero a mantener hardware actualizado y seguro. Todos tenemos un montón de cacharros obsoletos en cajas en el fondo del armario que nunca se usarán. Es una pena, el gasto energético y de recursos naturales que se necesitan para producir hardware tirados a la basura por que los grandes operadores o fabricantes no salen del ciclo de la venta y compra constante. Tendríamos que diseñar hardware para durar y optimizar durante años, exprimir lo que hay. Actualmente no hay restricciones y ese camino fácil no nos trae ninguna ventaja.

Estos motivos son los que unidos a puro placer del conocimiento tecnológico me llevan a cacharrear con dispositivos, entenderlos y aprovechar esa ventaja para mi beneficio personal: aumentar mi sensación de seguridad, que no es mucha 🙁

Ha llegado a mis manos un dispositivo ZTE F680 V4 de la compañía Virgin, y estoy trasteando con él. Estos son las principales diferencias que he encontrado:

  • Sa la salida de texto por puerto serie, está desactivada, hay que activarla en el CFE
  • CFE bastante recortado con pocos comandos disponibles, pero tenemos dn (Dump NAND)
  • Password credenciales típicas no funcionan root/Zte521
  • Password de admin de virgin tkE*2312
  • Aproximación de acceso vía TR-069 no funciona

búsqueda incremental en el historial de bash

Una utilidad muy poderosa y que pasó desapercibida durante muchos años para mí, ha sido la búsqueda incremental que aparece presionando <control+r> en la linea de commandos

(reverse-i-search)`':

Esta cosa rara que alerta y desconcierta cuando aparce por sorpresa es ahora una de mis grandes aliados en mi día a día.

Esta utilidad muestra los comandos previamente escritos a medida que introduces letras y matchea con comandos almaceandos. En ese momento le das al enter y vuelves a ejecutar ese comando, de una forma más rápida.

Si el comando coincide con lo que busas pero NO es el que quieres, puedes iterar volviendo a presionar <control+r> lo que hace volver a buscar en la lista, o <control+s> para ir en sentido inverso de la lista, por si fuiste muy rápido y te pasaste el resultado.

Este inteface tiene mucha más magia, que puedes encontrar en el manual, no es muy claro pero es un comienzo para probar. https://www.gnu.org/software/bash/manual/html_node/Commands-For-History.html

Recordad que tu historial de comandos está en ~/.bash_history si usas bash, en ~/.history o en el fichero indicado en la variable echo $HISTFILE

conserguir clave pública usando la clave privada

Chuleta rápida de cómo obtener la clave pública, la que repartimos tranquilamente por ahí si sólo tenemos la privada. Puede pasar que la hayas perdido y no la tengas a mano, aquí tienes una forma rápida de recuperarla usando tu propia clave privada ( la que nunca se comparte )

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

python-mode fails when updating submodule

Habitualmente uso vim +PluginUpdate para mantener mis plugins actualizados, y habitualmente me encuentro que python-mode falla con este error

[2020-01-14 18:21:34] Plugin klen/python-mode
[2020-01-14 18:21:34] $ cd '/home/jorge/.vim/bundle/python-mode' && git pull && git submodule update --init --recursive
[2020-01-14 18:21:34] > Already up to date.
[2020-01-14 18:21:34] > error: Server does not allow request for unadvertised object 837ecd3d7a8597ab5f28bc83072de68e16470f1e
[2020-01-14 18:21:34] > Fetched in submodule path 'submodules/pylama', but it did not contain 837ecd3d7a8597ab5f28bc83072de68e16470f1e. Direct fetching of

La forma de corregirlo es la siguiente:

jorge@portege:~$ cd .vim/bundle/python-mode
jorge@portege:~/.vim/bundle/python-mode (develop)$ git submodule sync
Synchronizing submodule url for 'submodules/astroid'
Synchronizing submodule url for 'submodules/autopep8'
Synchronizing submodule url for 'submodules/mccabe'
Synchronizing submodule url for 'submodules/pycodestyle'
Synchronizing submodule url for 'submodules/pydocstyle'
Synchronizing submodule url for 'submodules/pyflakes'
Synchronizing submodule url for 'submodules/pylama'
Synchronizing submodule url for 'submodules/pylint'
Synchronizing submodule url for 'submodules/rope'
Synchronizing submodule url for 'submodules/snowball_py'

De esta manera ya se puede volver a ejecutar vim +PluginUpdate sin problema.

fuente: https://github.com/python-mode/python-mode/issues/901

Compilar openssl para arm + uclibc

Necesitas descargar el compilador de arm y el la version de openssl que necesites


export CC="/home/embebed/compiler/cross-compiler-armv5l/bin/armv5l-cc"
export LD="/home/embebed/compiler/cross-compiler-armv5l/bin/armv5l-ld"
./Configure linux-armv4 -D__ARM_ARCH__=4 --prefix=/usr/local/openssl/ --openssldir=/usr/local/openssl shared
make

Reduce el tamaño de un pdf con páginas escaneadas

Un fichero pdf puede ser muy útil y ligero, siemre y cuando el contenido no sean imágenes escaneadas, es necesario recomprimir esas imágenes y volver a montar el pdf.

Como solución sorprendente he usado este par de comandos que unidos reducen el tamaño una proporción brutal. En un ejemplo real de 35 Mb a 1,8Mb y de 59Mb a 2,3Mb

Tan solo cambia el fichero de input.pdf con el nombre de tu fichero, se generara un fichero medium.pdf y un fichero small.pdf. Elije al gusto.

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=medium.pdf input.pdf
ps2pdf medium.pdf small.pdf

15 estrategias de éxito para timeboxing

Por decirlo simplemente, timeboxing es la herramienta de gestión del tiempo más efectiva que conozco. Incluso si ya la conoces y la usas hasta cierto punto, hay una buena posibilidad de que aún puedas hacerlo mejor con algunos de los siguientes consejos.

Para quienes son nuevos, “timeboxing” es simplemente fijar un período de tiempo para trabajar en una tarea o grupo de tareas . En lugar de trabajar en una tarea hasta que finalice, te comprometes a trabajar en ella durante un período de tiempo específico.

Pero no dejes que la simplicidad del concepto te engañe, hay mucho más en esta herramienta de lo que parece.

Mucha gente ya escribió sobre esto (revisa a Dave Cheong para un buen comienzo, así como a JD Meier[1] y Steve Pavlina[2]). Aunque estos chicos hicieron un gran trabajo al presentarlo, el “timeboxingme ha ayudado tanto que decidí compartir 15 formas específicas en que puede ayudarlo a ser más productivo. Aquí están:

1. Atrévete con tareas grandes

El uso más obvio de un ‘timebox es avanzar en tareas grandes. Por un lado, te permite progresar continuamente en estas tareas intimidantes. Por otro lado, te asegura que trabajar en estas tareas no sobrecargará el resto del día.

2. Desházte de ‘Tareas de mosquitos’

Los ‘timeboxes son una gran manera de abordar esas molestas y pequeñas tareas que siguen molestandote. El problema con estas pequeñas tareas molestas es que cada una de ellas, por sí sola, puede considerarse lo suficientemente insignificante como para ser aplazada. Después de un tiempo, sin embargo, hay suficientes para drenar una cantidad significativa de tu energía mental. Una buena estrategia para recuperar esa energía es crear un ‘timeboxy abordarlas a todas de una sóla vez.

3. Superar la procrastinación

Si te estás escaqueando de una tarea, olvídate de completarla: simplemente colócala en un ‘timebox. Así superas tu resistencia hacia la tarea y es probable que cuando se acabe el tiempo hayas desarrollado el impulso suficiente para seguir trabajando en ella durante más tiempo.

Así es, si la pereza es tu problema, no dudes en ignorar el temporizador cuando suene. Eso es lo que yo llamo ‘open timebox: establece un período mínimo de trabajo, que puedes extender a tu gusto. Para este tipo de ‘timebox’, me gusta configurar mi temporizador con una ronda de aplausos[3] como un pequeño incentivo para seguir adelante.

4. Conquista el perfeccionismo

El perfeccionismo es la otra cara de la procrastinación. En lugar de evitar una tarea, la dedicas tanto tiempo que cuando te das cuenta, todo tu tiempo se ha ido. Para evitar el perfeccionismo y los efectos de los rendimientos decrecientes, tener una hora de corte definida para una tarea es una de las mejores estrategias que puede usar.

Lidiar con el perfeccionismo exige lo que yo llamo ‘closed timebox’: establecer un período máximo de trabajo . Cuando se trata de estos ‘timebox’, me gusta configurar mi temporizador con un zumbido perturbador y molesto[4] para recordarme que deje la tarea inmediatamente.

5. Define tu enfoque

El ‘timebox’ de una tarea en particular ayuda a excluir otras tareas y pensamientos no relacionados de tu radar durante el tiempo que dura el ‘timebox’. Reducir el desorden mental es esencial si quieres ser completamente productivo.

Además, al organizar tu trabajo en ‘timeboxes’ tienes la estructura que necesitas para prepararte adecuadamente para tus tareas. Evitar distracciones de antemano, maximiza tus posibilidades de obtener ‘flow’.

6. Aumentar la eficiencia

¿No es verdad que obtienes mucho más en uno de esos viernes previos a vacaciones que en cualquier otro día normal de trabajo? Por alguna razón, parece que nuestro trabajo más eficiente generalmente se realiza al final de un período de tiempo cuando hay un ‘deadline’ muy bien definido.

Los ‘timeboxes’ te presionan de lo suficiente de una forma saludable, lo que te permite aprovechar al máximo este ‘efecto entrega‘, así que asegúrate de que el temporizador está visible y de que puedes ver el tiempo mientras trabajas en tu tarea.

7. Impulsa la motivación

Las grandes tareas, sin importar cuán importantes sean, pueden ser desmotivantes: simplemente necesitas trabajar durante demasiado tiempo para ver los resultados. Es posible que prefiramos retrasar tareas importantes, de modo que trabajemos en muchas tareas rápidas y sencillas, sólo por la falsa percepción de logro.

Pero al igual que el simple hecho de tachar los elementos de tu lista de tareas puede ser motivador, por lo que se completa con éxito un ‘timebox’. Completar un ‘timebox’ funciona como un signo visible de progreso.

Otra idea sobre cómo usar los ‘timeboxes’ para aumentar la motivación es hacer un juego o desafío: ¿Cuántos logros puede alcanzar durante una hora? ¿Por qué no intentar batir tu propio récord?

8. Trabajar en ‘Fuzzy Goals’

Aunque algunas personas quieran criticarme por esto, no estoy de acuerdo en que deberíamos tener objetivos SMART[5] para todo. SMART del ingles, que significa «Specífic (específico, concreto), Mesaurable (se puede medir), Achievable (se puede lograr), Realist (genera el impacto deseado)  y Timed (limitado en el tiempo).

A veces disfruto la libertad de un resultado abierto. A veces solo quiero mejorar algo, no hay un objetivo específico y preciso en mente. Este ha sido especialmente el caso desde que empecé a experimentar con objetivos más pequeños y graduales). Creo que es saludable no ser 100% objetivo todo el tiempo.

Dicho esto, no puedes permitirte que estos relaxed goals superen tu plan diario; ya sabes, cuando realmente necesites estar completamente concentrado y tienes plazos usa SMART. Define tus ‘fuzzy goals’ en un ‘timebox’ y obtén lo mejor de ambos mundos.

9. Exploraciones creativas iniciales

Los proyectos que requieren una gran cantidad de creatividad no se abordan mejor de principio a fin. La manera más efectiva de lidiar con un proyecto como este es tener una fase inicial de inmersión, un período en el que generas una ráfaga de ideas, y luego olvidarte de ellas por un tiempo. Dejándolo ir, le da tiempo a la mente subconsciente para trabajar en el problema.

Esta fase inicial de lluvia de ideas ‘brainstroming’ es un candidato perfecto para el ‘timeboxing’ ya que generalmente no hay un resultado preciso para él. (A menos que defina un resultado preciso para el proceso creativo, como en una Lista de 100[6] o Cuota de idea[7] ).

10. Aumentar la conciencia del tiempo

¿Cuántas veces te has preguntado al final del día a dónde se fue todo tu tiempo? Como el lector Iain Hamp[8] sugirió en un comentario[9], realizar auditorías de tiempo es una actividad extremadamente valiosa para diagnosticar su tiempo, así como para alinear su tiempo y valores. La estructuración de ‘timeboxes’ diarias hace que estas auditorías sean súper fáciles de hacer.

Además, ser más consciente de cuánto puedes hacer en tu espacio de tiempo es liberador, ya que le ayuda a decir «no» a cosas sin importancia con más frecuencia.

11. Crea un ritmo de trabajo

Solo obtienes la máxima eficacia si equilibras adecuadamente los períodos de trabajo y descanso. Los ‘timebox’ proporcionan un gran marco para permitir que este equilibrio suceda. La clave es encontrar tu propio ritmo.

Alternar entre diferentes tipos de ‘timeboxes’ (como trabajo / descanso o tareas difíciles / sencillas) maximiza el uso de energía y le permite lograr mucho más.

Mi ritmo de trabajo favorito es alternar entre bloques de 50 minutos de trabajo y 10 minutos de descanso[10]. Para sprints rápidos, Merlin Mann es notablemente efectivo (10 + 2) * 5 hack[11] es también una gran opción.

Si está interesado en una discusión más profunda sobre diferentes patrones de ráfagas de tiempo, recomiendo el libro de Mark Forster Get Everything Done y Still Have Time to Play[12].

12. Enfócate en finalizar una tarea significativa

Trabajar en tus proyectos más importantes a primera hora de la mañana es un consejo clásico para garantizar que finalizarás un trabajo significativo ese día. Crea un ‘timebox’ para dedicar a tus sueños todos los días, antes de que el mundo tenga la oportunidad de interrumpir sus planes.

Si no planeas utilizar ‘timebox’ para nada más, considera aplicar sólo este consejo. Esto es quizás lo único y más efectivo que puedes hacer para conseguir tus sueños.

13. Equilibra tu vida

Es común enfocarse demasiado en un área específica de nuestras vidas a expensas de los demás.

Recuerda, que no necesitas usar el ‘timebox’ sólo para tareas relacionadas con el trabajo: puedes bloquear el tiempo para cualquier cosa que te importe: ocio, familia, pasatiempos, cualquier cosa.

La planificación previa de ‘timeboxes’ para las cosas que más te importan es una excelente estrategia para llevar a vida equilibrada. De hecho, estos ‘timeboxes’ pre-planificados son el corazón del sistema de priorización que uso. Planeo explorarlo más profundamente en un nuevo artículo.

14. Evita que se te vaya el tiempo

Ya sabes de lo que estoy hablando: foros, navegar por la web, juegos, noticia, correo electrónico, todo el mundo parece estar perdiendo el tiempo en su vida. StumbleUpon[13] , ¿alguien? 🙂

Deja de perjudicarte a tí mismo; todo lo que necesitas hacer es colocar un ‘timebox’ a tu alrededor para recuperar el tiempo perdido.

15. Recompénsate

Si relacionas tus recompensas con la finalización de las tareas, es posible que te encuentres realizando sólo tareas rápidas y sencillas, y evitas las más importantes. ¿Por qué no obtener una pequeña recompensa después de completar un ‘timebox’?

Un ejemplo personal: revisar el correo electrónico varias veces al día es una vieja costumbre que todavía no he logrado curar. Si bien la solución ideal sería la tarea de verificar el correo electrónico en un ‘timebox’, ahora lo uso como una recompensa por completar ‘timebox’: ¡un incentivo adicional que funciona de maravilla!

Las recompensas pueden ser tan pequeñas como un vaso de agua o una respiración profunda en la ventana (para obtener más información sobre pequeñas recompensas y su poderoso efecto, recomiendo el capítulo «Otorgar pequeñas recompensas» en un pequeño paso que puede cambiar tu vida[14] – ver el libro completo resumen[15]).

¿Que pasa contigo?

Si aún no usas ‘timebox’, pruébalo.

Si no tiene un temporizador, puedo recomendarte algunos: dado que paso la mayor parte del día en el ordenador, uso principalmente la minúscula y superfuncional aplicación en mi escritorio Egg[16] y Timekeeper[17] en mi PDA cuando estoy fuera del ordenador. Para una solución gratuita, multiplataforma y basada en navegador, puede usar Virtual StopWatch[18] . También puedes usar temporizadores de cocina regulares[19], he visto que el modelo Ultrak T-2 se recomienda en alguna parte.

¿Y tú, ya usas ‘timebox’? ¿Cuál es tu experiencia? ¿Tienes algún otro uso específico? ¿Tienes algún temporizador específico para recomendar? ¿Estás tan entusiasmado con ‘timeboxing’ como yo? ¡Por favor comparte sus pensamientos en los comentarios!

Fuentes y enlaces

Traducción de fuente original: https://litemind.com/time-boxing/

Solucionar problema de módulo no encontrado

Esto me ha vuelto a pasar hoy , tengo un módulo en desarollo y quiero importar el módulo fuera de un directorio donde tengo acceso directo al módulo. Pues una opción es instalar el módulo para que el interprete sepa que hay un módulo con ese nombre, y la otra es agregar la ruta desde la que se puede acceder a ese módulo en la lista de sys.path

import os
import sys
self_path = os.path.dirname(os.path.realpath(__file__))
sys.path.append("{}/../../".format(self_path))

Funciona bien bien

json pretty print en consola

En mi día a día manejo bastantes cadenas de json o diccionarios de python como tantos otros y muchas veces necesito tener una visualización más agradable a la vista y acabo complicándome la vida copiando, pegando, etc… El otro día incluso me instalé un paquete ‘aeson-pretty’ para printear jsons, peeeero esta solución es mucho más sencilla y me gusta más

echo "alias j='python -m json.tool'" >> ~/.bash_aliases
source ~/.bashrc
echo '{ "element0" : "lorem", "element1" : "ipsum" }' | j
{
"element0": "lorem",
"element1": "ipsum"
}