Desactiver le screensaver de X11

Bonjour bonjour!

Dernierement, j’ai eu besoin de monter une machine en mode Kiosk. Ces machines d’affichages ont pour vocation d’afficher du contenu (dans mon cas, une page web en fullscreen) 24h sur 24, sans jamais se mettre en veiller. Or, sur une machine ubuntu 10.04 Desktop, avec un bureau Openbox et XScreensaver desinstalle, le screensaver d’X11 persiste a s’activer au bout de N minutes !!

Toutefois, une solution *simple* existe: les options de X11 de ce genre sont configurable depuis la commande xset.

Il nous suffi donc d’executer la commande suivate depuis notre utilisateur Kiosk:

kiosk@kiosk-display:$ xset -dpms s off

Et voila! :)

Modifier les limites systeme (ulimit) depuis un script Python.

Il est parfois utile de pouvoir changer les limites imposes par le système (nombre maximale de FD, etc) depuis l’intérieur d’un script Python.

Cette modification est possible de différentes manière, mais la meilleures reste d’utiliser le module python resource !

Grace a la fonction setrlimit il vous est possible de modifier les limites comme vous le feriez avec ulimit. Cette fonction prends deux paramètres: resource et limits.

resource correspond a un des defines de resource (ex: RLIMIT_CORE, RLIMIT_CPU, etc) et limits correspond a un tuble content la valeur « soft » et la valeur « hard ».

  • Exemple:

setrlimit(RLIMIT_NOFILE, (256, 1024))

Continuer a utiliser Git sans galerer les matins ou il n’y a plus de cafe !

Si comme moi, vous avez des matins avec, et des matins sans vous comprenez certainement ma douleur quand je dois trifouiller dans des commits de la semaine d’avant à 9h un lundi ! :)

Biensur, il existe des outils graphiques pour vous faciliter la tache : Giggle, Git[g/k/x], etc. Personnelement, mon choix s’est porté sur quelque chose de beaucoup plus simple, mais tout autant voire plus efficace : une petite configuration du prompt bash.

Le methode est simple : remplacer la variable PS1 de base par quelque chose de plus « adapte » à nos besoins.

C’est sur le Gist de tdd que j’ai trouve mon bonheur: un prompt bash affichant la branche courante, si l’on se trouve ou non a la racine du depot, si il y a des modifications non commits, si on effectue un rebase ! etc…! La liste est assez longue :)

Pour installer ce prompt, rien de plus simple: copiez l’integralite du code a la fin de votre ~/.bashrc et executez la commande: ~$ source ~/.bashrc

Python SMTP Server

Il est parfois necessaire d’avoir un serveur SMTP « de debug » sous la main lorsque l’on participe au developpement d’une application web. Toutefois, il est généralement peu utile de déployer une solution complète comme Exim ou Sendmail pour ne tester qu’une page d’inscription.

Heureusement pour nous, comme a son habitude, il est possible de passer outre ce problème a l’aide de Python!

La commande suivante permet de lancer un serveur qui ecoutera sur le port 25 de l’adresse 127.0.0.1 ! Elle vous affera en suite differentes infos concernant le mail recu ! :)

rohja@tartopom:$ sudo python -m smtpd -n -c DebuggingServer localhost:25

A voir : http://muffinresearch.co.uk/archives/2010/10/15/fake-smtp-server-with-python/

Comment convertir un chargeur secteur US en un chargeur usb.

Ce soir, un peu d’electronique « A l’arrache ». Pas de grosses explications, rien de propre : juste un petit hack rapide histoire de rendre la vie a mon matos 100% Made In China (Antoine, si tu passe par la… :D ).

Le principe est simple : trouver une vieille tour de PC de la rue, lui arracher ses ports usb de la facade. Souder les fils +/- sur les pattes correspondantes du chargeur 5V american. Refermer et scotcher le tout « avec un minimum de classe ». Et le tour est joue.

Pas specialement cool pour le commun des mortels, mais pour les gens comme moi, ca le fait largement. Enjoy ! :)

Cloner un <select> avec JQuery

Suite a un travail durant mon stage, j’ai du « cloner » une partie du DOM de ma page à l’aide de JQuery. Jusque la, rien de compliqué, la methode clone() faisant généralement bien le travail!

Pourtant, il existe certains cas où cette fonction n’est pas suffisante ! Quand un <select> est présent dans la partie du DOM à copier, l’élément choisi n’est pas sauvegardé avec clone().

Heureusement, de gentils développeurs web se sont dévoué pour trouver une solution !

La voici :

(function($,undefined) {
    $.fn.cloneSelects = function(withDataAndEvents, deepWithDataAndEvents) {
        var $clone = this.clone(withDataAndEvents, deepWithDataAndEvents);
        var $origSelects = $('select', this);
        var $clonedSelects = $('select', $clone);
        $origSelects.each(function(i) {
            $clonedSelects.eq(i).val($(this).val());
        });
        return $clone;
    }
})(jQuery);

Source : http://stackoverflow.com/questions/742810/clone-isnt-cloning-select-values

Clés de chiffrement. RSA/DSA : Pour quoi faire ?

Sur le net, en sécurité informatique, il est souvent mention de clés de chiffrement. Toutefois, il est relativement complexe de trier le pourquoi du comment de toutes les explications complexes disponibles sur les sites dédiés! Cet article va donc tenter de répondre à plusieurs questions : Quel est l’utilité d’avoir des clés de chiffrement / Quel type choisir / Des exemples concrets.

 

  • Quel est l’utilité d’avoir des clés de chiffrement ?

Selon wikipedia,

Une clé *de chiffrement* est un paramètre utilisé en entrée d’une opération cryptographique (chiffrement, déchiffrement, scellement, signature numérique, vérification de signature).

En d’autres mots : c’est le paramètre donné par l’utilisateur qui va permettre de rendre le chiffrement unique. Unique dans le sens où il sera nécessaire d’avoir ce même paramètre pour pouvoir par la suite déchiffrer les donnés.

Il existe plusieurs méthodes de chiffrement. Les principales sont le chiffrement symétrique, et le chiffrement asymétrique.

Le chiffrement symétrique utilise la même clé pour chiffrer, que pour déchiffrer les donnés. Le chiffrement asymétrique quand à lui, dispose d’une clé pour chiffrer (clé privé) et une clé pour déchiffrer (clé publique). Ainsi, il est plus difficile, voir impossible de connaitre l’auteur réel d’un fichier quand celui ci est chiffré avec une méthode symétrique : tout le monde dispose de la clé permettant de réaliser les deux opérations. Le chiffrement asymétrique est donc une méthode plus sécurisé. Elle est donc à privilégier.

Le chiffrement des données est omniprésent, et permet surtout de répondre à deux problèmes : empêcher l’interception des données sur un réseau et vérifier l’identité d’un utilisateur.

 

  • Quel type de clés asymétrique choisir ?

Actuellement, il existe plusieurs algorithme de chiffrement utilisés couramment, et donc plusieurs types de clés. Les deux plus utilisés sont les clés RSA et les clés DSA (je vous invite fortement à suivres ces deux liens si vous aimez les maths ou si tout simplement, vous voulez en savoir plus).

Dans les deux cas, les opérations à effectuer sont semblables :

  1. Générer les clés (privés et publiques).
  2. Signer le document (ou chiffrer le message).
  3. Vérifier le document (ou déchiffrer le message).

 

  • Pourquoi choisir du RSA plutot que du DSA ?

Le choix est une question d’utilisation, mais surtout de performances. La sécurité, pour deux clés de même longueur (par exemple 1024bits) est la même.

Le DSA, est à la base, utilisé pour signer des documents (vérifier l’identité de l’émetteur). Il est donc peu optimisé dans le cas d’un chiffrement de donnés (empêcher l’interception par un tierce). Le RSA quant à lui est légèrement plus lent lors du chiffrement, mais nettement plus rapide lors du déchiffrement !

 

  • Des exemples concrets :

Il est possible (et recommandé) d’utiliser une paire de clés pour chiffrer ses communications et s’authentifier auprès d’un serveur OpenSSH. Cela permet une plus grande sécurité : une clé est plus difficile à obtenir qu’un mot de passe simple.

Lors de l’envoi de fichiers ou même de conversation par email, il est possible de signer les messages/fichiers avec OpenGPG pour garantir au destinataire que c’est bien vous qui les avez envoyé.

 

*Bref* retour sur le PlaidCTF !

Ce weekend se déroulait le plaidCTF, un challenge de sécurité informatique organisé par la team [PPP]. J’ai eu la chance, que dis-je, l’honneur (! :D ) de « rejoindre » la team Big-Daddy (23e au classement final). Rejoindre est un grand mot, vu ma maigre participation : la résolution d’une simple épreuve de QRCode !

Big-Daddy, team française, à la 23e place du pCTF

Le déroulement est « simple » : mise en place d’une team, une map avec des épreuves, et une validation d’épreuves permettant de gagner des points (et donc de monter dans le classement) et (si j’ai bien compris) de déverrouiller d’autres épreuves par la suite ! Le tout sur un système de capture de points face CTF de Quake.

Les épreuves étaient de plusieurs catégories : Crypto, RE, etc… Ce qui laisse pas mal de choix, et nécessite une bonne polyvalence !

Je n’ai pas assez participé pour en dire beaucoup plus, mais le jeu est prenant ! Et relativement stimulant aussi. :) Ce qui donne encore plus envie de gagner en expérience dans le domaine pour résoudre des challenges plus compliqués!

En attendant, pour ceux qui cela intéresserait, je vous invite à aller faire un tour sur Root-Me, un site sympa avec pas mal de challenge et un communauté sympa, ainsi que le site de Big-Daddy et son repository pas mal garnis !

Map du pCTF. En bleu, épreuves validés, en orange, les non validés, et en rouge, les verrouillés.

 

Activer les couleurs dans GIT.

Etant utilisateur depuis quelques temps de git, j’ai dernièrement recherché comment avoir un affichage plus « lisible » lors par exemple, de l’execution de la commande :

rohja@tartopom:$ git status

Rien de plus simple : activer les couleurs ! :)

L’opération est simple. Editez le fichier ~/.gitconfig, et ajoutez lui les lignes suivantes :


[color]
status = auto
branch = autodiff = auto

En suite, ré-exécutez la commande git status, et les couleurs devraient s’afficher ! :D

Limiter l’usage de la mémoire vive pour un utilisateur sous Linux.

Aujourd’hui, ou plutôt ce soir, je suis motivé pour rédiger un petit article, simple, efficace, sans fioritures !

Etant en train de refaire la configuration de mes serveurs (proprement cette fois !), je me suis heurté à un problème : comment limiter la ram utilisé par un utilisateur ?

La commande ulimit est la pour ça !

Cette commande permet de définir différents paramètres (soft : modifiables, et hard : non modifiables) pour la gestion de la mémoire et des processus.

Ainsi, dans notre cas, on utilise ulimit de la façon suivante :

rohja@tartopom:$ ulimit -m 800000

Pourquoi 800000 et pas 800 ? La valeur à indiquer est en Kb. Voulant attribuer au maximum 800Mb à l’utilisateur courant, j’ai donc du mettre 800000 Kb.

Il est aussi possible de fixer les limites soft et hard de façon manuelle. La limite hard n’étant modifiable qu’une seul fois par session, et limitant aussi la limite soft.

Pour modifier la limite soft :

rohja@tartopom:$ ulimit -S -m 800000

Pour la limite hard :

rohja@tartopom:$ ulimit -H -m 800000

Sachez toutefois que ces limites ne sont fixés que pour la session courant, lors de la déconnexion-reconnexion, elles seront re-fixés en fonction de votre fichier /etc/security/limits.conf

Pour que cette limite soit définitive, ajouter une ligne comme celle-ci dans votre limits.conf :

Pour la limite soft :

monuser      soft      rss      800000

Pour la limite hard :

monuser      hard      rss      800000

Pour les deux :

monuser      -      rss      800000

Il est possible de remplace <monuser> par un groupe en précédant le nom du groupe par un @.

Pour plus d’informations :

  • man utimit
  • man limits.conf