Télécharger ses mouvements de compte LCL au format QIF

Depuis quelques jours, le site https://particuliers.secure.lcl.fr du crédit Lyonnais a mis en place un login avec un tableau de chiffres que l’on doit cliquer, qui sont répartis de façon aléatoire.

Exemple 1:

http://ompldr.org/vYXZ4dg.png

Exemple 2:

http://ompldr.org/vYXc4ag.png

Si on examine attentivement les deux images avec Gimp (par exemple) on remarquera que non seulement les chiffres ne sont pas placés au même endroit, mais qu’en plus leurs position par rapport aux fond bleu peuvent varier (dans cet exemple : 1 pixel en hauteur).

Comme j’aime les défis et aussi le web scraping et que je me met au langage de programmation python, je me suis décidé à me lancer dans l’aventure.

Ma première idée : sikuli permet de faire ce genre de chose, mais cela est contraignant : on doit avoir un navigateur ouvert sur la page et de plus la souris est réquisitionnée le temps de l’opération. Donc, non cette solution ne me convenait pas.

J’ai donc cherché des pistes pour faire du template matching à la manière de sikuli, mais cette fois en scriptant.

Avec les modules python PyQt4 et webkit, il est possible de piloter un navigateur avec accès au DOM, javascript, cookies, user-agent… Et on peut choisir d’afficher ou non la fenêtre du navigateur. (pour faire simple, on code son navigateur à sa sauce, et on implémente ce dont on a besoin).

Après de nombreuses recherches sur le web, j’ai trouvé le module spynner qui permet de faire cela de façon relativement facile.

Reste la partie image-processing, j’ai pour cela choisit l’excellent module PIL associé à numpy pour gérer des tableaux multidimensionnels.

Voici mon process :

  • on se rend sur la page de login
  • on crée un screenshot de la page
  • on découpe le screenshot pour ne garder que le tableau vu en exemple
  • on passe tous les pixels non blancs en noir pour simplifier la recherche de motifs
  • on compare les petites images des numéros (crées avec Gimp) avec le tableau pour chaque numéro du code personnel
  • si ça match, on récupère les abscisses et ordonnées et on lance le code javascript ad-hoc
  • on valide (submit)

A présent, nous sommes logués, et le code devient plus traditionnel : recherches XPath, manipulation du DOM

Cela représente un travail d’une dizaine de jours (pas à temps complet) ce qui a permis de m’inculquer quelque peu la syntaxe de python et de découvrir de belles possibilités de manipulation d’images, ce qui m’était inconnu jusqu’à lors.

Ce script est librement téléchargeable et largement commenté.

Ce script n’a pour le moment pas été testé avec un autre compte que le miens, merci de me remonter si ça fonctionne ou non pour vous et vos éventuels message d’erreurs, merci.

Install sous ubuntu :

sudo easy-install spynner
sudo apt-get install python-qt4
wget http://www.sputnick-area.net/scripts/LCL-dl-QIF/LCL-dl-QIF_current.tar.bz2
tar xjf LCL-dl-QIF_current.tar.bz2
cd LCL-dl-QIF
chmod +x LCL-dl-QIF.py
./LCL-dl-QIF.py

how to play ram files under linux x86_64

realplay.bash

This script is intended to play ram files with vlc instead of using proprietary
software « realplay » that run only on 32bit systems.
(You can replace vlc by any other player).

Now, we are able to play www.amazon.* samples =)
Next step is to configure your browser to open ram(ra) files whith this script.

requirement :
– vlc
– curl
– GNU grep (if you lack the -oP version, replace grep by pcregrep instead)

cups2freefax : envoyer gratuitement un fax via imprimante virtuelle CUPS pour les freenautes.

Ce projet open-source permet aux Freenautes sous Linux d’envoyer des faxs sans avoir a ouvrir son navigateur sur le site de Free via au choix :
- une imprimante virtuelle CUPS.
- le menu contextuel de KDE ou Gnome
- en CLI pure ( ligne de commande )

Pour les détails, tutoriel, exemples, captures, voir : redmine cups2freefax

Faire une capture d’écran puis uploader sur imageshack automatiquement

Salut,

Ce script permet par defaut et sans options de faire une capture d’écran puis de l’uploader automatiquement sur imageshack

Il peux aussi servir simplement à uploader une image si cet unique argument est fourni sur la ligne de commande.

Quoi qu’il en soit, telecharger le script et rendez le exécutable.

Requiert xclip et imagemagick

++, sputnick.

Translator for text selected on any application on your Linux desktop.

See polytranslator

apprendre vmstat

Salut,

voici une petite astuce pour aider à la lecture quelque peu spartiate de vmstat.
Capture d’ecran

vmstat

installation de paquets automatique pour yum, pacman et apt quand une commande échoue

Salut,

Qui n’a jamais perdu son précieux temps à parcourir google à la recherche de tel ou tel lib manquante ? Tout cela est en grande partie terminé.

je me suis intéressé à ces utilitaires automatiques que sont auto-apt, autodeb, et aussi apt-file ( en travaillant un peu plus ) et aucun ne m’a vraiment satisfait. Et surtout, je cherchait une solution plus universelle ( pouvant fonctionner sous plusieurs distribs ) sans avoir à considérer le gestionnaires de fenêtres. J’ai donc décidé de me lancer dans le code afin de réaliser mon propre script. Il est basé sur autodeb mais fonctionne pour apt et yum pour le moment. Le coeur du concept repose sur strace qui va lister les librairies manquantes lors du lancement du script et de la commande/arguments.
Ceci a été testé sous Centos, archlinux i686 et Debian Lenny.

Mon script s’exécute en root et en CLI, et permet donc d’installer ou de se faire proposer les paquets manquants lors du lancement d’une commande.
Quelques exemples testés :

./auto-deps-installer-0.0.1.bash ./configure --with-php-config=/usr/local/perso/php-5.2.8/bin/php-config

dans un répertoire d’extension de php va m’installer les paquets/libs manquantes pour réussir le ./configure.

Je vous laisse tester le script pour vous rendre compte de ses possibilités.
Je suis ouvert à toute correction sur mon Anglais qui est loin d’être parfait et aussi à toute idée, feedback…

Le mieux c’est encore de tester :
auto-deps-installer

++
sputnick.

vim :TOhtml et coloration syntaxique sur du code source

Vous connaissez certainement la commande :TOhtml dans vim qui permet de convertir du texte brut en HTML.
Ce qu’on sait déjà, c’est que vim convertit le texte en HTML, mais sur du code, il gère aussi la coloration syntaxique.
Exemples :
( arriere plan noir )
sputnick-area.net/bin-stat.bash.html






#! /usr/bin/env bash
#  Idea from PerfDave on #bash
#  Enhanced by sputnick
#  06.04.2008

oIFS=$IFS
IFS=:
dir=( $PATH )

shopt -s nullglob

for prog in ${dir[*]/%//*}; do
    type=$(file "$prog")
    case $type in
        *ELF*) ((Bi++)) ;;
        *perl*) ((Pe++)) ;;
        *python*) ((Py++)) ;;
        *POSIX*) ((Sh++)) ;;
        *Bourne-Again*|*bash*) ((Ba++)) ;;
        *ruby*) ((Ru++)) ;;
        *ocaml*) ((Oc++)) ;;
        *link*) ((Li++)) ;;
        *) x+=("$type") ;;
    esac
done

tput setaf 2
echo -e "For all stuff in \$PATH variable, we have :$(tput sgr0)
Bash:\t${Ba:-0}
Binary:\t${Bi:-0}
Links:\t${Li:-0}
Ocaml:\t${Oc:-0}
Perl:\t${Pe:-0}
Python:\t${Py:-0}
Ruby:\t${Ru:-0}
Sh:\t${Sh:-0}
Others:\t${#x[@]:-0}"

tput setaf 2
[[ "${x[@]}" ]] && { echo $’\nothers are :
    tput sgr0
    printf %s\n "${x[@]}"
}
IFS=$oIFS

Executer un script iMacro pour Firefox en ligne de commande (CLI)

Pour ceux qui ne connaissent pas, iMacro est un add-on Firefox qui permet d’automatiser et simuler des actions particulières automatiquement. Par défaut, il faut cliquer sur un bookmark configuré ou bien un *.iim dans l’interface iMacro.
J’ai cherché comment rendre ça encore plus simple en scriptant la chose.
Iopus, editeur de l’add-on a prévu le coup, il suffit (crossplatform) d’utiliser une URL spéciale.
Exemple :

$ firefox  -remote "openurl(http://run.imacros.net/?m=amap.iim,new-tab)"

où amap.iim est une macro que j’ai enregistré auparavant. (Il s’agit d’une recherche du terme « amap » dans google actualités pour info)



On peux aussi creer un bookmark avec une URL du type

http://run.imacros.net/?m=.iim



la macro s’éxécute donc toute seule et effectue la recherche sans avoir eu à cliquer quoique ce soit.
De là, on peux très bien creer un petit script shell et l’appeler avec une combinaison de touche.
( voir « actions d’entrées » dans le « control center » sous kde ou xbindkey pour tous gestionnaires de fenetres )

Obtenir facilement son adresse IP publique ( idéal pour les scripts shell )

Pas besoin de traitement sur la sortie de la commande à base de sed/awk/cut/perl et consorts. Il vous suffit d’appeler la page sputnick-area.net/ip comme cela par exemple dans un script shell :

IP=$(curl -s http://www.sputnick-area.net/ip.php)
echo "Mon adresse IP publique est $IP"

A vos scripts !