Repository: LiveOverflow/minecraft-hacked Branch: main Commit: 5726a00cd9e2 Files: 3 Total size: 6.3 KB Directory structure: gitextract_45beub73/ ├── .gitignore ├── 01_protocol_proxy/ │ └── teleport_proxy.py └── README.md ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ .DS_Store ================================================ FILE: 01_protocol_proxy/teleport_proxy.py ================================================ from twisted.internet import reactor from quarry.net.proxy import DownstreamFactory, Bridge import struct import time import random import math # based on https://github.com/barneygale/quarry/blob/master/examples/client_chat_logger.py class QuietBridge(Bridge): entity_id = None prev_pos = None prev_look = None def packet_upstream_chat_message(self, buff): buff.save() chat_message = buff.unpack_string() print(f" >> {chat_message}") if chat_message.startswith("/port"): _, distance = chat_message.split(" ") flags = 0 teleport = 0 dismount = 0 x, y, z, ground = self.prev_pos yaw, pitch, ground = self.prev_look # see net.minecraft.entity.Entity:getRotationVEctor() f = pitch * 0.017453292 g = -yaw * 0.017453292 h = math.cos(g) i = math.sin(g) j = math.cos(f) k = math.sin(f) _x = i*j _y = -k _z = h*j x += _x * float(distance) y += _y * float(distance) z += _z * float(distance) buf = struct.pack('>dddffBBB', x, y, z, yaw, pitch, flags, teleport, dismount) self.downstream.send_packet('player_position_and_look', buf) buff.restore() self.upstream.send_packet("chat_message", buff.read()) def packet_unhandled(self, buff, direction, name): print(f"[*][{direction}] {name}") if direction == "downstream": self.downstream.send_packet(name, buff.read()) elif direction == "upstream": self.upstream.send_packet(name, buff.read()) def packet_upstream_player_position(self, buff): buff.save() x, y, z, ground = struct.unpack('>dddB', buff.read()) print(f"[*] player_position {x} / {y} / {z} | {ground}") self.prev_pos = (x, y, z, ground) buf = struct.pack('>dddB', x, y, z, ground) self.upstream.send_packet('player_position', buf) def packet_upstream_player_look(self, buff): buff.save() yaw, pitch, ground = struct.unpack('>ffB', buff.read()) print(f"[*] player_look {yaw} / {pitch} | {ground}") self.prev_look = (yaw, pitch, ground) buf = struct.pack('>ffB', yaw, pitch, ground) self.upstream.send_packet('player_look', buf) class QuietDownstreamFactory(DownstreamFactory): bridge_class = QuietBridge motd = "LiveOverflow Proxy" # python basic_proxy.py -q 12345 def main(argv): # Parse options import argparse parser = argparse.ArgumentParser() parser.add_argument("-a", "--listen-host", default="0.0.0.0", help="address to listen on") parser.add_argument("-p", "--listen-port", default=25565, type=int, help="port to listen on") parser.add_argument("-b", "--connect-host", default="127.0.0.1", help="address to connect to") parser.add_argument("-q", "--connect-port", default=25565, type=int, help="port to connect to") args = parser.parse_args(argv) # Create factory factory = QuietDownstreamFactory() factory.connect_host = args.connect_host factory.connect_port = args.connect_port # Listen factory.listen(args.listen_host, args.listen_port) reactor.run() if __name__ == "__main__": import sys main(sys.argv[1:]) ================================================ FILE: README.md ================================================ # Minecraft:HACKED [Minecraft:HACKED](https://www.youtube.com/playlist?list=PLhixgUqwRTjwvBI-hmbZ2rpkAl4lutnJG) is a video series by [@LiveOverflow](https://twitter.com/LiveOverflow) exploring various technical areas of Minecraft. It's a weird series trying to combine classic "Let's Plays" with "Hacking Tutorials". We are exploring how servers work, how modding support is implemented, we develop our own hacks, audit minecraft for vulnerabilities and much more... ![Minecraft:HACKED Thumbnail](https://img.youtube.com/vi/Ekcseve-mOg/maxresdefault.jpg) ## Episodes 1. **I Spent 100 Days Hacking Minecraft** [video](https://www.youtube.com/watch?v=Ekcseve-mOg&list=PLhixgUqwRTjwvBI-hmbZ2rpkAl4lutnJG&index=1) - Minecraft network protocol [wiki.vg](https://wiki.vg/Protocol) - Minecraft python proxy with [Quarry](https://github.com/barneygale/quarry) - Teleport hack attempt [file](/01_protocol_proxy/teleport_proxy.py) 2. **Minecraft, But It's Reverse Engineered...** [video](https://www.youtube.com/watch?v=OXdFckukh2I&list=PLhixgUqwRTjwvBI-hmbZ2rpkAl4lutnJG&index=3) - How Minecraft Server [PaperMC](https://github.com/PaperMC/Paper) is implemented - Reverse engineering Java with [jd-gui](http://java-decompiler.github.io/) and [fernflower by IntelliJ IDEA](https://www.jetbrains.com/idea/) - Obfuscated mappings via [intermediary](https://github.com/FabricMC/intermediary) and [yarn](https://github.com/FabricMC/yarn/tree/1.18.2-pre3/mappings/net/minecraft) - How Minecraft [projects relate](https://raw.githubusercontent.com/saboooor/fork-graph/main/img.png) by [saboooor](https://github.com/saboooor/fork-graph) 3. **Minecraft Hacker VS Herobrine** [video](https://www.youtube.com/watch?v=Hmmr1oLt-V8&list=PLhixgUqwRTjwvBI-hmbZ2rpkAl4lutnJG&index=4) - Fabric example client mod [FabricMC/fabric-example-mod](https://github.com/FabricMC/fabric-example-mod) - [Mixin examples](https://fabricmc.net/wiki/tutorial:mixin_examples) and [mixin cheatsheet](https://github.com/2xsaiko/mixin-cheatsheet) - Shulker dupe mod [code by 0x3C50](https://github.com/Coderx-Gamer/shulker-dupe) - Java bytecode manipulation with [asm.ow2](https://asm.ow2.io/) - [video by FredOverflow](https://www.youtube.com/watch?v=WPDV3LgUL2E) - Development Plugion for IntelliJ https://mcdev.io/ 4. **Flying Without Elytra** - Auto fish mod - Fly hack - Bypassing server flying detection 5. **Crafting a Minecraft 0day...** - Auditing the minecraft protocol - Discovering a minecraft protocol vulnerability 6. **TBA** ## Credits Thanks to all my supporters on [Patreon](https://www.patreon.com/liveoverflow) and [YouTube Members](https://www.youtube.com/c/LiveOverflow/join) for supporting weird projects like this. Additional thank you to the whole technical Minecraft community. In no particular order (hopefully I didn't miss anybody): - All https://wiki.vg contributors - 19MisterX98 - jellejurre and jurrejelle - xpple - Earthcomputer - SilicatYT - BananaRedPanda - PR0CESS FX - Mumfrey - Silk - Neil - vktec - _various anonymous people_