-
Notifications
You must be signed in to change notification settings - Fork 227
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
53 changed files
with
37,130 additions
and
11 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,225 @@ | ||
# Functionality | ||
|
||
Most functionality in the Enterprise client is accessed from the [Remote Dialog](user-interface.md#remote-dialog), which is shown when clicking the Active Server Button in the bottom-left of the status bar. | ||
|
||
|
||
## Managing Servers | ||
|
||
### Add a New Server | ||
1. Open the Remote Dialog | ||
2. Click `Connect...` | ||
3. Click `Add...` | ||
4. Enter the server hostname / port, and a friendly name it will be displayed as | ||
5. Click `Add` | ||
|
||
### Remove an Existing Server | ||
1. Open the Remote Dialog | ||
2. Click `Connect...` | ||
3. Choose the server you want to remove | ||
4. Click `Remove...` | ||
5. Click `Yes` | ||
|
||
### Log Into a Server | ||
1. Open the Remote Dialog | ||
1. If you have previously chosen `Remember Me`, you may be prompted for credentials as Binary Ninja checks for saved sessions | ||
2. Click `Connect...` | ||
3. Choose the Enterprise server you want to connect to | ||
4. Click `Connect` | ||
1. If you have previously chosen `Remember Me` and are logged into this server, you will not see an authentication dialog before being connected | ||
2. If the server cannot be connected to, an error will be displayed in the log with details (click the error indicator on the window’s status bar to read the error) | ||
3. The Server ID mismatch dialog may appear if the server you are connecting to has changed in some way since you last connected to it | ||
5. The authentication dialog will open for you to enter your username and password | ||
1. If you have forgotten or need to reset your password, click `Forgot Password` and follow the directions to be emailed a link to reset your password | ||
2. Optionally, check `Remember Me` if you want to save your login for the next time you open Binary Ninja | ||
3. Optionally, check `Automatically Connect` if you want to log in automatically every time you open Binary Ninja | ||
6. Click `Login` | ||
1. If the login was successful, the authentication dialog will close, and the Remote Dialog will update to show your current Projects | ||
2. If you checked `Remember Me`, your session will be saved to your OS’s secure storage and can be cleared at any time by logging out of the Enterprise server | ||
3. If the login was unsuccessful, a dialog will display an error message with details | ||
|
||
### Disconnecting From a Server | ||
1. Open the Remote Dialog | ||
2. Click `Disconnect...` | ||
|
||
### Log Out of a Server | ||
1. Open the Remote Dialog | ||
1. If you are currently connected to an Enterprise server, disconnect from it | ||
2. Click `Connect...` | ||
3. Choose the Enterprise server you want to log out of | ||
4. Click `Log Out` | ||
5. Click `Yes` | ||
|
||
|
||
## Managing Users | ||
|
||
### Create a New User | ||
1. Open the Remote Dialog | ||
2. Ensure you are logged into the server as an administrator. | ||
3. Click `Manage Users...` | ||
4. The Manage Users dialog will appear. | ||
5. Click `Add...` | ||
6. Fill out the details for the new user you want to create. | ||
|
||
!!! note | ||
If you want to make the new user a server administrator, see the Binary Ninja Enterprise server documentation. | ||
|
||
### Edit an Existing User | ||
1. Open the Remote Dialog | ||
2. Ensure you are logged into the server as an administrator. | ||
3. Click `Manage Users...` | ||
4. The Manage Users dialog will appear. | ||
5. Select the user whose details you want to edit. | ||
6. Click `Edit...` | ||
7. Fill in the new details for this user | ||
|
||
!!! note | ||
If you want to make the new user a server administrator, see the Binary Ninja Enterprise server documentation. | ||
|
||
### Disable an Existing User | ||
Users cannot be deleted from the Enterprise server since this would break our ability to keep attribution on stored snapshots. Users can, however, be disabled. Disabled users are unable to authenticate with an Enterprise client or with the Enterprise server. | ||
|
||
1. Open the Remote Dialog | ||
2. Ensure you are logged into the server as an administrator | ||
3. Click `Manage Users...` | ||
4. The Manage Users dialog will appear | ||
5. Select the user to remove | ||
6. Click `Disable...` | ||
7. Click `Yes` | ||
|
||
|
||
## Managing Groups | ||
### Create a New Group | ||
1. Open the Remote Dialog | ||
2. Ensure you are logged into the server as a server administrator. | ||
3. Click `Manage Groups...` | ||
4. The Manage Groups dialog will appear. | ||
5. Click `Add...` | ||
6. Move users between "Available" and "Chosen" as needed | ||
|
||
### Edit an Existing Group | ||
1. Open the Remote Dialog | ||
2. Ensure you are logged into the server as an administrator. | ||
3. Click `Manage Groups...` | ||
4. The Manage Group dialog will appear. | ||
5. Select the group you want to edit. | ||
6. Click `Edit...` | ||
7. Move users between "Available" and "Chosen" as needed | ||
|
||
### Delete an Existing Group | ||
1. Open the Remote Dialog | ||
2. Ensure you are logged into the server as an administrator | ||
3. Click `Manage Groups...` | ||
4. The Manage Groups dialog will appear | ||
5. Select the group to remove | ||
6. Click `Delete...` | ||
7. Click `Yes` | ||
|
||
|
||
## Managing Projects | ||
|
||
### Create a New Project | ||
1. Open the Remote Dialog | ||
2. Connect to an Enterprise server | ||
3. Click `Actions` above the File List | ||
4. In the Project List, click `Create Project...` | ||
5. Enter a name and description for your new project | ||
6. Click `Ok` | ||
|
||
### Edit a Project's Details | ||
1. Open the Remote Dialog | ||
2. Connect to an Enterprise server | ||
3. In the Project List, select the project whose details you want to edit | ||
4. Click `Actions` above the File List | ||
5. In the Project List, click `Edit Properties...` | ||
6. Enter the name and description for the project | ||
7. Click `Ok` | ||
|
||
### Delete a Project | ||
1. Open the Remote Dialog | ||
2. Connect to an Enterprise server | ||
3. In the Project List, select the project you want to delete | ||
4. Click `Actions` above the File List | ||
5. In the Project List, click `Delete...` | ||
6. Click `Yes` | ||
|
||
### Manage User or Group Permissions for a Project | ||
!!! note | ||
If the `Manage Permissions...` action is disabled, your account is not marked as a Project Admin. | ||
|
||
1. Open the Remote Dialog | ||
2. Connect to an Enterprise server | ||
3. In the Project List, select the project you want to modify | ||
4. Click `Actions` above the File List | ||
5. Click `Manage Permissions...` and the Project Permissions dialog will open | ||
|
||
#### Add a User to a Project | ||
From the Project Permissions dialog: | ||
|
||
1. Click `Add User` | ||
2. In the user textbox, type the username of the user that will be given access | ||
3. Change the `Permission` drop-down to "View", "Edit", or "Admin" | ||
4. Click `Save` | ||
|
||
#### Add a Group to a Project | ||
From the Project Permissions dialog: | ||
|
||
1. Click the `Groups` tab at the top | ||
2. Click `Add Group` | ||
3. In the group textbox, type the name of the group that will be given access | ||
4. Change the `Permission` drop-down to "View", "Edit", or "Admin" | ||
5. Click `Save` | ||
|
||
#### Remove a User from a Project | ||
From the Project Permissions dialog: | ||
|
||
1. Click the user you would like to remove | ||
2. Click the `Remove User(s)` button at the bottom left | ||
3. Click `Save` | ||
|
||
#### Add a Group to a Project | ||
From the Project Permissions dialog: | ||
|
||
1. Click the `Groups` tab at the top | ||
2. Click the group you would like to remove | ||
3. Click the `Remove Group(s) button at the bottom left | ||
4. Click `Save` | ||
|
||
|
||
## Managing Files | ||
Managing files within a Project, as of Binary Ninja 4.0, is now handled through the Project Browser. More information can now be found in the main Binary Ninja documentation. | ||
|
||
|
||
## Syncing Changes | ||
|
||
### Sync File Changes | ||
1. Open a project file | ||
2. Click the `Sync` button in the bottom left on the window | ||
1. If there are any conflicts when syncing see, [Resolving Conflicts](#resolving-conflicts) below | ||
|
||
### Resolving Conflicts | ||
If there has been a conflict while syncing changes that cannot be resolved automatically, the Resolve Merge Conflict dialog will open. | ||
|
||
1. Select a conflict to resolve | ||
2. Inspect the left and right sides of the conflict | ||
3. Click either `Choose Left` or `Choose Right` to select one of the changes, or click `Cancel Merge` if you wish to cancel Syncing and merge later | ||
1. If there are many conflicts and wish to resolve them all to the same direction, click either `Choose All Left` or `Choose All Right` to select one side for all conflicts | ||
|
||
### Named Snapshots | ||
When you sync your changes, you will be prompted to enter a summary of your changes. These summaries can be seen by all members of your Project by opening the file and using `File` > `Collaboration` > `File Changelog`. | ||
|
||
You can also annotate specific points in your analysis history without necessarily syncing, by using the `File` > `Collaboration` > `Create Named Snapshot` action. On syncing, these named snapshot summaries will also be uploaded. | ||
|
||
|
||
## Live Chat | ||
|
||
Live chat is provided by the Chat sidebar widget (the icon is two speech bubbles). | ||
|
||
### Send Chat Messages | ||
1. Open the chat window | ||
2. Type your message into the text box at the bottom of the chat panel | ||
3. Press "Enter" or "Return" to send your message | ||
|
||
### Link to an Address in Chat | ||
1. Open the chat window | ||
2. Type the address in with `0x` at the front (e.g. `0x0000face`) | ||
3. Press "Enter" or "Return" to send your message |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
# Binary Ninja Enterprise Client | ||
|
||
!!! note | ||
This section only applies to the `Enterprise` edition of Binary Ninja | ||
|
||
Welcome to the Binary Ninja Enterprise client documentation, part of our Binary Ninja Enterprise product. | ||
|
||
### Licensing | ||
|
||
If your Enterprise client came with a *named* license, please ensure the `license.dat` that contains the license has been placed in your user folder. User folder locations, per platform, are: | ||
|
||
* Windows: `%APPDATA%\Binary Ninja` | ||
* macOS: `~/Library/Application Support/Binary Ninja` | ||
* Linux: `~/.binaryninja` | ||
|
||
Otherwise, the Enterprise client will need to check out a *floating* license from the server. This happens while you are logging in (unless you already have a license) and will automatically renew based on the "Checkout Duration" interval you chose in the login dialog. | ||
|
||
## API Examples | ||
|
||
Examples of using the `collaboration` and `enterprise` APIs (which are unique to the Enterprise edition of the client) can be found bundled with the client: | ||
|
||
* **macOS**: `Binary\ Ninja.app/Contents/Resources/python/binaryninja/collaboration/examples` | ||
* **Linux**: `binaryninja/python/binaryninja/collaboration/examples` | ||
* **Windows**: `Binary Ninja\python\binaryninja\collaboration\examples` | ||
|
||
## Configuration | ||
|
||
The Enterprise client has a number of user-configurable settings that let you change its behavior. These settings can be found in the main Settings window (`Edit -> Preferences`) within Binary Ninja in two separate areas: | ||
|
||
### Collaboration | ||
|
||
* *Active Server* (`collaboration.activeRemote`) is the URL of the Enterprise server to automatically connect to on launch. | ||
* *Advanced Conflict Resolution* (`collaboration.advancedMerge`) shows additional information in the merge conflict resolution UI. | ||
* *Auto Connect* (`collaboration.autoConnectOnLaunch`) makes Binary Ninja attempt to connect to your last used Enterprise server when you open the application. | ||
* *Poll Interval* (`collaboration.autoPollInterval`) controls the time between automatic fetching for updated snapshots from the Enterprise server. This updates the pending change counts shown on the sync button in the status bar, but does not pull the changes. Set this to 0 to disable polling entirely. | ||
* *Collaboration Project Directory* (`collaboration.directory`) defines the directory on your local disk where local copies of Collaboration files will be stored. | ||
* *Maximum Conflict Diff Size* (`collaboration.maxConflictDiff`) defines a maximum size for showing diffs, which prevents performance issues with large diffs | ||
* *Collaboration Servers* (`collaboration.servers`) is a list of Enterprise servers and their URLs that the Enterprise client may connect to. | ||
* *Sync on Save* (`collaboration.syncOnSave`) controls whether the Enterprise client will sync your local changes to the Enterprise server every time you save. | ||
|
||
### Enterprise | ||
|
||
* *Automatically Checkout License* (`enterprise.autoCheckout`), if enabled, will cause Binary Ninja Enterprise to automatically check out a license on launch. | ||
* *Default License Checkout Duration* (`enterprise.defaultCheckoutDuration`) will change the default duration of a checked out license. | ||
* *Secrets Provider* (`enterprise.secretsProvider`) will change the secrets provider used for storing your checked out license. | ||
* *Enterprise Server URL* (`enterprise.server.url`) is a read-only setting that shows the base URL for the currently connected Enterprise server. | ||
|
||
### Core | ||
|
||
* *Collaboration Plugin* (`corePlugins.collaboration`) allows you to disable all collaboration features. | ||
* *Database Viewer (Debug)* (`corePlugins.databaseViewer`) enables an experimental, built-in database viewer plugin that can be used to debug database issues. | ||
|
||
### Network | ||
|
||
* *Enable Collaboration Server* (`network.enableCollaborationServer`) controls all collaboration network activity. | ||
|
||
### Updates | ||
|
||
* *Use Enterprise Server For Updates* (`updates.useEnterpriseServer`) controls whether the client will look for updates on the internet from the official Binary Ninja update servers (unchecked) or from the currently connected Enterprise server (checked). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
# Troubleshooting | ||
|
||
Occasionally, you may encounter issues with the Enterprise client. Here are some common issues and troubleshooting steps to fix them: | ||
|
||
|
||
## Cannot Connect to Enterprise Server | ||
|
||
If you have multiple copies of Binary Ninja installed, it is often difficult to get the correct client connected when clicking on the Connect button on the Enterprise server's front page. If you are having trouble getting your client connected (or if you have already connected your client, but the server has moved), you will want to edit the `enterprise.server.url` key in your `settings.json` file. This file should be found in your user folder: | ||
|
||
* **macOS:** `~/Library/Application Support/Binary Ninja/settings.json` | ||
* **Linux:** `~/.binaryninja/settings.json` | ||
* **Windows:** `%APPDATA%\Binary Ninja\settings.json` | ||
|
||
This is also the intended workaround for any other situations where you cannot get the client connected. This setting is currently not able to be changed while the Enterprise client is running and must be changed manually. | ||
|
||
!!! warning | ||
If you are always getting the dialog to connect to the initial server every time you launch the client, make sure your `settings.json` file is valid JSON. An extra trailing comma on the last entry, or a missed trailing slash on an earlier entry, are common culprits. | ||
|
||
|
||
## Cannot Check Out License | ||
|
||
`Enterprise Server failed loading metadata.` | ||
|
||
This means that the Enterprise server, after connection, did not provide your client with metadata required to check out a new license. The most common cause of this error is having invalid cached credentials that leave you in a partially logged-in state. | ||
|
||
The easiest way to fix this is to close Binary Ninja Enterprise and move or remove the `keychain` folder that is found in your user folder: | ||
|
||
* **macOS:** `~/Library/Application Support/Binary Ninja/keychain` | ||
* **Linux:** `~/.binaryninja/keychain` | ||
* **Windows:** `%APPDATA%\Binary Ninja\keychain` | ||
|
||
|
||
## Cannot Save or Sync Because Database is Locked | ||
|
||
Binary Ninja is only able to have a single instance of any given database open at a time. If you open another instance and try to save or sync (which requires saving), you may encounter an error that states the database is locked and cannot be modified. In order to save, you will need to locate the other open copy of the database on your computer and close it. In order to sync, you may need to additionally restart the Enterprise client. | ||
|
||
If you have followed these instructions and are still unable to save or sync, please contact support. |
Oops, something went wrong.