god help me i fucking hate python I HATE IT
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=protecc from cops
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
# script path
|
||||
ExecStart=/usr/local/bin/DREAMMAKER.sh
|
||||
# Automatically restarts if the script fails
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
# This allows the service to start at boot
|
||||
WantedBy=multi-user.target
|
||||
@@ -0,0 +1,38 @@
|
||||
#!/bin/bash
|
||||
set -e # faiulure is not tolerated here
|
||||
## easy to add ids~
|
||||
### CO:1C:6A is phone in bt pair mode
|
||||
### 71:D9:79 is common for testyin
|
||||
### O1 is common and easier
|
||||
vendor_ids=('00:25:DF' '00:58:28' '00:C0:D4' '84:70:03')
|
||||
webhook_file="/usr/share/DREAMMAKER/.discord_url"
|
||||
tag_file="/usr/share/DREAMMAKER/.discord_tag"
|
||||
username='[DЯΣΛMMΛKΣЯ]'
|
||||
|
||||
send_discord_webhook() {
|
||||
webhook_url="$(cat \"$webhook_file\")"
|
||||
tag="$(cat \"$tag_file\")"
|
||||
|
||||
# send the webhook post
|
||||
curl -sS -X POST \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"username\":\"$username\",\"content\":\"$1 $tag\"}" \
|
||||
"$webhook_url"
|
||||
}
|
||||
|
||||
while true; do #infinite loop
|
||||
# scan for those vendor ids
|
||||
blescan=$(eval "bluetoothctl -t 10 scan on | awk '{print \$3}' | grep ${vendor_ids[@]/#/-e }")
|
||||
|
||||
if [ -n "$blescan" ]; then
|
||||
# LE detected poweroff to cryptdisk and notify
|
||||
# alert spammmm
|
||||
for((i=0;i<10;i++)); do
|
||||
send_discord_webhook "FUZZ!!!" & # fork task to background to run more faster
|
||||
|
||||
# cryptsetup erase <device> # ion case you wanna nuke ur shit lmao
|
||||
## these options are powerful, silent, fast, aND RIsky
|
||||
poweroff --poweroff --force --no-wall # --no-sync
|
||||
done
|
||||
fi
|
||||
done
|
||||
@@ -0,0 +1,64 @@
|
||||
#!/bin/bash
|
||||
webhook_file=/usr/share/DREAMMAKER/.discord_url
|
||||
tag_file=/usr/share/DREAMMAKER/.discord_tag
|
||||
script_file=/usr/local/bin/DREAMMAKER.sh
|
||||
service_file=/etc/systemd/system/DREAMMAKER.service
|
||||
store_path=/usr/share/DREAMMAKER
|
||||
|
||||
echo "installing [DЯΣΛMMΛKΣЯ]"
|
||||
# kill any running instanes
|
||||
echo "killing any running"
|
||||
sudo systemctl stop DREAMMAKER.service 2>/dev/null
|
||||
|
||||
echo "cleaning up"
|
||||
# see if wer need top nuke old filews
|
||||
if [ -f "$script_file" ]; then
|
||||
echo "Deleting existing $script_file"
|
||||
sudo rm -f "$script_file" 2>/dev/null
|
||||
fi
|
||||
|
||||
if [ -f "$service_file" ]; then
|
||||
echo "Deleting existing $service_file"
|
||||
sudo rm -f "$service_file" 2>/dev/null
|
||||
fi
|
||||
|
||||
if [ ! -d "$store_path" ]; then
|
||||
echo "Creating $store_path"
|
||||
sudo mkdir -p "$store_path"
|
||||
fi
|
||||
|
||||
if [ ! -f "$webhook_file" ]; then
|
||||
echo -e "Enter Discord Webhook URL\n\tRight click on server->server settings->integrations"
|
||||
read discord_webhook
|
||||
sudo bash -c "echo \"$discord_webhook\" > \"$webhook_file\""
|
||||
echo
|
||||
fi
|
||||
|
||||
if [ ! -f "$tag_file" ]; then
|
||||
echo -e "Enter Discord Member group to tag\n\tuse a backslash when tagging the roll like \\@notifications"
|
||||
read discord_tag_file
|
||||
sudo bash -c "echo \"$discord_tag_file\" > \"$tag_file\""
|
||||
echo
|
||||
fi
|
||||
|
||||
if [ ! $(which bluetoothctl) ]; then
|
||||
echo -e "\nERROR: bluetoothctl not found! Please install and try again.\n"
|
||||
fi
|
||||
|
||||
if [ ! $(which CURL) ]; then
|
||||
echo -e "\nERROR: curl not found! Please install and try again.\n"
|
||||
fi
|
||||
|
||||
# install itt
|
||||
echo "installing service"
|
||||
sudo cp DREAMMAKER.sh "$script_file"
|
||||
sudo chmod +x "$script_file"
|
||||
sudo cp DREAMMAKER.service "$service_file"
|
||||
echo
|
||||
|
||||
# enable it at boot and run
|
||||
echo "enabling [DЯΣΛMMΛKΣЯ] at boot and starting the service"
|
||||
sudo systemctl enable DREAMMAKER.service
|
||||
sudo systemctl start DREAMMAKER.service
|
||||
sudo systemctl status DREAMMAKER.service
|
||||
echo -e "\nall donesies :3 nytaa~\n"
|
||||
@@ -0,0 +1 @@
|
||||
they called me DREAMMAKER, they called me a sorceress, they called me Princess, they called me Delilah. is it real? is it real? is it real? how do i look? do i look alriht? tell me im pretty, a lovely sight. ive been fighting for anotehr day inside your mind.
|
||||
@@ -0,0 +1,143 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
im literally vibecoding/google-fuing this shit i fucking hate python whitespace sdhould be meaningless
|
||||
"""
|
||||
|
||||
from scapy.all import *
|
||||
import requests
|
||||
import time
|
||||
|
||||
# Load webhook URL from file
|
||||
try:
|
||||
with open("webhook.txt", "r") as f:
|
||||
DISCORD_WEBHOOK_URL = f.read().strip()
|
||||
if not DISCORD_WEBHOOK_URL:
|
||||
raise ValueError("Webhook URL is empty")
|
||||
except FileNotFoundError:
|
||||
print("Error: webhook.txt not found. Please create it with your Discord webhook URL.")
|
||||
exit(1)
|
||||
except ValueError as e:
|
||||
print(f"Error: {e}")
|
||||
exit(1)
|
||||
|
||||
# yee just remove the colons from the vendor id and prepend with 0x ig
|
||||
VENDOR_IDS = [
|
||||
0x0025DF,
|
||||
0x005828,
|
||||
0x00C0D4,
|
||||
0x847003
|
||||
]
|
||||
|
||||
# Cooldown to prevent spam notifications (seconds)
|
||||
NOTIFICATION_COOLDOWN = 60
|
||||
|
||||
# Track last notification times per vendor ID
|
||||
last_notifications = {}
|
||||
|
||||
def send_discord_notification(vendor_id, rssi=None):
|
||||
"""Send a notification to Discord webhook"""
|
||||
current_time = time.time()
|
||||
|
||||
# Check cooldown
|
||||
if vendor_id in last_notifications:
|
||||
if current_time - last_notifications[vendor_id] < NOTIFICATION_COOLDOWN:
|
||||
return
|
||||
|
||||
last_notifications[vendor_id] = current_time
|
||||
|
||||
# Format the message
|
||||
vendor_names = {
|
||||
0x004C: "Apple",
|
||||
0x0006: "Microsoft",
|
||||
0x0059: "Nordic Semiconductor",
|
||||
0x0499: "Texas Instruments"
|
||||
}
|
||||
|
||||
vendor_name = vendor_names.get(vendor_id, f"Unknown (0x{vendor_id:04X})")
|
||||
|
||||
message = f"🚨 BTLE Device Detected!\n**Vendor:** {vendor_name}\n**Vendor ID:** 0x{vendor_id:04X}"
|
||||
if rssi:
|
||||
message += f"\n**RSSI:** {rssi} dBm"
|
||||
|
||||
data = {
|
||||
"content": message,
|
||||
"username": "BTLE Sniffer",
|
||||
"avatar_url": "https://i.imgur.com/4M34hi2.png" # Optional bot avatar
|
||||
}
|
||||
|
||||
try:
|
||||
response = requests.post(DISCORD_WEBHOOK_URL, json=data)
|
||||
if response.status_code == 204:
|
||||
print(f"✅ Notification sent for vendor ID 0x{vendor_id:04X}")
|
||||
else:
|
||||
print(f"❌ Failed to send notification: {response.status_code}")
|
||||
except Exception as e:
|
||||
print(f"❌ Error sending notification: {e}")
|
||||
|
||||
def parse_advertisement_data(data):
|
||||
"""Parse BTLE advertisement data for manufacturer specific data"""
|
||||
vendor_ids_found = []
|
||||
i = 0
|
||||
|
||||
while i < len(data):
|
||||
if i + 1 >= len(data):
|
||||
break
|
||||
|
||||
length = data[i]
|
||||
if length == 0:
|
||||
break
|
||||
|
||||
if i + length + 1 > len(data):
|
||||
break
|
||||
|
||||
ad_type = data[i + 1]
|
||||
ad_data = data[i + 2:i + length + 1]
|
||||
|
||||
if ad_type == 0xFF and len(ad_data) >= 2: # Manufacturer Specific Data
|
||||
company_id = int.from_bytes(ad_data[:2], 'little')
|
||||
vendor_ids_found.append(company_id)
|
||||
|
||||
i += length + 1
|
||||
|
||||
return vendor_ids_found
|
||||
|
||||
def packet_callback(pkt):
|
||||
"""Callback function for each captured packet"""
|
||||
if pkt.haslayer(BTLE_ADV):
|
||||
adv_layer = pkt[BTLE_ADV]
|
||||
|
||||
# Parse advertisement data
|
||||
vendor_ids_found = parse_advertisement_data(adv_layer.data)
|
||||
|
||||
# Check for our target vendor IDs
|
||||
for vendor_id in vendor_ids_found:
|
||||
if vendor_id in VENDOR_IDS:
|
||||
rssi = getattr(pkt, 'rssi', None)
|
||||
print(f"🎯 Detected target vendor ID: 0x{vendor_id:04X}")
|
||||
send_discord_notification(vendor_id, rssi)
|
||||
|
||||
def main():
|
||||
"""Main function"""
|
||||
print("🚀 Starting BTLE sniffer...")
|
||||
print(f"📡 Monitoring for vendor IDs: {[f'0x{vid:04X}' for vid in VENDOR_IDS]}")
|
||||
print("📢 Notifications will be sent to Discord webhook")
|
||||
print("⚠️ Make sure you have the necessary permissions and compatible hardware")
|
||||
print("Press Ctrl+C to stop\n")
|
||||
|
||||
try:
|
||||
# Note: On Linux/WSL, the interface might be 'hci0' or similar
|
||||
# On Windows native, Bluetooth sniffing may not be supported
|
||||
# You may need to adjust the interface name
|
||||
sniff(iface="hci0", prn=packet_callback, store=0, filter="btle")
|
||||
except KeyboardInterrupt:
|
||||
print("\n🛑 Sniffer stopped by user")
|
||||
except Exception as e:
|
||||
print(f"❌ Error starting sniffer: {e}")
|
||||
print("💡 Make sure:")
|
||||
print(" - You have root/admin privileges")
|
||||
print(" - Scapy is installed (pip install scapy)")
|
||||
print(" - Your Bluetooth adapter supports raw packet capture")
|
||||
print(" - The interface name is correct (try 'hciconfig' to list interfaces)")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,9 @@
|
||||
# Python3 [DЯΣΛMMΛKΣЯ] Implementation
|
||||
|
||||
## Install
|
||||
`pip install -r requirements.txt`
|
||||
|
||||
if that's being a bitch then mayhaps try at your own peril:
|
||||
`pip install -r requirements.txt --break-system-packages`
|
||||
|
||||
alternatively install the requirements via your box's package manager idk fam im not ur mom
|
||||
@@ -0,0 +1,2 @@
|
||||
scapy
|
||||
requests
|
||||
@@ -0,0 +1,2 @@
|
||||
- [Bash Script (Linux systemd)](./BASH_Script_Linux/)
|
||||
- [Python3 and Scapy](./Python3/)
|
||||
Reference in New Issue
Block a user