GithubHelp home page GithubHelp logo

aleksamcode / preferred-network-list-sniffer Goto Github PK

View Code? Open in Web Editor NEW
139.0 4.0 7.0 8.58 MB

A reconnaissance tool for capturing and displaying SSIDs from device's Preferred Network List.

License: MIT License

Python 69.97% Shell 0.70% HTML 6.68% CSS 3.61% JavaScript 16.27% Dockerfile 2.76%
beacon cybersecurity hacking hacking-tool hacking-tools infosec iot raspberry-pi security security-tools sniffer ssid network-analysis network-security packet-sniffer rpi wifi-security redteam kali-linux information-security

preferred-network-list-sniffer's Introduction

Preferred Network List Sniffer - PNLS

License: MIT

Preferred Network List Sniffer (PNLS) is a Red Team Wi-Fi auditing tool with a simple web interface that is capable of intercepting SSIDs1 from the device's preferred network list (PNL)2. This is achieved by sniffing out Probe Requests in the nearby vicinity, which are then parsed for SSID and other information and finally propagated to the web UI. The primary motivation for this project was to look into 802.11 Probe Requests and the privacy risks associated with the data they transmit.

PNLS system overview

Fig. 1: PNLS system overview

Warning

All content in this project is intended for security research purposes only.

Note

  • I'm currently writing a paper that will thoroughly explain the theory that makes this tool possible. It should be published in the coming weeks.

  • To monitor the ongoing work on the PNLS, see the project's board.

Table of contents

How to build the PNLS

Here is what you will need in order to duplicate and deploy this project, including both the hardware and software components. Once you have your working environment ready, head over to the setup sections.

Requirements

Prerequisites

  • Kali Linux OS
    • Needed in order to use monitoring mode and aircrack-ng tool. You can download the Kali Linux ARM image from here.
      • Alternatively, you could use another OS, but you will need to patch3 the kernel using the nexmon4 or use a wireless adapter that supports monitoring mode. Here is a link for supported USB adapters by Raspberry Pi.
      • You will also have to install the aircrack-ng tool, as it only comes preinstalled on Kali Linux.
  • Start your network interface in monitoring mode with: sudo airmon-ng start wlan0 [2].

Note

The Kali image uses Re4son's kernel, which includes the drivers for external Wi-Fi cards and the Nexmon firmware for the built-in wireless card on the RPi 3 and 4 [3].

PNLS system overview

Fig. 2: PNLS - RPi 4 with an external antena and a battery bank

Setup

If you don't want to use Docker, head over to setup without Docker.

Using Docker

Quickly setup a development instance:

# First clone this repo.
git clone https://github.com/AleksaMCode/Preferred-Network-List-Sniffer.git
# Move to the project root folder.
cd Preferred-Network-List-Sniffer
# Build backend and frontend image.
docker compose build
# Bring up both the backend and the frontend server.
docker compose up
# Move into the sniffer folder.
cd sniffer
# Run the Sniffer service.
sudo python3 sniffer.py

Using Prebuild Docker Image

Currently, multi-platform images are not available, and the project only supports the ARM64v8 architecture. Download the latest prebuild images from the GitHub Container Registry and run them locally.

# First clone this repo.
git clone https://github.com/AleksaMCode/Preferred-Network-List-Sniffer.git
# Move to the project root folder.
cd Preferred-Network-List-Sniffer
# Download the prebuild images.
docker pull ghcr.io/aleksamcode/pnls-backend-ghcr:latest
docker pull ghcr.io/aleksamcode/pnls-frontend-ghcr:latest
# Bring up both the backend and the frontend server.
docker compose up
# Move into the sniffer folder.
cd sniffer
# Run the Sniffer service.
sudo python3 sniffer.py

Without Docker

Here is a screenshot when everything was ran "manually":

  • Top Left: Redis server
  • Top Right: ASGI server
  • Bottom Left: Sniffer service
  • Bottom Right: React server

PNLS Kali screenshot

Fig. 3: PNLS screenshot

Probe Requests

Probe Requests are management 802.11 frames that are used to connect devices to the previously associated wireless Access Points (AP). Whenever a device has enabled Wi-Fi but isn't connected to a network, it is periodically sending a burst of Probe Requests containing SSIDs from its PNL. These frames are sent unencrypted, and anyone who is Radio Frequency (RF) monitoring can capture and read them. Probes are sent to the broadcast DA address (ff:ff:ff:ff:ff:ff). Once they are sent, the device starts the Probe Timer. At the end of the timer, the device processes the received answer. If the device hasn't received an answer, it will go to the next channel and repeat the process. There are two types of Probe Requests:

  • Directed Probe Requests: using specific SSID from device's PNL

  • Null Probe Requests: using Wildcard SSID (empty SSID)

    • Blank Requests are sent in order to get a response from all available APs that are in range.

    • In addition to filtering 802.11 Probe Request frames from all the captured packets, Sniffer will also filter out the Wildcard SSIDs.

SSID Filtering

When capturing Probe Requests at places where there is a large local network with a lot of Wi-Fi clients, PNLS will inevitably capture a lot of Probe Requests that contain the SSID of the said network. The filtering of such SSIDs might be advantageous, as they are of no value to us and can cause an increase in socket load. Filtering out these SSIDs will not only reduce the load on socket connections, but it will also prevent the spam of the aforementioned SSIDs on the web UI.

When using this feature, you will need to make slight adjustments to the source code. Precisely, you will need to update the SSID_FILTER list in the settings.py file with the value you want the Sniffer to ignore. Once updated, rebuild the project and start the PNLS.

Architecture

This project uses Event-Driven architecture (EDA), which is designed atop of message-driven architectures. While this project uses a centralized solution (everything is run from the RPi), due to loosely coupled components as a result of the usage of EDA, it is possible to create a decentralized solution if needed. PNLS consists of an event publisher (sniffer), an event consumer (web application), and an event channel. Here, the event channel is implemented as Message-Oriented Middleware (MOM).

PNLS system deployment diagram

Fig. 4: PNLS system deployment diagram

Why Asynchronous Server Gateway Interface?

The Asynchronous Server Gateway Interface (ASGI) provides a standardized interface between async-capable Python web servers and services [4]. The ASGI was chosen due to the project's need for a long-lived WebSocket connection in order to facilitate async communications between different clients. In addition, it also allows for the utilization of background coroutines during API calls. The PNLS uses the uvicorn implementation for Python in order to use the ASGI web server.

Why WebSockets?

Through the utilization of WebSocket communication protocol, we are able to facilitate full-duplex, two-way communication. While this project doesn't have the need for two-way communication, it does have a need for real-time interaction between the system components. This way, the sniffed data will be available to the end-user as soon as it is captured.

Pub-Sub Model

The project's MOM is realized through the Message Broker using Redis. In the publish-subscribe (pub-sub) model, the Sniffer is responsible for producing messages, while the web application (subscriber) registers for the specific Topic (Redis channel). When the Sniffer sends a message to a Topic, it is distributed to all subscribed consumers, allowing for asynchronous and scalable communication. PNLS uses the lightweight messaging protocol Redis Pub/Sub for message broadcasting in order to propagate short-lived messages with low latency and large throughput [5][6]. In this way, overheads associated with encoding data structures in a form that can be written to a disk have been avoided. In doing so, this solution will have potentially better performance [7]. The figure below displays the simplified system activity through the event-driven workflow.

pub-sub sequence diagram

Fig. 5: PNLS Pub-Sub model sequence diagram

Note

Implemented MOM does not provide persistent storage or a message queue for data accumulation, which means messages will be lost if they are published to a Topic without subscribers.

Screenshots

Below is an example of a web UI displaying published test SSIDs.

PNLS web - example with test SSIDs

Fig. 6: PNLS web - example with test SSIDs

Acronyms

PNL Preferred Network List
PNLS Preferred Network List Sniffer
SSID Service Set Identifier
UI User Interface
RPi Raspberry Pi
OS Operating System
AP Access Points
RF Radio Frequency
EDA Event-Driven Architecture
MOM Message-Oriented Middleware
ASGI Asynchronous Server Gateway Interface
pub-sub publish-subscribe

References

  1. Nexmon Git repository
  2. Aircrack-ng documentation
  3. Kali On ARM documentation
  4. ASGI Documentation
  5. Low-latency message queue & broker software
  6. Redis - Pub/Sub Defined
  7. Stephen M. Rumble, Ankita Kejriwal, and John K. Ousterhout, “Log-Structured Memory for DRAM-Based Storage,” at 12th USENIX Conference on File and Storage Technologies (FAST)
  8. Enable Monitor Mode & Packet Injection on the Raspberry Pi

Footnotes

  1. A Service Set Identifier (SSID) is an 802.11 ID used to name a Wi-Fi network that consists of a maximum of 32 characters that can contain case-sensitive letters, numbers, and special characters no longer than 32 characters.

  2. A Preferred Network List is a collection of saved SSIDs with additional settings that you created the first time you connected your device to those networks.

  3. Broadcom never officially supported monitor mode, which limited the usefulness of the wireless cards in Raspberry Pi devices [8]. The Nexmon project is a firmware patch for the Broadcom chips in use within RPi devices. [1]. This patch will allow you to use the monitoring mode on your RPi device.

  4. The C-based Firmware Patching Framework for Broadcom/Cypress Wi-Fi Chips that enables Monitor Mode, Frame Injection and much more.

preferred-network-list-sniffer's People

Contributors

aleksamcode avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

preferred-network-list-sniffer's Issues

[BUG] ASGI server incorrect handle of Redis connection

Is there an existing issue for this?

  • I have searched the existing issues

Description

When the server is started, it doesn't create a connection to the Redis server by default. The connection to Redis is created when a subscriber connects, but not when a publisher connects.

System information

  1. Kali Linux
  2. 2023.3
  3. Raspberry Pi 4

Actual Behavior

  • ASGI sever is started without errors.
  • Sniffer connects to the server.
  • Sniffer sends data through socket.
  • Publisher receives data through socket from Sniffer, but as soon as it tries to send data to Redis channel it fails due to the fact that the connection to Redis was never created.

Expected Behavior

Connection to Redis server needs to be created when the ASGI server is first started.

Steps To Reproduce

  1. Start the Redis server
  2. Start the ASGI server
  3. Start the Sniffer

Anything else?

Here is a screenshot of the error.
Screenshot_2023-12-18_03-52-13

The connection object is None due to the fact the Redis connection was never created.

[FEATURE] Add a log message specifying which socket reconnect attempt is currently occurring

Is there an existing feature request for this?

  • I have searched the existing feature requests

How badly do you need this?

  • It's a deal-breaker, I can't live without it
  • It would be nice to have in the future

Is your feature request related to a problem? Please describe.

No

Describe the solution that you would like.

Add a log message specifying which socket reconnect attempt is currently occurring, e.g. "Attempting to reconnect 1/5"

Describe alternatives you have considered.

No response

Anything else?

The message should be added here as a else clause:

if web_socket.sock and web_socket.sock.connected:

[BUG] Failing to capture SSIDs when the interface isn't in Monitor mode

Is there an existing issue for this?

  • I have searched the existing issues

Description

When the interface doesn't have Monitor mode enabled, the PNLS won't fail, but it won't be able to capture the expected Probe Requests.

System information

  1. Kali Linux 2023.3
  2. Raspberry Pi 4
  3. PNLS 0.2.0

Actual Behavior

The PNLS never captures any SSIDs.

Expected Behavior

When an interface isn't in a Monitor mode, the sniffer should fail and log the reason why it has stopped.

Steps To Reproduce

No response

Anything else?

No response

[BUG] Short-lived Connection in sniffer causes restart too often

Is there an existing issue for this?

  • I have searched the existing issues

System information

  1. Kali Linux
  2. 2023.3
  3. Raspberry Pi 4

Actual Behavior

Every 50 seconds, the socket connection is closed, and its recovery is dependent on packet capturing. If the socket is closed, the sniffer won't know this until it tries to send captured data (in the try-catch block). After, the sniffer will create a new socket connection.

Expected Behavior

Keeping the connection open, reconnect if need, transparently without opening another socket.

Steps To Reproduce

  1. Start the Redis server
  2. Start the Web server
  3. Start the React server
  4. Start the sniffer
  5. Wait for socket to disconnect
  6. 🔁 Repeat 4 & 5

Anything else?

A Short-lived Connection should be replaced with a Long-lived Connection in the sniffer.py. It's more expensive to re-open the connection frequently than keeping the connection open.

[FEATURE] Add SSID filtering

Is there an existing feature request for this?

  • I have searched the existing feature requests

How badly do you need this?

  • It's a deal-breaker, I can't live without it
  • It would be nice to have in the future

Is your feature request related to a problem? Please describe.

When capturing SSIDs, a lot of captured SSIDs are of the locally available network(s). If in the near vicinity of the PNLS, you have a lot of devices which are connected to the local network (e.q. My-Network) the sniffer can get flooded with My-Network SSIDs. As there is no value in capturing local SSIDs, it makes sense to remove these values. Also, filtering out these SSIDs might help with an overall performance.

Describe the solution that you would like.

Add SSID filtering to the backend. Once the SSID is captured, filter out values which are stored in the SSID filter list.

Describe alternatives you have considered.

No response

Anything else?

No response

[BUG] Non-ASCII SSIDs invokes unhandled `UnicodeDecodeError`

Is there an existing issue for this?

  • I have searched the existing issues

System information

  1. Kali Linux
  2. 2023.3
  3. Raspberry Pi 4

Actual Behavior

If during the sniffing, the captured SSID has non-ASCII characters or to be more specific, if the characters are not UTF-8, the UnicodeDecodeError will be raised. The Error is not handled, which causes the thread to terminate.

Expected Behavior

Ignore those SSIDs and continue sniffing.

Steps To Reproduce

  1. Start the Redis server
  2. Start the Web server
  3. Start the React server
  4. Start the sniffer
  5. Wait for the SSID with Non-ASCII characters to be captured.

Anything else?

Here is a screenshot of the error.
Screenshot_2023-12-15_22-46-25

[FEATURE] Add auto-scroll to the web page when updating data

Is there an existing feature request for this?

  • I have searched the existing feature requests

How badly do you need this?

  • It's a deal-breaker, I can't live without it
  • It would be nice to have in the future

Is your feature request related to a problem? Please describe.

When a large amount of data is added, it would be nice if the page would auto-scroll in order to see the latest captured information instead of standing in place, which is currently the case.

Describe the solution that you would like.

Scroll page automatically to the bottom of the page when it's updated with new information.

Describe alternatives you have considered.

No response

Anything else?

No response

[BUG] Fix the setup instructions for Docker

Is there an existing issue for this?

  • I have searched the existing issues

Description

README Setup instructions for Using Docker and Using Prebuild Docker Image are the same. But both these steps end up pulling from remote owing to the behaviour of docker compose .

System information

  1. OS Name: Kali GNU/Linux
  2. OS Version: 2023.4
  3. docker Version: 24.0.7
  4. docker compose Version: 2.24.1

Actual Behavior

The instructions for the mentioned sections are same. This results in pre-built images being used in each case.

Expected Behavior

The 'Using Docker' section instructions must use the locally built images. docker compose build needs to be run first for this followed by docker compose up. The instructions just need to be updated.

Steps To Reproduce

  1. Follow README instructions in this section.

Anything else?

-

[BUG] Unhandled exception in sniffer

Is there an existing issue for this?

  • I have searched the existing issues

System information

  1. Kali Linux
  2. 2023.3
  3. Raspberry Pi 4

Actual Behavior

The thread is terminated due to the Exception which occurs when the socket connection is closed unexpectedly and abruptly. The WebSocketConnectionClosedException with a message "socket is already closed" occurs when the thread tries to send data through the closed socket connection. The Exception is captured in a try-catch block but due to the while loop in which it is placed, the new sniffer thread is constantly being created making the program doomed to repeat its mistake over and over again like it is a Groundhog Day.

Expected Behavior

To stop the thread which is sniffing packets in a non-violent way and possibly try to reconnect to the web server before sending more data.

Steps To Reproduce

  1. Start the Redis server
  2. Start the Web server
  3. Start the React server
  4. Start the sniffer

Anything else?

Here is a screenshot of the error.
Screenshot_2023-12-15_19-38-04

[BUG] Sniffer performance issue due to limits of Scapy library

Is there an existing issue for this?

  • I have searched the existing issues

Description

When capturing Probe Requests with both, the PNLS and Airodump-ng, I've noticed that not all SSIDs are displayed on PNLS web UI.

System information

  1. Kali Linux
  2. 2023.3
  3. Raspberry Pi 4

Actual Behavior

Some of the packets are never captured in moments of heavy packet loads.

Expected Behavior

To capture all of the packets.

Steps To Reproduce

Run the PNLS normally.

Anything else?

Scapy doesn't handle heavy loads very well because it processes packets too slowly. The load could be decreased, if you make the OS filter the packets instead of Scapy, which can be done when using the filter= argument.

Here are some useful links:

[BUG] Unhandled `Exception` occurs when trying to capture packets on a non-existent interface

Is there an existing issue for this?

  • I have searched the existing issues

Description

When sniffing out packets before creating a Monitor interface, an unhandled Exception will occur in a AsyncSniffer thread, after which the sniffer will stay in an idle state without knowing that the sniffing process has failed.

PNLS version

0.2.0 with d7a9886

Python version

3.11.4

Operating system

Linux 5.15.44-Re4son-v8l+

Additional environment/system information

  1. Raspberry Pi 4

Actual Behavior

Sniffer fails to capture packets and the program continues unaware of the error where it waits for socket connection thread, meaning it stays in an idle state until the socket connection is closed/fails.

Expected Behavior

The unexpected Exception should be handled in some way. One solution could be done using a custom exception hook.

Steps To Reproduce

Follow README instructions in this section.

Anything else?

Screenshot_2024-03-16_15-39-24

Exception in thread AsyncSniffer:
Traceback (most recent call last):
  File "/usr/lib/python3.11/threading.py", line 1038, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.11/threading.py", line 975, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/lib/python3/dist-packages/scapy/sendrecv.py", line 1171, in _run
    sniff_sockets[_RL2(iface)(type=ETH_P_ALL, iface=iface,
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/scapy/arch/linux.py", line 499, in __init__
    set_promisc(self.ins, self.iface)
  File "/usr/lib/python3/dist-packages/scapy/arch/linux.py", line 179, in set_promisc
    mreq = struct.pack("IHH8s", get_if_index(iff), PACKET_MR_PROMISC, 0, b"")
                                ^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/scapy/arch/linux.py", line 399, in get_if_index
    return int(struct.unpack("I", get_if(iff, SIOCGIFINDEX)[16:20])[0])
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/scapy/arch/unix.py", line 42, in get_if
    return ioctl(sck, cmd, struct.pack("16s16x", iff.encode("utf8")))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
OSError: [Errno 19] No such device

[FEATURE] Docker images for other arm platforms

Is there an existing feature request for this?

  • I have searched the existing feature requests

How badly do you need this?

  • It's a deal-breaker, I can't live without it
  • It would be nice to have in the future

Is your feature request related to a problem? Please describe.

Hello! First off, great work with this project, The results post deployment are quite impressive.

As the title states, I came across the following error while using the pre-built images during installation:

! frontend The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/arm/v7) and no specific platform was requested
! backend The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/arm/v7) and no specific platform was requested

While this is problem is easy to fix by building locally, it slows down the deployment process.

Describe the solution that you would like.

More image variants for the commonly used arm platforms could be provided.

Describe alternatives you have considered.

I understand that catering to a large number of platforms is not a priority (unless there is a quick way to do so). So it would be a nice start to just mention supported platforms in the README :)

Anything else?

Docker docs on multi-platform images: https://docs.docker.com/build/building/multi-platform

[BUG] Incorrect handle of client socket connection causes unhandled exception in ASGI server

Is there an existing issue for this?

  • I have searched the existing issues

Description

An unhandled Exception occurs on the ASGI server when one of the clients closes its connection due to erroneous socket connection handle.

System information

  1. Kali Linux
  2. 2023.3
  3. Raspberry Pi 4

Actual Behavior

  • After the client socket connection is closed, an unhandled Exception occurs on the ASGI server.
    • The Exception occurs on a Thread that handles execution _pubsub_data_reader() method from WebSocketBroker class.
    • It occurs when a publisher publishes a message to the Redis channel which has a closed socket connection in its pool.

Expected Behavior

  • Once the connection is closed, it should be removed from the socket pool.
  • When publishing messages to a channel, sockets should be checked if they are open.

Steps To Reproduce

  1. Start the Redis server
  2. Start the ASGI server
  3. Start the React server
    • Open another client in a new tab (this creates a new connection).
    • Close the original tab (this closes a connection).
  4. Start the Sniffer

Anything else?

No response

[BUG] Unhandled exception in ASGI server due to Redis server closure

Is there an existing issue for this?

  • I have searched the existing issues

Description

An unhandled Exception occurs on the ASGI server when Redis server is closed unexpectedly.

System information

  1. Kali Linux
  2. 2023.3
  3. Raspberry Pi 4

Actual Behavior

  • After the Redis server is closed, an unhandled Exception occurs on the ASGI server.
    • The Exception occurs on a Thread that handles execution _pubsub_data_reader() method from WebSocketBroker class.
  • Client socket connections get closed (Web app and Sniffer).
  • Sniffer tries to reconnect and after 5 attempts it stops.

Expected Behavior

  • ASGI server handles the Exception without crashing and possibly tries to reconnect to the Redis server before shutting down.

Steps To Reproduce

  1. Start the Redis server
  2. Start the ASGI server
  3. Start the React server
  4. Start the Sniffer
  5. Close the Redis server

Anything else?

Here is a screenshot of the Exception.
Screenshot_2023-12-18_03-29-46
The exception was:

redis.exceptions.ConnectionError: Connection closed by server.

[FEATURE] Reconnect web app when socket connection is closed

Is there an existing feature request for this?

  • I have searched the existing feature requests

How badly do you need this?

  • It's a deal-breaker, I can't live without it
  • It would be nice to have in the future

Is your feature request related to a problem? Please describe.

In order to reconnect the web app with the backend server, you need to refresh the page. Currently, you only get a toast notification about connection error.

Describe the solution that you would like.

It would be nice if the socket reconnection would happen automatically in the background in addition to the toast notification.

Describe alternatives you have considered.

No response

Anything else?

No response

[FEATURE] Add geolocating based on the SSIDs

Is there an existing feature request for this?

  • I have searched the existing feature requests

How badly do you need this?

  • It's a deal-breaker, I can't live without it
  • It would be nice to have in the future

Is your feature request related to a problem? Please describe.

No response

Describe the solution that you would like.

WiGLE API could be used to gather geolocation information about the captured SSIDs.

Describe alternatives you have considered.

No response

Anything else?

No response

[FEATURE] Display device's manufacturer based on the MAC's OUI

Is there an existing feature request for this?

  • I have searched the existing feature requests

How badly do you need this?

  • It's a deal-breaker, I can't live without it
  • It would be nice to have in the future

Is your feature request related to a problem? Please describe.

No response

Describe the solution that you would like.

In addition to SSID and timestamp, PNLS could also display device manufacturer. MAC address is available during packet filtering, which means that we could get OUI and send it to the frontend.

Describe alternatives you have considered.

No response

Anything else?

No response

[BUG] Unhandled exception in Sniffer after the 5th unsuccessful reconnect attempt

Is there an existing issue for this?

  • I have searched the existing issues

Description

Unhandled exception in Sniffer occurs due to improper return statement in the socket_manager.py function connect().

System information

  1. Kali Linux
  2. 2023.3
  3. Raspberry Pi 4

Actual Behavior

After the 5th unsuccessful reconnect attempt, the unhandled Exception occurs.

Expected Behavior

The Exception shouldn't happen at all; the program should exit gracefully.

Steps To Reproduce

  1. Run the Sniffer
  2. Wait for the aforementioned Exception to occur.

Anything else?

Here is a screenshot of the error.
Screenshot_2023-12-23_17-29-38

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.