jeudi 31 mars 2016

CoreUtils: si la commande LS vous manque trop sous Windows...

Je passe souvent d'une machine Linux à Windows et vice-versa.
Le plus dure, c'est de se passer des commandes ls, cp, mv et nano sous Windows... Arf

Il existe bien CygWin mais ce dernier n'a pas la meilleure réputation (surtout pour son côté usine à gaz). Voici donc une alternative.

CoreUtils
Je vous propose de jeter un coup d'oeil sur le projet "CoreUtils : GNU Core Utils" qui permet de retrouver cet outils et de nombreux autres sur votre machine Windows.
CoreUtils : GNU Core Utils
CoreUtils propose un programme d'installation sous Windows :-)
Il vous suffira d'ajouter le répertoire "C:\Program Files (x86)\GnuWin32\bin" dans la variable PATH de votre système Windows.
CoreUtils dispose également d'une excellente documentation (176 pages) au format pdf et chm accessible via le menu Windows.

Nano
Nano est un éditeur en mode console. Barbare de prime abord, c'est un outil que l'on manipule régulièrement dès que l'on utilise une connexion SSH, soit un Raspberry Pi où il est incontournable.
Une fois habitué, il est très commode d'usage et surtout accessible en ligne de commande.
Nano est téléchargeable depuis http://www.nano-editor.org/
Editeur Nano - www.nano-editor.org
Pour installer nano:
  • Placez nano.exe et les dll de nano dans c:\windows\sysWOW64\  (pour un système Win7)

samedi 20 février 2016

Python : Lecture de carte eID Belge avec Python

Bien que cet article concerne la lecture de eID Belge sur Raspberry-Pi, la bibliothèque et le code doivent pouvoir être utilisé avec d'autres systèmes.
Bonne lecture
Dominique
 
En Belgique, les carte d'identités sont équipées de puce Smart Card. Cela permet d'emporter:
  • Un certificat CitizenBE utilisé pour la signature et authentification numérique du citoyen (protégé par une mot de passe).
  • D'autres informations librement accessible comme le nom, prénom, ....
Toutes ces informations étant décrites dans des spécifications ouvertes publiées sur le Net par l'eGouvernement Belge il y a une décennie.

Des spécifications ouvertes... c'est génial, du coup, nous avons une connaissance qui s'est lancé dans le projet fou de faire lire des cartes d'identités beid (carte d'identité Belge) par un Raspberry-Pi sous Jessie et en Python 3 s'il vous plaît! C'est trop de la balle.

from beid.beid import scan_readers, read_infos, triggered_decorator
from pprint import pprint
from time import sleep

# retrieve a list of available readers
r = scan_readers()[0]

# declare a function that will be executed automatically when a card is removed/insterted
# funcion arguments should be :
# - action : which will be "inserted" or "removed" when the function will be called
# - card : which will be the card if inserted
# - reader : which will hold  the name of the reader to use 

@triggered_decorator
def basic_read(action, card, reader=r.name):
    if action=="inserted":
        i = read_infos(card)
        pprint(i)

sleep(5)

infos = read_infos(r, read_photo=True)
with open("photo.jpg", "wb") as f:
    f.write(infos['photo'])

Vous trouverez pythonbeid sur le GitHub de Lapin Blanc.

Un grand merci pour ce partage avec la communauté.
Dominique

dimanche 20 décembre 2015

Python: PrettyTable pour afficher une table en mode texte

Petit outil à se garder sous le coude pour se simplifier l'écriture d'outil en mode texte (dans la console).
Il n'est pas toujours utile de se prendre la tête...



from prettytable import PrettyTable

x = PrettyTable(["City name", "Area", "Population", "Annual Rainfall"])
x.align["City name"] = "l" # Left align city names
x.padding_width = 1 # One space between column edges and contents (default)
x.add_row(["Adelaide",1295, 1158259, 600.5])
x.add_row(["Brisbane",5905, 1857594, 1146.4])
x.add_row(["Darwin", 112, 120900, 1714.7])
x.add_row(["Hobart", 1357, 205556, 619.5])
x.add_row(["Sydney", 2058, 4336374, 1214.8])
x.add_row(["Melbourne", 1566, 3806092, 646.9])
x.add_row(["Perth", 5386, 1554769, 869.4])
print x

Ressources

lundi 14 décembre 2015

RpnCalc: Install failure + Doc failure = projet d'exception qui tombe dans l'oubli

Pré-préambule:
Coup de gueule! Il faut développer les idées jusqu'au bout! Installation (ou doc d'installation) comprise!

Préambule
Une calculatrice RPN en Python, est-ce possible?

J'ai une calculatrice HP48 que j'utilise énormément, et de façon plus ou moins avancé, au jour le jour. Ce qui m'ennuie, c'est de passer mon temps à la sortie et la rentrer dans mon tiroir (je manque cruellement de place sur mon bureau).

Du coup, je me suis dit: mais pourquoi ne pas garder une calculatrice sur ton bureau Linux Mint? J'ai deux moniteurs... ce serait certainement très pratique.

Je fouille donc sur les dépôts et trouve un outil offrant des fonctionnalités plutôt avancé sous la forme de CalcRpnPy et d'un dépôt Python rpncalc 2.7.

La doc est détaillée, cela fonctionne depuis un interpréteur Python. bref, de la balle pour qui préfère utiliser un clavier pour des questions de performance humaine!
Faut dire que je suis addict à Linux Mint (donc de la chaîne de parenté Mint - Ubuntu - Debian).

Mon premier reflexe est: Génial, je vais pouvoir l'installer avec un pip install ;-)

Sauf que...
rpncalc s'appuie sur clnum (CLN ou encore Class Library for Number) et que l'installation part totalement en couille.
L'installation de clnum en python 2.7 (pip install clnum) inclus un problème d'encoding ASCII!!!

Et en python3, je me retrouve avec une belle erreur de compilation GCC.

En fouillant, j'arrive jusqu'au support et night-build des paquet Debian. 

Conclusion
Je voulais gagner du temps avec un outil sympa et je me retrouve à zoner dans de la doc, des problème d'install & compilation et même des paquets Debian!

Comme je suis à la bourre, je vais ressortir ma calculette Hp48 et rpncalc à toutes les chances de tomber dans l'oubli.

Vous ne trouvez pas cela dommage? Il manque presque rien pour l'exploiter... mais ce "presque rien" est le frein final qui va stopper net la découverte du projet rpncalc.

Moralité
Ne vous arrêtez pas à un mètre de l'arrivé.
C'est trop bête de ne pas faire profiter les autres de votre victoire!

fwbackups - le programme de backup equivalent à "Cobian Backup" pour Linux

Cela fait maintenant des années que j'utilise Cobian Backups sous Windows (Windows, c'est pour travail).

Mais je suis plutôt addict Linux à la maison. Cela faisait longtemps que je cherchais un système de backup plutôt proche des fonctionnalités de "Cobian Backup", simple et efficace.
Je l'ai trouvé, il s'appelle fwbackups et fonctionne en python (léger et très largement supporté par les plateforme Linux).

fwbackups de Diffingo

Utilisée depuis plusieurs mois maintenant, je me prépare à en faire le déploiement. Pourquoi ne pas faire la publicité d'une bonne solution.


Pour démarrer le programme de backup, il suffit de saisir la commande suivante sur une ligne de commande:

fwbackups

Téléchargement:
Installation:

Note:
Par le passé, j'avais trouvé "Areca Backup" vraiment génial mais ce dernier nécessitait l'installation de Java... pas trop a mon goût pour être tout à fait honnête. Entre Java et Python mon coeur balance franchement vers Python.
Cela ne signifie pas qu'une solution Java ne soit pas une bonne solution, loin de là, c'est juste une question de préférence personnel.


Voir aussi:

mercredi 11 novembre 2015

Electrabel - Une démarche spontanée par e-mail potentiellement dangereuse pour l'identité du client

Bonjour à tous et toutes,

Un blog n'est généralement pas le meilleur endroit pour se laisser aller à des réactions sur le vif... mais ce jour je suis choqué car j'ai vu des informations sensible être communiqué par e-mail (certes qui m'est adressée) par la société Electrabel elle-même.

Nous le savons tous, malgré de nombreux efforts de la part des prestataires, les boîtes e-mails sont régulièrement l'objet de tentative de piratage... ainsi il est préférable de ne pas y laisser trainer d'information trop personnelle. Mon beau-père s'est déjà fait avoir une fois où deux (je l'ai su car j'ai reçu des é-mails bizarres de sa part)... nous avons tous connu cela... cela pourrait aussi nous arriver.

Perso, je ne laisse pas d'information sensible, il serait bien que mes prestataires de service --dont Electrabel fait l'objet-- ne se permette pas d'en publier à ma place sur mon propre e-mail!

La quantité d'information que j'y ai trouvé dans deux e-mails est suffisant pour élaborer une tentative d'usurpation d'identité (j'y reviens plus loin). Eventuellement se faire envoyer une copie de facture (voire même savoir où l'on peut la récuperer, l'info est dans l'émail!) pour ensuite l'utiliser afin de s'ouvrir l'accès à d'autres services chez d'autres prestataires et facturé chez vous (bien entendu, sinon ce ne serait pas marrant).
PS: Il n'est pas rare qu'il soit demandé une copie de facture d'électricité et/ou de gaz pour prouver votre identité et le lieu de résidence. Ce qui rend encore plus grave la récente démarche e-mail opéré par Electrabel.

Heureusement il n'y a ni mon numero national, ni ma date de naissance (ouf!)... sinon tout le reste se trouve dans deux e-mail envoyé en moins de 30 jours.

L'adresse pub
Il faut savoir que nous avons plusieurs adresses e-mail... dont une qui se termine par ".pub@gmail.com".
Cette adresse est destinée aux sites avec un faible niveau de confiance ou à toute société se montrant un peu entreprenante en vue d'obtenir une adresse e-mail.
Inutile de dire que cette boite est remplie de spam et messages non désirés.
Seul les prestataires de confiance (n'envoyant pas d'émail non sollicité) reçoivent notre vraie adresse e-mail au terme d'une période de validation relativement longue.

Electrabel dispose de notre adresse ".pub@gmail.com". Electrabel était encore en période de validation et que l'email à été communiquée suite à démarche de type "commerciale". Ont ne sais jamais avec qui l'adresse pourrait être partagée et ce qu'il pourraient en faire. Cela doit remonter à un temps certains... nous ne nous en souvenions plus.

Un premier email d'Electrabel
Il y a un moment, nous avons reçu un e-mail réputé d'Electrabel mentionnant "Important - vos prochaines factures via e-mail". Cet e-mail nous demande de nous connecter sur le compte en ligne pour confirmer nos informations en vue de facturation électronique.
Ce mail contient un numéro de client et un code d'activation.
N'AYANT:
1) RIEN DEMANDé auprès d'Electrabel et
2) le lien proposé RENVOYANT VERS LE SITE P5TRC.EMV2.COM

Notre premier réflexe est de penser à une tentative d’hameçonnage (phishing) en vue d'une collecte d'information pour usurpation d'identité.
Il ne s'agissait visiblement pas "POUR SURE" d'Electrabel... le mail est casé dans les SPAM et déclaré comme tel. En cas de SPAM, la première chose à faire est "de ne rien faire" et ne surtout pas signaler notre intérêt/existence au spammeur.

Il y a au moins 1 belge sur 2 raccordé chez Electrabel. Une tentative de Physhing/Hameçonnage à donc toutes les chance d'aboutir avec un certain succès.

Un deuxième E-Mail d'Electrabel
Ce jour, nous recevons un deuxième e-mail "Votre facture intermédiaire du 10 Novembre 2015".
Les liens pointes toujours vers P5TRC.EMV2.COM (donc toujours pas vers Electrabel.be!!! ni de connexion sécurisé via https).
Ni une, ni deux nous déclarons egalement ce nouvel émail comme SPAM!
Par contre nous restons interpellé par la présence de l'adresse de notre demeure dans l'émail.

Cette fois, nous trouvons:
* Notre numéro client
* Le montant d'une facture
* Une date d émission de facture
* notre adresse complète (reste plus qu'a faire appel à un annuaire pour connaitre le nom correspondant à l'adresse ou être perspicace avec l'adresse e-mail nom.prenom@blabla.com!)

Après vérification, nous avons constaté que toutes les informations communiquées sont "correctes" et communiquées par l'intermédiaire d'un média très discutable.
Les liens ne redirige pas vers le nom de domaine d'Electrabel (cela pourrait aussi bien être un site Chinois, vous n'imaginez pas le nombre d'email de ce genre reçu chaque jour) et les liens ne sont toujours pas sous HTTPS.
Il n'y a là aucun des indices permettant d'augmenter le niveau de confiance.

Electrabel - transmission non sécurisée de mes informations
Je ne doute pas un seul instant que des informaticiens consciencieux de chez Electrabel aient posés les bonnes questions concernant la communication d'informations sensibles via e-mail.
D'autant que tous les intermédiaires informatiques peuvent en prendre librement connaissance a notre insu (super pour les campagnes marketing, ou le réseau échelon).

Cher Electrabel:
  • Il faut être fou d'avoir communiqué un numéro de client et le code d'activation dans un seul e-mail!
    Quiconque peuvant accéder à cet information pourrait avoir des informations utiles pour usurper votre identité et/ou pour manipuler le helpdesk d'Electrabel! Se faire craquer sa boite e-mail n'est pas exceptionnel, les personnes plus agées restant les plus influencables/manipulables.
  • Vous demandez de vous connecter sur des liens pour y traiter des informations "à caractère financier" (mes factures) sans passer par le nom de domaine "Electrabel.be"!!!
  • Ont ne propose JAMAIS DE LIEN à suivre s'il y a un enjeux financier!!!! Faites comme les banques les gars!!!
  • Ne jamais inclure d'information sensible dans un e-mail!!!
    Mon numéro de client, mon code d'activation, mon adresse, mon montant facturé, la date d'émission de facture (et la communication qui va avec) par e-mail!!!
    Faut arrêter de rigoler les gars.
  • Sans compter que tout cette procédure est entamée sans mon consentement explicite... je suis sous le coup d'un accord par défaut d'opposition sur un premier e-mail ne présentant AUCUN indice de confiance! 
  • Vous m'excuserez mais P5TRC.EMV2.COM ce n'est pas Electrabel... sur ce plan c'est vraiment de l’amateurisme (je suis du métier).
    Si un email vous envoyait un lien pour vous connecter sur P5XCC.INV3.COM au lieu de GMAIL.com, vous n'iriez probablement pas faire une telle bêtise.... et bien, cela devrait être pareil pour Electrabel. 

C'est quoi le danger?
Les chevaux de Troie sont légion! Avec eux, personne ne peut savoir si quelqu'un d'autre à pris connaissance de ces mêmes infos sur votre e-mail (ou votre smartphone) à votre insu.
Au moins, avec une facture papier cette dernière est "soit ouverte, soit disparue"... il y a une trace palpable du délit!

Dans le cas de ce billet, et si la sécurité de votre email est compromise, il y a suffisamment d'informations pouvant aider un tiers à se faire passer pour vous... et probablement de pouvoir permettre d'abuser le Helpdesk Electrabel (je laisse ce jeu là a des journalistes, mais reste convaincu par le bien fondé de mon propos).
Avec Internet, une identité est devenue précieuse et fragile. Une fois utilisée par quelqu'un de malveillant, cela peut vous causer énormément de tords et de tracas (souvent financier).
Vous devez rester vigilent et ne pas autoriser qui que ce soit à communiquer par moyen électronique (l'email n'étant pas le plus sécurisé) des informations à votre propos que vous ne communiqueriez pas vous même!

Réagissez
Je reste atterré par un tel égarement alors qu'il suffit de "juste un peu de bon sens" pour voir ce qui saute littéralement aux yeux.

Moi je réagis et je marque ces e-mail comme "SPAM" auprès de GMail.
Rien ne me permet de savoir, pour sur, que l'émail que je recevrais demain sera effectivement émanant d' Electrabel ou quelqu'un qui voulant se fait passer pour cette société.

Soyez prudent et protégez le Net en marquant activement toute communication qui pourrait conduire à une imprudence future! (comme le cas présent)

Chers Electrabel, j'espère que vous ferez rapidement le nécessaire pour redresser la barre.
Vous me faites peur là!

jeudi 29 octobre 2015

Liste des processus - commande ps

la commande ps -ef permet de lister facilement les processus.... mais ce qui serait parfois utile de savoir, c'est l'état du processus.
Pour cela, nous avons la commande ps -aux  qui fourni un résultat similaire à ceci.

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   4464  2512 ?        Ss   sep17   0:02 /sbin/init
root         2  0.0  0.0      0     0 ?        S    sep17   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    sep17   4:49 [ksoftirqd/0]

yyy
La colonne STAT nous indique le statut du processus dont voici les principaux
  • D - Uninterruptible sleep - En sommeil et ne pouvant pas être arrêté (généralement en attente d' IO)
  • R - Running - Exécuté ou processus exécutable (dans la queue d'exécution)
  • S - Sleep - en sommeil et pouvant être interrompu (en attente d'événement)
  • T - Arrêté, soit suite à u signal de contrôle de job/processus ou parce qu'il est en cours de débogage (traced).
  • X - processus mort (dead). Nous ne devrions jamais voir ce statut
  • Z - Zombie, processus terminé et non repris en charge (collecté/libéré) par son processus parent.