def run(self): """Creates the wifi advertisement with the given ssid, and phone or email """ ssid = self.args.get("ssid", 'none') phone = self.args.get("phone", 'none') email = self.args.get("email", 'none') appleid = self.args.get("appleid", 'none') interval = int(self.args.get("interval", 200)) dev_id = int(self.args.get("ble_iface", 0)) toggle_device(dev_id, True) header = (0x02, 0x01, 0x1a, 0x1a, 0xff, 0x4c, 0x00) const1 = (0x0f, 0x11, 0xc0, 0x08) id1 = (0xff, 0xff, 0xff) contact_id_mail = self.get_hash(email) contact_id_tel = self.get_hash(phone) contact_id_appleid = self.get_hash(appleid) id_wifi = self.get_hash(ssid) const2 = (0x10, 0x02, 0x0b, 0x0c,) try: sock = bluez.hci_open_dev(dev_id) except: print_error(f"Cannot open bluetooth device {dev_id}") return try: print_info("Start advertising press ctrl + c to quit...") start_le_advertising(sock, adv_type=0x00, min_interval=interval, max_interval=interval, data=( header + const1 + id1 + contact_id_appleid + contact_id_tel + contact_id_mail + id_wifi + const2)) while True: sleep(2) except: stop_le_advertising(sock)
def advertisment(self): """Get values for the accesories of the airpod and genrates an le advertising with them """ if self.args.random: left_speaker, right_speaker, case = self.random_values() else: left_speaker = (100,) right_speaker = (100,) case = (100,) interval = self.args.interval toggle_device(self.args.ble_iface, True) data1 = (0x1e, 0xff, 0x4c, 0x00, 0x07, 0x19, 0x01, 0x02, 0x20, 0x75, 0xaa, 0x30, 0x01, 0x00, 0x00, 0x45) data2 = (0xda, 0x29, 0x58, 0xab, 0x8d, 0x29, 0x40, 0x3d, 0x5c, 0x1b, 0x93, 0x3a) try: sock = bluez.hci_open_dev(args.ble_iface) except: print(f"Cannot open bluetooth device {self.args.ble_iface}") return try: print("Start advertising press ctrl + c to quit...") start_le_advertising(sock, adv_type=0x03, min_interval=interval, max_interval=interval, data=(data1 + left_speaker + right_speaker + case + data2)) while True: sleep(2) except: stop_le_advertising(sock) print() print("Bye")
def adv_airdrop(self): while True: dev_id = self.dev_id toggle_device(dev_id, True) header = (0x02, 0x01, 0x1a, 0x1b, 0xff, 0x4c, 0x00) data1 = (0x05, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01) apple_id = (0x00, 0x00) phone = (0x00, 0x00) email = (0xb7, 0x9b) data2 = (0x00, 0x00, 0x00, 0x10, 0x02, 0x0b, 0x00) try: sock = bluez.hci_open_dev(dev_id) except: print("Cannot open bluetooth device %i" % dev_id) raise start_le_advertising(sock, adv_type=0x02, min_interval=500, max_interval=500, data=(header + data1 + apple_id + phone + email + data2)) time.sleep(10) stop_le_advertising(sock)
def service(self): self.scanning = True toggle_device(self.ble_iface, True) self.ble_utils.init_bluez() thread1 = Thread(target=self.ble_utils.do_sniff, args=(False, )) thread1.daemon = True thread1.start() thread1.join()
def cli(self): toggle_device(self.ble_iface, True) self.pr = multiprocessing.Process(target=self.read_state_cli, args=(self.ssid, self.airdrop, self.ttl, self.w_iface, self.ble_iface, self.debug)) try: self.pr.start() while True: time.sleep(1) except KeyboardInterrupt: self.pr.terminate() print(f"Killing {self.pr.pid}") os.kill(self.pr.pid, signal.SIGTERM)
def read(self): ssid = self.args.ssid airdrop = self.args.airdrop ttl = self.args.ttl iwdev = self.args.w_iface dev_id = self.args.ble_iface toggle_device(dev_id, True) self.pr = multiprocessing.Process(target=self.read_state, args=(ssid, airdrop, ttl, iwdev, dev_id)) try: self.pr.start() while True: time.sleep(1) except KeyboardInterrupt: self.pr.terminate() print(f"Killing {self.pr.pid}") os.kill(self.pr.pid, signal.SIGTERM)
def advertisment(self): """Creates the wifi advertisement with the given ssid, and phone or email """ if (not self.ssid): print("Error, must provide ssid") return toggle_device(self.ble_iface, True) header = (0x02, 0x01, 0x1a, 0x1a, 0xff, 0x4c, 0x00) const1 = (0x0f, 0x11, 0xc0, 0x08) id1 = (0xff, 0xff, 0xff) contact_id_mail = self.get_hash(self.email) contact_id_tel = self.get_hash(self.phone) contact_id_appleid = self.get_hash(self.appleid) id_wifi = self.get_hash(self.ssid) const2 = ( 0x10, 0x02, 0x0b, 0x0c, ) try: sock = bluez.hci_open_dev(dev_id) except: print(f"Cannot open bluetooth device {self.ble_iface}") return try: print("Start advertising press ctrl + c to quit...") start_le_advertising( sock, adv_type=0x00, min_interval=interval, max_interval=interval, data=(header + const1 + id1 + contact_id_appleid + contact_id_tel + contact_id_mail + id_wifi + const2)) while True: sleep(2) except: stop_le_advertising(sock) print() print("Bye")
def run(self): ssid = str(self.args.get("ssid", "False")).lower() == "true" airdrop = str(self.args.get("airdrop", "False")).lower() == "true" ttl = int(self.args.get("ttl", 10)) iwdev = str(self.args.get("iface", "wlan0")) dev_id = int(self.args.get("hci", 0)) toggle_device(dev_id, True) self.pr = multiprocessing.Process(target=self.read_state, args=(ssid, airdrop, ttl, iwdev, dev_id)) try: self.pr.start() while True: time.sleep(1) except KeyboardInterrupt: self.pr.terminate() print(f"Killing {self.pr.pid}") os.kill(self.pr.pid, signal.SIGTERM)
def run(self): """Get values for the accesories of the airpod and genrates an le advertising with them """ random = str(self.args.get("random", "False")).lower() == "true" interval = int(self.args.get("interval", 10)) dev_id = int(self.args.get("ble_iface", 0)) if random: left_speaker, right_speaker, case = self.random_values() else: left_speaker = (int(self.args.get("left_speaker", 0)), ) right_speaker = (int(self.args.get("right_speaker", 0)), ) case = (int(self.args.get("case", 0)), ) toggle_device(dev_id, True) data1 = (0x1e, 0xff, 0x4c, 0x00, 0x07, 0x19, 0x01, 0x02, 0x20, 0x75, 0xaa, 0x30, 0x01, 0x00, 0x00, 0x45) data2 = (0xda, 0x29, 0x58, 0xab, 0x8d, 0x29, 0x40, 0x3d, 0x5c, 0x1b, 0x93, 0x3a) try: sock = bluez.hci_open_dev(dev_id) except: print_error("Cannot open bluetooth device %i" % dev_id) return try: print_info("Start advertising press ctrl + c to quit...") start_le_advertising(sock, adv_type=0x03, min_interval=interval, max_interval=interval, data=(data1 + left_speaker + right_speaker + case + data2)) while True: sleep(2) except: stop_le_advertising(sock) print() print_error("Bye")
parser = argparse.ArgumentParser(description=help_desc, formatter_class=argparse.RawTextHelpFormatter) parser.add_argument('-p', '--phone', default='none', help='Phone number (example: 39217XXX514)') parser.add_argument('-e', '--email', default='none', help='Email address (example: [email protected])') parser.add_argument('-a', '--appleid', default='none', help='Email address (example: [email protected])') parser.add_argument('-s', '--ssid', required=True, help='WiFi SSID (example: test)') parser.add_argument('-i', '--interval', default=200, type=int, help='Advertising interval') args = parser.parse_args() def get_hash(data, size=3): return tuple(bytearray.fromhex(hashlib.sha256(data.encode('utf-8')).hexdigest())[:size]) dev_id = 0 # the bluetooth device is hci0 toggle_device(dev_id, True) header = (0x02, 0x01, 0x1a, 0x1a, 0xff, 0x4c, 0x00) const1 = (0x0f, 0x11, 0xc0, 0x08) id1 = (0xff, 0xff, 0xff) contact_id_mail = get_hash(args.email) contact_id_tel = get_hash(args.phone) contact_id_appleid = get_hash(args.appleid) id_wifi = get_hash(args.ssid) const2 = (0x10, 0x02, 0x0b, 0x0c,) print("Start advertising...") try: sock = bluez.hci_open_dev(dev_id) except: print("Cannot open bluetooth device %i" % dev_id)