Installer
Pour commencer avec Python, si vous en avez jamais fait il va falloir l'installer, pour cela sous Debian, la commande suivante suffit:
aptitude install python2.7 #ou aptitude install python3.1
Pour les systèmes Windows, il faut se rendresur le site de Python afin de télécharger la version souhaitée. Il suffit ensuite de suivre les étapes d'installation et c'est bon,python est installé et est prêt a être utilisé.
Ipython
Pip
Pip (Pip Installs Python) est un gestionnaire de package python qui simplifie la gestion des packages python. Prenons l'exemple de scapy:
# Installation pip install scapy # Upgrade pip install scapy --upgrade # Downgrade pip install scapy==2.0.0 --upgrade # Désinstallation pip uninstall scapy
Cependant, le plus intéressant avec pip, c’est sa capacité à recréer tout un environnement de développement en une commande:
pip freeze cryptography==0.8.2 psycopg2==2.5.5 pycrypto==2.6.1 Pygments==2.0.2 scapy==2.2.0 tornado==4.2 [...] pip freeze > lib.doc pip install -r lib.doc
pip freeze liste toutes les librairies installées, on redirige donc stdout dans dans un fichier et avec pip install -r on installe toutes les librairies listées dans le fichier lib.doc
Virtualenv
Virtualenv comme son nom l'indique est une sandbox, soit un environnement clos dans lequel va tourner notre application python.
pip install virtualenv
Pour créer un virtualenv dans un dossier:
virtualenv /home/toto/env
Lors de la création du virtualenv, sera ajouté:
- l’interpreteur Python
- des libs
- des commandes système
Pour rentrer dans le virtualenv:
source /home/toto/env/bin/activate
On se trouve a présent dans un environnement avec ses propres outils, si des libs sont installées dans ce virtualenv, elles ne seront pas disponibles ailleurs et vice versa sauf si on le précise lors de la création du virtualenv:
--no-site-packages # le virtualenv possède juste les libs standard de python --system-site-packages # toute ce qui est installé sur l'OS est disponible dans le virtualenv
Pour sortir du virtualenv:
deactivate
Hello World
#!/usr/bin/python print "Hello world!"
Sockets
Exploits
Voici une commande bien utile pour exploiter un buffer overflow:
python -c 'print 'a'*100 +'AAAA' +'shellcode'
Cette commande permet d’écrire 100 fois la lettre 'a' dans dans un champs et ensuite d’exécuter les autres arguments de la commande. Plus d'informations sur cette commandes et notamment les arguments sont expliqués dans la rubrique buffers_overflows en sécurité.
Multitâche
Exemple d'un programme qui ping une liste d'hôtes que l'on récupère dans une base de données, pour aller plus vite, 100 threads sont crées:
from multiprocessing import Pool import os import psycopg2 import time def check_ping(hostname): response = os.system("ping -c 4 %s " % (hostname)) if __name__ == '__main__': try: conn = psycopg2.connect("dbname='users' user='monuser' host='localhost'") except: print "Can't connect to the database" cur = conn.cursor() day=time.strftime("%d/%m/%Y") cur.execute("SELECT ipaddress FROM users") rows = cur.fetchall() maliste=[] for i in rows: hostname=str(i[0]) maliste.append(hostname) p = Pool(100) print(p.map(check_ping, maliste))
Sysargv
Exemple d'un programme qui demande un argument pour se lancer, sans l'argument il renvoie “Usage …” et avec il lance hello+sysargv:
#!/usr/local/bin/python import sys if len(sys.argv) != 2: print "Usage: "+sys.argv[0]+" <name>" sys.exit(1) name=sys.argv[1] print "hello "+name
./sayhelloto.py toto
hello toto