Skip to content

Instantly share code, notes, and snippets.

Created December 23, 2014 20:52
Show Gist options
  • Save BobBurns/adf861fb9ba8554a9d3e to your computer and use it in GitHub Desktop.
Save BobBurns/adf861fb9ba8554a9d3e to your computer and use it in GitHub Desktop.
Mac OSX discover leaky_broadcast
// AppDelegate.m
// leakyFaucetDesktop
// Created by WozniBob on 12/22/14.
// Copyright (c) 2014 Bob_Burns. All rights reserved.
#import "AppDelegate.h"
#import <IOBluetooth/IOBluetooth.h>
#define BROADCAST_UUID @"0x0046"
@interface AppDelegate ()
@property (weak) IBOutlet NSWindow *window;
@property (nonatomic, strong) CBCentralManager *myCentralManager;
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
NSTimer *t = [NSTimer scheduledTimerWithTimeInterval: 120
target: self
selector: @selector(doScan:)
userInfo: nil
repeats: YES];
NSArray *services = @[[CBUUID UUIDWithString:BROADCAST_UUID]];
_myCentralManager = [[CBCentralManager alloc] initWithDelegate:(id)self queue:nil options:nil];
[_myCentralManager scanForPeripheralsWithServices:services options:nil];
- (void)doScan:(NSTimer *)t{
NSArray *services = @[[CBUUID UUIDWithString:BROADCAST_UUID]];
[_myCentralManager scanForPeripheralsWithServices:services options:nil];
- (void)applicationWillTerminate:(NSNotification *)aNotification {
// Insert code here to tear down your application
- (void)centralManagerDidUpdateState:(CBCentralManager *)central {
- (void)centralManager:(CBCentralManager *)central
didDiscoverPeripheral:(CBPeripheral *)peripheral
advertisementData:(NSDictionary *) advertisementData
NSString *localName = [advertisementData objectForKey:
if ([localName length] > 0) {
NSLog(@"Found the leak monitor: %@", localName); // found peripheral so stop scanning
[_myCentralManager stopScan];
NSDictionary *myADData = [advertisementData objectForKey:CBAdvertisementDataServiceDataKey];
NSData *data = [[NSData alloc] init];
data = [myADData objectForKey:myUID];
Byte bytes = 0x4c;
NSData *leakData = [NSData dataWithBytes:&bytes length:sizeof(bytes)];
NSLog(@"my data:%@", data);
if ([data isEqualToData:leakData]) {
NSLog(@"we got a leak!");
NSLog(@"range: %i",[RSSI unsignedIntValue]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment