func (s *HackSession) IsActiveUser(user api.User) bool { for i := range s.Users { if s.Users[i].GetName() == user.GetName() { return true } } return false }
func (s *HackSession) RemoveUser(user api.User) { var newUsers []api.User for i := range s.Users { if s.Users[i].GetName() != user.GetName() { newUsers = append(newUsers, s.Users[i]) } } s.Users = newUsers }
// Cleans up user module when exiting a device func leaveDevice(user api.User) { dev_id := user.GetDeviceId() if dev_id == 0 { return } dev, _ := core.GetDeviceById(dev_id) hax := dev.GetHackSession() if hax == nil { return } hax.RemoveUser(user) if hax.NumOfUsers() == 0 { dev.SetHackSession(nil) } }
func (s *HackSession) InjectPacket(user api.User, TxPkt api.TransmitPacket) error { if s.Device == nil { return logger.Err("Device not set") } var err error pkt := api.CanData{} pkt.Src = user.GetName() pkt.ArbID = TxPkt.ArbId pkt.Network = TxPkt.Network pkt.B1, err = api.Atoui8(TxPkt.B1) if err != nil { return err } pkt.B2, err = api.Atoui8(TxPkt.B2) if err != nil { return err } pkt.B3, err = api.Atoui8(TxPkt.B3) if err != nil { return err } pkt.B4, err = api.Atoui8(TxPkt.B4) if err != nil { return err } pkt.B5, err = api.Atoui8(TxPkt.B5) if err != nil { return err } pkt.B6, err = api.Atoui8(TxPkt.B6) if err != nil { return err } pkt.B7, err = api.Atoui8(TxPkt.B7) if err != nil { return err } pkt.B8, err = api.Atoui8(TxPkt.B8) if err != nil { return err } err = s.Device.InjectPacket(pkt) return err }
func (s *HackSession) GetPackets(user api.User) []api.CanData { var pkts []api.CanData var idx int if s.Device == nil { return pkts } if user.LastIdx() == 0 { // First time sniffing user.SetLastIdx(s.Device.GetPacketIdx()) } pkts, idx = s.Device.GetPacketsFrom(user.LastIdx()) // TODO: Apply filters user.SetLastIdx(idx) return pkts }