update dragonfly, put captures in folder
This commit is contained in:
parent
12417c63a3
commit
2f9c74ae5c
2
go.mod
2
go.mod
|
@ -6,7 +6,7 @@ go 1.19
|
|||
replace github.com/sandertv/gophertunnel => github.com/olebeck/gophertunnel v1.26.2
|
||||
|
||||
//replace github.com/df-mc/dragonfly => ./dragonfly
|
||||
replace github.com/df-mc/dragonfly => github.com/olebeck/dragonfly v0.9.1-4
|
||||
replace github.com/df-mc/dragonfly => github.com/olebeck/dragonfly v0.9.1-5
|
||||
|
||||
require (
|
||||
github.com/cloudfoundry-attic/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21
|
||||
|
|
2
go.sum
2
go.sum
|
@ -74,6 +74,8 @@ github.com/olebeck/dragonfly v0.9.1-3 h1:ULE04Wx6MzBMuMmjj+xb9VtdYnCRoI6EafOWqcY
|
|||
github.com/olebeck/dragonfly v0.9.1-3/go.mod h1:ZjzPME6I1nc73voUgr2s5lpkoTxnWuR54V6c1KbULX0=
|
||||
github.com/olebeck/dragonfly v0.9.1-4 h1:eHGO1wBiG21cfDFMx3p+oaVV49JxzT1cMwdZOTSupPE=
|
||||
github.com/olebeck/dragonfly v0.9.1-4/go.mod h1:ZjzPME6I1nc73voUgr2s5lpkoTxnWuR54V6c1KbULX0=
|
||||
github.com/olebeck/dragonfly v0.9.1-5 h1:Y0o2x/r5l0xFreVEQR9p9pVEjAsbcxkSlQ/xKl8Dfq0=
|
||||
github.com/olebeck/dragonfly v0.9.1-5/go.mod h1:ZjzPME6I1nc73voUgr2s5lpkoTxnWuR54V6c1KbULX0=
|
||||
github.com/olebeck/gophertunnel v1.26.2 h1:AbiZcmeR5LenSJ5NX/2BPxLC3ddlvgWjrjouPmOB6BA=
|
||||
github.com/olebeck/gophertunnel v1.26.2/go.mod h1:dYFetA6r62huhc1EgR9p8VFAFtKOuGgVE/iXf5CzZ4o=
|
||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
|
|
|
@ -61,7 +61,9 @@ func (c *CaptureCMD) Execute(ctx context.Context, f *flag.FlagSet, _ ...interfac
|
|||
return 1
|
||||
}
|
||||
|
||||
fio, err := os.Create(hostname + "-" + time.Now().Format("2006-01-02_15-04-05") + ".pcap2")
|
||||
os.Mkdir("captures", 0o775)
|
||||
|
||||
fio, err := os.Create("captures/" + hostname + "-" + time.Now().Format("2006-01-02_15-04-05") + ".pcap2")
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
return 1
|
||||
|
|
|
@ -175,6 +175,14 @@ func (c *WorldCMD) Execute(ctx context.Context, f *flag.FlagSet, _ ...interface{
|
|||
return pk, nil
|
||||
}
|
||||
|
||||
super_verbose_log := false
|
||||
if super_verbose_log {
|
||||
utils.F_Log, err = os.Create("packets.log")
|
||||
if err != nil {
|
||||
logrus.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
err = proxy.Run(ctx, server_address)
|
||||
if err != nil {
|
||||
logrus.Error(err)
|
||||
|
|
|
@ -2,8 +2,13 @@ package utils
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net"
|
||||
"reflect"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/bedrock-tool/bedrocktool/locale"
|
||||
"github.com/fatih/color"
|
||||
|
@ -44,6 +49,66 @@ var MutedPackets = []string{
|
|||
}
|
||||
|
||||
var ExtraVerbose []string
|
||||
var F_Log io.Writer
|
||||
var dmp_lock sync.Mutex
|
||||
|
||||
func dmp_struct(level int, in any, w_type bool) (s string) {
|
||||
t_base := strings.Repeat("\t", level)
|
||||
|
||||
ii := reflect.Indirect(reflect.ValueOf(in))
|
||||
if w_type {
|
||||
type_name := reflect.TypeOf(in).String()
|
||||
s += type_name + " "
|
||||
} else {
|
||||
s += "\t"
|
||||
}
|
||||
|
||||
struct_entry := func(ii reflect.Value) {
|
||||
s += "{\n"
|
||||
for i := 0; i < ii.NumField(); i++ {
|
||||
field := ii.Type().Field(i)
|
||||
if field.IsExported() {
|
||||
d := dmp_struct(level+1, ii.Field(i).Interface(), true)
|
||||
s += t_base + fmt.Sprintf("\t%s = %s\n", field.Name, d)
|
||||
} else {
|
||||
s += t_base + "\t" + field.Name + " (unexported)"
|
||||
}
|
||||
}
|
||||
s += t_base + "}\n"
|
||||
}
|
||||
|
||||
if ii.Kind() == reflect.Struct {
|
||||
struct_entry(ii)
|
||||
} else if ii.Kind() == reflect.Slice {
|
||||
var t reflect.Type
|
||||
if ii.Len() > 0 {
|
||||
e := ii.Index(0)
|
||||
t = reflect.TypeOf(e.Interface())
|
||||
}
|
||||
if ii.Len() > 1000 {
|
||||
s += " [<slice too long>]"
|
||||
} else if ii.Len() == 0 || t.Kind() == reflect.Struct {
|
||||
s += "\t[\n"
|
||||
for i := 0; i < ii.Len(); i++ {
|
||||
s += t_base
|
||||
s += dmp_struct(level+1, ii.Index(i).Interface(), false)
|
||||
}
|
||||
s += t_base + "]\n"
|
||||
} else {
|
||||
s += fmt.Sprintf("%#v", ii.Interface())
|
||||
}
|
||||
} else if ii.Kind() == reflect.Map {
|
||||
j, err := json.MarshalIndent(ii.Interface(), t_base, "\t")
|
||||
if err != nil {
|
||||
s += err.Error()
|
||||
}
|
||||
s += string(j)
|
||||
} else {
|
||||
s += fmt.Sprintf(" %#v", ii.Interface())
|
||||
}
|
||||
|
||||
return s
|
||||
}
|
||||
|
||||
func PacketLogger(header packet.Header, payload []byte, src, dst net.Addr) {
|
||||
var pk packet.Packet
|
||||
|
@ -55,12 +120,19 @@ func PacketLogger(header packet.Header, payload []byte, src, dst net.Addr) {
|
|||
|
||||
defer func() {
|
||||
if recoveredErr := recover(); recoveredErr != nil {
|
||||
logrus.Errorf("%T: %w", pk, recoveredErr.(error))
|
||||
logrus.Errorf("%T: %w", pk, recoveredErr)
|
||||
}
|
||||
}()
|
||||
|
||||
pk.Unmarshal(protocol.NewReader(bytes.NewBuffer(payload), 0))
|
||||
|
||||
if F_Log != nil {
|
||||
dmp_lock.Lock()
|
||||
defer dmp_lock.Unlock()
|
||||
F_Log.Write([]byte(dmp_struct(0, pk, true)))
|
||||
F_Log.Write([]byte("\n\n"))
|
||||
}
|
||||
|
||||
pk_name := reflect.TypeOf(pk).String()[1:]
|
||||
if slices.Contains(MutedPackets, pk_name) {
|
||||
return
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
package utils
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/binary"
|
||||
"io"
|
||||
"net"
|
||||
"os"
|
||||
"reflect"
|
||||
|
||||
"github.com/sandertv/gophertunnel/minecraft"
|
||||
"github.com/sandertv/gophertunnel/minecraft/protocol"
|
||||
"github.com/sandertv/gophertunnel/minecraft/protocol/packet"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
@ -79,7 +81,11 @@ func create_replay_connection(ctx context.Context, filename string, onConnect Co
|
|||
}
|
||||
|
||||
for _, pk := range pks {
|
||||
logrus.Printf("%s", reflect.TypeOf(pk).String()[1:])
|
||||
f := bytes.NewBuffer(nil)
|
||||
b := protocol.NewWriter(f, 0)
|
||||
pk.Marshal(b)
|
||||
|
||||
PacketLogger(packet.Header{PacketID: pk.ID()}, f.Bytes(), &net.UDPAddr{}, &net.UDPAddr{})
|
||||
|
||||
if game_started {
|
||||
if packetCB != nil {
|
||||
|
|
Loading…
Reference in New Issue