Пример #1
0
func (s *HackSession) IsActiveUser(user api.User) bool {
	for i := range s.Users {
		if s.Users[i].GetName() == user.GetName() {
			return true
		}
	}
	return false
}
Пример #2
0
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
}
Пример #3
0
// 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)
	}
}
Пример #4
0
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
}
Пример #5
0
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
}