Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # By: Zachary Cutlip
- # Twitter: @zcutlip
- # upload a file to a system via telnet session
- # e.g., use to bootstrap a more capable file transfer program
- # onto a system where you only have telnet access
- import binascii
- from telnetlib import Telnet
- import time
- import math
- import sys
- BLOCKSIZE=64
- ESCAPE="\\\\x"
- FILENAME="busybox"
- DESTINATION_FILE="/tmp/"+FILENAME
- HOST="192.168.10.1"
- class Logging:
- WARN=0
- INFO=1
- DEBUG=2
- prefixes=[]
- prefixes.append(" [!] ")
- prefixes.append(" [+] ")
- prefixes.append(" [@] ")
- @classmethod
- def log_msg(klass,msg,level=INFO):
- pref=Logging.prefixes[level]
- print pref+msg
- def print_progress(bytes_written,total_bytes):
- percent=(bytes_written/float(total_bytes))*100
- marks=int(math.floor(percent / 2))
- dots=50-marks
- markstring="#" * marks
- dotstring="." * dots
- sys.stdout.write("\r[%s%s] %0.2f%%"%(markstring,dotstring,percent))
- sys.stdout.flush()
- f=open("./%s"%FILENAME,'rb')
- tn=Telnet(HOST)
- command=("rm %s\n"%DESTINATION_FILE)
- tn.write(command)
- read_bytes=tn.read_very_eager()
- Logging.log_msg("Removed %s from server."%DESTINATION_FILE)
- Logging.log_msg("Uploading file:\t%s\n\t\t to:\t%s:%s"%(FILENAME,HOST,DESTINATION_FILE))
- count=0
- done=False
- f.seek(0,2)
- total_bytes=f.tell()
- f.seek(0)
- print("total byte: %d\n"%total_bytes)
- while(not done):
- data=f.read(BLOCKSIZE)
- count+=len(data)
- if len(data) == 0:
- print ("read 0 bytes. breaking.")
- break
- elif len(data) < BLOCKSIZE:
- print ("read less than %d bytes. done after this loop."%BLOCKSIZE)
- done=True
- string=""
- for byte in data:
- string+=ESCAPE+binascii.b2a_hex(byte)
- command="echo -e -n \""+string+"\" >> %s\n"%DESTINATION_FILE
- tn.write(command)
- print_progress(count,total_bytes)
- time.sleep(0.2)
- read_bytes=tn.read_very_eager()
- print ("\n\n")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement