├── HTTPinjector.py ├── pin.py ├── pinjector.py └── tcpclient.py /HTTPinjector.py: -------------------------------------------------------------------------------- 1 | import os, sys, time, socket, thread, string, select 2 | from platform import python_version 3 | pv = python_version() 4 | 5 | W = '\x1b[0m' 6 | R = '\x1b[31m' 7 | G = '\x1b[1;32m' 8 | O = '\x1b[33m' 9 | B = '\x1b[34m' 10 | P = '\x1b[35m' 11 | C = '\x1b[36m' 12 | GR = '\x1b[37m' 13 | 14 | def slowprint(s): 15 | for c in s + '\n': 16 | sys.stdout.write(c) 17 | sys.stdout.flush() 18 | time.sleep(3.0 / 90) 19 | 20 | LISTEN = '127.0.0.1:8989' 21 | PROXY = 'host:port' 22 | PAYLOAD = 'CONNECT [HP] [P0][CL]Host: example.com[CL]X-Online-Host: example.com[CL]Ping-Server: www.google.com[CL]Connection: keep-alive[CL2]' 23 | TAM_BUFFER = 65535 24 | MAX_CLIENT_REQUEST_LENGTH = 8192 * 8 25 | 26 | def getReplacedPayload(payload, netData, hostPort, protocol): 27 | str = payload.replace('[netData]', netData) 28 | str = str.replace('[HP]', (hostPort[0] + ':' + hostPort[1])) 29 | str = str.replace('[H]', hostPort[0]) 30 | str = str.replace('[P]', hostPort[1]) 31 | str = str.replace('[PC]', protocol) 32 | str = str.replace('[P0]','HTTP/1.0') 33 | str = str.replace('[P1]','HTTP/1.1') 34 | str = str.replace('[C]','\r') 35 | str = str.replace('[L]','\n') 36 | str = str.replace('[CL]','\r\n') 37 | str = str.replace('[LC]','\n\r') 38 | str = str.replace('[CL2]','\r\n\r\n') 39 | return str 40 | 41 | def getRequestProtocol(request): 42 | inicio = request.find(' ', request.find(':')) + 1 43 | str = request[inicio:] 44 | fim = str.find('\r\n') 45 | 46 | return str[:fim] 47 | 48 | def getRequestHostPort(request): 49 | inicio = request.find(' ') + 1 50 | str = request[inicio:] 51 | fim = str.find(' ') 52 | 53 | hostPort = str[:fim] 54 | 55 | return hostPort.split(':') 56 | 57 | def getRequestNetData(request): 58 | return request[:request.find('\r\n')] 59 | 60 | def receiveHttpMsg(socket): 61 | len = 1 62 | 63 | data = socket.recv(1) 64 | while data.find('\r\n\r\n'.encode()) == -1: 65 | if not data: 66 | print(W + ' => ' + O + 'Socket close !') 67 | break 68 | data = data + socket.recv(1) 69 | len += 1 70 | if len > MAX_CLIENT_REQUEST_LENGTH: break 71 | 72 | return data 73 | 74 | def doConnect(clientSocket, serverSocket, tamBuffer): 75 | sockets = [clientSocket, serverSocket] 76 | timeout = 0 77 | print(W +' => ' + G + 'Connected !') 78 | while 1: 79 | timeout += 1 80 | ins, _, exs = select.select(sockets, [], sockets, 3) 81 | if exs: break 82 | if ins: 83 | for socket in ins: 84 | try: 85 | data = socket.recv(tamBuffer) 86 | if not data: break 87 | if socket is serverSocket: 88 | clientSocket.sendall(data) 89 | else: 90 | serverSocket.sendall(data) 91 | timeout = 0 92 | except: 93 | break 94 | 95 | if timeout == 60: 96 | break 97 | 98 | def acceptThread(clientSocket, clientAddr): 99 | print(W +'+ Client connected : ' + G + clientAddr[0] + ':' + str(clientAddr[1])) 100 | request = receiveHttpMsg(clientSocket) 101 | if not request.startswith('CONNECT'): 102 | print(W + ' => ' + O + 'The payload is incorrect !') 103 | clientSocket.sendall('HTTP/1.1 405 Only_CONNECT_Method!\r\n\r\n') 104 | clientSocket.close() 105 | thread.exit() 106 | 107 | netData = getRequestNetData(request) 108 | protocol = getRequestProtocol(request) 109 | hostPort = getRequestHostPort(netData) 110 | 111 | finalRequest = getReplacedPayload(PAYLOAD, netData, hostPort, protocol) 112 | proxySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 113 | RMT = PROXY.find(':') 114 | if RMT >= 0: 115 | PX = (PROXY[:RMT], int(PROXY[RMT + 1:])) 116 | else: 117 | PX = (PROXY, 80) 118 | try: 119 | proxySocket.connect((PX)) 120 | #proxySocket.sendall(finalRequest) 121 | except socket.error, (value,message): 122 | print(W +' => Client closed' + W + ' : ' + R + clientAddr[0] + ':' + str(clientAddr[1])) 123 | print(W +' => ' + R + str(message) + ' !') 124 | proxySocket.close() 125 | clientSocket.close() 126 | thread.exit() 127 | #else: 128 | if finalRequest: 129 | proxySocket.sendall(finalRequest) 130 | while 1: 131 | try: 132 | proxyResponse = receiveHttpMsg(proxySocket) 133 | clientSocket.sendall(proxyResponse) 134 | timeout = 0 135 | if not proxyResponse: 136 | print(W + ' => ' + B + 'Disconnected !') 137 | break 138 | if proxyResponse.startswith('HTTP/'): 139 | print(W +' => ' + C + str(getRequestNetData(proxyResponse.split('\n')[0]))) 140 | os.system('setprop net.dns1 8.8.8.8') 141 | os.system('setprop net.dns2 8.8.4.4') 142 | os.system('setprop net.rmnet0.dns1 8.8.8.8') 143 | os.system('setprop net.rmnet0.dns2 8.8.4.4') 144 | except socket.error, (value,message): 145 | print(W + ' => ' + B + str(message) + ' !') 146 | break 147 | if proxyResponse.find('200') != -1: 148 | doConnect(clientSocket, proxySocket, TAM_BUFFER) 149 | #print(W +' => ' + O + 'Socket close !') 150 | proxySocket.close() 151 | clientSocket.close() 152 | thread.exit() 153 | 154 | def start(): 155 | soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 156 | soc.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 157 | LS = LISTEN.find(':') 158 | if LS >= 0: 159 | LST = (LISTEN[:LS], int(LISTEN[LS + 1:])) 160 | else: 161 | LST = (LISTEN, 8989) 162 | try: 163 | soc.bind((LST)) 164 | except socket.error, (value,message): 165 | print(W +'+ ' + O + str(message) + ' !') 166 | soc.close() 167 | else: 168 | slowprint(W +'+ Server listening on...') 169 | soc.listen(0) 170 | while 1: 171 | try: 172 | clientSocket, clientAddr = soc.accept() 173 | thread.start_new_thread(acceptThread, tuple([clientSocket,clientAddr])) 174 | except KeyboardInterrupt: 175 | soc.close() 176 | os.abort() 177 | 178 | if __name__ == '__main__': 179 | os.system('clear') 180 | slowprint(W +'#'*46) 181 | slowprint(W +' -== ' + G + 'Python Injector Internet Free' + W + ' ==-') 182 | slowprint(W +'#'*46) 183 | slowprint(W +'+ Listen : ' + LISTEN) 184 | slowprint(W +'+ Remote : ' + PROXY) 185 | slowprint(W +'+ Python : ' + pv + ' linux') 186 | slowprint(W +'#'*46) 187 | slowprint(W +'#'*46) 188 | time.sleep(1) 189 | start() 190 | -------------------------------------------------------------------------------- /pin.py: -------------------------------------------------------------------------------- 1 | import os, sys, time 2 | from socket import * 3 | from threading import Thread 4 | from platform import python_version 5 | sion = python_version() 6 | 7 | W = '\x1b[0m' 8 | R = '\x1b[31m' 9 | G = '\x1b[1;32m' 10 | O = '\x1b[33m' 11 | B = '\x1b[34m' 12 | P = '\x1b[35m' 13 | C = '\x1b[36m' 14 | GR = '\x1b[37m' 15 | 16 | LHOST = '127.0.0.1' 17 | PHOST = '10.8.3.8' 18 | PPORT = 80 19 | pay1 = '[NET][CLC][CL]GET / [P1] 200 OK[CL]Host: [CL]X-Online-Host: download.cdn.oly-eu.blackberry.com[CL2]' 20 | pay2 = '' 21 | 22 | def slowprint(s): 23 | for c in s + '\n': 24 | sys.stdout.write(c) 25 | sys.stdout.flush() 26 | time.sleep(3.0 / 90) 27 | 28 | class PipeThread(Thread): 29 | pipes = [] 30 | def __init__(self,source,sink): 31 | Thread.__init__(self) 32 | self.source = source 33 | self.sink = sink 34 | PipeThread.pipes.append(self) 35 | 36 | def run(self): 37 | while 1: 38 | try: 39 | rawdata = self.source.recv(1024) 40 | if not rawdata: break 41 | netdata = (rawdata).strip() 42 | if netdata.startswith('CONNECT'): 43 | req = '%s%s' % (pay1,pay2) 44 | req = req.replace('[NET]','%s' % netdata) 45 | req = req.replace('[C]','\r') 46 | req = req.replace('[L]','\n') 47 | req = req.replace('[CL]','\r\n') 48 | req = req.replace('[LC]','\n\r') 49 | req = req.replace('[CLC]','\r\n\r') 50 | req = req.replace('[LCL]','\n\r\n') 51 | req = req.replace('[CL2]','\r\n\r\n') 52 | req = req.replace('[CL3]','\r\n\r\n\r\n') 53 | req = req.replace('[P0]','HTTP/1.0') 54 | req = req.replace('[P1]','HTTP/1.1') 55 | req = req.replace('[SP]','%s' % pay2) 56 | slowprint(G +'+ %s' % netdata) 57 | self.sink.send(req) 58 | else: 59 | self.sink.send(rawdata) 60 | dres = rawdata.split('\n')[0] 61 | if dres.startswith('HTTP'): 62 | slowprint(C +'+ %s' % dres) 63 | except: 64 | slowprint(B +'+ Disconnected !') 65 | break 66 | PipeThread.pipes.remove(self) 67 | 68 | class TCPTunel(Thread): 69 | if (len(sys.argv)<2): 70 | os.system('clear') 71 | slowprint(G +'+ Usage: python pin.py ') 72 | time.sleep(2) 73 | os.system('clear') 74 | slowprint(C +'+ Example: python sdcard/pin.py 8989') 75 | time.sleep(2) 76 | os.system('clear') 77 | exit() 78 | 79 | LHOST = '127.0.0.1' 80 | LPORT = int(sys.argv[1]) 81 | def __init__( self, LHOST, LPORT, PHOST, PPORT): 82 | Thread.__init__(self) 83 | self.sock = socket( AF_INET, SOCK_STREAM ) 84 | try: 85 | self.sock.bind((LHOST,LPORT)) 86 | self.sock.listen(0) 87 | except: 88 | self.sock.close() 89 | slowprint(R +'+ Listen port address already in use !') 90 | 91 | def run(self): 92 | while 1: 93 | newsock, address = self.sock.accept() 94 | fwd = socket( AF_INET, SOCK_STREAM ) 95 | try: 96 | fwd.connect((PHOST, PPORT)) 97 | slowprint(G +'+ Connect to %s:%s' % (PHOST,PPORT)) 98 | except: 99 | fwd.close() 100 | slowprint(O +'+ Socket close !') 101 | PipeThread(newsock,fwd).start() 102 | PipeThread(fwd,newsock).start() 103 | 104 | if __name__ == '__main__': 105 | LPORT = int(sys.argv[1]) 106 | os.system('clear') 107 | slowprint(W +'#'*46) 108 | slowprint(G +' --= Python Injector Internet Free =--') 109 | slowprint(W +'#'*46) 110 | slowprint(W +'+ Author : NetHandlers\n+ Remote : %s:%s\n+ Listen : %s:%s\n+ Python : %s Linux' % (PHOST, PPORT, LHOST, LPORT, sion)) 111 | slowprint(W +'#'*46) 112 | TCPTunel(LHOST,LPORT,PHOST,PPORT).start() 113 | -------------------------------------------------------------------------------- /pinjector.py: -------------------------------------------------------------------------------- 1 | import os, sys, time, socket, select, thread 2 | from platform import python_version 3 | pv = python_version() 4 | 5 | W = '\x1b[0m' 6 | R = '\x1b[31m' 7 | G = '\x1b[1;32m' 8 | O = '\x1b[33m' 9 | B = '\x1b[34m' 10 | P = '\x1b[35m' 11 | C = '\x1b[36m' 12 | GR = '\x1b[37m' 13 | 14 | # Pinjector Configuration 15 | Listen = '127.0.0.1:8989' # local host and port 16 | Proxy = 'host:port' # remote http proxy host and port default or squid proxy ssh or vpn 17 | Payload = 'CONNECT [HP] [P0][CL]Host: example.com[CL]X-Online-Host: example.com[CL]Ping-Server: www.google.com[CL]Connection: keep-alive[CL2]' 18 | 19 | def slowprint(s): 20 | for c in s + '\n': 21 | sys.stdout.write(c) 22 | sys.stdout.flush() 23 | time.sleep(3.0 / 90) 24 | 25 | class Pinjector: 26 | def __init__(self, request, address): 27 | soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 28 | self.client = request 29 | self.Addr = address 30 | self.NetData = self.client.recv(int(1024)) 31 | chp = self.NetData.split(' ')[1].find(':') 32 | if chp >= 0: 33 | hp = (self.NetData.split(' ')[1][:chp], int(self.NetData.split(' ')[1][chp + 1:])) 34 | print(W +'+ Client connected : ' + G + self.Addr[0] + ':' + str(self.Addr[1])) 35 | RMT = Proxy.find(':') 36 | if RMT >= 0: 37 | PXY = (Proxy[:RMT], int(Proxy[RMT + 1:])) 38 | else: 39 | PXY = (Proxy, 80) 40 | try: 41 | soc.connect((PXY)) 42 | req = Payload.replace('[NetData]', self.NetData.split('\n')[0]) 43 | req = req.replace('[HP]', self.NetData.split(' ')[1]) 44 | req = req.replace('[H_P]', (hp[0] + ':' + str(hp[1]))) 45 | req = req.replace('[H]', hp[0]) 46 | req = req.replace('[P]', (str(hp[1]))) 47 | req = req.replace('[P0]','HTTP/1.0') 48 | req = req.replace('[P1]','HTTP/1.1') 49 | req = req.replace('[C]','\r') 50 | req = req.replace('[L]','\n') 51 | req = req.replace('[CL]','\r\n') 52 | req = req.replace('[LC]','\n\r') 53 | req = req.replace('[CL2]','\r\n\r\n') 54 | except socket.error, (value,message): 55 | print(W +' => Client closed' + W + ' : ' + R + self.Addr[0] + ':' + str(self.Addr[1])) 56 | print(W +' => ' + O + str(message) + ' !') 57 | soc.close() 58 | self.client.close() 59 | thread.exit() 60 | 61 | else: 62 | soc.send(req) 63 | count = 0 64 | socs = [self.client,soc] 65 | while 1: 66 | count += 1 67 | recv, _, error = select.select(socs, [], socs, 3) 68 | if error: 69 | break 70 | 71 | if recv: 72 | for bite in recv: 73 | try: 74 | data = bite.recv(int(1024)) 75 | if not data: break 76 | except socket.error, (value,message): 77 | print(W +' => ' + B + str(message) + ' !') 78 | break 79 | if data: 80 | if bite is soc: 81 | self.client.send(data) 82 | else: 83 | soc.send(data) 84 | count = 0 85 | if data.startswith('HTTP/'): 86 | print(W + ' => ' + C + str(data.split('\n')[0])) 87 | os.system('setprop net.dns1 8.8.8.8') 88 | os.system('setprop net.dns2 8.8.4.4') 89 | if data.find('200') != -1: 90 | print(W + ' => ' + G + 'Pinjector Connected !') 91 | 92 | if count == 60: 93 | break 94 | 95 | #print(W +' => ' + O + 'Socket close !') 96 | soc.close() 97 | self.client.close() 98 | thread.exit() 99 | 100 | def start(): 101 | soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 102 | soc.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 103 | LS = Listen.find(':') 104 | if LS >= 0: 105 | LST = (Listen[:LS], int(Listen[LS + 1:])) 106 | else: 107 | LST = (Listen, 8989) 108 | try: 109 | soc.bind((LST)) 110 | except socket.error, (value,message): 111 | print(W +'+ ' + O + str(message) + ' !') 112 | soc.close() 113 | else: 114 | slowprint(W + '+ Server listening on...') 115 | soc.listen(0) 116 | while 1: 117 | try: 118 | request,address = soc.accept() 119 | thread.start_new_thread(Pinjector, tuple([request,address])) 120 | except KeyboardInterrupt: 121 | soc.close() 122 | os.abort() 123 | 124 | if __name__ == '__main__': 125 | os.system('clear') 126 | slowprint(W +'#'*47) 127 | slowprint(W +' -== ' + G + 'Python Injector Internet Free' + W + ' ==-') 128 | slowprint(W +'#'*47) 129 | slowprint(W +'+ Listen : ' + O + Listen) 130 | slowprint(W +'+ Remote : ' + O + Proxy) 131 | slowprint(W +'+ Python : ' + O + pv + ' linux') 132 | slowprint(W +'#'*47) 133 | time.sleep(1) 134 | start() -------------------------------------------------------------------------------- /tcpclient.py: -------------------------------------------------------------------------------- 1 | import os, sys, time, datetime, socket, select, threading 2 | from platform import python_version 3 | pv = python_version() 4 | 5 | W = '\x1b[0m' 6 | R = '\x1b[31m' 7 | G = '\x1b[1;32m' 8 | O = '\x1b[33m' 9 | B = '\x1b[34m' 10 | P = '\x1b[35m' 11 | C = '\x1b[36m' 12 | GR = '\x1b[37m' 13 | 14 | def slowprint(s): 15 | for c in s + '\n': 16 | sys.stdout.write(c) 17 | sys.stdout.flush() 18 | time.sleep(3.0 / 90) 19 | 20 | Listen = ('127.0.0.1',8989) 21 | Proxy = ('216.176.190.138',81) 22 | Payload = ('CONNECT [HP] [P0][CL]Host: example.com[CL]X-Online-Host: example.com[CL2]') 23 | 24 | def handle_client(client_socket): 25 | request = client_socket.recv(1024) 26 | soc = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 27 | try: 28 | soc.connect(Proxy) 29 | except socket.error, (value,message): 30 | print(W + ' ' + C + str(time.strftime('%X %p')) + W + ' => ' + R + str(message) + ' !') 31 | soc.close() 32 | client_socket.close() 33 | return 0 34 | else: 35 | netdata = request.split('\n')[0] 36 | hp = netdata.split(' ')[1] 37 | req = Payload.replace('[netData]', (str(netdata))) 38 | req = req.replace('[HP]', (str(hp))) 39 | req = req.replace('[P0]','HTTP/1.0') 40 | req = req.replace('[P1]','HTTP/1.1') 41 | req = req.replace('[C]','\r') 42 | req = req.replace('[L]','\n') 43 | req = req.replace('[CL]','\r\n') 44 | req = req.replace('[CL2]','\r\n\r\n') 45 | soc.send(req) 46 | socs = (client_socket,soc) 47 | count = 0 48 | while True: 49 | count += 1 50 | recv, _, error = select.select(socs, [], socs, 3) 51 | if error: break 52 | if recv: 53 | for bite in recv: 54 | try: 55 | data = bite.recv(1024) 56 | if not data: break 57 | except socket.error, (value,message): 58 | print(W + ' ' + C + str(time.strftime('%X %p')) + W + ' => ' + B + str(message) + ' !') 59 | break 60 | if data: 61 | if bite is soc: 62 | try: 63 | client_socket.send(data) 64 | count = 0 65 | except: 66 | break 67 | elif bite is client_socket: 68 | try: 69 | soc.send(data) 70 | count = 0 71 | except: 72 | break 73 | else: 74 | break 75 | if data.startswith('HTTP/'): 76 | print(W + ' => ' + C + str(data.split('\n')[0])) 77 | os.system('setprop net.dns1 8.8.8.8') 78 | os.system('setprop net.dns2 8.8.4.4') 79 | os.system('setprop net.rmnet0.dns1 8.8.8.8') 80 | os.system('setprop net.rmnet0.dns2 8.8.4.4') 81 | if data.find('200 ') != -1: 82 | print(W + ' => '+ G +'Connected !') 83 | if count == 60: 84 | break 85 | finally: 86 | soc.close() 87 | client_socket.close() 88 | return 0 89 | return 1 90 | 91 | def tcp_server(): 92 | server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 93 | try: 94 | server.bind(Listen) 95 | except socket.error, (value,message): 96 | slowprint(W + '+ ' + O + str(message) + ' !') 97 | server.close() 98 | sys.exit() 99 | else: 100 | server.listen(0) 101 | while True: 102 | client, addr = server.accept() 103 | print(W + '+ ' + C + str(time.strftime('%X %p')) + ' ' + G + addr[0] + ':' + str(addr[1]) + W + ' ' + C + str(os.popen('getprop net.rmnet0.gw').read().split('\n')[0]) + ' ' + G + str(os.popen('getprop gsm.network.type').read().split('\n')[0])) 104 | client_handler = threading.Thread(target=handle_client, args=(client,)) 105 | client_handler.start() 106 | 107 | if __name__ == '__main__': 108 | os.system('clear') 109 | slowprint(W + '#'*47) 110 | slowprint(W + ' -== '+G+'Python Injector Internet Free'+W+' ==-') 111 | slowprint(W + '#'*47) 112 | slowprint(W + '# ' + str(time.strftime('%a, %d %B %Y'))) 113 | slowprint(W + '# Provider gsm Operator ' + C + str(os.popen('getprop gsm.operator.alpha').read().split('\n')[0])) 114 | slowprint(W + '# Listened on ' + C + Listen[0] + ':' + str(Listen[1])) 115 | slowprint(W + '# Use proxy ' + C + Proxy[0] + ':' + str(Proxy[1])) 116 | slowprint(W + '# Python ' + C + str(pv) + W + ', ' + C + str(os.popen('getprop ro.product.device').read().split('\n')[0]) + ' ' + str(os.popen('getprop ro.build.version.release').read().split('\n')[0]) + ' Build SDK ' + str(os.popen('getprop ro.build.version.sdk').read().split('\n')[0])) 117 | slowprint(W + '#'*47) 118 | time.sleep(1) 119 | tcp_server() 120 | --------------------------------------------------------------------------------