So I just learned about the jasager attack, via the wifi pineapple and it struck me immediately that it wouldn't work at all if network managers (privately) associated MAC addresses with hotspots and asked for explicit permission if you were going to connect to a new physical device.

Obviously this would be mildly irritating in public hotspots where devices change and hundreds of diverse locations share network names, but it would make home and work networks much harder to penetrate.

I haven't found any wifi managers that do this, or at least I haven't found information that any do.

My question: 


Am I missing something obvious? Would remembering MACs not actually increase security?
If it would, are there any network managers that do this? (I'm on Linux, but if there are tools for other OS's I think it's worth having them in the answers)



Question: Basic steps to develop python API in Unix environment
Answer: You seem to be mistaken in that abc.py would not be a command. If you can execute it, then is, just one with a dot in the name. Execute in the sense that you can do ./abc.py, so the execute bits must be set. If you have to do python abc.py than you it is not a command (yet).

In general, to make a normal  python file abc.py executable you should make sure the first line reads:

#!/usr/bin/env python


(This assumes you have /usr/bin/env as a program, and that will find the python command, which might be in /usr/local/bin. It also assumes that you want to run the default python (which is normally a link to a particular python version like python2.7), you could also use python3 if that is available as a command).

After that do

chmod +x abc.py
mv abc.py abc


And then you can run ./abc. If the current directory is in your path, or if you move abc to a directory in your path, you should be able to execute abc from anywhere.¹

There are however disadvantages of renaming and moving the file:


you can no longer to from abc import SomeClass, as the file is renamed
If the file is under revision control it might no longer be


So instead, what I normally do, is make a new file /usr/local/bin/abc that looks like:

#!/usr/bin/env python

from abc import main
main()


and have at the bottom of abc.py:

def main():
    doing the real stuff

if __name__ == '__main__':
    main()


The directory of abc.py needs to be in the PATH python searches for modules, but this way it doesn't have to be changed, and can be used by any program as an import, and started as python abc.py.

¹ The mv is necessary to get rid of the dot in the command name, but not really necessary, you can invoke ./abc.py if you don't rename it.