import socket
import threading
import configparser
from struct import *
PORT = 25565
maxpolaczenia = 20
server = socket.socket()
server.bind(('', PORT))
def varint_pack(d):
o = b''
while True:
b = d & 0x7F
d >>= 7
o += pack("B", b | (0x80 if d > 0 else 0))
if d == 0:
break
return o
def varint_unpack(s):
d, l = 0, 0
length = len(s)
if length > 5:
length = 5
for i in range(length):
l += 1
b = s[i]
d |= (b & 0x7F) << 7 * i
if not b & 0x80:
break
return (d, s[l:])
def data_pack(data):
return varint_pack(len(data)) + data
def data_unpack(bytes):
length, bytes = varint_unpack(bytes)
return bytes[:length], bytes[length:]
def string_pack(string):
return data_pack(string.encode())
def string_unpack(bytes):
string, rest = data_unpack(bytes)
return string.decode(), rest
"""
def struct_unpack(format, struct):
data = unpack_from(format, struct)
rest = struct[calcsize(format):]
return data, rest
"""
def sendd(se, id, data):
packid = varint_pack(int(id, 16))
se.send(data_pack(packid + data))
def handShake(version, host, port, next):
if next == 2:
global mode
mode = "login"
version = varint_pack(version)
host = string_pack(host)
port = pack('!H', port)
next = varint_pack(next)
return version + host + port + next
def Login(name):
name = string_pack(name)
return name
def _send_data(connection, *args):
""" Send the data on the connection """
data = b''
for arg in args:
data += data_pack(arg)
connection.send(varint_pack(len(data)) + data)
class listener(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
while True:
addr = server.listen(maxpolaczenia)
local_socket, local_address = server.accept()
print(str(local_address[0]) + ":" + str(local_address[1]) + " " + "Connected to the proxy!")
user = client(local_socket).start()
while 1:
bs = local_socket.recv(4096)
if bs != b"":
print(str(bs))
# local_socket.close()
# print(str(local_address[0] + ":" + local_address[1]))
class client(threading.Thread):
def __init__(self, s):
threading.Thread.__init__(self)
self.s = s
def run(self):
user = socket.socket()
try:
print("Laczenie..")
user.connect(("94.23.91.251", 25565))
except:
print("Nie udalo sie polaczyc z serwerem!")
data = self.s.recv(4096)
if data == b"":
print("Disconnected")
return 0
elif data == b"\x06\x00/\x00c\xdd\x02\n\x00\x08Masloids":
print("Przechwycono handshake!")
print("Zamieniam...")
try:
user.sendall(data)
#sendd(user, "0x00", Login("Masloids"))
while 1:
lol = user.recv(1024)
if lol == b"":
print("Disconnected")
self.s.sendall(lol)
#print(str(lol))
#sendd(user, "0x00", Login("Masloids"))
except:
print("Nie zamieniono!")
else:
print(data)
user.send(data)
self.s.sendall(data)
listener = listener().start()
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}