Better packet counting and output

This commit is contained in:
Stefan Kremser
2018-04-16 21:33:38 +02:00
parent 2955c1cf36
commit 7e92f644d0
6 changed files with 43 additions and 16 deletions

View File

@@ -81,8 +81,8 @@ void Attack::updateCounter() {
// deauth packets per second
if (deauth.active) {
if (deauthAll) deauth.maxPkts = settings.getDeauthsPerTarget() * (scan.countAll() - names.selected());
else deauth.maxPkts = settings.getDeauthsPerTarget() * scan.countSelected();
if (deauthAll) deauth.maxPkts = settings.getDeauthsPerTarget() * (accesspoints.count() + stations.count()*2 - names.selected());
else deauth.maxPkts = settings.getDeauthsPerTarget() * (accesspoints.selected() + stations.selected()*2 + names.selected() + names.stations());
} else {
deauth.maxPkts = 0;
}
@@ -107,17 +107,19 @@ void Attack::updateCounter() {
deauthPkts = deauth.packetCounter;
beaconPkts = beacon.packetCounter;
probePkts = probe.packetCounter;
packetRate = tmpPacketRate;
deauth.packetCounter = 0;
beacon.packetCounter = 0;
probe.packetCounter = 0;
deauth.tc = 0;
beacon.tc = 0;
probe.tc = 0;
tmpPacketRate = 0;
}
void Attack::status() {
char s[80];
sprintf(s, str(A_STATUS).c_str(), deauthPkts, deauth.maxPkts, beaconPkts, beacon.maxPkts, probePkts, probe.maxPkts);
char s[120];
sprintf(s, str(A_STATUS).c_str(), packetRate, deauthPkts, deauth.maxPkts, beaconPkts, beacon.maxPkts, probePkts, probe.maxPkts);
prnt(String(s));
}
@@ -272,13 +274,17 @@ bool Attack::deauthDevice(uint8_t* apMac, uint8_t* stMac, uint8_t reason, uint8_
// send deauth frame
deauthPacket[0] = 0xc0;
if (sendPacket(deauthPacket, packetSize, ch, settings.getForcePackets()))
if (sendPacket(deauthPacket, packetSize, ch, settings.getForcePackets())){
success = true;
deauth.packetCounter++;
}
// send disassociate frame
deauthPacket[0] = 0xa0;
if (sendPacket(deauthPacket, packetSize, ch, settings.getForcePackets()))
if (sendPacket(deauthPacket, packetSize, ch, settings.getForcePackets())){
success = true;
deauth.packetCounter++;
}
// send another packet, this time from the station to the accesspoint
if (!macBroadcast(stMac)) { // but only if the packet isn't a broadcast
@@ -289,19 +295,21 @@ bool Attack::deauthDevice(uint8_t* apMac, uint8_t* stMac, uint8_t reason, uint8_
// send deauth frame
deauthPacket[0] = 0xc0;
if (sendPacket(deauthPacket, packetSize, ch, settings.getForcePackets()))
if (sendPacket(deauthPacket, packetSize, ch, settings.getForcePackets())){
success = true;
deauth.packetCounter++;
}
// send disassociate frame
deauthPacket[0] = 0xa0;
if (sendPacket(deauthPacket, packetSize, ch, settings.getForcePackets()))
if (sendPacket(deauthPacket, packetSize, ch, settings.getForcePackets())){
success = true;
deauth.packetCounter++;
}
}
if (success){
if (success)
deauth.time = currentTime;
deauth.packetCounter++;
}
return success;
}
@@ -373,10 +381,12 @@ bool Attack::sendPacket(uint8_t* packet, uint16_t packetSize, uint8_t ch, uint16
bool sent = wifi_send_pkt_freedom(packet, packetSize, 0) == 0;
// try again until it's sent out
for (int i = 0; i < tries && !sent; i++) {
for (int i = 0; i < tries && !sent; i++)
sent = wifi_send_pkt_freedom(packet, packetSize, 0) == 0;
}
if(sent)
tmpPacketRate ++;
return sent;
}

View File

@@ -30,6 +30,7 @@ extern String macToStr(uint8_t* mac);
extern String bytesToStr(uint8_t* b, uint32_t size);
extern void setWifiChannel(uint8_t ch);
extern bool writeFile(String path, String &buf);
extern int8_t free80211_send(uint8_t *buffer, uint16_t len);
class Attack {
public:
@@ -94,6 +95,9 @@ class Attack {
uint32_t beaconPkts = 0;
uint32_t probePkts = 0;
uint32_t tmpPacketRate = 0;
uint32_t packetRate = 0;
uint8_t apCount = 0;
uint8_t stCount = 0;
uint8_t nCount = 0;
@@ -200,4 +204,5 @@ class Attack {
#endif

View File

@@ -397,6 +397,13 @@ int Names::selected() {
return num;
}
int Names::stations() {
int num = 0;
for (int i = 0; i < count(); i++)
if (isStation(i)) num++;
return num;
}
bool Names::internal_check(int num) {
return num >= 0 && num < count();
}

View File

@@ -73,6 +73,7 @@ class Names {
int count();
int selected();
int stations();
bool check(int num);
private:

View File

@@ -4,6 +4,9 @@
github.com/spacehuhn
===========================================
*/
extern "C" {
#include "user_interface.h"
}
#include <EEPROM.h>
#include "oui.h"
#include "language.h"
@@ -95,7 +98,7 @@ void setup() {
wifi_set_promiscuous_rx_cb([](uint8_t* buf, uint16_t len) {
scan.sniffer(buf, len);
});
// set mac for station
wifi_set_macaddr(STATION_IF, settings.getMacSt());
@@ -174,4 +177,5 @@ void loop() {

View File

@@ -415,7 +415,7 @@ const char A_START[] PROGMEM = "Start attacking";
const char A_NO_MODE_ERROR[] PROGMEM = "WARNING: No valid attack mode set";
const char A_STOP[] PROGMEM = "Stopped attacking";
const char A_TIMEOUT[] PROGMEM = "Timeout - ";
const char A_STATUS[] PROGMEM = "[Pkt/s] deauths: %+3u/%-3u beacons: %+3u/%-3u probes: %+3u/%-3u\r\n";
const char A_STATUS[] PROGMEM = "[Pkt/s] All: %+4u | Deauths: %+3u/%-3u | Beacons: %+3u/%-3u | Probes: %+3u/%-3u\r\n";
const char A_ENABLED_OUTPUT[] PROGMEM = "Enabled attack output";
const char A_DISABLED_OUTPUT[] PROGMEM = "Disabled attack output";