interaction module¶
Class |
Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- class AddressField[source]
Bases:
objectAddressFieldprompts the user for an address. By passing the optional view and current_address parameters offsets can be used instead of just an address. The result is stored as in int in self.result.Note
This API currently functions differently on the command-line, as the view and current_address are disregarded. Additionally where as in the UI the result defaults to hexadecimal on the command-line 0x must be specified.
- __init__(prompt: str, view: BinaryView | None = None, current_address: int = 0, default: int | None = None)[source]
- Parameters:
prompt (str) –
view (BinaryView | None) –
current_address (int) –
default (int | None) –
- property current_address
current address to use as a base for relative calculations
- property prompt
prompt to be presented to the user
- property result
- property view
BinaryView for the address
- class CheckboxField[source]
Bases:
objectCheckboxFieldprompts the user to choose a yes/no option in a checkbox. Result is stored in self.result as a boolean value.- Parameters:
- __init__(prompt, default)[source]
- property default
- property prompt
- property result
- class ChoiceField[source]
Bases:
objectChoiceFieldprompts the user to choose from the list of strings provided inchoices. Result is stored in self.result as an index in to the choices array.- Parameters:
- property prompt: str
- class DirectoryNameField[source]
Bases:
objectDirectoryNameFieldprompts the user to specify a directory name to open. Result is stored in self.result as a string.- __init__(prompt, default_name='', default=None)[source]
- property default_name
- property prompt
- property result
- class FlowGraphReport[source]
Bases:
object- __init__(title, graph, view=None)[source]
- property graph
- property title
- property view
- class HTMLReport[source]
Bases:
object- __init__(title, contents, plaintext='', view=None)[source]
- property contents
- property plaintext
- property title
- property view
- class IntegerField[source]
Bases:
objectIntegerFieldadd prompt for integer. Result is stored in self.result as an int.- property prompt
- property result
- class InteractionHandler[source]
Bases:
object- __init__()[source]
- get_address_input(prompt, title, view, current_address)[source]
- get_checkbox_input(prompt, default_choice)[source]
- get_choice_input(prompt, title, choices)[source]
- get_directory_name_input(prompt, default_name)[source]
- get_form_input(fields, title)[source]
- get_int_input(prompt, title)[source]
- get_large_choice_input(prompt, title, choices)[source]
- get_open_filename_input(prompt, ext)[source]
- get_save_filename_input(prompt, ext, default_name)[source]
- get_text_line_input(prompt, title)[source]
- open_url(url)[source]
- register()[source]
- show_graph_report(view, title, graph)[source]
- show_html_report(view, title, contents, plaintext)[source]
- show_markdown_report(view, title, contents, plaintext)[source]
- show_message_box(title, text, buttons, icon)[source]
- show_plain_text_report(view, title, contents)[source]
- show_report_collection(title, reports)[source]
- class LabelField[source]
Bases:
objectLabelFieldadds a text label to the display.- property text: str
- class MarkdownReport[source]
Bases:
object- __init__(title, contents, plaintext='', view=None)[source]
- property contents
- property plaintext
- property title
- property view
- class MultilineTextField[source]
Bases:
objectMultilineTextFieldadd multi-line text string input field. Result is stored in self.result as a string. This option is not supported on the command-line.- property prompt
- property result
- class OpenFileNameField[source]
Bases:
objectOpenFileNameFieldprompts the user to specify a file name to open. Result is stored in self.result as a string.- property ext
- property prompt
- property result
- class PlainTextReport[source]
Bases:
object- __init__(title, contents, view=None)[source]
- property contents
- property title
- property view
- class ReportCollection[source]
Bases:
object- __init__(handle=None)[source]
- append(report)[source]
- update(i, report)[source]
- class SaveFileNameField[source]
Bases:
objectSaveFileNameFieldprompts the user to specify a file name to save. Result is stored in self.result as a string.- __init__(prompt, ext='', default_name='', default=None)[source]
- property default_name
- property ext
- property prompt
- property result
- class TextLineField[source]
Bases:
objectTextLineFieldAdds prompt for text string input. Result is stored in self.result as a string on completion.- property prompt
- property result
- get_address_input(prompt, title)[source]
get_address_inputprompts the user for an address with the given prompt and titleNote
This API function differently on the command-line vs the UI. In the UI a pop-up is used. On the command-line a simple text prompt is used.
- get_checkbox_input(prompt: str, title: str, default: bool = False)[source]
get_checkbox_inputprompts the user for a checkbox input :param prompt: String to prompt with :param title: Title of the window when executed in the UI :param default: Optional default state for the checkbox (false == unchecked, true == checked), False if not set. :rtype: bool indicating the state of the checkbox
- get_choice_input(prompt, title, choices)[source]
get_choice_inputprompts the user to select the one of the provided choicesNote
This API function differently on the command-line vs the UI. In the UI a pop-up is used. On the command-line a simple text prompt is used. The UI uses a combo box.
- Parameters:
- Return type:
integer array index of the selected option
- Example:
>>> get_choice_input("PROMPT>", "choices", ["Yes", "No", "Maybe"]) choices 1) Yes 2) No 3) Maybe PROMPT> 1 0L
- get_directory_name_input(prompt: str, default_name: str = '')[source]
get_directory_name_inputprompts the user for a directory name to save as, optionally providing a default_nameNote
This API function differently on the command-line vs the UI. In the UI a pop-up is used. On the command-line a simple text prompt is used. The UI uses the native window pop-up for file selection.
- get_form_input(fields, title)[source]
get_from_inputPrompts the user for a set of inputs specified infieldswith given title. The fields parameter is a list which can contain the following types:FieldType
Description
str
an alias for LabelField
None
an alias for SeparatorField
LabelField
Text output
SeparatorField
Vertical spacing
TextLineField
Prompt for a string value
MultilineTextField
Prompt for multi-line string value
IntegerField
Prompt for an integer
AddressField
Prompt for an address
ChoiceField
Prompt for a choice from provided options
OpenFileNameField
Prompt for file to open
SaveFileNameField
Prompt for file to save to
DirectoryNameField
Prompt for directory name
CheckboxFormField
Prompt for a checkbox
This API is flexible and works both in the UI via a pop-up dialog and on the command-line.
Note
More complicated APIs should consider using the included pyside2 functionality in the binaryninjaui module. Returns true or false depending on whether the user submitted responses or cancelled the dialog.
- Parameters:
fields (list(str) or list(None) or list(LabelField) or list(SeparatorField) or list(TextLineField) or list(MultilineTextField) or list(IntegerField) or list(AddressField) or list(ChoiceField) or list(OpenFileNameField) or list(SaveFileNameField) or list(DirectoryNameField)) – A list containing these classes, strings or None
title (str) – The title of the pop-up dialog
- Return type:
- Example:
>>> int_f = IntegerField("Specify Integer") >>> tex_f = TextLineField("Specify name") >>> choice_f = ChoiceField("Options", ["Yes", "No", "Maybe"]) >>> get_form_input(["Get Data", None, int_f, tex_f, choice_f], "The options") Get Data <empty> Specify Integer 1337 Specify name Peter The options 1) Yes 2) No 3) Maybe Options 1 >>> True >>> print(tex_f.result, int_f.result, choice_f.result) Peter 1337 0
- get_int_input(prompt, title)[source]
get_int_inputprompts the user to input a integer with the given prompt and titleNote
This API function differently on the command-line vs the UI. In the UI a pop-up is used. On the command-line a simple text prompt is used.
- get_large_choice_input(prompt, title, choices)[source]
get_large_choice_inputprompts the user to select the one of the provided choices from a large poolNote
This API function differently on the command-line vs the UI. In the UI a pop-up is used. On the command-line a text prompt is used. The UI uses a filterable list of entries
- Parameters:
- Return type:
integer array index of the selected option
- Example:
>>> get_large_choice_input("Select Function", "Select a Function", [f.symbol.short_name for f in bv.functions])
- get_open_filename_input(prompt: str, ext: str = '') str | None[source]
get_open_filename_inputprompts the user for a file name to openNote
This API functions differently on the command-line vs the UI. In the UI a pop-up is used. On the command-line a simple text prompt is used. The UI uses the native window pop-up for file selection.
Multiple file selection groups can be included if separated by two semicolons. Multiple file wildcards may be specified by using a space within the parenthesis.
Also, a simple selector of *.extension by itself may also be used instead of specifying the description.
- Parameters:
- Example:
>>> get_open_filename_input("filename:", "*.py") 'test.py' >>> get_open_filename_input("filename:", "All Files (*)") 'test.py' >>> get_open_filename_input("filename:", "Executables (*.exe)") 'foo.exe' >>> get_open_filename_input("filename:", "Executables (*.exe *.com)") 'foo.exe' >>> get_open_filename_input("filename:", "Executables (*.exe *.com);;Python Files (*.py);;All Files (*)") 'foo.exe'
- Return type:
str | None
- get_save_filename_input(prompt: str, ext: str = '', default_name: str = '') str | None[source]
get_save_filename_inputprompts the user for a file name to save as, optionally providing a file extension and default_nameNote
This API function differently on the command-line vs the UI. In the UI a pop-up is used. On the command-line a simple text prompt is used. The UI uses the native window pop-up for file selection.
- Parameters:
- Example:
>>> get_save_filename_input("filename:", "*.py", "test.py") filename: test.py 'test.py' >>> get_save_filename_input("filename:", "All Files (*)", "test.py") filename: test.py 'test.py' >>> get_save_filename_input("filename:", "Executables (*.exe)", "foo.exe") filename: foo.exe 'foo.exe' >>> get_save_filename_input("filename:", "Executables (*.exe *.com)", "foo.exe") filename: foo.exe 'foo.exe' >>> get_save_filename_input("filename:", "Executables (*.exe *.com);;Python Files (*.py);;All Files (*)", "foo.exe") filename: foo.exe 'foo.exe'
- Return type:
str | None
- get_text_line_input(prompt, title)[source]
get_text_line_inputprompts the user to input a string with the given prompt and titleNote
This API function differently on the command-line vs the UI. In the UI a pop-up is used. On the command-line a simple text prompt is used.
- markdown_to_html(contents)[source]
markdown_to_htmlconverts the provided markdown to HTML
- open_url(url)[source]
open_urlOpens a given url in the user’s web browser, if available.
- run_progress_dialog(title: str, can_cancel: bool, task: Callable[[Callable[[int, int], bool]], None]) bool[source]
run_progress_dialogruns a given task in a background thread, showing an updating progress bar which the user can cancel.- Parameters:
title (str) – Dialog title
can_cancel (bool) – If the task can be cancelled
task (Callable[[Callable[[int, int], bool]], None]) – Function to perform the task, taking as a parameter a function which should be called to report progress updates and check for cancellation. If the progress function returns false, the user has requested to cancel, and the task should handle this appropriately.
- Returns:
True if not cancelled
- Return type:
- show_graph_report(title, graph)[source]
show_graph_reportdisplays a flow graph in UI applications and nothing in command-line applications. This API doesn’t support clickable references into an existing BinaryView. Use theBinaryView.show_html_reportAPI if hyperlinking is needed.Note
This API function will have no effect outside the UI.
- show_html_report(title, contents, plaintext='')[source]
show_html_reportdisplays the HTML contents in UI applications and plaintext in command-line applications. This API doesn’t support hyperlinking into the BinaryView, use theBinaryView.show_html_reportAPI if hyperlinking is needed.
- show_markdown_report(title, contents, plaintext='')[source]
show_markdown_reportdisplays the markdown contents in UI applications and plaintext in command-line applications. This API doesn’t support hyperlinking into the BinaryView, use theBinaryView.show_markdown_reportAPI if hyperlinking is needed.Note
This API function differently on the command-line vs the UI. In the UI a pop-up is used. On the command-line a simple text prompt is used.
- show_message_box(title, text, buttons=MessageBoxButtonSet.OKButtonSet, icon=MessageBoxIcon.InformationIcon)[source]
show_message_boxDisplays a configurable message box in the UI, or prompts on the console as appropriate- Parameters:
title (str) – Text title for the message box.
text (str) – Text for the main body of the message box.
buttons (MessageBoxButtonSet) – One of
MessageBoxButtonSeticon (MessageBoxIcon) – One of
MessageBoxIcon
- Returns:
Which button was selected
- Return type:
- show_plain_text_report(title, contents)[source]
show_plain_text_reportdisplays contents to the user in the UI or on the command-lineNote
This API functions differently on the command-line vs the UI. In the UI, a pop-up is used. On the command-line, a simple text prompt is used.
- show_report_collection(title, reports)[source]
show_report_collectiondisplays multiple reports in UI applicationsNote
This API function will have no effect outside the UI.
- Parameters:
reports (ReportCollection) – Reports to display
- Return type:
None
AddressField¶
- class AddressField[source]¶
Bases:
objectAddressFieldprompts the user for an address. By passing the optional view and current_address parameters offsets can be used instead of just an address. The result is stored as in int in self.result.Note
This API currently functions differently on the command-line, as the view and current_address are disregarded. Additionally where as in the UI the result defaults to hexadecimal on the command-line 0x must be specified.
- __init__(prompt: str, view: BinaryView | None = None, current_address: int = 0, default: int | None = None)[source]¶
- Parameters:
prompt (str) –
view (BinaryView | None) –
current_address (int) –
default (int | None) –
- property current_address¶
current address to use as a base for relative calculations
- property prompt¶
prompt to be presented to the user
- property result¶
- property view¶
BinaryView for the address