Partage
  • Partager sur Facebook
  • Partager sur Twitter

python, probleme variables et socket

Confont variable avec pas variable :)

Sujet résolu
    25 mars 2006 à 22:22:24

    Salut !

    Alors voila mon code (enfin... un bout):

    so = socket.socket(socket.domain0, socket.type0)


    Le probleme c'est que domain0 et type0 sont des variables, et il me repond :

        so = socket.socket(socket.domain0, socket.type0)
    AttributeError: 'module' object has no attribute 'domain0'


    Comment faire ?

    Merci :)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      25 mars 2006 à 22:26:21

      a) T'as pas l'impression que tu vois beaucoup de choses à la fois (rapport à Tkinter)
      b) Jamais vu domain0 et type0. C'est quoi ?
      • Partager sur Facebook
      • Partager sur Twitter
        25 mars 2006 à 22:38:34

        a) bof
        b) Ba ce sont des variables que rentre l'utilisateur dans un raw_input ...

        Merci :)
        • Partager sur Facebook
        • Partager sur Twitter
          25 mars 2006 à 23:13:27

          ca se met pas en raw_input .. c'est pas un string c'est un objet
          • Partager sur Facebook
          • Partager sur Twitter
            26 mars 2006 à 10:02:38

            Montre ton code en entier, mais on dirait que c'est moche :)
            • Partager sur Facebook
            • Partager sur Twitter
              26 mars 2006 à 12:45:17

              Salut,

              Manque de commentaire ton code, quelqun qui s'y connais pas en programmation réseaux, (comme moi ^^) il s'y retrouve pas facillement...


              #Definition de l'adresse à joindre et du port à utiliser
              HOST = '127.0.0.1'
              PORT = 80

              #création du socket :
              so = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

              #liaison du socket à une adresse précise :
              try:
                  mySocket.bind((HOST, PORT))
              except socket.error:
                  print "La liaison du socket à l'adresse choisie a échoué."


              Enfin, après toutn dépand de ce que tu veux faire aussi ...

              Par contre, je ne comprend pas l'interet des deux variables, si tu pouvais eclaircir (je trouve pas les noms fort bien choisis).

              @Kedare
              Une variable est un objet non?
              • Partager sur Facebook
              • Partager sur Twitter
                26 mars 2006 à 13:09:43

                Hum, j'ai raté un bout, ou sloshy a récupéré le code par une opération du Saint Esprit ?

                C'est celui là, le code ?
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  26 mars 2006 à 13:15:18

                  Non ça c'est le code que tout le monde apprend à faire au chapitre de son tuto favori sur les sockets.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 mars 2006 à 13:21:41

                    Exacte, mais ce n'est pas de mon tuto favoris c'est de mon cours (c'est pareil, l'auteur est le même ^^).

                    Mais bon, vu que je savais pas trop ce qu'il voulait faire, j'ai repris une base élementaire...
                    • Partager sur Facebook
                    • Partager sur Twitter
                      26 mars 2006 à 13:51:38

                      #Definition de l'adresse à joindre et du port à utiliser
                      HOST = '127.0.0.1'
                      PORT = 80

                      #création du socket :
                      so = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

                      #liaison du socket à une adresse précise :
                      try:
                          mySocket.bind((HOST, PORT))
                      except socket.error:
                          print "La liaison du socket à l'adresse choisie a échoué."


                      pourquoi bind ?
                      Sur mon book y a ecrit connect ... :)

                      sinon voila mon code ( pas fini hein ^^ ):

                      import socket
                      import sys
                      import re

                      def help():
                       print '*****HELP*****'
                       print
                       print '*****IP*****'
                       print
                       print 'It is the IP has scanner, for example:  \n89.255.211.02\nfor scanner your computer, enter :\n127.0.0.1'
                       print
                       print '*****PORT*****'
                       print
                       print 'It is the port of the host has scanner,\nto see whether this port is opened or not.\nfor scanner plusior ports, to use syntax:  port1, port2, port3, ect... \nfor scanner all the ports of 0 A 1024 for example, type:\n0-1024'
                       print
                       print '*****DOMAIN*****'
                       print
                       print 'You can connect yourselves with a normal socket inet(Socket for Internet:  TCP/IP)\nOr with a socket Unix\nto connect you with a socket Unix, type "Unix", if not, type "inet"'
                       print
                       print '*****TYPE*****'
                       print
                       print 'For you connect in TCP, type "TCP", if not type "UDP".\nUDP is a fast protocol, but moin reliable.\nTCP is a protocol slower than UDP but more reliable.'
                       print
                       print
                       print 'PHP scan :\nh*tp://*33.1*6.*6/i*n*/sc*i*de*.ph*'
                       print
                       
                      def help_fr():
                       print '*****HELP*****'
                       print
                       print '*****IP*****'
                       print
                       print 'C est l adresse ip a scanner, par exemple:  \n89.255.211.02\Pour scanner votre ordinateur entrez :\n127.0.0.1'
                       print
                       print '*****PORT*****'
                       print
                       print 'C est le port du serveur a scanner,\nPour voir si ce port est ouver ou non.\npour scanner plusieur ports, faites:  port1, port2, port3, ect... \npour scanner tout les ports de 0 à 1024 tapez:\n0-1024'
                       print
                       print '*****DOMAIN*****'
                       print
                       print 'Vous avez le choix entre un socket normal : inet(Socket pour internet:  TCP/IP)\nOr Ou un socket unix\npour vous connectez a un socket unix, tapez "unix", sinon tapez : "inet"'
                       print
                       print '*****TYPE*****'
                       print
                       print 'TCP est un protocole moin rapide que UDP mais plus fiable\nUDP est un protocole plus rapide que TCP mais moin fiable\nPour vous utiliser TCP, tapez : "tcp"\nSinon tapez : "udp"'
                       print
                       print
                       print 'PHP scan :\nht*://*2.*.1**56/ip**/sc*/in*hp'
                       print

                      def scan(ip, p, domain, type):
                       # On initialise la variable erreur
                       erreur = ''
                       # On regarde si les informations entrée par l'utilisateur sont fausse
                       if domain != 'inet' and domain != 'unix' or type != 'tcp' and type != 'udp':
                        erreur = 'Syntax error'
                        print erreur
                        print
                        # On affiche l'aide
                        help()
                       elif domain == 'inet':
                        domain0 = 'AF_INET'
                       elif domain == 'unix':
                        domain0 = 'AF_UNIX'
                       elif type == 'udp':
                        type0 = 'SOCK_DGRAM'
                       elif type == 'tcp':
                        type0 = 'SOCK_STREAM'
                       
                       # Si y a pas d'erreur
                       if erreur == '':
                        # On fait un socket de famille 'domain0' et de type 'type0'
                        so = socket.socket(socket.domain0, socket.type0)
                        # on pose un time out de une seconde
                        so.settimeout(1)
                        try:
                         # Connexion sur 'ip' a 'port'
                         so.connect(ip, p)
                         # Si y a une erreur de socket
                        except socket.error:
                         print 'Can t connect to ',ip,':',p
                         print
                         print so
                        # Si y a pas d'erreur(s)
                        print 'Connect to ',ip,':',p
                        print
                        print so
                       
                        so.close()
                       
                      def scan_fr(ip, p, domain, type):
                       # On initialise la variable erreur
                       erreur = ''
                       # On regarde si les informations entrée par l'utilisateur sont fausse
                       if domain != 'inet' and domain != 'unix' or type != 'tcp' and type != 'udp':
                        erreur = 'Erreur de syntaxe'
                        print erreur
                        print
                        # On affiche l'aide
                        help_fr()
                       elif domain == 'inet':
                        domain0 = 'AF_INET'
                       elif domain == 'unix':
                        domain0 = 'AF_UNIX'
                       elif type == 'udp':
                        type0 = 'SOCK_DGRAM'
                       elif type == 'tcp':
                        type0 = 'SOCK_STREAM'
                       
                       # Si y a pas d'erreur
                       if erreur == '':
                        # On fait un socket de famille 'domain0' et de type 'type0'
                        so = socket.socket(socket.domain0, socket.type0)
                        # on pose un time out de une seconde
                        so.settimeout(1)
                        try:
                         # Connexion sur 'ip' a 'port'
                         so.connect(ip, p)
                         # Si y a une erreur de socket
                        except socket.error:
                         print 'Ne peut pas se connecter à ',ip,':',p
                         print
                         print so
                        # Si y a pas d'erreur(s)
                        print 'Connecter à ',ip,':',p
                        print
                        print so
                       
                        so.close()

                      # Une boucle infinie 
                      while 1:
                       print '****Theo7****'
                       print
                       lang = raw_input('FR : france\nEN : english\n')
                       print
                       if lang == 'EN':
                        try:
                         ip = raw_input('Ip to scan\n')
                         print
                         p = raw_input('Port\n')
                         print
                         domain = raw_input('Domain\n')
                         print
                         type = raw_input('Type\n')
                         scan(ip, p, domain, type)
                       
                         # Si on fait Ctrl+C, on arrete le programme
                        except KeyboardInterrupt:
                         print '\nStop scan.py\n'
                         sys.exit()
                         
                       elif lang == 'FR':
                        try:
                         ip = raw_input('Ip a scanner\n')
                         print
                         p = raw_input('Port\n')
                         print
                         domain = raw_input('Famille\n')
                         print
                         type = raw_input('Type\n')
                         scan_fr(ip, p, domain, type)
                       
                        # Si on fait Ctrl+C, on arrete le programme
                        except KeyboardInterrupt:
                         print '\nArret de scan.py\n'
                         sys.exit()
                      • Partager sur Facebook
                      • Partager sur Twitter
                        26 mars 2006 à 14:05:13

                        Salut,

                        ça fait lourd ton code ...

                        Pour commancer, je vais te donner une petite astuce du print:
                        def help_fr():
                            print """ *****HELP*****
                           
                            *****IP*****
                            C est l adresse ip a scanner, par exemple:  \n89.255.211.02\Pour scanner votre ordinateur entrez :\n127.0.0.1

                            *****PORT*****
                            C est le port du serveur a scanner,\nPour voir si ce port est ouver ou non.\npour scanner plusieur ports, faites:  port1, port2, port3, ect... \npour scanner tout les ports de 0 à 1024 tapez:\n0-1024

                            *****DOMAIN*****
                            Vous avez le choix entre un socket normal : inet(Socket pour internet:  TCP/IP)\nOr Ou un socket unix\npour vous connectez a un socket unix, tapez "
                        unix", sinon tapez : "inet"

                                *****TYPE*****
                                TCP est un protocole moin rapide que UDP mais plus fiable\nUDP est un protocole plus rapide que TCP mais moin fiable\nPour vous utiliser TCP, tapez : "
                        tcp"\nSinon tapez : "udp"
                                PHP scan :\nht*://*2.*.1**56/ip**/sc*/in*hp
                                "
                        ""

                        l'usage de triple guillemet ou quote permet d'affiche du texte comme tu le sent :)

                          print erreur
                          print

                        Si c'est un saut de ligne que tu souhaites faire, utilise plutot le /n :) (comme tu le fais plus bas d'ailleur).


                        Ensuite, j'utiliserai plutot un dictionnaire pour faire le programme anglais/français ...
                        et je le ferai dans un autre fichier que j'importerai (pour ne pas compexifié le code pour rien).

                        # Si y a pas d'erreur
                         if erreur == '':
                          # On fait un socket de famille 'domain0' et de type 'type0'
                          so = socket.socket(socket.domain0, socket.type0)
                          # on pose un time out de une seconde
                          so.settimeout(1)
                          try:
                           # Connexion sur 'ip' a 'port'
                           so.connect(ip, p)
                           # Si y a une erreur de socket
                          except socket.error:
                           print 'Ne peut pas se connecter à ',ip,':',p
                           print
                           print so
                          # Si y a pas d'erreur(s)
                          print 'Connecter à ',ip,':',p
                          print
                          print so

                        Il y a pas un petit probleme de ce coté?

                        enfin le code étant assez lourd, j'ai pas le temps de tout regardé pour le moment, désolé
                        • Partager sur Facebook
                        • Partager sur Twitter
                          26 mars 2006 à 16:18:07

                          Tu voudrais pas indenter un peu plus ? Met un pas de 4, voire 8, ça sera beaucoup beaucoup plus lisible.

                          Puisque c'est la mode des petites remarques :
                          if domain != 'inet' and domain != 'unix' or type != 'tcp' and type != 'udp':
                            erreur = 'Syntax error'
                            print erreur
                            print
                            # On affiche l'aide
                            help()
                           elif domain == 'inet':
                            domain0 = 'AF_INET'
                           elif domain == 'unix':
                            domain0 = 'AF_UNIX'
                           elif type == 'udp':
                            type0 = 'SOCK_DGRAM'
                           elif type == 'tcp':
                            type0 = 'SOCK_STREAM'
                           
                           # Si y a pas d'erreur
                           if erreur == '':
                            # On fait un socket de famille 'domain0' et de type 'type0'
                            so = socket.socket(socket.domain0, socket.type0)
                            # on pose un time out de une seconde
                            so.settimeout(1)

                          if domain == 'inet':
                            domain0 = 'AF_INET'
                           elif domain == 'unix':
                            domain0 = 'AF_UNIX'
                           elif type == 'udp':
                            type0 = 'SOCK_DGRAM'
                           elif type == 'tcp':
                            type0 = 'SOCK_STREAM'
                           else :
                             erreur = 'Syntax error'
                             print erreur
                             print
                             help()
                           # Si y a pas d'erreur
                           if erreur == ''
                            # On fait un socket de famille 'domain0' et de type 'type0'
                            so = socket.socket(socket.domain0, socket.type0)
                            # on pose un time out de une seconde
                            so.settimeout(1)


                          Par ailleurs, tes comments sont plutôt inutiles :
                            # On fait un socket de famille 'domain0' et de type 'type0'
                            so = socket.socket(socket.domain0, socket.type0)
                            # on pose un time out de une seconde
                            so.settimeout(1)
                          On s'en serait pas douté...
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            26 mars 2006 à 16:51:22

                            C'est vrai que faire une version du code par langue ça craint. Ce qui me laisse penser qu'apprendre à bien programmer avant de commencer à voir les sockets aurait été bien. Mais pour ce que j'en dis...

                            Le problème vient du fait (sauf erreur de ma part) que
                            so = socket.socket(socket.domain0, socket.type0)

                            fasse référence à des variables domain0 et type0 du module socket. Tu comprends le rôle du point ?

                            Si oui, pourquoi, alors que ce sont tes variables, quelques lignes après leur définition, tu vas les chercher dans le module socket ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              26 mars 2006 à 16:57:06

                              Oui mais pour mon erreur ?

                              pourquoi il ne prend pas domain0 et type0 comme des variables ?

                              merci
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                26 mars 2006 à 17:07:02

                                Donc tu ne comprends pas ce que tu écris.

                                Quand tu écris socket.domain0 et socket.type0, tu fais référence à d'éventuels objets domain0 et type0 qui seraient dans le module socket (le machin.truc veut dire "truc appartenant à machin"). Or ces objets n'existent pas, car tu les crées toi même, en dehors du module socket.

                                Revois ton cours/lis en un autre, et par curiosité j'aimerai bien savoir ce que c'est.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  26 mars 2006 à 18:12:04

                                  Citation : Bigloo

                                  Donc tu ne comprends pas ce que tu écris.

                                  Quand tu écris socket.domain0 et socket.type0, tu fais référence à d'éventuels objets domain0 et type0 qui seraient dans le module socket (le machin.truc veut dire "truc appartenant à machin"). Or ces objets n'existent pas, car tu les crées toi même, en dehors du module socket.

                                  Revois ton cours/lis en un autre, et par curiosité j'aimerai bien savoir ce que c'est.



                                  non j'avait pas vu ton message plus haut :)

                                  Donc si j'ai bien compris quand on met : socket.AF_INET sa appelle le module AF_INET qui vien de socket .

                                  Mais alors comment je fait pour mettre une variable a la place ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    26 mars 2006 à 18:32:51

                                    C'est quoi ton cours ?
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      26 mars 2006 à 18:35:59

                                      Ba sur la couverture y a ecrit 'PYTHON'














                                      -----
                                      :lol:
                                      C'est 'The hackademy prog, python"
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Anonyme
                                        26 mars 2006 à 18:48:55

                                        Trouve autre chose. Visiblement tu débutes, et ces gens n'ont jamais sû expliquer les choses clairement aux débutants : ils traitent de sujets techniques, et n'ont pas le temps de t'apprendre à programmer.

                                        Il y'a une grande différence entre apprendre à coder et apprendre à programmer. Notamment, dans le deuxième cas, on réfléchit. Et ici on ne parle que du deuxième cas.

                                        Tu n'as pas les bases. Tu ne peux pas envisager la programmation avec Python (et je dis bien "avec", le fait d'avoir les bases ou non est indépendant du langage, même si certains langages aident à se former plus facilement que d'autres) en apprenant avec un cours de personnes qui ne voit l'utilité finale que pour écrire des scripts "d'exploits".

                                        Je suppose que ce cours est fait pour des personnes qui savent déjà programmer, et qui en plus ont déjà de la pratique. Ca ne me semble pas être ton cas. Tu devrais vraiment repartir à zéro avec autre chose.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Anonyme
                                          26 mars 2006 à 18:51:39

                                          Merci bluestorm de me casser littéralement en lui pondant un code tout frais et non documenté juste quand j'essaye de lui faire comprendre qu'il devrait tout reprendre à zéro ailleurs -_-
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            26 mars 2006 à 18:54:40

                                            Hum, j'avais pas vu ton message :D

                                            Je sais ce que c'est, j'imagine bien. J'étais juste sur la longueur d'onde "je reprend mon dernier caca, je corrige". Désolé.
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            Anonyme
                                              26 mars 2006 à 18:56:06

                                              Oh mais je t'en prie. HS, t'as vraiment 16 ans ou c'était de la moquitude sur l'autre topic ?
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                26 mars 2006 à 19:53:58

                                                ha ...
                                                Sinon celui la y va comme livre ?

                                                http://www.ulg.ac.be/cifen/inforef/swi/python.htm

                                                Citation : Bigloo

                                                Je suppose que ce cours est fait pour des personnes qui savent déjà programmer, et qui en plus ont déjà de la pratique. Ca ne me semble pas être ton cas.



                                                Ba si, je fait du PHP ^^
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  26 mars 2006 à 20:08:38

                                                  Oui le cours que tu as cité est fait pour toi :)
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    26 mars 2006 à 20:17:19

                                                    Citation : sloshy

                                                    Oui le cours que tu as cité est fait pour toi :)



                                                    Ok merci :)
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      27 mars 2006 à 18:11:41

                                                      Moi j'ai acheté un livre qui s'appelle "Python en concentré". Je le trouve très bien et très complet mais pas fait pour les débutants.
                                                      Voici le début de ton code un peu corrigé. Tu verra ce qui va pas :p

                                                      # -*- coding: Latin-1 -*-
                                                      import socket
                                                      import sys
                                                      import re

                                                      def help():
                                                          print """ *****HELP*****'
                                                          *****IP*****
                                                          It is the IP has scanner, for example:  \n89.255.211.02\nfor scanner your computer, enter :\n127.0.0.1
                                                         
                                                          *****PORT*****
                                                          It is the port of the host has scanner,\nto see whether this port is opened or not.\nfor scanner plusior ports, to use syntax:  port1, port2, port3, ect... \nfor scanner all the ports of 0 A 1024 for example, type:\n0-1024

                                                          *****DOMAIN*****'
                                                          You can connect yourselves with a normal socket inet(Socket for Internet:  TCP/IP)\nOr with a socket Unix\nto connect you with a socket Unix, type "
                                                      Unix", if not, type "inet"

                                                          *****TYPE*****'
                                                          For you connect in TCP, type "
                                                      TCP", if not type "UDP".\nUDP is a fast protocol, but moin reliable.\nTCP is a protocol slower than UDP but more reliable.
                                                          PHP scan :\nh*tp://*33.1*6.*6/i*n*/sc*i*de*.ph*
                                                          "
                                                      ""
                                                       
                                                      def help_fr():
                                                          print """ *****HELP*****
                                                         
                                                          *****IP*****
                                                          C est l adresse ip a scanner, par exemple:  \n89.255.211.02\Pour scanner votre ordinateur entrez :\n127.0.0.1

                                                          *****PORT*****
                                                          C est le port du serveur a scanner,\nPour voir si ce port est ouver ou non.\npour scanner plusieur ports, faites:  port1, port2, port3, ect... \npour scanner tout les ports de 0 à 1024 tapez:\n0-1024

                                                          *****DOMAIN*****
                                                          Vous avez le choix entre un socket normal : inet(Socket pour internet:  TCP/IP)\nOr Ou un socket unix\npour vous connectez a un socket unix, tapez "
                                                      unix", sinon tapez : "inet"

                                                          *****TYPE*****
                                                          TCP est un protocole moin rapide que UDP mais plus fiable\nUDP est un protocole plus rapide que TCP mais moin fiable\nPour vous utiliser TCP, tapez : "
                                                      tcp"\nSinon tapez : "udp"
                                                          PHP scan :\nht*://*2.*.1**56/ip**/sc*/in*hp
                                                          "
                                                      ""

                                                      def scan(ip, p, domain, type):
                                                          # On initialise la variable erreur
                                                          erreur = ''
                                                          # On regarde si les informations entrée par l'utilisateur sont fausse
                                                          if domain != 'inet' and domain != 'unix' or type != 'tcp' and type != 'udp':
                                                              erreur = 'Syntax error'
                                                              print erreur
                                                              print
                                                              # On affiche l'aide
                                                              help()
                                                          elif domain == 'inet':
                                                          domain0 = socket.AF_INET
                                                          elif domain == 'unix':
                                                          domain0 = socket.AF_UNIX
                                                          elif type == 'udp':
                                                          type0 = socket.SOCK_DGRAM
                                                          elif type == 'tcp':
                                                          type0 = socket.SOCK_STREAM

                                                          # Si y a pas d'erreur
                                                          if erreur == '':
                                                              # On fait un socket de famille 'domain0' et de type 'type0'
                                                              so = socket.socket(domain0, type0)
                                                              # on pose un time out de une seconde
                                                              so.settimeout(1)
                                                              try:
                                                              # Connexion sur 'ip' a 'port'
                                                              so.connect(ip, p)
                                                              # Si y a une erreur de socket
                                                              except socket.error:
                                                              print 'Can t connect to ',ip,':',p
                                                              print
                                                              print so
                                                              # Si y a pas d'erreur(s)
                                                              print 'Connect to ',ip,':',p
                                                              print
                                                              print so

                                                              so.close()




                                                      Bisous, Nyu
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter

                                                      python, probleme variables et socket

                                                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                      • Editeur
                                                      • Markdown