From f167b1712b4d1d1c8a065cd3a028fea1e29af074 Mon Sep 17 00:00:00 2001 From: olebeck Date: Sat, 5 Mar 2022 14:39:46 +0100 Subject: [PATCH] add filtering --- Makefile | 5 ++--- skins.go | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index aed6b09..ff7e443 100644 --- a/Makefile +++ b/Makefile @@ -7,15 +7,14 @@ all: windows linux $(NAME).exe: $(SRCS) GOOS=windows $(GC) -o $@ - upx -9 $@ # ignore if fails + #upx -9 $@ # defender is an asshole and thinks this is an trojan $(NAME)-linux: $(SRCS) GOOS=linux $(GC) -o $@ - upx -9 $@ # ignore if fails + upx -9 $@ $(NAME)-mac: $(SRCS) # possibly broken GOOS=darwin $(GC) -o $@ - upx -9 $@ # ignore if fails .PHONY: clean windows linux mac diff --git a/skins.go b/skins.go index 77f7197..600712f 100644 --- a/skins.go +++ b/skins.go @@ -26,6 +26,8 @@ func init() { register_command("skins", "skin stealer", skin_main) } +var players = make(map[string]string) + var out_path string var name_regexp = regexp.MustCompile(`ยง.`) @@ -93,6 +95,9 @@ func write_skin_animations(output_path string, skin protocol.Skin) { } func write_skin(name string, skin protocol.Skin) { + if !strings.HasPrefix(name, player) { + return + } fmt.Printf("Writing skin for %s\n", name) complex := false skin_dir := path.Join(out_path, name) @@ -116,10 +121,13 @@ func write_skin(name string, skin protocol.Skin) { } } +var player string + func skin_main(args []string) error { var server string var help bool flag.StringVar(&server, "target", "", "target server") + flag.StringVar(&player, "player", "", "only download the skin of this player") flag.BoolVar(&help, "help", false, "show help") flag.CommandLine.Parse(args) if help { @@ -191,6 +199,12 @@ func skin_main(args []string) error { return err } switch _pk := pk.(type) { + case *packet.PlayerSkin: + name := players[_pk.UUID.String()] + if name == "" { + name = _pk.UUID.String() + } + write_skin(name, _pk.Skin) case *packet.PlayerList: if _pk.ActionType == 1 { // remove continue @@ -201,6 +215,7 @@ func skin_main(args []string) error { name = player.UUID.String() } write_skin(name, player.Skin) + players[player.UUID.String()] = name } } }