From 940f9e3cc8857d57657a2a9109769470daf81fb1 Mon Sep 17 00:00:00 2001 From: Kriyos Date: Mon, 5 Feb 2024 15:22:13 -0500 Subject: [PATCH 1/2] Double Print Fix --- BlueDucky.py | 12 ++------ known_devices.txt | 4 +++ .../menu_functions.cpython-311.pyc | Bin 0 -> 13986 bytes .../register_device.cpython-311.pyc | Bin 0 -> 8106 bytes utils/menu_functions.py | 29 ++++++++++++------ 5 files changed, 27 insertions(+), 18 deletions(-) create mode 100644 known_devices.txt create mode 100644 utils/__pycache__/menu_functions.cpython-311.pyc create mode 100644 utils/__pycache__/register_device.cpython-311.pyc diff --git a/BlueDucky.py b/BlueDucky.py index fc968ee..5565c3d 100644 --- a/BlueDucky.py +++ b/BlueDucky.py @@ -1,15 +1,9 @@ -import binascii -import bluetooth -import sys -import time +import binascii, bluetooth, sys, time, datetime, logging from multiprocessing import Process from pydbus import SystemBus from enum import Enum -import datetime -import logging -from utils.menu_functions import (main_menu, read_duckyscript, - run, restart_bluetooth_daemon, get_target_address) +from utils.menu_functions import (main_menu, read_duckyscript, run, restart_bluetooth_daemon, get_target_address) from utils.register_device import register_hid_profile, agent_loop child_processes = [] @@ -673,4 +667,4 @@ if __name__ == "__main__": try: main() finally: - terminate_child_processes() + terminate_child_processes() \ No newline at end of file diff --git a/known_devices.txt b/known_devices.txt new file mode 100644 index 0000000..683328f --- /dev/null +++ b/known_devices.txt @@ -0,0 +1,4 @@ +9C:74:03:8D:90:E0,连朕的手机作甚 +AC:C0:48:2B:40:7C,OnePlus Nord N30 5G +F8:94:C2:88:DB:D1,PARASITE +40:1A:58:F7:68:FE,DESKTOP-COM4FUC diff --git a/utils/__pycache__/menu_functions.cpython-311.pyc b/utils/__pycache__/menu_functions.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c70b873b18fdd2d8d09f6c9827bba287107a627a GIT binary patch literal 13986 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 WJ@{#WKnc>agGv{2cpE@;{Qm)R-9h63 literal 0 HcmV?d00001 diff --git a/utils/__pycache__/register_device.cpython-311.pyc b/utils/__pycache__/register_device.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9943e78c82fc12e69a8c0d108410696d4d5e6116 GIT binary patch literal 8106 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 IOPrbhFN3DVJpcdz literal 0 HcmV?d00001 diff --git a/utils/menu_functions.py b/utils/menu_functions.py index e07a1ba..2501b55 100644 --- a/utils/menu_functions.py +++ b/utils/menu_functions.py @@ -1,11 +1,5 @@ -import os +import os, bluetooth,re, subprocess, time, curses import logging as log -import bluetooth -import re -import subprocess -import time -import platform - def get_target_address(): target_address = input("\nWhat is the target address? Leave blank and we will scan for you: ") @@ -89,6 +83,23 @@ def save_devices_to_file(devices, filename='known_devices.txt'): for addr, name in devices: file.write(f"{addr},{name}\n") +def get_yes_no(): + stdscr = curses.initscr() + curses.cbreak() + stdscr.keypad(1) + + while True: + key = stdscr.getch() + if key == ord('y'): + response = 'yes' + break + elif key == ord('n'): + response = 'no' + break + + curses.endwin() + return response + # Function to scan for devices def scan_for_devices(): main_menu() @@ -109,13 +120,11 @@ def scan_for_devices(): print("\nAttempting to scan now...") nearby_devices = bluetooth.discover_devices(duration=8, lookup_names=True, flush_cache=True, lookup_class=True) device_list = [] - if len(nearby_devices) == 0: print("\nNo nearby devices found.") else: print("\nFound {} nearby device(s):".format(len(nearby_devices))) for idx, (addr, name, _) in enumerate(nearby_devices): - print(f"{idx + 1}: Device Name: {name}, Address: {addr}") device_list.append((addr, name)) # Save the scanned devices only if they are not already in known devices @@ -123,6 +132,8 @@ def scan_for_devices(): if new_devices: known_devices += new_devices save_devices_to_file(known_devices) + for idx, (addr, name) in enumerate(new_devices): + print(f"{idx + 1}: Device Name: {name}, Address: {addr}") return device_list def print_menu(): From 67fd9cf9d7e9def3ef083935cd874e65875b8cd9 Mon Sep 17 00:00:00 2001 From: Kriyos Date: Mon, 5 Feb 2024 15:24:41 -0500 Subject: [PATCH 2/2] Double Print Fix --- known_devices.txt | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 known_devices.txt diff --git a/known_devices.txt b/known_devices.txt deleted file mode 100644 index 683328f..0000000 --- a/known_devices.txt +++ /dev/null @@ -1,4 +0,0 @@ -9C:74:03:8D:90:E0,连朕的手机作甚 -AC:C0:48:2B:40:7C,OnePlus Nord N30 5G -F8:94:C2:88:DB:D1,PARASITE -40:1A:58:F7:68:FE,DESKTOP-COM4FUC