Example #1
0
    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)
Example #2
0
    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")
Example #3
0
    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)
Example #4
0
 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()
Example #5
0
    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)
Example #6
0
    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)
Example #7
0
    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")
Example #8
0
    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)
Example #9
0
    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")
Example #10
0
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)