Utilisation des sockets avec python

Python, Securité Aucun commentaire »

Python n’est pas seulement un langage pour faire des traitements sur les chaînes de caractères, mais aussi pour construire des applications beaucoup plus intéressantes.

Dans cet article je vais essayer d’ullistrer l’utilisation des socket avec python à travers quelques lignes de code.

Avec un minimum de bagage en TCP/IP, tout le monde sais que pour établir une connexion entre deux machines ils nous faut d’abord un protocole de transfert de donnée, puis une trame qui va envoyer notre information et bien sur l’adresse des deux machines, chacune de ces deux machines doit impérativement avoir un port ouvert pour établir la communication.

Dans cet exemple on va utiliser python pour faire un script simple avec deux fonctions la première va scanner les ports ouverts d’une ip donnée et les afficher, la deuxième va essayer d’établir une connexion avec un serveur Web et de nous renvoyer son ‘Header’.

Dans ce script le protocole utilisé est TCP, si vous souhaiter utiliser l’UDP vous n’avez qu’à remplacer SOCK_STREAM par SOCK_DGRAM .
Je vous laisse examiner le code et j’espère qu’il est suffisamment commenté.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import httplib, socket #l'import de module necessaires
 
from socket import error
maxp = 100 #le numero de port maximum => de 0 jusqu'a 1000
timeout = 2. #si notre trame n'a pas pu etablir
#une connexion dans 2 secondes , donc le port est fermé
def scan(h):
    print "Starting Scann ...nOpen Ports In %s Are :" % (h)
    print '< Port >'
    p = 0
    while p <= maxp:
        try:
	    #creation de notre socket en TCP
		s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
	    s.settimeout(timeout) #definition du timeout
            s.connect((h,p)) #ici la trame va essayer de se connecter
            print ' ', p
	    s.close()
	    p+= 1
	#exception levée quand la trame n'arrive pas a se connecté
	except socket.error:
            s.close()
	    p+= 1
    print "Scan Complete For : [%s]" %(h)
 
#deuxième fonction qui va nous retourner le HEADER d'un server web
def scansrv(h):
	#connexion avec le serveur
    con = httplib.HTTPConnection(h, 80)
    print "Trying To Scan : %s" %(h)
    try:
        con.request('HEAD', '/') #on essaye d'avoir le HEADER
	#exception levée quand le port 80 est fermé ou quand l'IP est down
    except error:
        print "Can't Connect To : %s" %(h)
    else:
		#sinon si tout marche bien , on recupère la réponse
        response = con.getresponse()
		con.close
		#puis on recupere le HEADER et on l'affiche
        server = response.getheader('Server', 'Version du serveur inconnu')
        print "[%s], Is Running : %s" %(h,server)

Ces deux fonctions sont extraites de Perfect-Scanner, un scanner de port que j’avais codé ça fait un bout de temps, vous pouvez télécharger le script complet ici et vaux mieux le tester dans une machine linux, car sous Windows ça peut planter sauf si vous spécifier un intervalle de ports pas supérieur à 1000 avec un timeout d’une demi seconde.

Ce problème sous Windows peut être facilement réglé si on utilise les Threads d’exécution, sinon sous linux ça marche déjà bien !

le script est en GPL et il est là pour des raisons purement educatives.

Et voici ce que ça donne sous Windows

Starting Scann ...
Open Ports In 127.0.0.1 Are :
< Port >
  80
Scan Complete For : [127.0.0.1]
>>>
Trying To Scan : 127.0.0.1
[127.0.0.1], Is Running : Apache/1.3.33 (Win32) PHP/4.3.10

Voila !

Partager cet article : Ces icônes sont des liens vers des sites de partage de signet sociaux où les lecteurs peuvent partager et découvrir de nouveaux liens.
  • Technorati
  • Digg
  • del.icio.us
  • blogmarks
  • Scoopeo
  • BlinkList
  • Furl
  • Reddit
  • Ma.gnolia
  • Slashdot
  • YahooMyWeb
  • Bumpzee
  • Spurl
  • Netscape
  • Book.mark.hu

Fast Mailer Netvibes Module

Netvibes, Ajax, PHP Aucun commentaire »
FastMailer Comme je suis fun du service netvibes , je l’utilise toujours pour les rss que je trouve partout dans le net , personnellement je trouve qu’il est vraiment riche en terme de contenu (flux , modules …)
J’avais besoin d’un module simple qui fait l’envoi de mail (anonyme sera un plus) , mais hélas l seul module que j’ai trouver générais des erreur est n’est plus mis à jour par son auteur ,j’ai donc décider d’en créer un moi même.
Et Voilà, j’ai appeler le module Fast Mailer , j’ai essayer de rendre le module le plus simple possible , l’envoi de mail peut ce faire en html , et ne nécessite pas d’inscription.
Plusieurs modules sont à venir , les idées sont là , mais ou est le temps pour en faire ?!
 
Module Fast Mailer dans netvibes Add to Netvibes
Partager cet article : Ces icônes sont des liens vers des sites de partage de signet sociaux où les lecteurs peuvent partager et découvrir de nouveaux liens.
  • Technorati
  • Digg
  • del.icio.us
  • blogmarks
  • Scoopeo
  • BlinkList
  • Furl
  • Reddit
  • Ma.gnolia
  • Slashdot
  • YahooMyWeb
  • Bumpzee
  • Spurl
  • Netscape
  • Book.mark.hu

Google Calendar API supporte Python

Python, Ajax, Google 1 Commentaire »

Google qui à toujours aimé python pour ça puissance, a intégrer ce langage dans plusieurs de ses développement, maintenant elle a ajouter le support de Python dans son API gdata-python pour communiquer avec Google-Calendar, comme ça les développeurs python peuvent facilement ajouter, modifier et supprimer les événements de leur agenda.

Voici quelques liens pour commencer :

Exemples d’utilisation de la Python Client Library

Google Data API

Le Blog GData

Partager cet article : Ces icônes sont des liens vers des sites de partage de signet sociaux où les lecteurs peuvent partager et découvrir de nouveaux liens.
  • Technorati
  • Digg
  • del.icio.us
  • blogmarks
  • Scoopeo
  • BlinkList
  • Furl
  • Reddit
  • Ma.gnolia
  • Slashdot
  • YahooMyWeb
  • Bumpzee
  • Spurl
  • Netscape
  • Book.mark.hu

Ouverture du Blog

News Aucun commentaire »

En fin c’est fait !

Je suis heureux d’annoncer l’ouverture de mon blog, ça fait longtemps que j’ai voulu le faire mais j’ai jamais eu le temps.

Le blog est destiné à traiter plusieurs sujets attachés au monde NTIC, surtout tout ce qui est open-source, développement ….

Voilà , bienvenue et Bonne lecture.

Partager cet article : Ces icônes sont des liens vers des sites de partage de signet sociaux où les lecteurs peuvent partager et découvrir de nouveaux liens.
  • Technorati
  • Digg
  • del.icio.us
  • blogmarks
  • Scoopeo
  • BlinkList
  • Furl
  • Reddit
  • Ma.gnolia
  • Slashdot
  • YahooMyWeb
  • Bumpzee
  • Spurl
  • Netscape
  • Book.mark.hu