Ceci est une ancienne révision du document !


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
wiki/python.1524503617.txt.gz · Dernière modification: 2018/04/23 17:13 par 127.0.0.1
CC0 1.0 Universal
Powered by PHP Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Valid HTML5