diff options
| author | Jordan Wiens <jordan@psifertex.com> | 2017-05-19 17:35:31 -0400 |
|---|---|---|
| committer | Jordan Wiens <jordan@psifertex.com> | 2017-05-19 17:35:31 -0400 |
| commit | 9129a6536ddf99cd11dcc6738010770492f542d8 (patch) | |
| tree | 6f6ce384e97f95337be75139cfc2be522369e7f7 | |
| parent | 60a79869ff6e3edb89a4ebc1227519909a2a9e72 (diff) | |
add install_api script based on @withzombies script
| -rwxr-xr-x | scripts/install_api.py | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/scripts/install_api.py b/scripts/install_api.py new file mode 100755 index 00000000..cba53e71 --- /dev/null +++ b/scripts/install_api.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python +# +# Thanks to @withzombies for letting us adapt his script +# + +import sys +from os import path +from os import stat +from site import getsitepackages + +try: + import binaryninja + print "Binary Ninja API Installed" + sys.exit(0) +except ImportError: + pass + +if sys.platform == "linux": + userpath = path.expanduser("~/.binaryninja") + lastrun = path.join(userpath, "lastrun") + if path.isfile(lastrun): + lastrunpath = open(lastrun).read().strip() + api_path = path.join(path.dirname(lastrun), "python") + else: + print "Running on linux, but ~/.binaryninja/lastrun does not exist" + sys.exit(0) +elif sys.platform == "darwin": + api_path = "/Applications/Binary Ninja.app/Contents/Resources/python" +else: + # Windows + api_path = "r'C:\Program Files\Vector35\BinaryNinja\python'" + + +def validate_path(path): + try: + stat(path) + except OSError: + return False + + old_path = sys.path + sys.path.append(path) + + try: + from binaryninja import core_version + except ImportError: + sys.path = old_path + return False + + return True + + +while not validate_path(api_path): + print "Binary Ninja not found. Please provide the path to Binary " + \ + "Ninja's install directory" + sys.stdout.write("[{}] ".format(api_path)) + + new_path = sys.stdin.readline().strip() + if len(new_path) == 0: + print "Invalid path" + continue + + if not new_path.endswith('python'): + new_path = path.join(new_path, 'python') + + api_path = new_path + +from binaryninja import core_version +print "Found Binary Ninja core version: {}".format(core_version) + +install_path = getsitepackages()[0] +binaryninja_pth_path = path.join(install_path, 'binaryninja.pth') +open(binaryninja_pth_path, 'wb').write(api_path) + +print "Binary Ninja API installed using {}".format(binaryninja_pth_path) |
