| 916 | } |
| 917 | |
| 918 | String extractSSID(const wifi_promiscuous_pkt_t *packet) { |
| 919 | const uint8_t *frame = packet->payload; |
| 920 | int pos = 24; |
| 921 | while (pos + 1 < packet->rx_ctrl.sig_len) { |
| 922 | uint8_t tag = frame[pos]; |
| 923 | uint8_t len = frame[pos + 1]; |
| 924 | if (tag == 0x00 && len > 0 && len <= 32 && (pos + 2 + len <= packet->rx_ctrl.sig_len)) { |
| 925 | bool hidden = true; |
| 926 | for (int i = 0; i < len; i++) { |
| 927 | if (frame[pos + 2 + i] != 0x00) { |
| 928 | hidden = false; |
| 929 | break; |
| 930 | } |
| 931 | } |
| 932 | if (hidden) return "*HIDDEN*"; |
| 933 | char ssid[len + 1]; |
| 934 | memcpy(ssid, &frame[pos + 2], len); |
| 935 | ssid[len] = '\0'; |
| 936 | return String(ssid); |
| 937 | } |
| 938 | pos += 2 + len; |
| 939 | } |
| 940 | return "*WILDCARD*"; |
| 941 | } |
| 942 | |
| 943 | String extractMAC(const wifi_promiscuous_pkt_t *packet) { |
| 944 | const uint8_t *frame = packet->payload; |