1
0

dd.sh 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. #!/bin/bash
  2. echo -ne "\E[0;37;41mESCRIVE TU PUERTO A INSTALAR:\033[0m""\033[1;37m>>\033[0m "; read s
  3. apt-get install dropbear -y > /dev/null 2>&1
  4. touch /etc/dropbear/banner
  5. echo -e "$barra"
  6. (
  7. less << f > /etc/default/dropbear
  8. NO_START=0
  9. DROPBEAR_EXTRA_ARGS="-p $s"
  10. DROPBEAR_RECEIVE_WINDOW=65536
  11. f
  12. )
  13. (
  14. touch ddd.sh
  15. chmod u+x ddd.sh
  16. less << u > /root/ddd.sh
  17. import socket, threading, thread, select, signal, sys, time, getopt
  18. # CONFIG
  19. LISTENING_ADDR = '0.0.0.0'
  20. LISTENING_PORT = $s
  21. PASS = ''
  22. # CONST
  23. BUFLEN = 4096 * 4
  24. TIMEOUT = 60
  25. DEFAULT_HOST = "127.0.0.1:22"
  26. RESPONSE = 'HTTP/1.1 200 OMAR PROTOCOLO \r\n\r\n'
  27. class Server(threading.Thread):
  28. def __init__(self, host, port):
  29. threading.Thread.__init__(self)
  30. self.running = False
  31. self.host = host
  32. self.port = port
  33. self.threads = []
  34. self.threadsLock = threading.Lock()
  35. self.logLock = threading.Lock()
  36. def run(self):
  37. self.soc = socket.socket(socket.AF_INET)
  38. self.soc.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  39. self.soc.settimeout(2)
  40. self.soc.bind((self.host, self.port))
  41. self.soc.listen(0)
  42. self.running = True
  43. try:
  44. while self.running:
  45. try:
  46. c, addr = self.soc.accept()
  47. c.setblocking(1)
  48. except socket.timeout:
  49. continue
  50. conn = ConnectionHandler(c, self, addr)
  51. conn.start();
  52. self.addConn(conn)
  53. finally:
  54. self.running = False
  55. self.soc.close()
  56. def printLog(self, log):
  57. self.logLock.acquire()
  58. print log
  59. self.logLock.release()
  60. def addConn(self, conn):
  61. try:
  62. self.threadsLock.acquire()
  63. if self.running:
  64. self.threads.append(conn)
  65. finally:
  66. self.threadsLock.release()
  67. def removeConn(self, conn):
  68. try:
  69. self.threadsLock.acquire()
  70. self.threads.remove(conn)
  71. finally:
  72. self.threadsLock.release()
  73. def close(self):
  74. try:
  75. self.running = False
  76. self.threadsLock.acquire()
  77. threads = list(self.threads)
  78. for c in threads:
  79. c.close()
  80. finally:
  81. self.threadsLock.release()
  82. class ConnectionHandler(threading.Thread):
  83. def __init__(self, socClient, server, addr):
  84. threading.Thread.__init__(self)
  85. self.clientClosed = False
  86. self.targetClosed = True
  87. self.client = socClient
  88. self.client_buffer = ''
  89. self.server = server
  90. self.log = 'Connection: ' + str(addr)
  91. def close(self):
  92. try:
  93. if not self.clientClosed:
  94. self.client.shutdown(socket.SHUT_RDWR)
  95. self.client.close()
  96. except:
  97. pass
  98. finally:
  99. self.clientClosed = True
  100. try:
  101. if not self.targetClosed:
  102. self.target.shutdown(socket.SHUT_RDWR)
  103. self.target.close()
  104. except:
  105. pass
  106. finally:
  107. self.targetClosed = True
  108. def run(self):
  109. try:
  110. self.client_buffer = self.client.recv(BUFLEN)
  111. hostPort = self.findHeader(self.client_buffer, 'X-Real-Host')
  112. if hostPort == '':
  113. hostPort = DEFAULT_HOST
  114. split = self.findHeader(self.client_buffer, 'X-Split')
  115. if split != '':
  116. self.client.recv(BUFLEN)
  117. if hostPort != '':
  118. passwd = self.findHeader(self.client_buffer, 'X-Pass')
  119. if len(PASS) != 0 and passwd == PASS:
  120. self.method_CONNECT(hostPort)
  121. elif len(PASS) != 0 and passwd != PASS:
  122. self.client.send('HTTP/1.1 400 WrongPass!\r\n\r\n')
  123. elif hostPort.startswith('127.0.0.1') or hostPort.startswith('localhost'):
  124. self.method_CONNECT(hostPort)
  125. else:
  126. self.client.send('HTTP/1.1 403 Forbidden!\r\n\r\n')
  127. else:
  128. print '- No X-Real-Host!'
  129. self.client.send('HTTP/1.1 400 NoXRealHost!\r\n\r\n')
  130. except Exception as e:
  131. self.log += ' - error: ' + e.strerror
  132. self.server.printLog(self.log)
  133. pass
  134. finally:
  135. self.close()
  136. self.server.removeConn(self)
  137. def findHeader(self, head, header):
  138. aux = head.find(header + ': ')
  139. if aux == -1:
  140. return ''
  141. aux = head.find(':', aux)
  142. head = head[aux+2:]
  143. aux = head.find('\r\n')
  144. if aux == -1:
  145. return ''
  146. return head[:aux];
  147. def connect_target(self, host):
  148. i = host.find(':')
  149. if i != -1:
  150. port = int(host[i+1:])
  151. host = host[:i]
  152. else:
  153. if self.method=='CONNECT':
  154. port = 443
  155. else:
  156. port = 22
  157. (soc_family, soc_type, proto, _, address) = socket.getaddrinfo(host, port)[0]
  158. self.target = socket.socket(soc_family, soc_type, proto)
  159. self.targetClosed = False
  160. self.target.connect(address)
  161. def method_CONNECT(self, path):
  162. self.log += ' - CONNECT ' + path
  163. self.connect_target(path)
  164. self.client.sendall(RESPONSE)
  165. self.client_buffer = ''
  166. self.server.printLog(self.log)
  167. self.doCONNECT()
  168. def doCONNECT(self):
  169. socs = [self.client, self.target]
  170. count = 0
  171. error = False
  172. while True:
  173. count += 1
  174. (recv, _, err) = select.select(socs, [], socs, 3)
  175. if err:
  176. error = True
  177. if recv:
  178. for in_ in recv:
  179. try:
  180. data = in_.recv(BUFLEN)
  181. if data:
  182. if in_ is self.target:
  183. self.client.send(data)
  184. else:
  185. while data:
  186. byte = self.target.send(data)
  187. data = data[byte:]
  188. count = 0
  189. else:
  190. break
  191. except:
  192. error = True
  193. break
  194. if count == TIMEOUT:
  195. error = True
  196. if error:
  197. break
  198. def print_usage():
  199. print 'Usage: proxy.py -p <port>'
  200. print ' proxy.py -b <bindAddr> -p <port>'
  201. print ' proxy.py -b 0.0.0.0 -p 1080'
  202. def parse_args(argv):
  203. global LISTENING_ADDR
  204. global LISTENING_PORT
  205. try:
  206. opts, args = getopt.getopt(argv,"hb:p:",["bind=","port="])
  207. except getopt.GetoptError:
  208. print_usage()
  209. sys.exit(2)
  210. for opt, arg in opts:
  211. if opt == '-h':
  212. print_usage()
  213. sys.exit()
  214. elif opt in ("-b", "--bind"):
  215. LISTENING_ADDR = arg
  216. elif opt in ("-p", "--port"):
  217. LISTENING_PORT = int(arg)
  218. def main(host=LISTENING_ADDR, port=LISTENING_PORT):
  219. print "\n ==============================\n"
  220. print "\n PYTHON PROXY \n"
  221. print "\n ==============================\n"
  222. print "corriendo ip: " + LISTENING_ADDR
  223. print "corriendo port: " + str(LISTENING_PORT) + "\n"
  224. print "Se ha Iniciado Por Favor Cierre el Terminal\n"
  225. server = Server(LISTENING_ADDR, LISTENING_PORT)
  226. server.start()
  227. while True:
  228. try:
  229. time.sleep(2)
  230. except KeyboardInterrupt:
  231. print 'Stopping...'
  232. server.close()
  233. break
  234. if __name__ == '__main__':
  235. parse_args(sys.argv[1:])
  236. main()
  237. u
  238. )
  239. service dropbear restart
  240. service dropbear start
  241. echo -e "/bin/false" >> /etc/shells
  242. echo -e "\E[0;37;44mEL PUERTO \E[0;37;41m$s\033[0m""\E[0;37;44m A SIDO INSTALADO\033[0m"
  243. echo -e "\033[1;33m\033[0m ""\E[41;1;37m[04]-AUTO MENU\033[0m"
  244. echo -e "\033[1;33m\033[0m ""\E[41;1;37m[0]-SALIR\033[0m"
  245. while [ "$opcion" != "0" ]
  246. do
  247. echo -ne "\E[41;1;37mOPCION:\033[0m""\033[1;37m>>\033[0m "; read opcion
  248. case $opcion in
  249. 4)/root/menu
  250. ;;
  251. esac
  252. exit
  253. done