Advertisement
Guest User

Proxy 1.0

a guest
Aug 27th, 2015
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.85 KB | None | 0 0
  1. import os,socket, sys
  2. import thread
  3.  
  4. _port = 0 #The port the script should listen on.
  5. _bufferSize = 4096 #max buffer size.
  6. _maxCon = 5 #max incoming connections
  7. try:   
  8.     _port = int(raw_input("Insert the port number :> "))
  9. except KeyboardInterrupt:
  10.     print "\n Exiting Script"
  11.     sys.exit(0)
  12.    
  13. print "You've selected this config: \n\t port: %s \n\t buffer: %s" %(str(_port), str(_bufferSize))
  14. print "END CONFIGURATION"
  15.  
  16. def start():
  17.     try:
  18.         sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #initiate a new socket
  19.         sock.bind(('', _port))
  20.         sock.listen(_maxCon)
  21.         print "Socket initialized correctly \n Binding successful \n Server started successfully"
  22.     except Exception, e:
  23.         print "unable to initiate socket"
  24.         print("exiting ...")
  25.         sys.exit(2)
  26.  
  27.     while 1:
  28.         try:
  29.             conn, addr = sock.accept() #accept connection from client browser
  30.             print "serving: %s" %(str(addr))
  31.             data = conn.recv(_bufferSize) #receive client data
  32.             thread.start_new_thread(conn_string, (conn, data, addr)) #starting a new thread
  33.         except KeyboardInterrupt:
  34.             sock.close()
  35.             sys.exit(1)
  36.     sock.close()
  37.  
  38. def conn_string(conn, data, addr):
  39.     #client browser request processing...
  40.     try:   
  41.         print "Connecting.."
  42.         first_line = data.split('\n')[0]
  43.         url = first_line.split(' ')[1]
  44.         print url
  45.         http_pos = url.find("://")
  46.  
  47.         temp = ''
  48.         if http_pos == -1 :
  49.             temp = url
  50.         else:
  51.             temp = url[(http_pos+3):] #get the whole url
  52.  
  53.         print temp
  54.  
  55.         print "calcs.."
  56.         port_pos = temp.find(":") #getting the post position
  57.         webserver_pos = temp.find("/") #getting the web server position
  58.         if webserver_pos == -1:
  59.             webserver_pos = len(temp)
  60.  
  61.         webserver = ""
  62.         port = -1
  63.         if (port_pos == -1 or webserver_pos < port_pos): #default port
  64.             print ("default port")
  65.             port = 80
  66.             webserver = temp[:webserver_pos]
  67.         else:
  68.             print ("new port")
  69.             port = int((temp[(port_pos+1):])[:webserver_pos - port_pos - 1])
  70.             webserver = temp[:port_pos]
  71.  
  72.         print "calling proxy"
  73.         proxy_server(webserver, port, conn, addr, data)
  74.     except Exception, e:
  75.         print "fuck"
  76.         pass
  77.  
  78. def proxy_server(webserver, port, conn, addr, data):
  79.     print "in proxy_server"
  80.     try:
  81.         print "starting socket"
  82.         sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  83.         print "connecting socket"
  84.         sock.connect((webserver, port))
  85.         print "sending data"
  86.         sock.send(data)
  87.  
  88.         while 1:
  89.             print "receiving data"
  90.             reply = sock.recv(_bufferSize)
  91.  
  92.             if(len(reply) > 0):
  93.                 print "tada"
  94.                 conn.send(reply)
  95.                 dar = float(len(reply))
  96.                 dar = float(dar / 1024)
  97.                 dar = "%.3s" %(str(dar))
  98.                 dar = "%s KB" %(dar)
  99.                 print "[*] Request Done: %s => %s <= " %(str(addr[0]), str(dar))
  100.             else:
  101.                 #connection break
  102.                 print "fail... :("
  103.                 break
  104.         sock.close()
  105.         conn.close()
  106.     except socket.error, (value, message):
  107.         sock.close()
  108.         conn.close()
  109.         sys.exit(1)
  110.  
  111.  
  112. start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement