void hiddevs_forall(void (*process)(bd_addr_t)) { int fd = open(HIDDEVS_FILE, O_RDONLY); if (fd < 0) { // printf("WARNING - could not open " HIDDEVS_FILE "\n"); } char buf[4096], *p; int n = read(fd, buf, sizeof(buf)); if (n == sizeof(buf)) { printf("WARNING - hiddevs file is ridiculously big, will be truncated\n"); n--; } buf[n] = '\0'; close(fd); bd_addr_t addr; char *pbuf = buf; while (p = strtok(pbuf, " ")) { pbuf = 0; if (strlen(p) != 17 || !sscan_bd_addr(p, addr)) { printf("Malformatted line in %s: \"%s\"\n", HIDDEVS_FILE, p); return; } process(addr); // skip key p = strtok(NULL, "\n"); } }
int main(int argc, const char * argv[]) { int arg = 1; cmdline_addr_found = 0; while (arg < argc) { if(!strcmp(argv[arg], "-a") || !strcmp(argv[arg], "--address")){ arg++; cmdline_addr_found = sscan_bd_addr((uint8_t *)argv[arg], cmdline_addr); arg++; continue; } usage(argv[0]); return 0; } setup(); // turn on! hci_power_control(HCI_POWER_ON); // go! run_loop_execute(); // happy compiler! return 0; }
int main (int argc, const char * argv[]){ // handle remote addr if (argc > 1){ if (sscan_bd_addr((uint8_t *)argv[1], addr)){ serverMode = 0; prepare_packet(); } } run_loop_init(RUN_LOOP_POSIX); int err = bt_open(); if (err) { printf("Failed to open connection to BTdaemon\n"); return err; } bt_register_packet_handler(packet_handler); bt_send_cmd(&l2cap_register_service, PSM_TEST, PACKET_SIZE); bt_send_cmd(&btstack_set_power_mode, HCI_POWER_ON ); // banner printf("L2CAP Throughput Test (compatible with Apple's Bluetooth Explorer)\n"); if (serverMode) { printf(" * Running in Server mode. For client mode, specify remote addr 11:22:33:44:55:66\n"); } printf(" * MTU: 1000 bytes\n"); run_loop_execute(); bt_close(); return 0; }
int btstack_main(int argc, const char * argv[]){ int arg = 1; cmdline_addr_found = 0; while (arg < argc) { if(!strcmp(argv[arg], "-a") || !strcmp(argv[arg], "--address")){ arg++; cmdline_addr_found = sscan_bd_addr((uint8_t *)argv[arg], cmdline_addr); arg++; continue; } usage(argv[0]); return 0; } l2cap_init(); l2cap_register_packet_handler(&handle_hci_event); gatt_client_init(); gc_id = gatt_client_register_packet_handler(&handle_gatt_client_event); sm_init(); sm_set_io_capabilities(IO_CAPABILITY_NO_INPUT_NO_OUTPUT); // turn on! hci_power_control(HCI_POWER_ON); // go! run_loop_execute(); // happy compiler! return 0; }
int main (int argc, const char * argv[]){ // parse addr of Bob uint8_t ok = 0; if (argc >= 2) { ok = sscan_bd_addr((uint8_t *) argv[1], bob_addr); } if (!ok) { printf("Usage: mitm 12:34:56:78:9A:BC\n"); exit(0); } // start stack run_loop_init(RUN_LOOP_POSIX); int err = bt_open(); if (err) { printf("Failed to open connection to BTdaemon\n"); return err; } printf("BTstack-in-the-Middle started, will pretend to be BOB ("); print_bd_addr(bob_addr); printf(")\n"); bt_register_packet_handler(packet_handler); bt_send_cmd(&btstack_set_power_mode, HCI_POWER_ON ); run_loop_execute(); bt_close(); }