Submit Hint Search The Forums LinksStatsPollsHeadlinesRSS
14,000 hints and counting!

Lock and unlock a Mac using Bluetooth detection Network
I discovered a great little app, Proximity, and have now made my Mac's security very seamless. This approach requires:
  1. Bluetooth-enabled Mac and a Bluetooth-capable phone (including the iPhone).
  2. Some AppleScript writing or copying-and-pasting.
  3. Tested only on 10.5.6 and 10.5.8 install; untested in 10.4 and 10.6.
Read on for the background on the solution, as well as the step-by-step implementation.

I frequent various sites such as Gizmodo, Lifehacker, TUAW, macosxhints, and many others, and I was pleasantly surprised to discover that I could have an Ubuntu-like security feature with my iPhone. In Ubuntu, I paired my old Nokia Bluetooth phone with my netbook via BlueProximity, which was a great little app that detected how close I was to my netbook, and either logged me out if I were outside of the proximity field (the phone was not being registered by BlueProximity), or if I came within the proximity field, Id be seamlessly logged in again without any user intervention. I tried to find a Fink or a MacPort for BlueProximity, but this doesnt exist. So I left it at that.

I then stumbled across Airlock, which just came out, but unfortunately costs money (~$7) and doesnt seem to function well -- it generates a lot of false positives where it thinks that you are out of range when in fact you are sitting right in front of the computer.

After a bit more searching, I came across the wonderful little app called Proximity while reading about OS X pranks. Having zero experience with AppleScript, this was a good opportunity to dabble with the code and to find out some great uses for Proximity and AppleScripts. 2br I did some searching for good AppleScripts, modified them, and made the following two scripts that work with Proximity. The first is the inrange script, which runs when your phone is detected:
--tell application "iTunes" to play
--This is optional; if you want to play music when you are in the proximity of your computer, it will play ur music. Just delete the 2 minus signs in front of '--tell application "iTunes" to play'

tell application "System Events"
tell security preferences
set require password to wake to false
end tell
end tell

tell application "ScreenSaverEngine" to quit
What the inrange script does is play my music and makes sure that my password-activated screen saver does not have the password turned on. Otherwise, if my computer were to go to the screen saver and Im at the desk, Id have to retype the password every time. With this setting while Im at the computer, it disables the password so I seamlessly transition to my desktop.

Next, the outofrange script, which runs when the phone is no longer detected:
--tell application "iTunes" to pause
--again, this is optional, but if iTunes is playing, you might want to pause it; delete '--'

tell application "System Events"
tell security preferences
set require password to wake to true
end tell
end tell

-- start screensaver (which locks the screen)
activate application "ScreenSaverEngine"
The outofrange script pauses my music, activates my screen saver password, and turns the screen saver on. If someone were to try to access my computer, theyd have to know the password. When I come into Bluetooth range again, my music restarts, the screen saver disappears, and my Mail app is frontmost so I can check what Id missed.

You can download both scripts (along with a Read Me) here.

In an earlier version of this solution, I created an inrange script that had my password explicitly written into the script, and the script simulated typing in a password. This in itself is a security hole, so I found the above method to be a better alternative. I forgot where on Google I've found all the pieces of code that helped me with this, but thanks to those folks that wrote the original scripts on which I based my approach.

I'm new to Applescript writing, but the potential has intrigued me enough that I am now trying to automate pretty much anything I can (things that don't get automated by QuickSilver, that is).

[robg adds: The download link wasn't working when I tried to test it (it's not hosted here on Mac OS X Hints), and I haven't tested these scripts.]
    •    
  • Currently 2.86 / 5
  You rated: 2 / 5 (28 votes cast)
 
[56,699 views]  

Lock and unlock a Mac using Bluetooth detection | 34 comments | Create New Account
Click here to return to the 'Lock and unlock a Mac using Bluetooth detection' hint
The following comments are owned by whoever posted them. This site is not responsible for what they say.
Lock and unlock a Mac using Bluetooth detection
Authored by: shiyinjia on Dec 29, '09 09:34:19AM

This is a pretty nifty hint. I have tried it on 10.6 and it works!

Edited on Dec 29, '09 09:43:06PM by robg



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: Lemminkainen on Dec 29, '09 10:34:48AM

I followed instructions, but the inrange script doesn't work...
When I go out of range with my phone, the computer correctly launch the screensaver with password request on.
When I return in range with my phone, the screensaver quits, but a black screen appears and no unlocking is done... if I insert my password (note that the login windows is not visible) and hit Return, my desktop comes out.

Can you help, please?
Thank you.

PS: I'm on a Macbook Pro, with 10.6.2



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: kenzo086 on Dec 29, '09 11:26:24AM

Hi!

I had the same problem and I figured out the problem. It happens because you try to change a security option while you couldn't (the screensaver is running and you need the password to exit from the screensaver and change the security settings).
In fact when the black screen appear if you type your password you can get out of it.

I understand the problem, but I have no idea for a solution... anyone?
I think that there is need to "set require password to wake to false" as administrator (like if you want to use sudo)

F



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: Lemminkainen on Dec 29, '09 11:40:32AM

I made the same thought, but I don't understand how it can work for others users... maybe the problem is another.



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: McSvenster on Dec 30, '09 12:15:48AM

Same problem here. But that's not the fault of the script! I also have it sometimes, when I wake my MBP from sleep. And there seem to be more of us :-)

So thanks a lot for sharing that hint!



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: mech14 on Dec 29, '09 03:17:26PM

To those that are happy to settle for a lesser amount of security, here is the original solution I used, which has AppleScript type out your password explicitly. Keep in mind that this approach requires you to have your password within the 'inrange' applescript in plain text mode!!!

copy the text below into your 'inrange' applescript and give it a shot.

---------------------------------------
tell application "System Events" to keystroke return
delay 1
tell application "System Events" to keystroke "YOURPASSWORDHERE"
-- it types in your password for you
delay 1
tell application "System Events" to keystroke return
-- accept password and log on; this needs the password option to be activated in the Screen Saver options under System Preferences
--------------------------------------

The out of range script can be the following at this point:

-------------------------------------

activate application "ScreenSaverEngine"
-------------------------------------

mech



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: everkleer80 on Dec 30, '09 06:18:33AM

You could use keychain scripting to store and retrieve a pw from the keychain instead of storing it in the script. Also, this way if your pw changes, you just have to change it in the keychain instead of modifying the script. I'm not at my computer right now and I forget exactly how to do this, but I remember it was unbelievably easy.

I think it was something like this:

tell application "keychain scripting"
set thePW to the password of first key of current keychain whose name is "AdminPassword"
end tell

And then just manually create an entry called AdminPassword in your default keychain (or you can modify this to use a different keychain if you want.)



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: mech14 on Dec 30, '09 12:53:36PM

I agree though that this is a better implementation as it doesn't require you to remember to change the passwords everywhere.

Thanks for the suggestion.



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: puzzlebobble on Jan 04, '10 08:47:13AM

thanks to both of you, that works perfectly! I think it requires setting Access Control in Keychain Access to allow access to it by proximity. I currently have access allowed for Proximity, Keychain Scripting and Applescript Editor but think I've ended up with so many permissions because I tested the script out in the editor.

Incidentally, your idea of using proximity for security reasons works really in conjunction with Network Location, by Centrix software (i think marcopolo is a free alternative). When I leave my home (safe zone) Network Location turns on proximity and turns the screensaver password on. Hence if I leave my laptop proximity locks the computer, but when I'm at home the same doesn't happen. Go home: proximity and screensaver password turned off. I find entering the password all the time at home is a pain.

Edited on Jan 04, '10 08:56:34AM by puzzlebobble



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: everkleer80 on Jan 04, '10 08:54:41AM

I'd assume you need Keychain Scripting access since the Proximity applescript is telling Keychain Scripting to get the PW - Keychain Scripting is the one actually making the request for it. The permission granted to Proximity is probably a permission for Keychain Scripting to pass the PW back to Proximity. Of course I could be completely wrong on all of this - I just like to make guesses at how computers work and revise them as necessary - life's all about trial and error!



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: puzzlebobble on Jan 04, '10 09:03:22AM

sounds sensible. It asked my permission for both when I tested the script in Proximity. Pity I can't remember which order it asked. I've turned off access for the applescript editor and it still works.



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: everkleer80 on Jan 04, '10 09:12:55AM

It is nice to know that the app that calls Keychain Scripting also requires permission, because when I fooled with Keychain Scripting once before and allowed it to access my PW, I was worried that I might be allowing ANY applescript to access my PW via Keychain Scripting.



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: puzzlebobble on Jan 05, '10 12:49:43PM

do you happen to know if it is possible to pass a password from the keychain into terminal. I was hoping to be able execute an applescript which changed the HD spindown time when I changed location. I can open terminal and set the command:

sudo pmset -b disksleep 5

but then it asks me for my password. I could do my password as keystrokes but I'd prefer to access a password stored in the keychain.

I'm guessing I need to:

set thePW to the password of first key of current keychain whose name is "AdminPassword"

but then convert thePW to keystokes?

cheers



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: everkleer80 on Jan 05, '10 01:01:55PM

I think you want something like this:

do shell script "..." user name theUser password thePW with administrator privileges
(I think that's the correct syntax)

This way you do not need to say sudo in your script; all commands in the script will be run with full admin priveleges.

[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: puzzlebobble on Jan 05, '10 01:06:38PM

cool, I must have been typing at the same time as you. I'll give that way a go. thanks!



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: puzzlebobble on Jan 05, '10 01:04:15PM

think I got it:

tell application "Keychain Scripting"
set thePW to the password of first key of current keychain whose name is "AdminPassword"
delay 1
try
do shell script "sudo pmset -a disksleep 15" password thePW with administrator privileges
on error
display dialog "Oops. Wrong password?"
end try
end tell

sets all setting for spindown to 15 minutes. Now to have different for battery power etc...



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: everkleer80 on Jan 06, '10 06:09:29AM

Cool. I don't think you need "sudo", as the "with administrator privileges" gives the script the same rights as sudo. I read here that using both can create some kind of security hole, though I'm not sure how and the article doesn't explain.



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: everkleer80 on Dec 30, '09 06:34:18AM

I thought it sounded like a fishy security hole when I saw your script tries to set require password to wake to false while the computer is locked, so it makes sense and restores my sense of security that the computer would require a password.

Now as far as a solution to this, I know you can run shell scripts with admin (ie. sudo) privileges in AppleScripts, so I'm sure there must be a terminal command that will set this (I'll leave it to someone else to find and post back with the command). Running a shell script with admin privileges still requires the pw be passed by the script if you don't want to prompt the user for it, but rather than hardcoding the pw in your script, you could use the keychain (see my reply to mech14 above.)

Edited on Dec 30, '09 06:35:39AM by everkleer80


[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: mech14 on Dec 29, '09 12:18:58PM

I'm sorry folks with SL but I'm sticking w/ Leopard for a while so I cannot check this.

It may have to do with whether your account has admin privileges. Most of my accounts are admins as well, so that may be the issue.

mech



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: ptone on Dec 31, '09 07:17:38AM

If one wanted to take an entirely scripted approach - you could use the lightblue python library. I started on this once and just have a proof of concept script that looks like:

import sys
import os
import lightblue
import time

def main():
    while True:
        try:
            lightblue.finddevicename('00:23:32:F9:EF:7C',usecache=False)
            print 'still here'
        except lightblue._lightbluecommon.BluetoothError:
            print time.strftime("%H:%M:%S")
            return
        time.sleep (5)

if __name__ == '__main__':
    main()


[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: mech14 on Dec 29, '09 10:31:24AM

the link is hosted on uploading.com and requires one to wait 60 seconds for the download. Let me know if the link dies. Feel free to host it anywhere else as well.

cheers
mech



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: ktonini on Dec 29, '09 07:20:59PM
I covered this a while back on my blog.

It has a few more features and works on snow leopard.

Edited on Dec 29, '09 07:23:04PM by ktonini


[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: mech14 on Dec 30, '09 01:02:07PM

thanks ktonini. I didn't stumble across ur blog, but it seems to have some useful stuff there. I tried to throw in many scripts in the 'inrange' file, but then it was doing too many things that I didn't really need all the time. Primarily, I just wanted to have a password activated while away, and no password while I was present.

I really just wanted to make sure my coworkers didn't snoop around while I stepped out to the washroom or w/e, so my solution works fine for me. You can of course have the program run just about any script you tell it too (e.g., make coffee and toast, put kids to bed :) )

Anyway, thanks for sharing



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: ecbtln on Dec 30, '09 06:37:04AM
Theres also a clean, albeit shareware alternative: AirLock

[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: mech14 on Dec 30, '09 12:51:11PM

plz rtfa :)



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: makemineamac on Dec 31, '09 01:01:27AM

FIrst of all, would like to point out that I have read the original article in full, and would like to note the following:

While I understand what the OP is trying to achieve here, there are far simpler means to get where he wants to go. As the last poster pointed out, there is a far better alternative named Airlock, which seamlessly and elegantly locks and unlocks my MBP whenever I stray away from it. It's a well-written Sys-Pref pane, and is very Apple-like in its implementation.

I'm not certain why the OP had a problem with their install of it, unless it was more the $7 price tag than the install itself, but Airlock does exactly what I want cleanly and securely. And I have had no issues with consistency at all. But that's just me.

So, while there may be a great use for scripts - and there always will be, Airlock, I think is a far safer alternative, and won't require you to download anything from uploading.com. ;)



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: mech14 on Dec 31, '09 08:01:43PM

Thanks for the feedback, makemineamac. The reason I went searching for alternatives is because I had this implementation in Ubuntu for free, and it had a lot of options for an open-source project (blueproximity). Having said that, Airlock is cheap, but reading multiple reviews I've noticed Airlock conflicts a lot with other bluetooth devices (especially the new mouse and keyboard).

Airlock's creator had to return a lot of people's money due to these issues. Anyway, that's besides the point. I like open source and welcomed the chance to learn more about my hackint0sh than i would with a seamless program like Airlock. This IS a macosxHINTS site after all, so that was what i am sharing: a hint. Airlock should be listed on 'iusethis.com' as it's not really a hint :)

Happy new year's everyone.

mech



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: mael on Jan 01, '10 03:47:41AM

Reading the headline I was surprised: Proximity.app is a fairly "old" utility, not having been updated in quite a while, but working perfectly. Maybe the hype about AirLock spurred the interest.. Whatever, it was about time it got mentioned...

A number of people have written about Proximity.app and developed quite useful scripts for it. Look here for more information:
- http://www.technocrat.ca/?p=44
- http://digg.com/apple/Bluetooth_Proximity_Detection_on_OS_X#c5752438

and here for explanations and scripts that work for me:
- http://know-how.posterous.com/

From the Script:
- offer the user the option to stifle all actions if the connection just got lost randomly (stopping any active screen saver first)
- inform the user via speech output and Growl messages (if available) about what is going to happen for him to see when he returns
- log its actions in the system log
- mute the system volume to avoid any alarm etc. annoying others
- set the state of the instant messaging clients Adium, Skype and iChat to away/busy/not available
- set the status message/mood of the instant messaging clients to a predefined value
- pause the media players DVD Player, VLC, QuickTime Player and iTunes
- post a message on twitter
- set the status on facebook
- start taking pictures from whatever is in front of the computer in defined intervals via an iSight camera, saving the pictures for later inspection
- enable the screen saver password option to prevent anybody messing with the machine
- and start the screen saver, so the machine is locked
- while saving the current states of everything that is being changed, so as to be able to revert it when the user returns
- in a way suitable for the machine to go to sleep or shut down as well.

It'll do some more housekeeping like
- checking the availability of Growl and registering this script with it as well
- making sure this script only executes once before the In-Range script, otherwise the settings would be messed
- look if fbcmd has been installed in order to use it
and more.



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: lancaster98 on Jan 04, '10 08:53:54AM

I've used AirLock successfully to do the same thing, although this being free, it's nice, too.

I have used Applescript, Growl and Prowl to send a push notification to the phone when I walk away. This way, I know that the system is locked as everything is working as it should. I have also got a notification when I come back, which is useful when testing so that I don't stay in range when I want to be away. I'll be ditching this part when I'm happy with my ranges.

I've also used Applescript to change my desktop wallpaper on lock / unlock. I have a plain old picture as my background, with a tiny little bit of text in the corner stating "phone unlocked" or "phone locked". This was, I know whether the phone or a third party last unlocked my screen.



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: mech14 on Jan 08, '10 01:27:03PM

Just uploaded my packaged app to Macupdate just in case uploading.com expires.

Enjoy and distribute!

http://www.macupdate.com/info.php/id/33239/proximity%2c-bluetooth%2c-screensaver-security



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: augustchau on Mar 24, '10 05:19:13PM

You guys rocks!

I was indeed looking for something like blueproximity.Thanks a lot!



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: trudint on Jun 30, '11 03:02:49PM

Just a quick question. I've download and configured Proximity but i am unable to get my iphone 4 to pair with my Mac Mini.

My iphone 4 is jailbroken so i'm curious if there is a Cydia app i can use to force it to pair with my Mac Mini.

Thanks for any help.



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: bendero on Jun 30, '11 10:33:22PM

Hi, I own a Macbook Pro and I was wondering if it was possible to have the script to ask for the password after the lid is closed even if when it was closed the phone was in range. I ask this because if I close the lid when my phone is near and it gets stolen when you open it up it thinks it's still in range and it doesn't ask for the password until you close it again when it's realized the phone is no longer near.

Thanks :)



[ Reply to This | # ]
Lock and unlock a Mac using Bluetooth detection
Authored by: kprops on Jul 05, '11 10:32:52AM

An Improvement.... turns off the screen instead of just running the screen saver.

http://goo.gl/RcpUu



[ Reply to This | # ]