int BadMacTest(const struct TConfig* config) { if (InitWriter(config->MainConfig.Device)) return 1; int packetsPerTest = config->MainConfig.PacketsPerTest; double start = config->BadMacConfig.Start; double step = config->BadMacConfig.Step; int tests = config->BadMacConfig.TestsCount; int testNum; uint32_t packetNum = 0; struct TUDPPacket packet; InitUDPPacket(&packet, &config->MainConfig); uint8_t payload[18]; memset(payload, 'x', sizeof(payload)); struct timeval tv; tv.tv_sec = 0; tv.tv_usec = 0; fprintf(stderr, "Bad MAC test\n%4s %8s %15s\n", ColumnTest, ColumnSended, ColumnBadPackets); for (testNum = 0; testNum < tests; ++testNum) { double frenq = start + testNum*step; if (frenq < 0) frenq = 0; if (frenq > 1) frenq = 1; int badPackets = 0; int i; for (i = 0; i < packetsPerTest; ++i) { WritePacketNum(payload, packetNum); SetData(&packet, payload, sizeof(payload)); if (i != 0 && i != packetsPerTest - 1 && badPackets < i*frenq) { SetMac(&packet, config->MainConfig.SourceMac, config->BadMacConfig.FakeDestMac); ++badPackets; } else { SetMac(&packet, config->MainConfig.SourceMac, config->MainConfig.DestMac); } if (SendPacket(&packet, &tv, config->MainConfig.Delay)) return 1; packetNum++; } fprintf(stderr, "%4d %8d %15.2lf\n", testNum, packetsPerTest, frenq*100); } FinishWriter(); return 0; }
nsresult nsWifiScannerDBus::IdentifyAPProperties(DBusMessage* aMsg) { DBusMessageIter arr; nsresult rv = GetDBusIterator(aMsg, &arr); NS_ENSURE_SUCCESS(rv, rv); RefPtr<nsWifiAccessPoint> ap = new nsWifiAccessPoint(); do { DBusMessageIter dict; dbus_message_iter_recurse(&arr, &dict); do { const char* key; dbus_message_iter_get_basic(&dict, &key); if (!key) { return NS_ERROR_FAILURE; } dbus_message_iter_next(&dict); DBusMessageIter variant; dbus_message_iter_recurse(&dict, &variant); if (!strncmp(key, "Ssid", strlen("Ssid"))) { nsresult rv = StoreSsid(&variant, ap); NS_ENSURE_SUCCESS(rv, rv); break; } if (!strncmp(key, "HwAddress", strlen("HwAddress"))) { nsresult rv = SetMac(&variant, ap); NS_ENSURE_SUCCESS(rv, rv); break; } if (!strncmp(key, "Strength", strlen("Strength"))) { if (dbus_message_iter_get_arg_type(&variant) != DBUS_TYPE_BYTE) { return NS_ERROR_FAILURE; } uint8_t strength; dbus_message_iter_get_basic(&variant, &strength); ap->setSignal(strength); } } while (dbus_message_iter_next(&dict)); } while (dbus_message_iter_next(&arr)); mAccessPoints->AppendObject(ap); return NS_OK; }