Advertisement
Guest User

telnetftp.py

a guest
Jan 23rd, 2012
472
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.97 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # By: Zachary Cutlip
  3. # Twitter: @zcutlip
  4. # upload a file to a system via telnet session
  5. # e.g., use to bootstrap a more capable file transfer program
  6. # onto a system where you only have telnet access
  7.  
  8. import binascii
  9. from telnetlib import Telnet
  10. import time
  11. import math
  12. import sys
  13.  
  14. BLOCKSIZE=64
  15. ESCAPE="\\\\x"
  16.  
  17. FILENAME="busybox"
  18. DESTINATION_FILE="/tmp/"+FILENAME
  19. HOST="192.168.10.1"
  20.  
  21.  
  22. class Logging:
  23.     WARN=0
  24.     INFO=1
  25.     DEBUG=2
  26.     prefixes=[]
  27.     prefixes.append(" [!] ")
  28.     prefixes.append(" [+] ")
  29.     prefixes.append(" [@] ")
  30.     @classmethod
  31.     def log_msg(klass,msg,level=INFO):
  32.         pref=Logging.prefixes[level]
  33.         print pref+msg
  34.  
  35.  
  36. def print_progress(bytes_written,total_bytes):
  37.     percent=(bytes_written/float(total_bytes))*100
  38.     marks=int(math.floor(percent / 2))
  39.     dots=50-marks
  40.     markstring="#" * marks
  41.     dotstring="." * dots
  42.     sys.stdout.write("\r[%s%s] %0.2f%%"%(markstring,dotstring,percent))
  43.     sys.stdout.flush()
  44.  
  45.  
  46. f=open("./%s"%FILENAME,'rb')
  47.  
  48. tn=Telnet(HOST)
  49. command=("rm %s\n"%DESTINATION_FILE)
  50. tn.write(command)
  51. read_bytes=tn.read_very_eager()
  52.  
  53. Logging.log_msg("Removed %s from server."%DESTINATION_FILE)
  54. Logging.log_msg("Uploading file:\t%s\n\t\t to:\t%s:%s"%(FILENAME,HOST,DESTINATION_FILE))
  55.  
  56. count=0
  57. done=False
  58.  
  59. f.seek(0,2)
  60. total_bytes=f.tell()
  61. f.seek(0)
  62.  
  63. print("total byte: %d\n"%total_bytes)
  64. while(not done):
  65.     data=f.read(BLOCKSIZE)
  66.     count+=len(data)
  67.     if len(data) == 0:
  68.         print ("read 0 bytes. breaking.")
  69.         break
  70.     elif len(data) < BLOCKSIZE:
  71.         print ("read less than %d bytes. done after this loop."%BLOCKSIZE)
  72.         done=True
  73.    
  74.     string=""
  75.     for byte in data:
  76.         string+=ESCAPE+binascii.b2a_hex(byte)
  77.  
  78.     command="echo -e -n \""+string+"\" >> %s\n"%DESTINATION_FILE
  79.  
  80.     tn.write(command)
  81.  
  82.     print_progress(count,total_bytes)
  83.     time.sleep(0.2)
  84.    
  85.     read_bytes=tn.read_very_eager()
  86.  
  87. print ("\n\n")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement