コード例 #1
0
void Attack::buildDeauth(Mac _ap, Mac _client, uint8_t type, uint8_t reason) {
  packetSize = 0;
  for (int i = 0; i < sizeof(deauthPacket); i++) {
    packet[i] = deauthPacket[i];
    packetSize++;
  }

  for (int i = 0; i < 6; i++) {
    //set target (client)
    packet[4 + i] = _client._get(i);
    //set source (AP)
    packet[10 + i] = packet[16 + i] = _ap._get(i);
  }

  //set type
  packet[0] = type;
  packet[24] = reason;
}
コード例 #2
0
void Attack::buildBeacon(Mac _ap, String _ssid, int _ch, bool encrypt) {
  packetSize = 0;
  int ssidLen = _ssid.length();
  if (ssidLen > 32) ssidLen = 32;

  for (int i = 0; i < sizeof(beaconPacket_header); i++) {
    packet[i] = beaconPacket_header[i];
    packetSize++;
  }

  if(settings.beaconInterval){
    beaconPacket_header[32] = 0xe8;
    beaconPacket_header[33] = 0x03;
  }

  for (int i = 0; i < 6; i++) {
    //set source (AP)
    packet[10 + i] = packet[16 + i] = _ap._get(i);
  }

  packet[packetSize] = 0x00;
  packetSize++;
  packet[packetSize] = ssidLen;
  packetSize++;

  for (int i = 0; i < ssidLen; i++) {
    packet[packetSize] = _ssid[i];
    packetSize++;
  }

  for (int i = 0; i < sizeof(beaconPacket_end); i++) {
    packet[packetSize] = beaconPacket_end[i];
    packetSize++;
  }

  packet[packetSize] = _ch;
  packetSize++;

  if (encrypt) {
    for (int i = 0; i < sizeof(beaconWPA2tag); i++) {
      packet[packetSize] = beaconWPA2tag[i];
      packetSize++;
    }
  }

}
コード例 #3
0
void Attack::buildProbe(String _ssid, Mac _mac) {
  int len = _ssid.length();
  if (len > 32) len = 32;
  packetSize = 0;

  for (int i = 0; i < sizeof(probePacket); i++) packet[packetSize + i] = probePacket[i];
  packetSize += sizeof(probePacket);

  for (int i = 0; i < 6; i++) packet[10 + i] = _mac._get(i);

  packet[packetSize] = len;
  packetSize++;

  for (int i = 0; i < len; i++) packet[packetSize + i] = _ssid[i];
  packetSize += len;

  for (int i = 0; i < sizeof(probePacket_RateTag); i++) packet[packetSize + i] = probePacket_RateTag[i];
  packetSize += sizeof(probePacket_RateTag);
}
コード例 #4
0
void Settings::syncMacInterface()
{
	if ( debug )
		{
			Serial.println ( "[+] Trying to sync the MAC addr with settings" );
		}
		
	if ( isSettingsLoaded )
		{
			Mac macToSync;
			
			if ( isMacAPRand )
				{
					macToSync.randomize ();
					wifi_set_macaddr ( SOFTAP_IF, macToSync._get () );
					
					if ( debug )
						{ Serial.println ( "[+] Synced with a random mac addr : " + macToSync.toString () ); }
				}
				
			else
				if ( macAP.valid () )
					{
						macToSync = macAP;
						wifi_set_macaddr ( SOFTAP_IF, macToSync._get () );
						
						if ( debug )
							{ Serial.println ( "[+] Synced with saved mac addr : " + macToSync.toString () ); }
					}
					
				else
					{
						if ( debug )
							{ Serial.println ( "[+] Could not sync because of invalid settings !" ); }
					}
		}
		
	else
		{
			if ( debug )
				{ Serial.println ( "Could not sync because settings are not loaded !" ); }
		}
}
コード例 #5
0
ファイル: tgamma.cpp プロジェクト: gmackie/GR-ABM-ODE-2D
void Tgam::fasLigandKilling(GrGrid& grid, Stats& stats)
{
    Pos coord;
    if (returnRandMacFromMoore(grid, coord))  {
        Mac* pMac = dynamic_cast<Mac*>(grid.agent(coord, 0));
        if (!pMac) pMac = dynamic_cast<Mac*>(grid.agent(coord, 1));
        assert(pMac);

        // If the mac died on this time step ignore it.
        if (pMac->getNextState() == Mac::MAC_DEAD)  {
            return;
          }

        // Fas/FasL induced apoptosis with probability
        if (pMac->getState() == Mac::MAC_INFECTED || pMac->getState() == Mac::MAC_CINFECTED)  {
            ++stats.getApoptosisFasFasL();
            pMac->apoptosis(grid);
            pMac->kill();
            grid.incKillings(coord);
          }
    }
}
コード例 #6
0
ファイル: tgamma.cpp プロジェクト: gmackie/GR-ABM-ODE-2D
void Tgam::checkMacTgamInduced(GrGrid& grid)
{
    Pos coord;
    if (returnRandMacFromMoore(grid, coord))
    {
        Mac* pMac = dynamic_cast<Mac*>(grid.agent(coord, 0));
        if (!pMac) pMac = dynamic_cast<Mac*>(grid.agent(coord, 1));
        assert(pMac);

        // If the mac died on this time step ignore it.
        if (pMac->getNextState() == Mac::MAC_DEAD)
            return;

        // If mac does not die then check for induction conditions - Macs

        bool ProbAntigenPres = g_Rand.getReal() < _PARAM(Tcell_Tgam_probAntigenPresentation);

        if(pMac && pMac->getICOS())
            _nICOS ++;

        switch(pMac->getState())
         {
            case Mac::MAC_INFECTED:
            case Mac::MAC_CINFECTED:
            case Mac::MAC_ACTIVE:
                if (ProbAntigenPres)
                    _nAntigenStim ++;
                break;
            case Mac::MAC_RESTING:
            if ((pMac->getNFkB() || pMac->getStat1()) && ProbAntigenPres)
                    _nAntigenStim ++;
                break;
            throw std::runtime_error("Unknown Mac State in Tgam Induction Switch");
         }
    }
}
コード例 #7
0
ファイル: mac.cpp プロジェクト: butterflyy/openthread
void Mac::HandleReceiveTimer(void *aContext)
{
    Mac *obj = reinterpret_cast<Mac *>(aContext);
    obj->HandleReceiveTimer();
}
コード例 #8
0
ファイル: mac.cpp プロジェクト: butterflyy/openthread
void Mac::HandleBeginTransmit(void *aContext)
{
    Mac *obj = reinterpret_cast<Mac *>(aContext);
    obj->HandleBeginTransmit();
}
コード例 #9
0
ファイル: JeeNodeRfm12B.cpp プロジェクト: bswe/6.1
int main (void) {
    uint8_t SequenceNumber = 0;
	uint8_t Char;
    int8_t NumberSent = 0, NumberToSend = 0, LoopCount = 0, UnexpectedPacketCount = 0, NoAckCount = 0;
    		
	InitPinInActive (RED_LED_PIN);
	InitPinInActive (GREEN_LED_PIN);
	
	SerialInit (57600);

	SendString (UI8_P("JeeNodeRfm12B (1.8 wcb)\r\n"));
	SendString (UI8_P("a(uto-test), e(nd-test), (r)eset, [n](s)end\r\n"));
	
	Radio.Initialize ();
	
	while(1) {
		if ((Char = ReadChar())) 
			switch (Char) {
                case 'a':
                    if (NumberToSend == -1)
                        break;
                    SendString (UI8_P("Starting auto-test\r\n"));
                    NumberToSend = -1;
                    SequenceNumber = MacLayer.MakeRequestPacket (PacketBfr, 1, 2, UI8_P("123"), 3);
                    SendPacket (PacketBfr, SequenceNumber);
                    LoopCount = UnexpectedPacketCount = NoAckCount = 0;
	                SetPinActive (GREEN_LED_PIN);
                    break;
                case 'e':
                    if (NumberToSend == 0)
                        break;
                    SendString (UI8_P("Ending auto-test\r\n"));
                    sprintf ((char*) StrBfr, "unexpected # = %d, no_ack # =  %d\r\n", UnexpectedPacketCount, NoAckCount);
                    SendString (StrBfr);
                    NumberToSend = 0;
                    break;
                case 'r': 
				    SendString (UI8_P("RESETING!\r\n"));
				    cli();                  // irq's off
				    wdt_enable (WDTO_15MS); // watch dog on, 15ms
				    while(1);               // loop until watch dog fires
			    case 's':
                    if (NumberToSend <= 0)
                        NumberToSend = 1;
                    SendStringAndInt (UI8_P("Sending "), NumberToSend, UI8_P(" packets\r\n"));
                    NumberSent = -1;
                    while (NumberToSend > ++NumberSent) {
                        SequenceNumber = MacLayer.MakeRequestPacket (PacketBfr, 1, 2, UI8_P("123"), 3);
			            if (0 == SendPacket (PacketBfr, SequenceNumber)) {
                            NumberSent = -1;
    			            break;
			                }
                        }
                    if (NumberToSend == NumberSent) {
    			        SetPinActive (GREEN_LED_PIN);
    			        _delay_ms (100);
    			        SetPinInActive (GREEN_LED_PIN);
                        } 
                    NumberToSend = 0;
                    break;
                default :
                    if ((0x30 <= Char) && (Char <= 0x39))
                        NumberToSend = (NumberToSend * 10) + Char - 0x30;
                    else {
    			        sprintf ((char*) StrBfr, "Unexpected input character %c\r\n", Char);
    			        SendString (StrBfr);
                        }                        
                }                    
		if (Radio.Recv (&Input[0]) > 0) {
		    DisplayInput ();
            if ((Input[PACKET_TYPE_INDEX] == MAC_RESPONSE_PACKET_TYPE) &&
                (Input[PACKET_SEQUENCE_INDEX] == SequenceNumber)) {
    			sprintf ((char*) StrBfr, "Got ack response for %d\r\n", SequenceNumber);
    			SendString (StrBfr);
                if (NumberToSend < 0) {
                    _delay_ms (100);
                    SequenceNumber = MacLayer.MakeRequestPacket (PacketBfr, 1, 2, UI8_P("123"), 3);
                    SendPacket (PacketBfr, SequenceNumber);
	                SetPinActive (GREEN_LED_PIN);
                    LoopCount = 0;
                    }
		        //Radio.DisplayStatus ();
                //Radio.ResetStatus();
                //NumberSent = 0;
                }
            else if (Input[PACKET_TYPE_INDEX] == MAC_REQUEST_PACKET_TYPE) {
                sprintf ((char*) StrBfr, "Got request packet with sequence %d\r\n", Input[PACKET_SEQUENCE_INDEX]);
                SendString (StrBfr);
	            SetPinActive (GREEN_LED_PIN);
                LoopCount = 0;
                SequenceNumber = Input[PACKET_SEQUENCE_INDEX];
                MacLayer.MakeResponsePacket (PacketBfr, 1, 2, SequenceNumber, UI8_P("123"), 3);
			    if (0 == SendPacket (PacketBfr, SequenceNumber)) 
    			    SendStringAndInt (UI8_P("Could not send response for "), Input[PACKET_SEQUENCE_INDEX], UI8_P("\r\n"));
                }
            else {
    			sprintf ((char*) StrBfr, "\r\nGot unexpected packet !!!!!!!!!!!!!!!!!!!!!!\r\n\n");
    			SendString (StrBfr);
                UnexpectedPacketCount++;
                }                                
            }
        _delay_ms (10);
        LoopCount++;
        if (LoopCount == 10)
            SetPinInActive (GREEN_LED_PIN);
        else if ((NumberToSend < 0) && (LoopCount == 100)) {
    	    SendStringAndInt (UI8_P("!!!!!!!!!!!!!!!!!!!!!!! Did not get Ack for "), 
                              SequenceNumber, 
                              UI8_P(" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n"));
            NoAckCount++;
            SendPacket (PacketBfr, SequenceNumber);
            LoopCount = 0;
	        SetPinActive (GREEN_LED_PIN);
            }
        //else if (NumberSent > 0) {
		    //Radio.DisplayStatus ();
            //Radio.ResetStatus();
            //NumberSent = 0;
            //}            
		}
	}