SILENT KILLERPanel

Current Path: > > lib64 > python2.7


Operation   : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //lib64/python2.7

NameTypeSizeLast ModifiedActions
Demo Directory - -
Doc Directory - -
Tools Directory - -
bsddb Directory - -
compiler Directory - -
config Directory - -
ctypes Directory - -
curses Directory - -
distutils Directory - -
email Directory - -
encodings Directory - -
ensurepip Directory - -
hotshot Directory - -
idlelib Directory - -
importlib Directory - -
json Directory - -
lib-dynload Directory - -
lib-tk Directory - -
lib2to3 Directory - -
logging Directory - -
multiprocessing Directory - -
plat-linux2 Directory - -
pydoc_data Directory - -
site-packages Directory - -
sqlite3 Directory - -
test Directory - -
unittest Directory - -
wsgiref Directory - -
xml Directory - -
BaseHTTPServer.py File 22747 bytes April 10 2024 04:58:34.
BaseHTTPServer.pyc File 21722 bytes April 10 2024 04:58:47.
BaseHTTPServer.pyo File 21722 bytes April 10 2024 04:58:47.
Bastion.py File 5744 bytes April 10 2024 04:58:34.
Bastion.pyc File 6660 bytes April 10 2024 04:58:47.
Bastion.pyo File 6660 bytes April 10 2024 04:58:47.
CGIHTTPServer.py File 13089 bytes April 10 2024 04:58:34.
CGIHTTPServer.pyc File 11018 bytes April 10 2024 04:58:47.
CGIHTTPServer.pyo File 11018 bytes April 10 2024 04:58:47.
ConfigParser.py File 27746 bytes April 10 2024 04:58:34.
ConfigParser.pyc File 25213 bytes April 10 2024 04:58:47.
ConfigParser.pyo File 25213 bytes April 10 2024 04:58:47.
Cookie.py File 26538 bytes April 10 2024 04:58:34.
Cookie.pyc File 22658 bytes April 10 2024 04:58:47.
Cookie.pyo File 22658 bytes April 10 2024 04:58:47.
DocXMLRPCServer.py File 10768 bytes April 10 2024 04:58:34.
DocXMLRPCServer.pyc File 10195 bytes April 10 2024 04:58:47.
DocXMLRPCServer.pyo File 10086 bytes April 10 2024 04:58:44.
HTMLParser.py File 17171 bytes April 10 2024 04:58:34.
HTMLParser.pyc File 13727 bytes April 10 2024 04:58:47.
HTMLParser.pyo File 13422 bytes April 10 2024 04:58:44.
MimeWriter.py File 6482 bytes April 10 2024 04:58:34.
MimeWriter.pyc File 7364 bytes April 10 2024 04:58:47.
MimeWriter.pyo File 7364 bytes April 10 2024 04:58:47.
Queue.py File 8577 bytes April 10 2024 04:58:34.
Queue.pyc File 9424 bytes April 10 2024 04:58:47.
Queue.pyo File 9424 bytes April 10 2024 04:58:47.
SimpleHTTPServer.py File 7997 bytes April 10 2024 04:58:34.
SimpleHTTPServer.pyc File 8010 bytes April 10 2024 04:58:47.
SimpleHTTPServer.pyo File 8010 bytes April 10 2024 04:58:47.
SimpleXMLRPCServer.py File 25812 bytes April 10 2024 04:58:34.
SimpleXMLRPCServer.pyc File 22863 bytes April 10 2024 04:58:47.
SimpleXMLRPCServer.pyo File 22863 bytes April 10 2024 04:58:47.
SocketServer.py File 23948 bytes April 10 2024 04:58:34.
SocketServer.pyc File 24087 bytes April 10 2024 04:58:47.
SocketServer.pyo File 24087 bytes April 10 2024 04:58:47.
StringIO.py File 10662 bytes April 10 2024 04:58:34.
StringIO.pyc File 11480 bytes April 10 2024 04:58:47.
StringIO.pyo File 11480 bytes April 10 2024 04:58:47.
UserDict.py File 7060 bytes April 10 2024 04:58:34.
UserDict.pyc File 9711 bytes April 10 2024 04:58:47.
UserDict.pyo File 9711 bytes April 10 2024 04:58:47.
UserList.py File 3644 bytes April 10 2024 04:58:34.
UserList.pyc File 6577 bytes April 10 2024 04:58:47.
UserList.pyo File 6577 bytes April 10 2024 04:58:47.
UserString.py File 9687 bytes April 10 2024 04:58:34.
UserString.pyc File 14864 bytes April 10 2024 04:58:47.
UserString.pyo File 14864 bytes April 10 2024 04:58:47.
_LWPCookieJar.py File 6553 bytes April 10 2024 04:58:34.
_LWPCookieJar.pyc File 5434 bytes April 10 2024 04:58:47.
_LWPCookieJar.pyo File 5434 bytes April 10 2024 04:58:47.
_MozillaCookieJar.py File 5797 bytes April 10 2024 04:58:34.
_MozillaCookieJar.pyc File 4461 bytes April 10 2024 04:58:47.
_MozillaCookieJar.pyo File 4422 bytes April 10 2024 04:58:44.
__future__.py File 4380 bytes April 10 2024 04:58:34.
__future__.pyc File 4223 bytes April 10 2024 04:58:47.
__future__.pyo File 4223 bytes April 10 2024 04:58:47.
__phello__.foo.py File 64 bytes April 10 2024 04:58:34.
__phello__.foo.pyc File 125 bytes April 10 2024 04:58:47.
__phello__.foo.pyo File 125 bytes April 10 2024 04:58:47.
_abcoll.py File 18619 bytes April 10 2024 04:58:34.
_abcoll.pyc File 25682 bytes April 10 2024 04:58:47.
_abcoll.pyo File 25682 bytes April 10 2024 04:58:47.
_osx_support.py File 19100 bytes April 10 2024 04:58:34.
_osx_support.pyc File 11758 bytes April 10 2024 04:58:47.
_osx_support.pyo File 11758 bytes April 10 2024 04:58:47.
_pyio.py File 69630 bytes April 10 2024 04:58:34.
_pyio.pyc File 64701 bytes April 10 2024 04:58:47.
_pyio.pyo File 64701 bytes April 10 2024 04:58:47.
_strptime.py File 20728 bytes April 10 2024 04:58:34.
_strptime.pyc File 15172 bytes April 10 2024 04:58:47.
_strptime.pyo File 15172 bytes April 10 2024 04:58:47.
_sysconfigdata.py File 19732 bytes April 10 2024 04:58:34.
_sysconfigdata.pyc File 22968 bytes April 10 2024 04:58:46.
_sysconfigdata.pyo File 22968 bytes April 10 2024 04:58:46.
_threading_local.py File 7260 bytes April 10 2024 04:58:34.
_threading_local.pyc File 6373 bytes April 10 2024 04:58:47.
_threading_local.pyo File 6373 bytes April 10 2024 04:58:47.
_weakrefset.py File 5911 bytes April 10 2024 04:58:34.
_weakrefset.pyc File 9678 bytes April 10 2024 04:58:47.
_weakrefset.pyo File 9678 bytes April 10 2024 04:58:47.
abc.py File 7145 bytes April 10 2024 04:58:34.
abc.pyc File 6143 bytes April 10 2024 04:58:47.
abc.pyo File 6087 bytes April 10 2024 04:58:44.
aifc.py File 34579 bytes April 10 2024 04:58:34.
aifc.pyc File 30459 bytes April 10 2024 04:58:47.
aifc.pyo File 30459 bytes April 10 2024 04:58:47.
antigravity.py File 60 bytes April 10 2024 04:58:34.
antigravity.pyc File 203 bytes April 10 2024 04:58:47.
antigravity.pyo File 203 bytes April 10 2024 04:58:47.
anydbm.py File 2663 bytes April 10 2024 04:58:34.
anydbm.pyc File 2800 bytes April 10 2024 04:58:47.
anydbm.pyo File 2800 bytes April 10 2024 04:58:47.
argparse.py File 89228 bytes April 10 2024 04:58:34.
argparse.pyc File 64367 bytes April 10 2024 04:58:47.
argparse.pyo File 64202 bytes April 10 2024 04:58:44.
ast.py File 11805 bytes April 10 2024 04:58:34.
ast.pyc File 12938 bytes April 10 2024 04:58:47.
ast.pyo File 12938 bytes April 10 2024 04:58:47.
asynchat.py File 11581 bytes April 10 2024 04:58:34.
asynchat.pyc File 8810 bytes April 10 2024 04:58:47.
asynchat.pyo File 8810 bytes April 10 2024 04:58:47.
asyncore.py File 20943 bytes April 10 2024 04:58:34.
asyncore.pyc File 18893 bytes April 10 2024 04:58:47.
asyncore.pyo File 18893 bytes April 10 2024 04:58:47.
atexit.py File 1705 bytes April 10 2024 04:58:34.
atexit.pyc File 2203 bytes April 10 2024 04:58:47.
atexit.pyo File 2203 bytes April 10 2024 04:58:47.
audiodev.py File 7597 bytes April 10 2024 04:58:34.
audiodev.pyc File 8469 bytes April 10 2024 04:58:47.
audiodev.pyo File 8469 bytes April 10 2024 04:58:47.
base64.py File 11806 bytes April 10 2024 04:58:34.
base64.pyc File 11297 bytes April 10 2024 04:58:47.
base64.pyo File 11297 bytes April 10 2024 04:58:47.
bdb.py File 21714 bytes April 10 2024 04:58:34.
bdb.pyc File 19101 bytes April 10 2024 04:58:47.
bdb.pyo File 19101 bytes April 10 2024 04:58:47.
binhex.py File 14698 bytes April 10 2024 04:58:34.
binhex.pyc File 15460 bytes April 10 2024 04:58:47.
binhex.pyo File 15460 bytes April 10 2024 04:58:47.
bisect.py File 2595 bytes April 10 2024 04:58:34.
bisect.pyc File 3071 bytes April 10 2024 04:58:47.
bisect.pyo File 3071 bytes April 10 2024 04:58:47.
cProfile.py File 6573 bytes April 10 2024 04:58:34.
cProfile.pyc File 6395 bytes April 10 2024 04:58:47.
cProfile.pyo File 6395 bytes April 10 2024 04:58:47.
calendar.py File 23384 bytes April 10 2024 04:58:34.
calendar.pyc File 27913 bytes April 10 2024 04:58:47.
calendar.pyo File 27913 bytes April 10 2024 04:58:47.
cgi.py File 36308 bytes April 10 2024 04:58:34.
cgi.pyc File 33366 bytes April 10 2024 04:58:47.
cgi.pyo File 33366 bytes April 10 2024 04:58:47.
cgitb.py File 12175 bytes April 10 2024 04:58:34.
cgitb.pyc File 12138 bytes April 10 2024 04:58:47.
cgitb.pyo File 12138 bytes April 10 2024 04:58:47.
chunk.py File 5419 bytes April 10 2024 04:58:34.
chunk.pyc File 5602 bytes April 10 2024 04:58:47.
chunk.pyo File 5602 bytes April 10 2024 04:58:47.
cmd.py File 15026 bytes April 10 2024 04:58:34.
cmd.pyc File 14039 bytes April 10 2024 04:58:47.
cmd.pyo File 14039 bytes April 10 2024 04:58:47.
code.py File 10189 bytes April 10 2024 04:58:34.
code.pyc File 10334 bytes April 10 2024 04:58:47.
code.pyo File 10334 bytes April 10 2024 04:58:47.
codecs.py File 36143 bytes April 10 2024 04:58:34.
codecs.pyc File 36824 bytes April 10 2024 04:58:47.
codecs.pyo File 36824 bytes April 10 2024 04:58:47.
codeop.py File 5999 bytes April 10 2024 04:58:34.
codeop.pyc File 6597 bytes April 10 2024 04:58:47.
codeop.pyo File 6597 bytes April 10 2024 04:58:47.
collections.py File 27798 bytes April 10 2024 04:58:34.
collections.pyc File 26163 bytes April 10 2024 04:58:47.
collections.pyo File 26112 bytes April 10 2024 04:58:44.
colorsys.py File 3691 bytes April 10 2024 04:58:34.
colorsys.pyc File 3991 bytes April 10 2024 04:58:47.
colorsys.pyo File 3991 bytes April 10 2024 04:58:47.
commands.py File 2545 bytes April 10 2024 04:58:34.
commands.pyc File 2469 bytes April 10 2024 04:58:47.
commands.pyo File 2469 bytes April 10 2024 04:58:47.
compileall.py File 7763 bytes April 10 2024 04:58:34.
compileall.pyc File 7017 bytes April 10 2024 04:58:47.
compileall.pyo File 7017 bytes April 10 2024 04:58:47.
contextlib.py File 4424 bytes April 10 2024 04:58:34.
contextlib.pyc File 4454 bytes April 10 2024 04:58:47.
contextlib.pyo File 4454 bytes April 10 2024 04:58:47.
cookielib.py File 65486 bytes April 10 2024 04:58:34.
cookielib.pyc File 54725 bytes April 10 2024 04:58:47.
cookielib.pyo File 54537 bytes April 10 2024 04:58:44.
copy.py File 11533 bytes April 10 2024 04:58:34.
copy.pyc File 12170 bytes April 10 2024 04:58:47.
copy.pyo File 12078 bytes April 10 2024 04:58:44.
copy_reg.py File 6974 bytes April 10 2024 04:58:34.
copy_reg.pyc File 5167 bytes April 10 2024 04:58:47.
copy_reg.pyo File 5123 bytes April 10 2024 04:58:44.
crypt.py File 2292 bytes April 10 2024 04:58:34.
crypt.pyc File 2960 bytes April 10 2024 04:58:47.
crypt.pyo File 2960 bytes April 10 2024 04:58:47.
csv.py File 16708 bytes April 10 2024 04:58:34.
csv.pyc File 13507 bytes April 10 2024 04:58:47.
csv.pyo File 13507 bytes April 10 2024 04:58:47.
dbhash.py File 498 bytes April 10 2024 04:58:34.
dbhash.pyc File 718 bytes April 10 2024 04:58:47.
dbhash.pyo File 718 bytes April 10 2024 04:58:47.
decimal.py File 221933 bytes April 10 2024 04:58:34.
decimal.pyc File 172155 bytes April 10 2024 04:58:47.
decimal.pyo File 172155 bytes April 10 2024 04:58:47.
difflib.py File 82325 bytes April 10 2024 04:58:34.
difflib.pyc File 61898 bytes April 10 2024 04:58:47.
difflib.pyo File 61847 bytes April 10 2024 04:58:44.
dircache.py File 1126 bytes April 10 2024 04:58:34.
dircache.pyc File 1576 bytes April 10 2024 04:58:47.
dircache.pyo File 1576 bytes April 10 2024 04:58:47.
dis.py File 6499 bytes April 10 2024 04:58:34.
dis.pyc File 6228 bytes April 10 2024 04:58:47.
dis.pyo File 6228 bytes April 10 2024 04:58:47.
doctest.py File 105095 bytes April 10 2024 04:58:34.
doctest.pyc File 83637 bytes April 10 2024 04:58:47.
doctest.pyo File 83350 bytes April 10 2024 04:58:44.
dumbdbm.py File 9141 bytes April 10 2024 04:58:34.
dumbdbm.pyc File 6746 bytes April 10 2024 04:58:47.
dumbdbm.pyo File 6746 bytes April 10 2024 04:58:47.
dummy_thread.py File 4418 bytes April 10 2024 04:58:34.
dummy_thread.pyc File 5394 bytes April 10 2024 04:58:47.
dummy_thread.pyo File 5394 bytes April 10 2024 04:58:47.
dummy_threading.py File 2804 bytes April 10 2024 04:58:34.
dummy_threading.pyc File 1285 bytes April 10 2024 04:58:47.
dummy_threading.pyo File 1285 bytes April 10 2024 04:58:47.
filecmp.py File 9588 bytes April 10 2024 04:58:34.
filecmp.pyc File 9622 bytes April 10 2024 04:58:47.
filecmp.pyo File 9622 bytes April 10 2024 04:58:47.
fileinput.py File 13746 bytes April 10 2024 04:58:34.
fileinput.pyc File 14500 bytes April 10 2024 04:58:47.
fileinput.pyo File 14500 bytes April 10 2024 04:58:47.
fnmatch.py File 3315 bytes April 10 2024 04:58:34.
fnmatch.pyc File 3614 bytes April 10 2024 04:58:47.
fnmatch.pyo File 3614 bytes April 10 2024 04:58:47.
formatter.py File 14911 bytes April 10 2024 04:58:34.
formatter.pyc File 19178 bytes April 10 2024 04:58:47.
formatter.pyo File 19178 bytes April 10 2024 04:58:47.
fpformat.py File 4732 bytes April 10 2024 04:58:34.
fpformat.pyc File 4703 bytes April 10 2024 04:58:47.
fpformat.pyo File 4703 bytes April 10 2024 04:58:47.
fractions.py File 22390 bytes April 10 2024 04:58:34.
fractions.pyc File 19711 bytes April 10 2024 04:58:47.
fractions.pyo File 19711 bytes April 10 2024 04:58:47.
ftplib.py File 38555 bytes April 10 2024 04:58:34.
ftplib.pyc File 34939 bytes April 10 2024 04:58:47.
ftplib.pyo File 34939 bytes April 10 2024 04:58:47.
functools.py File 4806 bytes April 10 2024 04:58:34.
functools.pyc File 6629 bytes April 10 2024 04:58:47.
functools.pyo File 6629 bytes April 10 2024 04:58:47.
genericpath.py File 3201 bytes April 10 2024 04:58:34.
genericpath.pyc File 3517 bytes April 10 2024 04:58:47.
genericpath.pyo File 3517 bytes April 10 2024 04:58:47.
getopt.py File 7319 bytes April 10 2024 04:58:34.
getopt.pyc File 6654 bytes April 10 2024 04:58:47.
getopt.pyo File 6609 bytes April 10 2024 04:58:44.
getpass.py File 5563 bytes April 10 2024 04:58:34.
getpass.pyc File 4744 bytes April 10 2024 04:58:47.
getpass.pyo File 4744 bytes April 10 2024 04:58:47.
gettext.py File 22666 bytes April 10 2024 04:58:34.
gettext.pyc File 18004 bytes April 10 2024 04:58:47.
gettext.pyo File 18004 bytes April 10 2024 04:58:47.
glob.py File 3114 bytes April 10 2024 04:58:34.
glob.pyc File 2943 bytes April 10 2024 04:58:47.
glob.pyo File 2943 bytes April 10 2024 04:58:47.
gzip.py File 19028 bytes April 10 2024 04:58:34.
gzip.pyc File 15236 bytes April 10 2024 04:58:47.
gzip.pyo File 15236 bytes April 10 2024 04:58:47.
hashlib.py File 7841 bytes April 10 2024 04:58:34.
hashlib.pyc File 6919 bytes April 10 2024 04:58:47.
hashlib.pyo File 6919 bytes April 10 2024 04:58:47.
heapq.py File 18295 bytes April 10 2024 04:58:34.
heapq.pyc File 14564 bytes April 10 2024 04:58:47.
heapq.pyo File 14564 bytes April 10 2024 04:58:47.
hmac.py File 4588 bytes April 10 2024 04:58:34.
hmac.pyc File 4542 bytes April 10 2024 04:58:47.
hmac.pyo File 4542 bytes April 10 2024 04:58:47.
htmlentitydefs.py File 18056 bytes April 10 2024 04:58:34.
htmlentitydefs.pyc File 6367 bytes April 10 2024 04:58:47.
htmlentitydefs.pyo File 6367 bytes April 10 2024 04:58:47.
htmllib.py File 12869 bytes April 10 2024 04:58:34.
htmllib.pyc File 20309 bytes April 10 2024 04:58:47.
htmllib.pyo File 20309 bytes April 10 2024 04:58:47.
httplib.py File 53306 bytes April 10 2024 04:58:34.
httplib.pyc File 38724 bytes April 10 2024 04:58:47.
httplib.pyo File 38540 bytes April 10 2024 04:58:44.
ihooks.py File 18986 bytes April 10 2024 04:58:34.
ihooks.pyc File 21372 bytes April 10 2024 04:58:47.
ihooks.pyo File 21372 bytes April 10 2024 04:58:47.
imaplib.py File 48366 bytes April 10 2024 04:58:34.
imaplib.pyc File 45011 bytes April 10 2024 04:58:47.
imaplib.pyo File 42310 bytes April 10 2024 04:58:44.
imghdr.py File 3541 bytes April 10 2024 04:58:34.
imghdr.pyc File 4838 bytes April 10 2024 04:58:47.
imghdr.pyo File 4838 bytes April 10 2024 04:58:47.
imputil.py File 25764 bytes April 10 2024 04:58:34.
imputil.pyc File 15623 bytes April 10 2024 04:58:47.
imputil.pyo File 15445 bytes April 10 2024 04:58:44.
inspect.py File 43008 bytes April 10 2024 04:58:34.
inspect.pyc File 40229 bytes April 10 2024 04:58:47.
inspect.pyo File 40229 bytes April 10 2024 04:58:47.
io.py File 3322 bytes April 10 2024 04:58:34.
io.pyc File 3589 bytes April 10 2024 04:58:47.
io.pyo File 3589 bytes April 10 2024 04:58:47.
keyword.py File 1995 bytes April 10 2024 04:58:34.
keyword.pyc File 2105 bytes April 10 2024 04:58:47.
keyword.pyo File 2105 bytes April 10 2024 04:58:47.
linecache.py File 4027 bytes April 10 2024 04:58:34.
linecache.pyc File 3272 bytes April 10 2024 04:58:47.
linecache.pyo File 3272 bytes April 10 2024 04:58:47.
locale.py File 102834 bytes April 10 2024 04:58:34.
locale.pyc File 56610 bytes April 10 2024 04:58:47.
locale.pyo File 56610 bytes April 10 2024 04:58:47.
macpath.py File 6289 bytes April 10 2024 04:58:34.
macpath.pyc File 7681 bytes April 10 2024 04:58:47.
macpath.pyo File 7681 bytes April 10 2024 04:58:47.
macurl2path.py File 2731 bytes April 10 2024 04:58:34.
macurl2path.pyc File 2244 bytes April 10 2024 04:58:47.
macurl2path.pyo File 2244 bytes April 10 2024 04:58:47.
mailbox.py File 81240 bytes April 10 2024 04:58:34.
mailbox.pyc File 76717 bytes April 10 2024 04:58:47.
mailbox.pyo File 76670 bytes April 10 2024 04:58:44.
mailcap.py File 8404 bytes April 10 2024 04:58:34.
mailcap.pyc File 7955 bytes April 10 2024 04:58:47.
mailcap.pyo File 7955 bytes April 10 2024 04:58:47.
markupbase.py File 14643 bytes April 10 2024 04:58:34.
markupbase.pyc File 9267 bytes April 10 2024 04:58:47.
markupbase.pyo File 9071 bytes April 10 2024 04:58:44.
md5.py File 358 bytes April 10 2024 04:58:34.
md5.pyc File 378 bytes April 10 2024 04:58:47.
md5.pyo File 378 bytes April 10 2024 04:58:47.
mhlib.py File 33434 bytes April 10 2024 04:58:34.
mhlib.pyc File 33777 bytes April 10 2024 04:58:47.
mhlib.pyo File 33777 bytes April 10 2024 04:58:47.
mimetools.py File 7168 bytes April 10 2024 04:58:34.
mimetools.pyc File 8201 bytes April 10 2024 04:58:47.
mimetools.pyo File 8201 bytes April 10 2024 04:58:47.
mimetypes.py File 21028 bytes April 10 2024 04:58:34.
mimetypes.pyc File 18489 bytes April 10 2024 04:58:47.
mimetypes.pyo File 18489 bytes April 10 2024 04:58:47.
mimify.py File 15020 bytes April 10 2024 04:58:34.
mimify.pyc File 12001 bytes April 10 2024 04:58:47.
mimify.pyo File 12001 bytes April 10 2024 04:58:47.
modulefinder.py File 24461 bytes April 10 2024 04:58:34.
modulefinder.pyc File 19127 bytes April 10 2024 04:58:47.
modulefinder.pyo File 19045 bytes April 10 2024 04:58:44.
multifile.py File 4820 bytes April 10 2024 04:58:34.
multifile.pyc File 5420 bytes April 10 2024 04:58:47.
multifile.pyo File 5378 bytes April 10 2024 04:58:44.
mutex.py File 1878 bytes April 10 2024 04:58:34.
mutex.pyc File 2516 bytes April 10 2024 04:58:47.
mutex.pyo File 2516 bytes April 10 2024 04:58:47.
netrc.py File 5888 bytes April 10 2024 04:58:34.
netrc.pyc File 4714 bytes April 10 2024 04:58:47.
netrc.pyo File 4714 bytes April 10 2024 04:58:47.
new.py File 610 bytes April 10 2024 04:58:34.
new.pyc File 862 bytes April 10 2024 04:58:47.
new.pyo File 862 bytes April 10 2024 04:58:47.
nntplib.py File 21470 bytes April 10 2024 04:58:34.
nntplib.pyc File 21044 bytes April 10 2024 04:58:47.
nntplib.pyo File 21044 bytes April 10 2024 04:58:47.
ntpath.py File 19429 bytes April 10 2024 04:58:34.
ntpath.pyc File 13129 bytes April 10 2024 04:58:47.
ntpath.pyo File 13129 bytes April 10 2024 04:58:47.
nturl2path.py File 2419 bytes April 10 2024 04:58:34.
nturl2path.pyc File 1815 bytes April 10 2024 04:58:47.
nturl2path.pyo File 1815 bytes April 10 2024 04:58:47.
numbers.py File 10319 bytes April 10 2024 04:58:34.
numbers.pyc File 14012 bytes April 10 2024 04:58:47.
numbers.pyo File 14012 bytes April 10 2024 04:58:47.
opcode.py File 5474 bytes April 10 2024 04:58:34.
opcode.pyc File 6145 bytes April 10 2024 04:58:47.
opcode.pyo File 6145 bytes April 10 2024 04:58:47.
optparse.py File 61203 bytes April 10 2024 04:58:34.
optparse.pyc File 53894 bytes April 10 2024 04:58:47.
optparse.pyo File 53811 bytes April 10 2024 04:58:44.
os.py File 25910 bytes April 10 2024 04:58:34.
os.pyc File 25689 bytes April 10 2024 04:58:47.
os.pyo File 25689 bytes April 10 2024 04:58:47.
os2emxpath.py File 4635 bytes April 10 2024 04:58:34.
os2emxpath.pyc File 4525 bytes April 10 2024 04:58:47.
os2emxpath.pyo File 4525 bytes April 10 2024 04:58:47.
pdb.doc File 7914 bytes April 10 2024 04:58:34.
pdb.py File 46098 bytes April 10 2024 04:58:34.
pdb.pyc File 43669 bytes April 10 2024 04:58:47.
pdb.pyo File 43669 bytes April 10 2024 04:58:47.
pickle.py File 45489 bytes April 10 2024 04:58:34.
pickle.pyc File 38560 bytes April 10 2024 04:58:47.
pickle.pyo File 38364 bytes April 10 2024 04:58:44.
pickletools.py File 74523 bytes April 10 2024 04:58:34.
pickletools.pyc File 57032 bytes April 10 2024 04:58:46.
pickletools.pyo File 56171 bytes April 10 2024 04:58:44.
pipes.py File 9582 bytes April 10 2024 04:58:34.
pipes.pyc File 9308 bytes April 10 2024 04:58:46.
pipes.pyo File 9308 bytes April 10 2024 04:58:46.
pkgutil.py File 20243 bytes April 10 2024 04:58:34.
pkgutil.pyc File 18959 bytes April 10 2024 04:58:46.
pkgutil.pyo File 18959 bytes April 10 2024 04:58:46.
platform.py File 52801 bytes April 10 2024 04:58:34.
platform.pyc File 37971 bytes April 10 2024 04:58:46.
platform.pyo File 37971 bytes April 10 2024 04:58:46.
plistlib.py File 15810 bytes April 10 2024 04:58:34.
plistlib.pyc File 19963 bytes April 10 2024 04:58:46.
plistlib.pyo File 19877 bytes April 10 2024 04:58:44.
popen2.py File 8416 bytes April 10 2024 04:58:34.
popen2.pyc File 9025 bytes April 10 2024 04:58:46.
popen2.pyo File 8983 bytes April 10 2024 04:58:44.
poplib.py File 12824 bytes April 10 2024 04:58:34.
poplib.pyc File 13345 bytes April 10 2024 04:58:46.
poplib.pyo File 13345 bytes April 10 2024 04:58:46.
posixfile.py File 8003 bytes April 10 2024 04:58:34.
posixfile.pyc File 7652 bytes April 10 2024 04:58:46.
posixfile.pyo File 7652 bytes April 10 2024 04:58:46.
posixpath.py File 14293 bytes April 10 2024 04:58:34.
posixpath.pyc File 11462 bytes April 10 2024 04:58:46.
posixpath.pyo File 11462 bytes April 10 2024 04:58:46.
pprint.py File 11777 bytes April 10 2024 04:58:34.
pprint.pyc File 10194 bytes April 10 2024 04:58:46.
pprint.pyo File 10017 bytes April 10 2024 04:58:44.
profile.py File 22781 bytes April 10 2024 04:58:34.
profile.pyc File 16456 bytes April 10 2024 04:58:46.
profile.pyo File 16209 bytes April 10 2024 04:58:44.
pstats.py File 26712 bytes April 10 2024 04:58:34.
pstats.pyc File 25013 bytes April 10 2024 04:58:46.
pstats.pyo File 25013 bytes April 10 2024 04:58:46.
pty.py File 5058 bytes April 10 2024 04:58:34.
pty.pyc File 4966 bytes April 10 2024 04:58:46.
pty.pyo File 4966 bytes April 10 2024 04:58:46.
py_compile.py File 5936 bytes April 10 2024 04:58:34.
py_compile.pyc File 6428 bytes April 10 2024 04:58:46.
py_compile.pyo File 6428 bytes April 10 2024 04:58:46.
pyclbr.py File 13388 bytes April 10 2024 04:58:34.
pyclbr.pyc File 9651 bytes April 10 2024 04:58:46.
pyclbr.pyo File 9651 bytes April 10 2024 04:58:46.
pydoc.py File 95739 bytes April 10 2024 04:58:34.
pydoc.pyc File 92342 bytes April 10 2024 04:58:46.
pydoc.pyo File 92278 bytes April 10 2024 04:58:44.
quopri.py File 6968 bytes April 10 2024 04:58:34.
quopri.pyc File 6574 bytes April 10 2024 04:58:46.
quopri.pyo File 6574 bytes April 10 2024 04:58:46.
random.py File 32457 bytes April 10 2024 04:58:34.
random.pyc File 25704 bytes April 10 2024 04:58:46.
random.pyo File 25704 bytes April 10 2024 04:58:46.
re.py File 13423 bytes April 10 2024 04:58:34.
re.pyc File 13413 bytes April 10 2024 04:58:46.
re.pyo File 13413 bytes April 10 2024 04:58:46.
repr.py File 4296 bytes April 10 2024 04:58:34.
repr.pyc File 5385 bytes April 10 2024 04:58:46.
repr.pyo File 5385 bytes April 10 2024 04:58:46.
rexec.py File 20148 bytes April 10 2024 04:58:34.
rexec.pyc File 23807 bytes April 10 2024 04:58:46.
rexec.pyo File 23807 bytes April 10 2024 04:58:46.
rfc822.py File 33542 bytes April 10 2024 04:58:34.
rfc822.pyc File 31813 bytes April 10 2024 04:58:46.
rfc822.pyo File 31813 bytes April 10 2024 04:58:46.
rlcompleter.py File 5991 bytes April 10 2024 04:58:34.
rlcompleter.pyc File 6078 bytes April 10 2024 04:58:46.
rlcompleter.pyo File 6078 bytes April 10 2024 04:58:46.
robotparser.py File 7695 bytes April 10 2024 04:58:34.
robotparser.pyc File 8003 bytes April 10 2024 04:58:46.
robotparser.pyo File 8003 bytes April 10 2024 04:58:46.
runpy.py File 11081 bytes April 10 2024 04:58:34.
runpy.pyc File 8803 bytes April 10 2024 04:58:46.
runpy.pyo File 8803 bytes April 10 2024 04:58:46.
sched.py File 5088 bytes April 10 2024 04:58:34.
sched.pyc File 4994 bytes April 10 2024 04:58:46.
sched.pyo File 4994 bytes April 10 2024 04:58:46.
sets.py File 19050 bytes April 10 2024 04:58:34.
sets.pyc File 16895 bytes April 10 2024 04:58:46.
sets.pyo File 16895 bytes April 10 2024 04:58:46.
sgmllib.py File 17884 bytes April 10 2024 04:58:34.
sgmllib.pyc File 15436 bytes April 10 2024 04:58:46.
sgmllib.pyo File 15436 bytes April 10 2024 04:58:46.
sha.py File 393 bytes April 10 2024 04:58:34.
sha.pyc File 421 bytes April 10 2024 04:58:46.
sha.pyo File 421 bytes April 10 2024 04:58:46.
shelve.py File 8178 bytes April 10 2024 04:58:34.
shelve.pyc File 10256 bytes April 10 2024 04:58:46.
shelve.pyo File 10256 bytes April 10 2024 04:58:46.
shlex.py File 11164 bytes April 10 2024 04:58:34.
shlex.pyc File 7558 bytes April 10 2024 04:58:46.
shlex.pyo File 7558 bytes April 10 2024 04:58:46.
shutil.py File 19871 bytes April 10 2024 04:58:34.
shutil.pyc File 19259 bytes April 10 2024 04:58:46.
shutil.pyo File 19259 bytes April 10 2024 04:58:46.
site.py File 21296 bytes April 10 2024 04:58:34.
site.pyc File 20786 bytes April 10 2024 04:58:46.
site.pyo File 20786 bytes April 10 2024 04:58:46.
smtpd.py File 18542 bytes April 10 2024 04:58:34.
smtpd.pyc File 15883 bytes April 10 2024 04:58:46.
smtpd.pyo File 15883 bytes April 10 2024 04:58:46.
smtplib.py File 32134 bytes April 10 2024 04:58:34.
smtplib.pyc File 30304 bytes April 10 2024 04:58:46.
smtplib.pyo File 30304 bytes April 10 2024 04:58:46.
sndhdr.py File 5973 bytes April 10 2024 04:58:34.
sndhdr.pyc File 7361 bytes April 10 2024 04:58:46.
sndhdr.pyo File 7361 bytes April 10 2024 04:58:46.
socket.py File 20615 bytes April 10 2024 04:58:34.
socket.pyc File 16152 bytes April 10 2024 04:58:46.
socket.pyo File 16066 bytes April 10 2024 04:58:44.
sre.py File 384 bytes April 10 2024 04:58:34.
sre.pyc File 519 bytes April 10 2024 04:58:46.
sre.pyo File 519 bytes April 10 2024 04:58:46.
sre_compile.py File 19823 bytes April 10 2024 04:58:34.
sre_compile.pyc File 12560 bytes April 10 2024 04:58:46.
sre_compile.pyo File 12404 bytes April 10 2024 04:58:44.
sre_constants.py File 7197 bytes April 10 2024 04:58:34.
sre_constants.pyc File 6195 bytes April 10 2024 04:58:46.
sre_constants.pyo File 6195 bytes April 10 2024 04:58:46.
sre_parse.py File 30700 bytes April 10 2024 04:58:34.
sre_parse.pyc File 21156 bytes April 10 2024 04:58:46.
sre_parse.pyo File 21156 bytes April 10 2024 04:58:46.
ssl.py File 39310 bytes April 10 2024 04:58:34.
ssl.pyc File 32716 bytes April 10 2024 04:58:46.
ssl.pyo File 32716 bytes April 10 2024 04:58:46.
stat.py File 1842 bytes April 10 2024 04:58:34.
stat.pyc File 2751 bytes April 10 2024 04:58:46.
stat.pyo File 2751 bytes April 10 2024 04:58:46.
statvfs.py File 898 bytes April 10 2024 04:58:34.
statvfs.pyc File 620 bytes April 10 2024 04:58:46.
statvfs.pyo File 620 bytes April 10 2024 04:58:46.
string.py File 21548 bytes April 10 2024 04:58:34.
string.pyc File 20459 bytes April 10 2024 04:58:46.
string.pyo File 20459 bytes April 10 2024 04:58:46.
stringold.py File 12449 bytes April 10 2024 04:58:34.
stringold.pyc File 12549 bytes April 10 2024 04:58:46.
stringold.pyo File 12549 bytes April 10 2024 04:58:46.
stringprep.py File 13522 bytes April 10 2024 04:58:34.
stringprep.pyc File 14487 bytes April 10 2024 04:58:46.
stringprep.pyo File 14415 bytes April 10 2024 04:58:44.
struct.py File 82 bytes April 10 2024 04:58:34.
struct.pyc File 239 bytes April 10 2024 04:58:46.
struct.pyo File 239 bytes April 10 2024 04:58:46.
subprocess.py File 50520 bytes April 10 2024 04:58:34.
subprocess.pyc File 32398 bytes April 10 2024 04:58:46.
subprocess.pyo File 32398 bytes April 10 2024 04:58:46.
sunau.py File 17222 bytes April 10 2024 04:58:34.
sunau.pyc File 18394 bytes April 10 2024 04:58:46.
sunau.pyo File 18394 bytes April 10 2024 04:58:46.
sunaudio.py File 1399 bytes April 10 2024 04:58:34.
sunaudio.pyc File 1987 bytes April 10 2024 04:58:46.
sunaudio.pyo File 1987 bytes April 10 2024 04:58:46.
symbol.py File 2057 bytes April 10 2024 04:58:34.
symbol.pyc File 3026 bytes April 10 2024 04:58:46.
symbol.pyo File 3026 bytes April 10 2024 04:58:46.
symtable.py File 7437 bytes April 10 2024 04:58:34.
symtable.pyc File 11786 bytes April 10 2024 04:58:46.
symtable.pyo File 11655 bytes April 10 2024 04:58:44.
sysconfig.py File 22852 bytes April 10 2024 04:58:41.
sysconfig.pyc File 17818 bytes April 10 2024 04:58:46.
sysconfig.pyo File 17818 bytes April 10 2024 04:58:46.
tabnanny.py File 11339 bytes April 10 2024 04:58:34.
tabnanny.pyc File 8247 bytes April 10 2024 04:58:46.
tabnanny.pyo File 8247 bytes April 10 2024 04:58:46.
tarfile.py File 90655 bytes April 10 2024 04:58:34.
tarfile.pyc File 76193 bytes April 10 2024 04:58:46.
tarfile.pyo File 76193 bytes April 10 2024 04:58:46.
telnetlib.py File 27036 bytes April 10 2024 04:58:34.
telnetlib.pyc File 23154 bytes April 10 2024 04:58:46.
telnetlib.pyo File 23154 bytes April 10 2024 04:58:46.
tempfile.py File 19547 bytes April 10 2024 04:58:34.
tempfile.pyc File 20344 bytes April 10 2024 04:58:46.
tempfile.pyo File 20344 bytes April 10 2024 04:58:46.
textwrap.py File 17280 bytes April 10 2024 04:58:34.
textwrap.pyc File 12097 bytes April 10 2024 04:58:46.
textwrap.pyo File 12005 bytes April 10 2024 04:58:44.
this.py File 1002 bytes April 10 2024 04:58:34.
this.pyc File 1220 bytes April 10 2024 04:58:46.
this.pyo File 1220 bytes April 10 2024 04:58:46.
threading.py File 47377 bytes April 10 2024 04:58:34.
threading.pyc File 42726 bytes April 10 2024 04:58:46.
threading.pyo File 40552 bytes April 10 2024 04:58:44.
timeit.py File 12791 bytes April 10 2024 04:58:34.
timeit.pyc File 12183 bytes April 10 2024 04:58:46.
timeit.pyo File 12183 bytes April 10 2024 04:58:46.
toaiff.py File 3142 bytes April 10 2024 04:58:34.
toaiff.pyc File 3106 bytes April 10 2024 04:58:46.
toaiff.pyo File 3106 bytes April 10 2024 04:58:46.
token.py File 2922 bytes April 10 2024 04:58:34.
token.pyc File 3816 bytes April 10 2024 04:58:46.
token.pyo File 3816 bytes April 10 2024 04:58:46.
tokenize.py File 17483 bytes April 10 2024 04:58:34.
tokenize.pyc File 14505 bytes April 10 2024 04:58:46.
tokenize.pyo File 14449 bytes April 10 2024 04:58:44.
trace.py File 29891 bytes April 10 2024 04:58:34.
trace.pyc File 22793 bytes April 10 2024 04:58:46.
trace.pyo File 22730 bytes April 10 2024 04:58:44.
traceback.py File 11285 bytes April 10 2024 04:58:34.
traceback.pyc File 11679 bytes April 10 2024 04:58:46.
traceback.pyo File 11679 bytes April 10 2024 04:58:46.
tty.py File 879 bytes April 10 2024 04:58:34.
tty.pyc File 1317 bytes April 10 2024 04:58:46.
tty.pyo File 1317 bytes April 10 2024 04:58:46.
types.py File 2094 bytes April 10 2024 04:58:34.
types.pyc File 2725 bytes April 10 2024 04:58:46.
types.pyo File 2725 bytes April 10 2024 04:58:46.
urllib.py File 60228 bytes April 10 2024 04:58:34.
urllib.pyc File 51241 bytes April 10 2024 04:58:46.
urllib.pyo File 51146 bytes April 10 2024 04:58:44.
urllib2.py File 52541 bytes April 10 2024 04:58:34.
urllib2.pyc File 47302 bytes April 10 2024 04:58:46.
urllib2.pyo File 47207 bytes April 10 2024 04:58:44.
urlparse.py File 20461 bytes April 10 2024 04:58:34.
urlparse.pyc File 18015 bytes April 10 2024 04:58:46.
urlparse.pyo File 18015 bytes April 10 2024 04:58:46.
user.py File 1627 bytes April 10 2024 04:58:34.
user.pyc File 1724 bytes April 10 2024 04:58:46.
user.pyo File 1724 bytes April 10 2024 04:58:46.
uu.py File 6697 bytes April 10 2024 04:58:34.
uu.pyc File 4390 bytes April 10 2024 04:58:46.
uu.pyo File 4390 bytes April 10 2024 04:58:46.
uuid.py File 23530 bytes April 10 2024 04:58:34.
uuid.pyc File 23366 bytes April 10 2024 04:58:46.
uuid.pyo File 23250 bytes April 10 2024 04:58:44.
warnings.py File 14823 bytes April 10 2024 04:58:34.
warnings.pyc File 13510 bytes April 10 2024 04:58:46.
warnings.pyo File 12721 bytes April 10 2024 04:58:44.
wave.py File 18582 bytes April 10 2024 04:58:34.
wave.pyc File 20013 bytes April 10 2024 04:58:46.
wave.pyo File 19869 bytes April 10 2024 04:58:44.
weakref.py File 14830 bytes April 10 2024 04:58:34.
weakref.pyc File 16441 bytes April 10 2024 04:58:46.
weakref.pyo File 16441 bytes April 10 2024 04:58:46.
webbrowser.py File 22725 bytes April 10 2024 04:58:34.
webbrowser.pyc File 19750 bytes April 10 2024 04:58:46.
webbrowser.pyo File 19705 bytes April 10 2024 04:58:44.
whichdb.py File 3379 bytes April 10 2024 04:58:34.
whichdb.pyc File 2241 bytes April 10 2024 04:58:46.
whichdb.pyo File 2241 bytes April 10 2024 04:58:46.
wsgiref.egg-info File 187 bytes April 10 2024 04:58:34.
xdrlib.py File 6069 bytes April 10 2024 04:58:34.
xdrlib.pyc File 9902 bytes April 10 2024 04:58:46.
xdrlib.pyo File 9902 bytes April 10 2024 04:58:46.
xmllib.py File 34865 bytes April 10 2024 04:58:34.
xmllib.pyc File 26848 bytes April 10 2024 04:58:46.
xmllib.pyo File 26848 bytes April 10 2024 04:58:46.
xmlrpclib.py File 52136 bytes April 10 2024 04:58:34.
xmlrpclib.pyc File 44106 bytes April 10 2024 04:58:46.
xmlrpclib.pyo File 43922 bytes April 10 2024 04:58:44.
zipfile.py File 59477 bytes April 10 2024 04:58:34.
zipfile.pyc File 42137 bytes April 10 2024 04:58:46.
zipfile.pyo File 42137 bytes April 10 2024 04:58:46.

Reading File: //lib64/python2.7/telnetlib.py

r"""TELNET client class.

Based on RFC 854: TELNET Protocol Specification, by J. Postel and
J. Reynolds

Example:

>>> from telnetlib import Telnet
>>> tn = Telnet('www.python.org', 79)   # connect to finger port
>>> tn.write('guido\r\n')
>>> print tn.read_all()
Login       Name               TTY         Idle    When    Where
guido    Guido van Rossum      pts/2        <Dec  2 11:10> snag.cnri.reston..

>>>

Note that read_all() won't read until eof -- it just reads some data
-- but it guarantees to read at least one byte unless EOF is hit.

It is possible to pass a Telnet object to select.select() in order to
wait until more data is available.  Note that in this case,
read_eager() may return '' even if there was data on the socket,
because the protocol negotiation may have eaten the data.  This is why
EOFError is needed in some cases to distinguish between "no data" and
"connection closed" (since the socket also appears ready for reading
when it is closed).

To do:
- option negotiation
- timeout should be intrinsic to the connection object instead of an
  option on one of the read calls only

"""


# Imported modules
import errno
import sys
import socket
import select

__all__ = ["Telnet"]

# Tunable parameters
DEBUGLEVEL = 0

# Telnet protocol defaults
TELNET_PORT = 23

# Telnet protocol characters (don't change)
IAC  = chr(255) # "Interpret As Command"
DONT = chr(254)
DO   = chr(253)
WONT = chr(252)
WILL = chr(251)
theNULL = chr(0)

SE  = chr(240)  # Subnegotiation End
NOP = chr(241)  # No Operation
DM  = chr(242)  # Data Mark
BRK = chr(243)  # Break
IP  = chr(244)  # Interrupt process
AO  = chr(245)  # Abort output
AYT = chr(246)  # Are You There
EC  = chr(247)  # Erase Character
EL  = chr(248)  # Erase Line
GA  = chr(249)  # Go Ahead
SB =  chr(250)  # Subnegotiation Begin


# Telnet protocol options code (don't change)
# These ones all come from arpa/telnet.h
BINARY = chr(0) # 8-bit data path
ECHO = chr(1) # echo
RCP = chr(2) # prepare to reconnect
SGA = chr(3) # suppress go ahead
NAMS = chr(4) # approximate message size
STATUS = chr(5) # give status
TM = chr(6) # timing mark
RCTE = chr(7) # remote controlled transmission and echo
NAOL = chr(8) # negotiate about output line width
NAOP = chr(9) # negotiate about output page size
NAOCRD = chr(10) # negotiate about CR disposition
NAOHTS = chr(11) # negotiate about horizontal tabstops
NAOHTD = chr(12) # negotiate about horizontal tab disposition
NAOFFD = chr(13) # negotiate about formfeed disposition
NAOVTS = chr(14) # negotiate about vertical tab stops
NAOVTD = chr(15) # negotiate about vertical tab disposition
NAOLFD = chr(16) # negotiate about output LF disposition
XASCII = chr(17) # extended ascii character set
LOGOUT = chr(18) # force logout
BM = chr(19) # byte macro
DET = chr(20) # data entry terminal
SUPDUP = chr(21) # supdup protocol
SUPDUPOUTPUT = chr(22) # supdup output
SNDLOC = chr(23) # send location
TTYPE = chr(24) # terminal type
EOR = chr(25) # end or record
TUID = chr(26) # TACACS user identification
OUTMRK = chr(27) # output marking
TTYLOC = chr(28) # terminal location number
VT3270REGIME = chr(29) # 3270 regime
X3PAD = chr(30) # X.3 PAD
NAWS = chr(31) # window size
TSPEED = chr(32) # terminal speed
LFLOW = chr(33) # remote flow control
LINEMODE = chr(34) # Linemode option
XDISPLOC = chr(35) # X Display Location
OLD_ENVIRON = chr(36) # Old - Environment variables
AUTHENTICATION = chr(37) # Authenticate
ENCRYPT = chr(38) # Encryption option
NEW_ENVIRON = chr(39) # New - Environment variables
# the following ones come from
# http://www.iana.org/assignments/telnet-options
# Unfortunately, that document does not assign identifiers
# to all of them, so we are making them up
TN3270E = chr(40) # TN3270E
XAUTH = chr(41) # XAUTH
CHARSET = chr(42) # CHARSET
RSP = chr(43) # Telnet Remote Serial Port
COM_PORT_OPTION = chr(44) # Com Port Control Option
SUPPRESS_LOCAL_ECHO = chr(45) # Telnet Suppress Local Echo
TLS = chr(46) # Telnet Start TLS
KERMIT = chr(47) # KERMIT
SEND_URL = chr(48) # SEND-URL
FORWARD_X = chr(49) # FORWARD_X
PRAGMA_LOGON = chr(138) # TELOPT PRAGMA LOGON
SSPI_LOGON = chr(139) # TELOPT SSPI LOGON
PRAGMA_HEARTBEAT = chr(140) # TELOPT PRAGMA HEARTBEAT
EXOPL = chr(255) # Extended-Options-List
NOOPT = chr(0)

class Telnet:

    """Telnet interface class.

    An instance of this class represents a connection to a telnet
    server.  The instance is initially not connected; the open()
    method must be used to establish a connection.  Alternatively, the
    host name and optional port number can be passed to the
    constructor, too.

    Don't try to reopen an already connected instance.

    This class has many read_*() methods.  Note that some of them
    raise EOFError when the end of the connection is read, because
    they can return an empty string for other reasons.  See the
    individual doc strings.

    read_until(expected, [timeout])
        Read until the expected string has been seen, or a timeout is
        hit (default is no timeout); may block.

    read_all()
        Read all data until EOF; may block.

    read_some()
        Read at least one byte or EOF; may block.

    read_very_eager()
        Read all data available already queued or on the socket,
        without blocking.

    read_eager()
        Read either data already queued or some data available on the
        socket, without blocking.

    read_lazy()
        Read all data in the raw queue (processing it first), without
        doing any socket I/O.

    read_very_lazy()
        Reads all data in the cooked queue, without doing any socket
        I/O.

    read_sb_data()
        Reads available data between SB ... SE sequence. Don't block.

    set_option_negotiation_callback(callback)
        Each time a telnet option is read on the input flow, this callback
        (if set) is called with the following parameters :
        callback(telnet socket, command, option)
            option will be chr(0) when there is no option.
        No other action is done afterwards by telnetlib.

    """

    def __init__(self, host=None, port=0,
                 timeout=socket._GLOBAL_DEFAULT_TIMEOUT):
        """Constructor.

        When called without arguments, create an unconnected instance.
        With a hostname argument, it connects the instance; port number
        and timeout are optional.
        """
        self.debuglevel = DEBUGLEVEL
        self.host = host
        self.port = port
        self.timeout = timeout
        self.sock = None
        self.rawq = ''
        self.irawq = 0
        self.cookedq = ''
        self.eof = 0
        self.iacseq = '' # Buffer for IAC sequence.
        self.sb = 0 # flag for SB and SE sequence.
        self.sbdataq = ''
        self.option_callback = None
        self._has_poll = hasattr(select, 'poll')
        if host is not None:
            self.open(host, port, timeout)

    def open(self, host, port=0, timeout=socket._GLOBAL_DEFAULT_TIMEOUT):
        """Connect to a host.

        The optional second argument is the port number, which
        defaults to the standard telnet port (23).

        Don't try to reopen an already connected instance.
        """
        self.eof = 0
        if not port:
            port = TELNET_PORT
        self.host = host
        self.port = port
        self.timeout = timeout
        self.sock = socket.create_connection((host, port), timeout)

    def __del__(self):
        """Destructor -- close the connection."""
        self.close()

    def msg(self, msg, *args):
        """Print a debug message, when the debug level is > 0.

        If extra arguments are present, they are substituted in the
        message using the standard string formatting operator.

        """
        if self.debuglevel > 0:
            print 'Telnet(%s,%s):' % (self.host, self.port),
            if args:
                print msg % args
            else:
                print msg

    def set_debuglevel(self, debuglevel):
        """Set the debug level.

        The higher it is, the more debug output you get (on sys.stdout).

        """
        self.debuglevel = debuglevel

    def close(self):
        """Close the connection."""
        sock = self.sock
        self.sock = 0
        self.eof = 1
        self.iacseq = ''
        self.sb = 0
        if sock:
            sock.close()

    def get_socket(self):
        """Return the socket object used internally."""
        return self.sock

    def fileno(self):
        """Return the fileno() of the socket object used internally."""
        return self.sock.fileno()

    def write(self, buffer):
        """Write a string to the socket, doubling any IAC characters.

        Can block if the connection is blocked.  May raise
        socket.error if the connection is closed.

        """
        if IAC in buffer:
            buffer = buffer.replace(IAC, IAC+IAC)
        self.msg("send %r", buffer)
        self.sock.sendall(buffer)

    def read_until(self, match, timeout=None):
        """Read until a given string is encountered or until timeout.

        When no match is found, return whatever is available instead,
        possibly the empty string.  Raise EOFError if the connection
        is closed and no cooked data is available.

        """
        if self._has_poll:
            return self._read_until_with_poll(match, timeout)
        else:
            return self._read_until_with_select(match, timeout)

    def _read_until_with_poll(self, match, timeout):
        """Read until a given string is encountered or until timeout.

        This method uses select.poll() to implement the timeout.
        """
        n = len(match)
        call_timeout = timeout
        if timeout is not None:
            from time import time
            time_start = time()
        self.process_rawq()
        i = self.cookedq.find(match)
        if i < 0:
            poller = select.poll()
            poll_in_or_priority_flags = select.POLLIN | select.POLLPRI
            poller.register(self, poll_in_or_priority_flags)
            while i < 0 and not self.eof:
                try:
                    # Poll takes its timeout in milliseconds.
                    ready = poller.poll(None if timeout is None
                                        else 1000 * call_timeout)
                except select.error as e:
                    if e[0] == errno.EINTR:
                        if timeout is not None:
                            elapsed = time() - time_start
                            call_timeout = timeout-elapsed
                        continue
                    raise
                for fd, mode in ready:
                    if mode & poll_in_or_priority_flags:
                        i = max(0, len(self.cookedq)-n)
                        self.fill_rawq()
                        self.process_rawq()
                        i = self.cookedq.find(match, i)
                if timeout is not None:
                    elapsed = time() - time_start
                    if elapsed >= timeout:
                        break
                    call_timeout = timeout-elapsed
            poller.unregister(self)
        if i >= 0:
            i = i + n
            buf = self.cookedq[:i]
            self.cookedq = self.cookedq[i:]
            return buf
        return self.read_very_lazy()

    def _read_until_with_select(self, match, timeout=None):
        """Read until a given string is encountered or until timeout.

        The timeout is implemented using select.select().
        """
        n = len(match)
        self.process_rawq()
        i = self.cookedq.find(match)
        if i >= 0:
            i = i+n
            buf = self.cookedq[:i]
            self.cookedq = self.cookedq[i:]
            return buf
        s_reply = ([self], [], [])
        s_args = s_reply
        if timeout is not None:
            s_args = s_args + (timeout,)
            from time import time
            time_start = time()
        while not self.eof and select.select(*s_args) == s_reply:
            i = max(0, len(self.cookedq)-n)
            self.fill_rawq()
            self.process_rawq()
            i = self.cookedq.find(match, i)
            if i >= 0:
                i = i+n
                buf = self.cookedq[:i]
                self.cookedq = self.cookedq[i:]
                return buf
            if timeout is not None:
                elapsed = time() - time_start
                if elapsed >= timeout:
                    break
                s_args = s_reply + (timeout-elapsed,)
        return self.read_very_lazy()

    def read_all(self):
        """Read all data until EOF; block until connection closed."""
        self.process_rawq()
        while not self.eof:
            self.fill_rawq()
            self.process_rawq()
        buf = self.cookedq
        self.cookedq = ''
        return buf

    def read_some(self):
        """Read at least one byte of cooked data unless EOF is hit.

        Return '' if EOF is hit.  Block if no data is immediately
        available.

        """
        self.process_rawq()
        while not self.cookedq and not self.eof:
            self.fill_rawq()
            self.process_rawq()
        buf = self.cookedq
        self.cookedq = ''
        return buf

    def read_very_eager(self):
        """Read everything that's possible without blocking in I/O (eager).

        Raise EOFError if connection closed and no cooked data
        available.  Return '' if no cooked data available otherwise.
        Don't block unless in the midst of an IAC sequence.

        """
        self.process_rawq()
        while not self.eof and self.sock_avail():
            self.fill_rawq()
            self.process_rawq()
        return self.read_very_lazy()

    def read_eager(self):
        """Read readily available data.

        Raise EOFError if connection closed and no cooked data
        available.  Return '' if no cooked data available otherwise.
        Don't block unless in the midst of an IAC sequence.

        """
        self.process_rawq()
        while not self.cookedq and not self.eof and self.sock_avail():
            self.fill_rawq()
            self.process_rawq()
        return self.read_very_lazy()

    def read_lazy(self):
        """Process and return data that's already in the queues (lazy).

        Raise EOFError if connection closed and no data available.
        Return '' if no cooked data available otherwise.  Don't block
        unless in the midst of an IAC sequence.

        """
        self.process_rawq()
        return self.read_very_lazy()

    def read_very_lazy(self):
        """Return any data available in the cooked queue (very lazy).

        Raise EOFError if connection closed and no data available.
        Return '' if no cooked data available otherwise.  Don't block.

        """
        buf = self.cookedq
        self.cookedq = ''
        if not buf and self.eof and not self.rawq:
            raise EOFError, 'telnet connection closed'
        return buf

    def read_sb_data(self):
        """Return any data available in the SB ... SE queue.

        Return '' if no SB ... SE available. Should only be called
        after seeing a SB or SE command. When a new SB command is
        found, old unread SB data will be discarded. Don't block.

        """
        buf = self.sbdataq
        self.sbdataq = ''
        return buf

    def set_option_negotiation_callback(self, callback):
        """Provide a callback function called after each receipt of a telnet option."""
        self.option_callback = callback

    def process_rawq(self):
        """Transfer from raw queue to cooked queue.

        Set self.eof when connection is closed.  Don't block unless in
        the midst of an IAC sequence.

        """
        buf = ['', '']
        try:
            while self.rawq:
                c = self.rawq_getchar()
                if not self.iacseq:
                    if c == theNULL:
                        continue
                    if c == "\021":
                        continue
                    if c != IAC:
                        buf[self.sb] = buf[self.sb] + c
                        continue
                    else:
                        self.iacseq += c
                elif len(self.iacseq) == 1:
                    # 'IAC: IAC CMD [OPTION only for WILL/WONT/DO/DONT]'
                    if c in (DO, DONT, WILL, WONT):
                        self.iacseq += c
                        continue

                    self.iacseq = ''
                    if c == IAC:
                        buf[self.sb] = buf[self.sb] + c
                    else:
                        if c == SB: # SB ... SE start.
                            self.sb = 1
                            self.sbdataq = ''
                        elif c == SE:
                            self.sb = 0
                            self.sbdataq = self.sbdataq + buf[1]
                            buf[1] = ''
                        if self.option_callback:
                            # Callback is supposed to look into
                            # the sbdataq
                            self.option_callback(self.sock, c, NOOPT)
                        else:
                            # We can't offer automatic processing of
                            # suboptions. Alas, we should not get any
                            # unless we did a WILL/DO before.
                            self.msg('IAC %d not recognized' % ord(c))
                elif len(self.iacseq) == 2:
                    cmd = self.iacseq[1]
                    self.iacseq = ''
                    opt = c
                    if cmd in (DO, DONT):
                        self.msg('IAC %s %d',
                            cmd == DO and 'DO' or 'DONT', ord(opt))
                        if self.option_callback:
                            self.option_callback(self.sock, cmd, opt)
                        else:
                            self.sock.sendall(IAC + WONT + opt)
                    elif cmd in (WILL, WONT):
                        self.msg('IAC %s %d',
                            cmd == WILL and 'WILL' or 'WONT', ord(opt))
                        if self.option_callback:
                            self.option_callback(self.sock, cmd, opt)
                        else:
                            self.sock.sendall(IAC + DONT + opt)
        except EOFError: # raised by self.rawq_getchar()
            self.iacseq = '' # Reset on EOF
            self.sb = 0
            pass
        self.cookedq = self.cookedq + buf[0]
        self.sbdataq = self.sbdataq + buf[1]

    def rawq_getchar(self):
        """Get next char from raw queue.

        Block if no data is immediately available.  Raise EOFError
        when connection is closed.

        """
        if not self.rawq:
            self.fill_rawq()
            if self.eof:
                raise EOFError
        c = self.rawq[self.irawq]
        self.irawq = self.irawq + 1
        if self.irawq >= len(self.rawq):
            self.rawq = ''
            self.irawq = 0
        return c

    def fill_rawq(self):
        """Fill raw queue from exactly one recv() system call.

        Block if no data is immediately available.  Set self.eof when
        connection is closed.

        """
        if self.irawq >= len(self.rawq):
            self.rawq = ''
            self.irawq = 0
        # The buffer size should be fairly small so as to avoid quadratic
        # behavior in process_rawq() above
        buf = self.sock.recv(50)
        self.msg("recv %r", buf)
        self.eof = (not buf)
        self.rawq = self.rawq + buf

    def sock_avail(self):
        """Test whether data is available on the socket."""
        return select.select([self], [], [], 0) == ([self], [], [])

    def interact(self):
        """Interaction function, emulates a very dumb telnet client."""
        if sys.platform == "win32":
            self.mt_interact()
            return
        while 1:
            rfd, wfd, xfd = select.select([self, sys.stdin], [], [])
            if self in rfd:
                try:
                    text = self.read_eager()
                except EOFError:
                    print '*** Connection closed by remote host ***'
                    break
                if text:
                    sys.stdout.write(text)
                    sys.stdout.flush()
            if sys.stdin in rfd:
                line = sys.stdin.readline()
                if not line:
                    break
                self.write(line)

    def mt_interact(self):
        """Multithreaded version of interact()."""
        import thread
        thread.start_new_thread(self.listener, ())
        while 1:
            line = sys.stdin.readline()
            if not line:
                break
            self.write(line)

    def listener(self):
        """Helper for mt_interact() -- this executes in the other thread."""
        while 1:
            try:
                data = self.read_eager()
            except EOFError:
                print '*** Connection closed by remote host ***'
                return
            if data:
                sys.stdout.write(data)
            else:
                sys.stdout.flush()

    def expect(self, list, timeout=None):
        """Read until one from a list of a regular expressions matches.

        The first argument is a list of regular expressions, either
        compiled (re.RegexObject instances) or uncompiled (strings).
        The optional second argument is a timeout, in seconds; default
        is no timeout.

        Return a tuple of three items: the index in the list of the
        first regular expression that matches; the match object
        returned; and the text read up till and including the match.

        If EOF is read and no text was read, raise EOFError.
        Otherwise, when nothing matches, return (-1, None, text) where
        text is the text received so far (may be the empty string if a
        timeout happened).

        If a regular expression ends with a greedy match (e.g. '.*')
        or if more than one expression can match the same input, the
        results are undeterministic, and may depend on the I/O timing.

        """
        if self._has_poll:
            return self._expect_with_poll(list, timeout)
        else:
            return self._expect_with_select(list, timeout)

    def _expect_with_poll(self, expect_list, timeout=None):
        """Read until one from a list of a regular expressions matches.

        This method uses select.poll() to implement the timeout.
        """
        re = None
        expect_list = expect_list[:]
        indices = range(len(expect_list))
        for i in indices:
            if not hasattr(expect_list[i], "search"):
                if not re: import re
                expect_list[i] = re.compile(expect_list[i])
        call_timeout = timeout
        if timeout is not None:
            from time import time
            time_start = time()
        self.process_rawq()
        m = None
        for i in indices:
            m = expect_list[i].search(self.cookedq)
            if m:
                e = m.end()
                text = self.cookedq[:e]
                self.cookedq = self.cookedq[e:]
                break
        if not m:
            poller = select.poll()
            poll_in_or_priority_flags = select.POLLIN | select.POLLPRI
            poller.register(self, poll_in_or_priority_flags)
            while not m and not self.eof:
                try:
                    ready = poller.poll(None if timeout is None
                                        else 1000 * call_timeout)
                except select.error as e:
                    if e[0] == errno.EINTR:
                        if timeout is not None:
                            elapsed = time() - time_start
                            call_timeout = timeout-elapsed
                        continue
                    raise
                for fd, mode in ready:
                    if mode & poll_in_or_priority_flags:
                        self.fill_rawq()
                        self.process_rawq()
                        for i in indices:
                            m = expect_list[i].search(self.cookedq)
                            if m:
                                e = m.end()
                                text = self.cookedq[:e]
                                self.cookedq = self.cookedq[e:]
                                break
                if timeout is not None:
                    elapsed = time() - time_start
                    if elapsed >= timeout:
                        break
                    call_timeout = timeout-elapsed
            poller.unregister(self)
        if m:
            return (i, m, text)
        text = self.read_very_lazy()
        if not text and self.eof:
            raise EOFError
        return (-1, None, text)

    def _expect_with_select(self, list, timeout=None):
        """Read until one from a list of a regular expressions matches.

        The timeout is implemented using select.select().
        """
        re = None
        list = list[:]
        indices = range(len(list))
        for i in indices:
            if not hasattr(list[i], "search"):
                if not re: import re
                list[i] = re.compile(list[i])
        if timeout is not None:
            from time import time
            time_start = time()
        while 1:
            self.process_rawq()
            for i in indices:
                m = list[i].search(self.cookedq)
                if m:
                    e = m.end()
                    text = self.cookedq[:e]
                    self.cookedq = self.cookedq[e:]
                    return (i, m, text)
            if self.eof:
                break
            if timeout is not None:
                elapsed = time() - time_start
                if elapsed >= timeout:
                    break
                s_args = ([self.fileno()], [], [], timeout-elapsed)
                r, w, x = select.select(*s_args)
                if not r:
                    break
            self.fill_rawq()
        text = self.read_very_lazy()
        if not text and self.eof:
            raise EOFError
        return (-1, None, text)


def test():
    """Test program for telnetlib.

    Usage: python telnetlib.py [-d] ... [host [port]]

    Default host is localhost; default port is 23.

    """
    debuglevel = 0
    while sys.argv[1:] and sys.argv[1] == '-d':
        debuglevel = debuglevel+1
        del sys.argv[1]
    host = 'localhost'
    if sys.argv[1:]:
        host = sys.argv[1]
    port = 0
    if sys.argv[2:]:
        portstr = sys.argv[2]
        try:
            port = int(portstr)
        except ValueError:
            port = socket.getservbyname(portstr, 'tcp')
    tn = Telnet()
    tn.set_debuglevel(debuglevel)
    tn.open(host, port, timeout=0.5)
    tn.interact()
    tn.close()

if __name__ == '__main__':
    test()

SILENT KILLER Tool