Partage
  • Partager sur Facebook
  • Partager sur Twitter

faire communiquer petit programme avec les socks

    13 mars 2015 à 18:48:28

    salut à tous, 

    je suis les cours de python et le professeur à mis à notre disposition un petit programme qui permet de faire communiquer deux shell grace aux socks:

    serveur

    import socket
    
    hote = ''
    port = 12800
    
    connexion_principale = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    connexion_principale.bind((hote, port))
    connexion_principale.listen(5)
    print("Le serveur écoute à présent sur le port {}".format(port))
    
    connexion_avec_client, infos_connexion = connexion_principale.accept()
    
    msg_recu = b""
    while msg_recu != b"fin":
        msg_recu = connexion_avec_client.recv(1024)
        # L'instruction ci-dessous peut lever une exception si le message
        # Réceptionné comporte des accents
        print(msg_recu.decode())
        connexion_avec_client.send(b"5 / 5")
    
    print("Fermeture de la connexion")
    connexion_avec_client.close()
    connexion_principale.close()

    client:

    import socket
    
    hote = "localhost"
    port = 12800
    
    connexion_avec_serveur = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    connexion_avec_serveur.connect((hote, port))
    print("Connexion établie avec le serveur sur le port {}".format(port))
    
    msg_a_envoyer = b""
    while msg_a_envoyer != b"fin":
        msg_a_envoyer = input("> ")
        # Peut planter si vous tapez des caractères spéciaux
        msg_a_envoyer = msg_a_envoyer.encode()
        # On envoie le message
        connexion_avec_serveur.send(msg_a_envoyer)
        msg_recu = connexion_avec_serveur.recv(1024)
        print(msg_recu.decode()) # Là encore, peut planter s'il y a des accents
    
    print("Fermeture de la connexion")
    connexion_avec_serveur.close()

    Très très basique du coup j'aimerais voir plus grand et faire communiquer les deux script à travers internet par exemple j'ouvre le client avec l'adresse ip publique xxx.xxx.xxx.xxx j'envoie un msg et que mon serveur reçoive le msg du client . 

    J'ai activé le port forwarding :

    Donc en gros j'aimerais au lieu de mettre localhost mettre une ip publique pour que mon msg sorte de ma box. Bien sur quand je veux me connecter au serveur depuis le client cela marque connexion a échoué car l'hote n'a pas répondu

    merci à tous

    • Partager sur Facebook
    • Partager sur Twitter
      13 mars 2015 à 23:50:07

      Bien sur quand je veux me connecter au serveur depuis le client cela marque connexion a échoué car l'hote n'a pas répondu

      Pourquoi "bien sûr" ?

      Si le port du routeur est redirigé vers la bonne machine, sur le port écouté par le serveur, il n'y a strictement aucune raison qu'un client ne puisse pas établir une connexion sur l'ip publique du routeur au port en question.

      À moins que les connexions TCP entrantes sur ce port soient bloquées par un firewall sur la machine du serveur.

      • Partager sur Facebook
      • Partager sur Twitter
      Zeste de Savoir, le site qui en a dans le citron !
        14 mars 2015 à 13:12:05

        nohar a écrit:

        Bien sur quand je veux me connecter au serveur depuis le client cela marque connexion a échoué car l'hote n'a pas répondu

        Pourquoi "bien sûr" ?

        Si le port du routeur est redirigé vers la bonne machine, sur le port écouté par le serveur, il n'y a strictement aucune raison qu'un client ne puisse pas établir une connexion sur l'ip publique du routeur au port en question.

        À moins que les connexions TCP entrantes sur ce port soient bloquées par un firewall sur la machine du serveur.


        Bien sur c'était pour marqué mon agacement, j'ai redirigé toute les connexion venant sur le port 12800 de mon routeur pour qu'ils arrivent directement sur mon pc 192.168.1.72:12800 mais bizarrement  je ne recois aucun paquet quand je me connecte avec le client ..

        De plus le fw est désactivé quand j'essaie

        -
        Edité par switch313 14 mars 2015 à 13:17:46

        • Partager sur Facebook
        • Partager sur Twitter
          14 mars 2015 à 14:07:13

          Sous quel système d'exploitation travailles-tu ?

          Ça ne ressemble pas à un problème de code.

          • Partager sur Facebook
          • Partager sur Twitter
          Zeste de Savoir, le site qui en a dans le citron !
            14 mars 2015 à 14:33:14

            nohar a écrit:

            Sous quel système d'exploitation travailles-tu ?

            Ça ne ressemble pas à un problème de code.


            Je suis actuellement sous win7 mais je peux passer sous linux dans le besoin. Non le code est bon c'est sur mais je crois que j'ai pas pris en compte le fait que mon serveur va répondre à l'adresse publique vers le port 12800 et donc le paquet reviendra forcément vers le serveur. Je vais rediriger la réponse vers 12801 qui sera dirigé vers le client

            edit: Je vois pas comment redirigé la réponse du serveur sur le port 1112 au lieu de 1111

            -
            Edité par switch313 14 mars 2015 à 14:42:44

            • Partager sur Facebook
            • Partager sur Twitter

            faire communiquer petit programme avec les socks

            × 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