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; }
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++; } } }
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); }
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 !" ); } } }
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); } } }
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"); } } }
void Mac::HandleReceiveTimer(void *aContext) { Mac *obj = reinterpret_cast<Mac *>(aContext); obj->HandleReceiveTimer(); }
void Mac::HandleBeginTransmit(void *aContext) { Mac *obj = reinterpret_cast<Mac *>(aContext); obj->HandleBeginTransmit(); }
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; //} } }