bonjour,
j'ai écrit ce script sur windows

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
#! /usr/bin/python
# -*- coding: iso8859-1 -*
 
from socket import *
 
import socket
port=6666
host=''
 
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((host,port))
s.listen(2)
print "vous etes bien connecte sur le port %d, Ctrl-C pour quitter"%port
 
while 1:
     clsock,claddr=s.accept()
     clfile=clsock.makefile('rw',0)
     clfile.write("entrez le pass : ")
     mot=clfile.readline().strip()
 
     if mot =="root":
         from code import InteractiveConsole
         import code, sys,os, string
         os.dup2(clfile.fileno(),0)
         os.dup2(clfile.fileno(),1)
         os.dup2(clfile.fileno(),2)
         code.interact()
         sys.exit()
 
     clfile.write("vous avez entre un mot de %d caracteres"%len(mot))
     clfile.close()
     clsock.close()
J'arrive bien à me connecter avec telnet mais dès lors qu'il interprète les lignes avec dup2 cela provoque une erreur:

vous etes bien connecte sur le port 6666, Ctrl-C pour quitter
Traceback (most recent call last):
File "C:\Users\jose\Desktop\python\module1.py", line 24, in <module>
os.dup2(clfile.fileno(),0)
OSError: [Errno 9] Bad file descriptor

Le but est de rediriger la sortie standard erreur et clavier, j'ai déjà testé avec
os.dup2(clfile.fileno(),sys.stdin.fileno()) mais fonctionne pas non plus