mirror of
https://github.com/bettercap/bettercap
synced 2025-07-31 12:10:10 -07:00
some progress
This commit is contained in:
parent
e0b38a8c60
commit
37188007fd
4 changed files with 35 additions and 47 deletions
2
go.mod
2
go.mod
|
@ -37,5 +37,5 @@ require (
|
|||
go.einride.tech/can v0.12.0
|
||||
golang.org/x/net v0.28.0
|
||||
golang.org/x/tools v0.24.0 // indirect
|
||||
tinygo.org/x/bluetooth v0.10.0
|
||||
tinygo.org/x/bluetooth v0.12.0
|
||||
)
|
||||
|
|
15
go.sum
15
go.sum
|
@ -120,10 +120,16 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ
|
|||
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
||||
github.com/soypat/cyw43439 v0.0.0-20240609122733-da9153086796 h1:1/r2URInjjFtWqT61gU7YGVCq3BRyXt/C7z4oLRF9Lo=
|
||||
github.com/soypat/cyw43439 v0.0.0-20240609122733-da9153086796/go.mod h1:1Otjk6PRhfzfcVHeWMEeku/VntFqWghUwuSQyivb2vE=
|
||||
github.com/soypat/cyw43439 v0.0.0-20250505012923-830110c8f4af h1:ZfFq94aH/BCSWWKd9RPUgdHOdgGKCnfl2VdvU9UksTA=
|
||||
github.com/soypat/cyw43439 v0.0.0-20250505012923-830110c8f4af/go.mod h1:MUaGO5m6X7xrkHrPDmnaxCEcuCCFN/0ZFh9oie+exbU=
|
||||
github.com/soypat/natiu-mqtt v0.5.1/go.mod h1:xEta+cwop9izVCW7xOx2W+ct9PRMqr0gNVkvBPnQTc4=
|
||||
github.com/soypat/natiu-mqtt v0.6.0/go.mod h1:xEta+cwop9izVCW7xOx2W+ct9PRMqr0gNVkvBPnQTc4=
|
||||
github.com/soypat/saleae v0.0.0-20230402180913-3584b7515dae/go.mod h1:9SV+w6E9YK/BePxdxYGXthkrRztHJCQlojWOjAxW3M4=
|
||||
github.com/soypat/saleae v0.0.0-20230607000858-72cbd6ef4f23/go.mod h1:9SV+w6E9YK/BePxdxYGXthkrRztHJCQlojWOjAxW3M4=
|
||||
github.com/soypat/seqs v0.0.0-20240527012110-1201bab640ef h1:phH95I9wANjTYw6bSYLZDQfNvao+HqYDom8owbNa0P4=
|
||||
github.com/soypat/seqs v0.0.0-20240527012110-1201bab640ef/go.mod h1:oCVCNGCHMKoBj97Zp9znLbQ1nHxpkmOY9X+UAGzOxc8=
|
||||
github.com/soypat/seqs v0.0.0-20250124201400-0d65bc7c1710 h1:Y9fBuiR/urFY/m76+SAZTxk2xAOS2n85f+H1CugajeA=
|
||||
github.com/soypat/seqs v0.0.0-20250124201400-0d65bc7c1710/go.mod h1:oCVCNGCHMKoBj97Zp9znLbQ1nHxpkmOY9X+UAGzOxc8=
|
||||
github.com/stratoberry/go-gpsd v1.3.0 h1:JxJOEC4SgD0QY65AE7B1CtJtweP73nqJghZeLNU9J+c=
|
||||
github.com/stratoberry/go-gpsd v1.3.0/go.mod h1:nVf/vTgfYxOMxiQdy9BtJjojbFRtG8H3wNula++VgkU=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
|
@ -149,6 +155,8 @@ github.com/tinygo-org/cbgo v0.0.4 h1:3D76CRYbH03Rudi8sEgs/YO0x3JIMdyq8jlQtk/44fU
|
|||
github.com/tinygo-org/cbgo v0.0.4/go.mod h1:7+HgWIHd4nbAz0ESjGlJ1/v9LDU1Ox8MGzP9mah/fLk=
|
||||
github.com/tinygo-org/pio v0.0.0-20231216154340-cd888eb58899 h1:/DyaXDEWMqoVUVEJVJIlNk1bXTbFs8s3Q4GdPInSKTQ=
|
||||
github.com/tinygo-org/pio v0.0.0-20231216154340-cd888eb58899/go.mod h1:LU7Dw00NJ+N86QkeTGjMLNkYcEYMor6wTDpTCu0EaH8=
|
||||
github.com/tinygo-org/pio v0.2.0 h1:vo3xa6xDZ2rVtxrks/KcTZHF3qq4lyWOntvEvl2pOhU=
|
||||
github.com/tinygo-org/pio v0.2.0/go.mod h1:LU7Dw00NJ+N86QkeTGjMLNkYcEYMor6wTDpTCu0EaH8=
|
||||
github.com/valyala/fastjson v1.6.3/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY=
|
||||
github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU=
|
||||
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||
|
@ -170,6 +178,8 @@ golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5D
|
|||
golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54=
|
||||
golang.org/x/exp v0.0.0-20230728194245-b0cb94b80691 h1:/yRP+0AN7mf5DkD3BAI6TOFnd51gEoDEb8o35jIFtgw=
|
||||
golang.org/x/exp v0.0.0-20230728194245-b0cb94b80691/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
|
||||
golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa h1:ELnwvuAXPNtPk1TJRuGkI9fDTwym6AYBu0qzT8AcHdI=
|
||||
golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ=
|
||||
golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=
|
||||
golang.org/x/image v0.0.0-20220617043117-41969df76e82/go.mod h1:doUCurBvlfPMKfmIpRIywoHmhN3VyhnoFDbvIEWF4hY=
|
||||
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||
|
@ -305,15 +315,20 @@ gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU=
|
|||
gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU=
|
||||
tinygo.org/x/bluetooth v0.10.0 h1:42n8qj2tuF5AfdbAUR2Nv45EhtVmbDFH6UoWnt6lzZQ=
|
||||
tinygo.org/x/bluetooth v0.10.0/go.mod h1:t/Vm2a/rslsBoqFQKCBsWQw/cmRicQq+8Tl3tj5RCRI=
|
||||
tinygo.org/x/bluetooth v0.12.0 h1:ztrLZfhcZsmzdpir7lBKNz+Q5Wbd6ZdUB98sYLhXWhw=
|
||||
tinygo.org/x/bluetooth v0.12.0/go.mod h1:6+y5kVUN6tU7wtJj+qrcFJEVhas4/bIDhGNqvENmT74=
|
||||
tinygo.org/x/drivers v0.14.0/go.mod h1:uT2svMq3EpBZpKkGO+NQHjxjGf1f42ra4OnMMwQL2aI=
|
||||
tinygo.org/x/drivers v0.15.1/go.mod h1:uT2svMq3EpBZpKkGO+NQHjxjGf1f42ra4OnMMwQL2aI=
|
||||
tinygo.org/x/drivers v0.16.0/go.mod h1:uT2svMq3EpBZpKkGO+NQHjxjGf1f42ra4OnMMwQL2aI=
|
||||
tinygo.org/x/drivers v0.19.0/go.mod h1:uJD/l1qWzxzLx+vcxaW0eY464N5RAgFi1zTVzASFdqI=
|
||||
tinygo.org/x/drivers v0.25.0/go.mod h1:v+mXaA4cgpz/YZJ3ZPm/86bYQJAXTaYtMkHlVwbodbw=
|
||||
tinygo.org/x/drivers v0.26.1-0.20230922160320-ed51435c2ef6/go.mod h1:X7utcg3yfFUFuKLOMTZD56eztXMjpkcf8OHldfTBsjw=
|
||||
tinygo.org/x/drivers v0.28.1-0.20241028055853-0186d0905dcc/go.mod h1:q/mU8G/wz821p8xXqbkBACOlmZFDHXd//DnYnCW+dDQ=
|
||||
tinygo.org/x/drivers v0.28.1-0.20241028090715-76a4276b5dea/go.mod h1:q/mU8G/wz821p8xXqbkBACOlmZFDHXd//DnYnCW+dDQ=
|
||||
tinygo.org/x/tinyfont v0.2.1/go.mod h1:eLqnYSrFRjt5STxWaMeOWJTzrKhXqpWw7nU3bPfKOAM=
|
||||
tinygo.org/x/tinyfont v0.3.0/go.mod h1:+TV5q0KpwSGRWnN+ITijsIhrWYJkoUCp9MYELjKpAXk=
|
||||
tinygo.org/x/tinyfont v0.4.0/go.mod h1:7nVj3j3geqBoPDzpFukAhF1C8AP9YocMsZy0HSAcGCA=
|
||||
tinygo.org/x/tinyfs v0.1.0/go.mod h1:ysc8Y92iHfhTXeyEM9+c7zviUQ4fN9UCFgSOFfMWv20=
|
||||
tinygo.org/x/tinyterm v0.1.0/go.mod h1:/DDhNnGwNF2/tNgHywvyZuCGnbH3ov49Z/6e8LPLRR4=
|
||||
tinygo.org/x/tinyterm v0.3.0/go.mod h1:F1pQjxEwNZQIc5czeJSBtk57ucEvbR4u7vHaLhWhHtg=
|
||||
tinygo.org/x/tinyterm v0.3.1-0.20241028084705-e36d93d72cca/go.mod h1:cA/wQ+7eghtbs4ZB+xn9qhZoUIe4lRcsr6KID5iO78g=
|
||||
|
|
|
@ -27,21 +27,8 @@ func (mod *BLERecon) startEnumeration(address string) error {
|
|||
knownDev, found := mod.Session.BLE.Get(address)
|
||||
if !found || knownDev == nil {
|
||||
return fmt.Errorf("device with address %s not found", address)
|
||||
} else if err := mod.adapter.StopScan(); err != nil {
|
||||
mod.Warning("error stopping previous scan: %v", err)
|
||||
}
|
||||
|
||||
mod.current.ResetWrite()
|
||||
|
||||
defer func() {
|
||||
// make sure to restart scan when we're done
|
||||
mod.Info("restoring ble scan")
|
||||
if err := mod.adapter.Scan(mod.onDevice); err != nil {
|
||||
mod.Error("error restoring ble scan: %v", err)
|
||||
}
|
||||
mod.Info("ble scan restored")
|
||||
}()
|
||||
|
||||
mod.Info("connecting to %s ...", address)
|
||||
|
||||
addr := bluetooth.Address{}
|
||||
|
@ -54,11 +41,19 @@ func (mod *BLERecon) startEnumeration(address string) error {
|
|||
return err
|
||||
}
|
||||
|
||||
defer func() {
|
||||
if err := device.Disconnect(); err != nil {
|
||||
mod.Warning("error disconnecting from %s: %v", address, err)
|
||||
} else {
|
||||
mod.Info("disconnected from %s", address)
|
||||
}
|
||||
}()
|
||||
|
||||
mod.Session.Events.Add("ble.device.connected", knownDev)
|
||||
|
||||
mod.Info("connected to %s", address)
|
||||
|
||||
srvcs, err := device.DiscoverServices(nil)
|
||||
discoveredServices, err := device.DiscoverServices(nil)
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not discover services for %s: %v", address, err)
|
||||
}
|
||||
|
@ -68,7 +63,7 @@ func (mod *BLERecon) startEnumeration(address string) error {
|
|||
|
||||
knownDev.ResetServices()
|
||||
|
||||
for _, svc := range srvcs {
|
||||
for _, svc := range discoveredServices {
|
||||
service := network.NewBLEService(strings.ToLower(svc.UUID().String()))
|
||||
|
||||
mod.Session.Events.Add("ble.device.service.discovered", svc)
|
||||
|
@ -88,11 +83,11 @@ func (mod *BLERecon) startEnumeration(address string) error {
|
|||
|
||||
rows = append(rows, row)
|
||||
|
||||
chars, err := svc.DiscoverCharacteristics(nil)
|
||||
svcCharacteristics, err := svc.DiscoverCharacteristics(nil)
|
||||
if err != nil {
|
||||
mod.Error("error while enumerating chars for service %s: %s", svc.UUID(), err)
|
||||
} else {
|
||||
for _, ch := range chars {
|
||||
for _, ch := range svcCharacteristics {
|
||||
char := network.NewBLECharacteristic(strings.ToLower(ch.UUID().String()))
|
||||
if mtu, err := ch.GetMTU(); err != nil {
|
||||
mod.Warning("can't read %v mtu: %v", ch.UUID(), err)
|
||||
|
@ -110,7 +105,6 @@ func (mod *BLERecon) startEnumeration(address string) error {
|
|||
}
|
||||
|
||||
data := ""
|
||||
multi := ([]string)(nil)
|
||||
raw := make([]byte, 255)
|
||||
if n, err := ch.Read(raw); err == nil {
|
||||
raw = raw[0:n]
|
||||
|
@ -118,27 +112,12 @@ func (mod *BLERecon) startEnumeration(address string) error {
|
|||
data = parseRawData(raw)
|
||||
}
|
||||
|
||||
if multi == nil {
|
||||
char.Data = data
|
||||
rows = append(rows, []string{
|
||||
name,
|
||||
strings.Join(char.Properties, ", "),
|
||||
data,
|
||||
})
|
||||
} else {
|
||||
char.Data = multi
|
||||
for i, m := range multi {
|
||||
if i == 0 {
|
||||
rows = append(rows, []string{
|
||||
name,
|
||||
strings.Join(char.Properties, ", "),
|
||||
m,
|
||||
})
|
||||
} else {
|
||||
rows = append(rows, []string{"", "", "", m})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
service.Characteristics = append(service.Characteristics, char)
|
||||
}
|
||||
|
@ -151,11 +130,5 @@ func (mod *BLERecon) startEnumeration(address string) error {
|
|||
|
||||
tui.Table(mod.Session.Events.Stdout, columns, rows)
|
||||
|
||||
if err := device.Disconnect(); err != nil {
|
||||
mod.Warning("error disconnecting from %s: %v", address, err)
|
||||
} else {
|
||||
mod.Info("disconnected from %s", address)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -62,7 +62,7 @@ func NewBLERecon(s *session.Session) *BLERecon {
|
|||
// deviceId: -1,
|
||||
quit: make(chan bool),
|
||||
done: make(chan bool),
|
||||
connTimeout: 5,
|
||||
connTimeout: 15,
|
||||
devTTL: 30,
|
||||
current: &CurrentDevice{},
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue