[Server] Remove all references to "MUI"

Just call this ManticoreServer
This commit is contained in:
Eric Kilmer
2022-09-28 09:33:02 -04:00
parent b6f878e073
commit ee1897bdbc
19 changed files with 482 additions and 442 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
muicore.egg-info/**
manticore_server.egg-info/**
**/__pycache__
dist/**
.mypy_cache/**
+5 -7
View File
@@ -1,11 +1,9 @@
# MUI Server
MUI Server is a gRPC service that acts as a wrapper around [Manticore](https://github.com/trailofbits/manticore), which will serve as the future of the [Manticore User Interface (MUI)](https://github.com/trailofbits/ManticoreUI) project. MUI Server is designed to allow developers to create Manticore UI Plugins for different disassemblers easily, and to allow for Manticore itself to be done in the cloud/remotely.
# Manticore Server
Manticore Server is a gRPC service that acts as a wrapper around [Manticore](https://github.com/trailofbits/manticore), to support projects like the [Manticore User Interface (MUI)](https://github.com/trailofbits/ManticoreUI). Manticore Server is designed to allow developers to more easily create tools around Manticore that aren't in Python or to allow for Manticore to be run and managed in the cloud/remotely.
# Usage
The MUI-Core server can be run via `python3 mui_server.py`. For most applications of MUI, in which a Python interpreter available or the required dependencies are not available, users can run the stand-alone `muicore_server` binary.
The Manticore Server can be run via `python3 manticore_server.py` on port `50010`.
Currently, MUI-Core communicates only on `localhost:50010`.
Your Manticore Server client will require the relevant gRPC client code. You can find out how to generate gRPC client code in your desired language from [the gRPC website](https://grpc.io/docs/languages/).
Your MUI Plugin will require the relevant gRPC client code. You can find out how to generate gRPC client code in your desired language from [the gRPC website](https://grpc.io/docs/languages/).
You may refer to the [Protobuf Specification](muicore/MUICore.proto) for information about the RPC services provided and the message types.
You may refer to the [Protobuf Specification](manticore_server/ManticoreServer.proto) for information about the RPC services provided and the message types.
+1 -4
View File
@@ -19,12 +19,9 @@ build: generate
set -euo
mkdir -p dist
py_ver=$(python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')
python3 -m shiv -c muicore -o dist/muicore_server --reproducible --no-modify --python "/usr/bin/env python${py_ver}" --compressed .
python3 -m shiv -c manticore_server -o dist/manticore_server --reproducible --no-modify --python "/usr/bin/env python${py_ver}" --compressed .
wget https://github.com/ethereum/solc-bin/raw/gh-pages/linux-amd64/solc-linux-amd64-v0.8.9%2Bcommit.e5eed63a -O dist/solc
chmod 775 dist/solc
install: build
cp dist/* ../plugins/ghidra/MUI/os/linux_x86_64/
test:
python3 -m unittest tests/test_*.py
@@ -1,44 +1,44 @@
syntax = "proto3";
package muicore;
package manticore_server;
service ManticoreUI {
service ManticoreServer {
rpc StartNative(NativeArguments) returns (ManticoreInstance) {}
rpc StartEVM(EVMArguments) returns (ManticoreInstance) {}
rpc Terminate(ManticoreInstance) returns (TerminateResponse) {}
rpc GetStateList(ManticoreInstance) returns (MUIStateList) {}
rpc GetMessageList(ManticoreInstance) returns (MUIMessageList) {}
rpc GetStateList(ManticoreInstance) returns (ManticoreStateList) {}
rpc GetMessageList(ManticoreInstance) returns (ManticoreMessageList) {}
rpc CheckManticoreRunning(ManticoreInstance) returns (ManticoreRunningStatus) {}
rpc StopServer(StopServerRequest) returns (StopServerResponse) {}
rpc ControlState(ControlStateRequest) returns (ControlStateResponse) {}
}
// LogMessage and StateList message types have "MUI" in their names to distinguish them from those in mserialize
// LogMessage and StateList message types have "Manticore" in their names to distinguish them from those in mserialize
message MUILogMessage{
message ManticoreLogMessage {
string content = 1;
}
message MUIMessageList{
repeated MUILogMessage messages = 2;
message ManticoreMessageList {
repeated ManticoreLogMessage messages = 2;
}
message MUIState {
message ManticoreState {
int32 state_id = 3;
uint64 pc = 10;
optional int32 parent_id = 28;
repeated int32 children_ids = 29;
}
message MUIStateList{
message ManticoreStateList {
// state categories in MUI - based on manticore enums StateStatus and StateList
repeated MUIState active_states = 4;
repeated MUIState waiting_states = 5;
repeated MUIState forked_states = 6;
repeated MUIState errored_states = 7;
repeated MUIState complete_states = 8;
repeated MUIState paused_states = 33;
// state categories in Manticore - based on manticore enums StateStatus and StateList
repeated ManticoreState active_states = 4;
repeated ManticoreState waiting_states = 5;
repeated ManticoreState forked_states = 6;
repeated ManticoreState errored_states = 7;
repeated ManticoreState complete_states = 8;
repeated ManticoreState paused_states = 33;
}
message ManticoreInstance {
@@ -63,7 +63,7 @@ message Hook {
message NativeArguments {
string program_path = 11;
repeated string binary_args = 16;
repeated string binary_args = 16;
repeated string envp = 17;
repeated string symbolic_files = 18;
optional string concrete_start = 19;
@@ -104,4 +104,4 @@ message ControlStateRequest {
StateAction action = 36;
}
message ControlStateResponse {}
message ControlStateResponse {}
@@ -0,0 +1,173 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: manticore_server/ManticoreServer.proto
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&manticore_server/ManticoreServer.proto\x12\x10manticore_server\"&\n\x13ManticoreLogMessage\x12\x0f\n\x07\x63ontent\x18\x01 \x01(\t\"O\n\x14ManticoreMessageList\x12\x37\n\x08messages\x18\x02 \x03(\x0b\x32%.manticore_server.ManticoreLogMessage\"j\n\x0eManticoreState\x12\x10\n\x08state_id\x18\x03 \x01(\x05\x12\n\n\x02pc\x18\n \x01(\x04\x12\x16\n\tparent_id\x18\x1c \x01(\x05H\x00\x88\x01\x01\x12\x14\n\x0c\x63hildren_ids\x18\x1d \x03(\x05\x42\x0c\n\n_parent_id\"\xee\x02\n\x12ManticoreStateList\x12\x37\n\ractive_states\x18\x04 \x03(\x0b\x32 .manticore_server.ManticoreState\x12\x38\n\x0ewaiting_states\x18\x05 \x03(\x0b\x32 .manticore_server.ManticoreState\x12\x37\n\rforked_states\x18\x06 \x03(\x0b\x32 .manticore_server.ManticoreState\x12\x38\n\x0e\x65rrored_states\x18\x07 \x03(\x0b\x32 .manticore_server.ManticoreState\x12\x39\n\x0f\x63omplete_states\x18\x08 \x03(\x0b\x32 .manticore_server.ManticoreState\x12\x37\n\rpaused_states\x18! \x03(\x0b\x32 .manticore_server.ManticoreState\"!\n\x11ManticoreInstance\x12\x0c\n\x04uuid\x18\t \x01(\t\"\x13\n\x11TerminateResponse\"\xb6\x01\n\x04Hook\x12\x14\n\x07\x61\x64\x64ress\x18\x1a \x01(\x04H\x00\x88\x01\x01\x12-\n\x04type\x18\x1b \x01(\x0e\x32\x1f.manticore_server.Hook.HookType\x12\x16\n\tfunc_text\x18\x1f \x01(\tH\x01\x88\x01\x01\"7\n\x08HookType\x12\x08\n\x04\x46IND\x10\x00\x12\t\n\x05\x41VOID\x10\x01\x12\n\n\x06\x43USTOM\x10\x02\x12\n\n\x06GLOBAL\x10\x03\x42\n\n\x08_addressB\x0c\n\n_func_text\"\xcd\x02\n\x0fNativeArguments\x12\x14\n\x0cprogram_path\x18\x0b \x01(\t\x12\x13\n\x0b\x62inary_args\x18\x10 \x03(\t\x12\x0c\n\x04\x65nvp\x18\x11 \x03(\t\x12\x16\n\x0esymbolic_files\x18\x12 \x03(\t\x12\x1b\n\x0e\x63oncrete_start\x18\x13 \x01(\tH\x00\x88\x01\x01\x12\x17\n\nstdin_size\x18\x14 \x01(\tH\x01\x88\x01\x01\x12\"\n\x15\x61\x64\x64itional_mcore_args\x18\x15 \x01(\tH\x02\x88\x01\x01\x12%\n\x05hooks\x18\x1e \x03(\x0b\x32\x16.manticore_server.Hook\x12\x1a\n\remulate_until\x18 \x01(\x04H\x03\x88\x01\x01\x42\x11\n\x0f_concrete_startB\r\n\x0b_stdin_sizeB\x18\n\x16_additional_mcore_argsB\x10\n\x0e_emulate_until\"\xec\x01\n\x0c\x45VMArguments\x12\x15\n\rcontract_path\x18\x0c \x01(\t\x12\x15\n\rcontract_name\x18\r \x01(\t\x12\x10\n\x08solc_bin\x18\x0e \x01(\t\x12\x15\n\x08tx_limit\x18\x16 \x01(\tH\x00\x88\x01\x01\x12\x17\n\ntx_account\x18\x17 \x01(\tH\x01\x88\x01\x01\x12\x1c\n\x14\x64\x65tectors_to_exclude\x18\x18 \x03(\t\x12\x1d\n\x10\x61\x64\x64itional_flags\x18\x19 \x01(\tH\x02\x88\x01\x01\x42\x0b\n\t_tx_limitB\r\n\x0b_tx_accountB\x13\n\x11_additional_flags\",\n\x16ManticoreRunningStatus\x12\x12\n\nis_running\x18\x0f \x01(\x08\"\x13\n\x11StopServerRequest\"\x14\n\x12StopServerResponse\"\xdb\x01\n\x13\x43ontrolStateRequest\x12\x10\n\x08state_id\x18\" \x01(\x05\x12?\n\x12manticore_instance\x18# \x01(\x0b\x32#.manticore_server.ManticoreInstance\x12\x41\n\x06\x61\x63tion\x18$ \x01(\x0e\x32\x31.manticore_server.ControlStateRequest.StateAction\".\n\x0bStateAction\x12\n\n\x06RESUME\x10\x00\x12\t\n\x05PAUSE\x10\x01\x12\x08\n\x04KILL\x10\x02\"\x16\n\x14\x43ontrolStateResponse2\xfa\x05\n\x0fManticoreServer\x12W\n\x0bStartNative\x12!.manticore_server.NativeArguments\x1a#.manticore_server.ManticoreInstance\"\x00\x12Q\n\x08StartEVM\x12\x1e.manticore_server.EVMArguments\x1a#.manticore_server.ManticoreInstance\"\x00\x12W\n\tTerminate\x12#.manticore_server.ManticoreInstance\x1a#.manticore_server.TerminateResponse\"\x00\x12[\n\x0cGetStateList\x12#.manticore_server.ManticoreInstance\x1a$.manticore_server.ManticoreStateList\"\x00\x12_\n\x0eGetMessageList\x12#.manticore_server.ManticoreInstance\x1a&.manticore_server.ManticoreMessageList\"\x00\x12h\n\x15\x43heckManticoreRunning\x12#.manticore_server.ManticoreInstance\x1a(.manticore_server.ManticoreRunningStatus\"\x00\x12Y\n\nStopServer\x12#.manticore_server.StopServerRequest\x1a$.manticore_server.StopServerResponse\"\x00\x12_\n\x0c\x43ontrolState\x12%.manticore_server.ControlStateRequest\x1a&.manticore_server.ControlStateResponse\"\x00\x62\x06proto3')
_MANTICORELOGMESSAGE = DESCRIPTOR.message_types_by_name['ManticoreLogMessage']
_MANTICOREMESSAGELIST = DESCRIPTOR.message_types_by_name['ManticoreMessageList']
_MANTICORESTATE = DESCRIPTOR.message_types_by_name['ManticoreState']
_MANTICORESTATELIST = DESCRIPTOR.message_types_by_name['ManticoreStateList']
_MANTICOREINSTANCE = DESCRIPTOR.message_types_by_name['ManticoreInstance']
_TERMINATERESPONSE = DESCRIPTOR.message_types_by_name['TerminateResponse']
_HOOK = DESCRIPTOR.message_types_by_name['Hook']
_NATIVEARGUMENTS = DESCRIPTOR.message_types_by_name['NativeArguments']
_EVMARGUMENTS = DESCRIPTOR.message_types_by_name['EVMArguments']
_MANTICORERUNNINGSTATUS = DESCRIPTOR.message_types_by_name['ManticoreRunningStatus']
_STOPSERVERREQUEST = DESCRIPTOR.message_types_by_name['StopServerRequest']
_STOPSERVERRESPONSE = DESCRIPTOR.message_types_by_name['StopServerResponse']
_CONTROLSTATEREQUEST = DESCRIPTOR.message_types_by_name['ControlStateRequest']
_CONTROLSTATERESPONSE = DESCRIPTOR.message_types_by_name['ControlStateResponse']
_HOOK_HOOKTYPE = _HOOK.enum_types_by_name['HookType']
_CONTROLSTATEREQUEST_STATEACTION = _CONTROLSTATEREQUEST.enum_types_by_name['StateAction']
ManticoreLogMessage = _reflection.GeneratedProtocolMessageType('ManticoreLogMessage', (_message.Message,), {
'DESCRIPTOR' : _MANTICORELOGMESSAGE,
'__module__' : 'manticore_server.ManticoreServer_pb2'
# @@protoc_insertion_point(class_scope:manticore_server.ManticoreLogMessage)
})
_sym_db.RegisterMessage(ManticoreLogMessage)
ManticoreMessageList = _reflection.GeneratedProtocolMessageType('ManticoreMessageList', (_message.Message,), {
'DESCRIPTOR' : _MANTICOREMESSAGELIST,
'__module__' : 'manticore_server.ManticoreServer_pb2'
# @@protoc_insertion_point(class_scope:manticore_server.ManticoreMessageList)
})
_sym_db.RegisterMessage(ManticoreMessageList)
ManticoreState = _reflection.GeneratedProtocolMessageType('ManticoreState', (_message.Message,), {
'DESCRIPTOR' : _MANTICORESTATE,
'__module__' : 'manticore_server.ManticoreServer_pb2'
# @@protoc_insertion_point(class_scope:manticore_server.ManticoreState)
})
_sym_db.RegisterMessage(ManticoreState)
ManticoreStateList = _reflection.GeneratedProtocolMessageType('ManticoreStateList', (_message.Message,), {
'DESCRIPTOR' : _MANTICORESTATELIST,
'__module__' : 'manticore_server.ManticoreServer_pb2'
# @@protoc_insertion_point(class_scope:manticore_server.ManticoreStateList)
})
_sym_db.RegisterMessage(ManticoreStateList)
ManticoreInstance = _reflection.GeneratedProtocolMessageType('ManticoreInstance', (_message.Message,), {
'DESCRIPTOR' : _MANTICOREINSTANCE,
'__module__' : 'manticore_server.ManticoreServer_pb2'
# @@protoc_insertion_point(class_scope:manticore_server.ManticoreInstance)
})
_sym_db.RegisterMessage(ManticoreInstance)
TerminateResponse = _reflection.GeneratedProtocolMessageType('TerminateResponse', (_message.Message,), {
'DESCRIPTOR' : _TERMINATERESPONSE,
'__module__' : 'manticore_server.ManticoreServer_pb2'
# @@protoc_insertion_point(class_scope:manticore_server.TerminateResponse)
})
_sym_db.RegisterMessage(TerminateResponse)
Hook = _reflection.GeneratedProtocolMessageType('Hook', (_message.Message,), {
'DESCRIPTOR' : _HOOK,
'__module__' : 'manticore_server.ManticoreServer_pb2'
# @@protoc_insertion_point(class_scope:manticore_server.Hook)
})
_sym_db.RegisterMessage(Hook)
NativeArguments = _reflection.GeneratedProtocolMessageType('NativeArguments', (_message.Message,), {
'DESCRIPTOR' : _NATIVEARGUMENTS,
'__module__' : 'manticore_server.ManticoreServer_pb2'
# @@protoc_insertion_point(class_scope:manticore_server.NativeArguments)
})
_sym_db.RegisterMessage(NativeArguments)
EVMArguments = _reflection.GeneratedProtocolMessageType('EVMArguments', (_message.Message,), {
'DESCRIPTOR' : _EVMARGUMENTS,
'__module__' : 'manticore_server.ManticoreServer_pb2'
# @@protoc_insertion_point(class_scope:manticore_server.EVMArguments)
})
_sym_db.RegisterMessage(EVMArguments)
ManticoreRunningStatus = _reflection.GeneratedProtocolMessageType('ManticoreRunningStatus', (_message.Message,), {
'DESCRIPTOR' : _MANTICORERUNNINGSTATUS,
'__module__' : 'manticore_server.ManticoreServer_pb2'
# @@protoc_insertion_point(class_scope:manticore_server.ManticoreRunningStatus)
})
_sym_db.RegisterMessage(ManticoreRunningStatus)
StopServerRequest = _reflection.GeneratedProtocolMessageType('StopServerRequest', (_message.Message,), {
'DESCRIPTOR' : _STOPSERVERREQUEST,
'__module__' : 'manticore_server.ManticoreServer_pb2'
# @@protoc_insertion_point(class_scope:manticore_server.StopServerRequest)
})
_sym_db.RegisterMessage(StopServerRequest)
StopServerResponse = _reflection.GeneratedProtocolMessageType('StopServerResponse', (_message.Message,), {
'DESCRIPTOR' : _STOPSERVERRESPONSE,
'__module__' : 'manticore_server.ManticoreServer_pb2'
# @@protoc_insertion_point(class_scope:manticore_server.StopServerResponse)
})
_sym_db.RegisterMessage(StopServerResponse)
ControlStateRequest = _reflection.GeneratedProtocolMessageType('ControlStateRequest', (_message.Message,), {
'DESCRIPTOR' : _CONTROLSTATEREQUEST,
'__module__' : 'manticore_server.ManticoreServer_pb2'
# @@protoc_insertion_point(class_scope:manticore_server.ControlStateRequest)
})
_sym_db.RegisterMessage(ControlStateRequest)
ControlStateResponse = _reflection.GeneratedProtocolMessageType('ControlStateResponse', (_message.Message,), {
'DESCRIPTOR' : _CONTROLSTATERESPONSE,
'__module__' : 'manticore_server.ManticoreServer_pb2'
# @@protoc_insertion_point(class_scope:manticore_server.ControlStateResponse)
})
_sym_db.RegisterMessage(ControlStateResponse)
_MANTICORESERVER = DESCRIPTOR.services_by_name['ManticoreServer']
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
_MANTICORELOGMESSAGE._serialized_start=60
_MANTICORELOGMESSAGE._serialized_end=98
_MANTICOREMESSAGELIST._serialized_start=100
_MANTICOREMESSAGELIST._serialized_end=179
_MANTICORESTATE._serialized_start=181
_MANTICORESTATE._serialized_end=287
_MANTICORESTATELIST._serialized_start=290
_MANTICORESTATELIST._serialized_end=656
_MANTICOREINSTANCE._serialized_start=658
_MANTICOREINSTANCE._serialized_end=691
_TERMINATERESPONSE._serialized_start=693
_TERMINATERESPONSE._serialized_end=712
_HOOK._serialized_start=715
_HOOK._serialized_end=897
_HOOK_HOOKTYPE._serialized_start=816
_HOOK_HOOKTYPE._serialized_end=871
_NATIVEARGUMENTS._serialized_start=900
_NATIVEARGUMENTS._serialized_end=1233
_EVMARGUMENTS._serialized_start=1236
_EVMARGUMENTS._serialized_end=1472
_MANTICORERUNNINGSTATUS._serialized_start=1474
_MANTICORERUNNINGSTATUS._serialized_end=1518
_STOPSERVERREQUEST._serialized_start=1520
_STOPSERVERREQUEST._serialized_end=1539
_STOPSERVERRESPONSE._serialized_start=1541
_STOPSERVERRESPONSE._serialized_end=1561
_CONTROLSTATEREQUEST._serialized_start=1564
_CONTROLSTATEREQUEST._serialized_end=1783
_CONTROLSTATEREQUEST_STATEACTION._serialized_start=1737
_CONTROLSTATEREQUEST_STATEACTION._serialized_end=1783
_CONTROLSTATERESPONSE._serialized_start=1785
_CONTROLSTATERESPONSE._serialized_end=1807
_MANTICORESERVER._serialized_start=1810
_MANTICORESERVER._serialized_end=2572
# @@protoc_insertion_point(module_scope)
@@ -3,43 +3,55 @@
isort:skip_file
"""
import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import sys
import typing
import typing_extensions
if sys.version_info >= (3, 10):
import typing as typing_extensions
else:
import typing_extensions
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
class MUILogMessage(google.protobuf.message.Message):
"""LogMessage and StateList message types have "MUI" in their names to distinguish them from those in mserialize
class ManticoreLogMessage(google.protobuf.message.Message):
"""LogMessage and StateList message types have "Manticore" in their names to distinguish them from those in mserialize"""
"""
DESCRIPTOR: google.protobuf.descriptor.Descriptor
CONTENT_FIELD_NUMBER: builtins.int
content: typing.Text
def __init__(self,
content: builtins.str
def __init__(
self,
*,
content: typing.Text = ...,
) -> None: ...
def ClearField(self, field_name: typing_extensions.Literal["content",b"content"]) -> None: ...
global___MUILogMessage = MUILogMessage
content: builtins.str = ...,
) -> None: ...
def ClearField(self, field_name: typing_extensions.Literal["content", b"content"]) -> None: ...
class MUIMessageList(google.protobuf.message.Message):
global___ManticoreLogMessage = ManticoreLogMessage
class ManticoreMessageList(google.protobuf.message.Message):
DESCRIPTOR: google.protobuf.descriptor.Descriptor
MESSAGES_FIELD_NUMBER: builtins.int
@property
def messages(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MUILogMessage]: ...
def __init__(self,
def messages(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ManticoreLogMessage]: ...
def __init__(
self,
*,
messages: typing.Optional[typing.Iterable[global___MUILogMessage]] = ...,
) -> None: ...
def ClearField(self, field_name: typing_extensions.Literal["messages",b"messages"]) -> None: ...
global___MUIMessageList = MUIMessageList
messages: collections.abc.Iterable[global___ManticoreLogMessage] | None = ...,
) -> None: ...
def ClearField(self, field_name: typing_extensions.Literal["messages", b"messages"]) -> None: ...
class MUIState(google.protobuf.message.Message):
global___ManticoreMessageList = ManticoreMessageList
class ManticoreState(google.protobuf.message.Message):
DESCRIPTOR: google.protobuf.descriptor.Descriptor
STATE_ID_FIELD_NUMBER: builtins.int
PC_FIELD_NUMBER: builtins.int
PARENT_ID_FIELD_NUMBER: builtins.int
@@ -49,20 +61,23 @@ class MUIState(google.protobuf.message.Message):
parent_id: builtins.int
@property
def children_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
def __init__(self,
def __init__(
self,
*,
state_id: builtins.int = ...,
pc: builtins.int = ...,
parent_id: typing.Optional[builtins.int] = ...,
children_ids: typing.Optional[typing.Iterable[builtins.int]] = ...,
) -> None: ...
def HasField(self, field_name: typing_extensions.Literal["_parent_id",b"_parent_id","parent_id",b"parent_id"]) -> builtins.bool: ...
def ClearField(self, field_name: typing_extensions.Literal["_parent_id",b"_parent_id","children_ids",b"children_ids","parent_id",b"parent_id","pc",b"pc","state_id",b"state_id"]) -> None: ...
def WhichOneof(self, oneof_group: typing_extensions.Literal["_parent_id",b"_parent_id"]) -> typing.Optional[typing_extensions.Literal["parent_id"]]: ...
global___MUIState = MUIState
parent_id: builtins.int | None = ...,
children_ids: collections.abc.Iterable[builtins.int] | None = ...,
) -> None: ...
def HasField(self, field_name: typing_extensions.Literal["_parent_id", b"_parent_id", "parent_id", b"parent_id"]) -> builtins.bool: ...
def ClearField(self, field_name: typing_extensions.Literal["_parent_id", b"_parent_id", "children_ids", b"children_ids", "parent_id", b"parent_id", "pc", b"pc", "state_id", b"state_id"]) -> None: ...
def WhichOneof(self, oneof_group: typing_extensions.Literal["_parent_id", b"_parent_id"]) -> typing_extensions.Literal["parent_id"] | None: ...
class MUIStateList(google.protobuf.message.Message):
global___ManticoreState = ManticoreState
class ManticoreStateList(google.protobuf.message.Message):
DESCRIPTOR: google.protobuf.descriptor.Descriptor
ACTIVE_STATES_FIELD_NUMBER: builtins.int
WAITING_STATES_FIELD_NUMBER: builtins.int
FORKED_STATES_FIELD_NUMBER: builtins.int
@@ -70,62 +85,70 @@ class MUIStateList(google.protobuf.message.Message):
COMPLETE_STATES_FIELD_NUMBER: builtins.int
PAUSED_STATES_FIELD_NUMBER: builtins.int
@property
def active_states(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MUIState]:
"""state categories in MUI - based on manticore enums StateStatus and StateList"""
pass
def active_states(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ManticoreState]:
"""state categories in Manticore - based on manticore enums StateStatus and StateList"""
@property
def waiting_states(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MUIState]: ...
def waiting_states(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ManticoreState]: ...
@property
def forked_states(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MUIState]: ...
def forked_states(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ManticoreState]: ...
@property
def errored_states(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MUIState]: ...
def errored_states(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ManticoreState]: ...
@property
def complete_states(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MUIState]: ...
def complete_states(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ManticoreState]: ...
@property
def paused_states(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MUIState]: ...
def __init__(self,
def paused_states(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ManticoreState]: ...
def __init__(
self,
*,
active_states: typing.Optional[typing.Iterable[global___MUIState]] = ...,
waiting_states: typing.Optional[typing.Iterable[global___MUIState]] = ...,
forked_states: typing.Optional[typing.Iterable[global___MUIState]] = ...,
errored_states: typing.Optional[typing.Iterable[global___MUIState]] = ...,
complete_states: typing.Optional[typing.Iterable[global___MUIState]] = ...,
paused_states: typing.Optional[typing.Iterable[global___MUIState]] = ...,
) -> None: ...
def ClearField(self, field_name: typing_extensions.Literal["active_states",b"active_states","complete_states",b"complete_states","errored_states",b"errored_states","forked_states",b"forked_states","paused_states",b"paused_states","waiting_states",b"waiting_states"]) -> None: ...
global___MUIStateList = MUIStateList
active_states: collections.abc.Iterable[global___ManticoreState] | None = ...,
waiting_states: collections.abc.Iterable[global___ManticoreState] | None = ...,
forked_states: collections.abc.Iterable[global___ManticoreState] | None = ...,
errored_states: collections.abc.Iterable[global___ManticoreState] | None = ...,
complete_states: collections.abc.Iterable[global___ManticoreState] | None = ...,
paused_states: collections.abc.Iterable[global___ManticoreState] | None = ...,
) -> None: ...
def ClearField(self, field_name: typing_extensions.Literal["active_states", b"active_states", "complete_states", b"complete_states", "errored_states", b"errored_states", "forked_states", b"forked_states", "paused_states", b"paused_states", "waiting_states", b"waiting_states"]) -> None: ...
global___ManticoreStateList = ManticoreStateList
class ManticoreInstance(google.protobuf.message.Message):
DESCRIPTOR: google.protobuf.descriptor.Descriptor
UUID_FIELD_NUMBER: builtins.int
uuid: typing.Text
def __init__(self,
uuid: builtins.str
def __init__(
self,
*,
uuid: typing.Text = ...,
) -> None: ...
def ClearField(self, field_name: typing_extensions.Literal["uuid",b"uuid"]) -> None: ...
uuid: builtins.str = ...,
) -> None: ...
def ClearField(self, field_name: typing_extensions.Literal["uuid", b"uuid"]) -> None: ...
global___ManticoreInstance = ManticoreInstance
class TerminateResponse(google.protobuf.message.Message):
DESCRIPTOR: google.protobuf.descriptor.Descriptor
def __init__(self,
) -> None: ...
def __init__(
self,
) -> None: ...
global___TerminateResponse = TerminateResponse
class Hook(google.protobuf.message.Message):
DESCRIPTOR: google.protobuf.descriptor.Descriptor
class _HookType:
ValueType = typing.NewType('ValueType', builtins.int)
ValueType = typing.NewType("ValueType", builtins.int)
V: typing_extensions.TypeAlias = ValueType
class _HookTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Hook._HookType.ValueType], builtins.type):
class _HookTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Hook._HookType.ValueType], builtins.type): # noqa: F821
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
FIND: Hook._HookType.ValueType # 0
AVOID: Hook._HookType.ValueType # 1
CUSTOM: Hook._HookType.ValueType # 2
GLOBAL: Hook._HookType.ValueType # 3
class HookType(_HookType, metaclass=_HookTypeEnumTypeWrapper):
pass
class HookType(_HookType, metaclass=_HookTypeEnumTypeWrapper): ...
FIND: Hook.HookType.ValueType # 0
AVOID: Hook.HookType.ValueType # 1
CUSTOM: Hook.HookType.ValueType # 2
@@ -136,23 +159,26 @@ class Hook(google.protobuf.message.Message):
FUNC_TEXT_FIELD_NUMBER: builtins.int
address: builtins.int
type: global___Hook.HookType.ValueType
func_text: typing.Text
def __init__(self,
func_text: builtins.str
def __init__(
self,
*,
address: typing.Optional[builtins.int] = ...,
address: builtins.int | None = ...,
type: global___Hook.HookType.ValueType = ...,
func_text: typing.Optional[typing.Text] = ...,
) -> None: ...
def HasField(self, field_name: typing_extensions.Literal["_address",b"_address","_func_text",b"_func_text","address",b"address","func_text",b"func_text"]) -> builtins.bool: ...
def ClearField(self, field_name: typing_extensions.Literal["_address",b"_address","_func_text",b"_func_text","address",b"address","func_text",b"func_text","type",b"type"]) -> None: ...
func_text: builtins.str | None = ...,
) -> None: ...
def HasField(self, field_name: typing_extensions.Literal["_address", b"_address", "_func_text", b"_func_text", "address", b"address", "func_text", b"func_text"]) -> builtins.bool: ...
def ClearField(self, field_name: typing_extensions.Literal["_address", b"_address", "_func_text", b"_func_text", "address", b"address", "func_text", b"func_text", "type", b"type"]) -> None: ...
@typing.overload
def WhichOneof(self, oneof_group: typing_extensions.Literal["_address",b"_address"]) -> typing.Optional[typing_extensions.Literal["address"]]: ...
def WhichOneof(self, oneof_group: typing_extensions.Literal["_address", b"_address"]) -> typing_extensions.Literal["address"] | None: ...
@typing.overload
def WhichOneof(self, oneof_group: typing_extensions.Literal["_func_text",b"_func_text"]) -> typing.Optional[typing_extensions.Literal["func_text"]]: ...
def WhichOneof(self, oneof_group: typing_extensions.Literal["_func_text", b"_func_text"]) -> typing_extensions.Literal["func_text"] | None: ...
global___Hook = Hook
class NativeArguments(google.protobuf.message.Message):
DESCRIPTOR: google.protobuf.descriptor.Descriptor
PROGRAM_PATH_FIELD_NUMBER: builtins.int
BINARY_ARGS_FIELD_NUMBER: builtins.int
ENVP_FIELD_NUMBER: builtins.int
@@ -162,45 +188,48 @@ class NativeArguments(google.protobuf.message.Message):
ADDITIONAL_MCORE_ARGS_FIELD_NUMBER: builtins.int
HOOKS_FIELD_NUMBER: builtins.int
EMULATE_UNTIL_FIELD_NUMBER: builtins.int
program_path: typing.Text
program_path: builtins.str
@property
def binary_args(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
def binary_args(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
@property
def envp(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
def envp(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
@property
def symbolic_files(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
concrete_start: typing.Text
stdin_size: typing.Text
additional_mcore_args: typing.Text
def symbolic_files(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
concrete_start: builtins.str
stdin_size: builtins.str
additional_mcore_args: builtins.str
@property
def hooks(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Hook]: ...
emulate_until: builtins.int
def __init__(self,
def __init__(
self,
*,
program_path: typing.Text = ...,
binary_args: typing.Optional[typing.Iterable[typing.Text]] = ...,
envp: typing.Optional[typing.Iterable[typing.Text]] = ...,
symbolic_files: typing.Optional[typing.Iterable[typing.Text]] = ...,
concrete_start: typing.Optional[typing.Text] = ...,
stdin_size: typing.Optional[typing.Text] = ...,
additional_mcore_args: typing.Optional[typing.Text] = ...,
hooks: typing.Optional[typing.Iterable[global___Hook]] = ...,
emulate_until: typing.Optional[builtins.int] = ...,
) -> None: ...
def HasField(self, field_name: typing_extensions.Literal["_additional_mcore_args",b"_additional_mcore_args","_concrete_start",b"_concrete_start","_emulate_until",b"_emulate_until","_stdin_size",b"_stdin_size","additional_mcore_args",b"additional_mcore_args","concrete_start",b"concrete_start","emulate_until",b"emulate_until","stdin_size",b"stdin_size"]) -> builtins.bool: ...
def ClearField(self, field_name: typing_extensions.Literal["_additional_mcore_args",b"_additional_mcore_args","_concrete_start",b"_concrete_start","_emulate_until",b"_emulate_until","_stdin_size",b"_stdin_size","additional_mcore_args",b"additional_mcore_args","binary_args",b"binary_args","concrete_start",b"concrete_start","emulate_until",b"emulate_until","envp",b"envp","hooks",b"hooks","program_path",b"program_path","stdin_size",b"stdin_size","symbolic_files",b"symbolic_files"]) -> None: ...
program_path: builtins.str = ...,
binary_args: collections.abc.Iterable[builtins.str] | None = ...,
envp: collections.abc.Iterable[builtins.str] | None = ...,
symbolic_files: collections.abc.Iterable[builtins.str] | None = ...,
concrete_start: builtins.str | None = ...,
stdin_size: builtins.str | None = ...,
additional_mcore_args: builtins.str | None = ...,
hooks: collections.abc.Iterable[global___Hook] | None = ...,
emulate_until: builtins.int | None = ...,
) -> None: ...
def HasField(self, field_name: typing_extensions.Literal["_additional_mcore_args", b"_additional_mcore_args", "_concrete_start", b"_concrete_start", "_emulate_until", b"_emulate_until", "_stdin_size", b"_stdin_size", "additional_mcore_args", b"additional_mcore_args", "concrete_start", b"concrete_start", "emulate_until", b"emulate_until", "stdin_size", b"stdin_size"]) -> builtins.bool: ...
def ClearField(self, field_name: typing_extensions.Literal["_additional_mcore_args", b"_additional_mcore_args", "_concrete_start", b"_concrete_start", "_emulate_until", b"_emulate_until", "_stdin_size", b"_stdin_size", "additional_mcore_args", b"additional_mcore_args", "binary_args", b"binary_args", "concrete_start", b"concrete_start", "emulate_until", b"emulate_until", "envp", b"envp", "hooks", b"hooks", "program_path", b"program_path", "stdin_size", b"stdin_size", "symbolic_files", b"symbolic_files"]) -> None: ...
@typing.overload
def WhichOneof(self, oneof_group: typing_extensions.Literal["_additional_mcore_args",b"_additional_mcore_args"]) -> typing.Optional[typing_extensions.Literal["additional_mcore_args"]]: ...
def WhichOneof(self, oneof_group: typing_extensions.Literal["_additional_mcore_args", b"_additional_mcore_args"]) -> typing_extensions.Literal["additional_mcore_args"] | None: ...
@typing.overload
def WhichOneof(self, oneof_group: typing_extensions.Literal["_concrete_start",b"_concrete_start"]) -> typing.Optional[typing_extensions.Literal["concrete_start"]]: ...
def WhichOneof(self, oneof_group: typing_extensions.Literal["_concrete_start", b"_concrete_start"]) -> typing_extensions.Literal["concrete_start"] | None: ...
@typing.overload
def WhichOneof(self, oneof_group: typing_extensions.Literal["_emulate_until",b"_emulate_until"]) -> typing.Optional[typing_extensions.Literal["emulate_until"]]: ...
def WhichOneof(self, oneof_group: typing_extensions.Literal["_emulate_until", b"_emulate_until"]) -> typing_extensions.Literal["emulate_until"] | None: ...
@typing.overload
def WhichOneof(self, oneof_group: typing_extensions.Literal["_stdin_size",b"_stdin_size"]) -> typing.Optional[typing_extensions.Literal["stdin_size"]]: ...
def WhichOneof(self, oneof_group: typing_extensions.Literal["_stdin_size", b"_stdin_size"]) -> typing_extensions.Literal["stdin_size"] | None: ...
global___NativeArguments = NativeArguments
class EVMArguments(google.protobuf.message.Message):
DESCRIPTOR: google.protobuf.descriptor.Descriptor
CONTRACT_PATH_FIELD_NUMBER: builtins.int
CONTRACT_NAME_FIELD_NUMBER: builtins.int
SOLC_BIN_FIELD_NUMBER: builtins.int
@@ -208,70 +237,82 @@ class EVMArguments(google.protobuf.message.Message):
TX_ACCOUNT_FIELD_NUMBER: builtins.int
DETECTORS_TO_EXCLUDE_FIELD_NUMBER: builtins.int
ADDITIONAL_FLAGS_FIELD_NUMBER: builtins.int
contract_path: typing.Text
contract_name: typing.Text
solc_bin: typing.Text
tx_limit: typing.Text
tx_account: typing.Text
contract_path: builtins.str
contract_name: builtins.str
solc_bin: builtins.str
tx_limit: builtins.str
tx_account: builtins.str
@property
def detectors_to_exclude(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
additional_flags: typing.Text
def __init__(self,
def detectors_to_exclude(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
additional_flags: builtins.str
def __init__(
self,
*,
contract_path: typing.Text = ...,
contract_name: typing.Text = ...,
solc_bin: typing.Text = ...,
tx_limit: typing.Optional[typing.Text] = ...,
tx_account: typing.Optional[typing.Text] = ...,
detectors_to_exclude: typing.Optional[typing.Iterable[typing.Text]] = ...,
additional_flags: typing.Optional[typing.Text] = ...,
) -> None: ...
def HasField(self, field_name: typing_extensions.Literal["_additional_flags",b"_additional_flags","_tx_account",b"_tx_account","_tx_limit",b"_tx_limit","additional_flags",b"additional_flags","tx_account",b"tx_account","tx_limit",b"tx_limit"]) -> builtins.bool: ...
def ClearField(self, field_name: typing_extensions.Literal["_additional_flags",b"_additional_flags","_tx_account",b"_tx_account","_tx_limit",b"_tx_limit","additional_flags",b"additional_flags","contract_name",b"contract_name","contract_path",b"contract_path","detectors_to_exclude",b"detectors_to_exclude","solc_bin",b"solc_bin","tx_account",b"tx_account","tx_limit",b"tx_limit"]) -> None: ...
contract_path: builtins.str = ...,
contract_name: builtins.str = ...,
solc_bin: builtins.str = ...,
tx_limit: builtins.str | None = ...,
tx_account: builtins.str | None = ...,
detectors_to_exclude: collections.abc.Iterable[builtins.str] | None = ...,
additional_flags: builtins.str | None = ...,
) -> None: ...
def HasField(self, field_name: typing_extensions.Literal["_additional_flags", b"_additional_flags", "_tx_account", b"_tx_account", "_tx_limit", b"_tx_limit", "additional_flags", b"additional_flags", "tx_account", b"tx_account", "tx_limit", b"tx_limit"]) -> builtins.bool: ...
def ClearField(self, field_name: typing_extensions.Literal["_additional_flags", b"_additional_flags", "_tx_account", b"_tx_account", "_tx_limit", b"_tx_limit", "additional_flags", b"additional_flags", "contract_name", b"contract_name", "contract_path", b"contract_path", "detectors_to_exclude", b"detectors_to_exclude", "solc_bin", b"solc_bin", "tx_account", b"tx_account", "tx_limit", b"tx_limit"]) -> None: ...
@typing.overload
def WhichOneof(self, oneof_group: typing_extensions.Literal["_additional_flags",b"_additional_flags"]) -> typing.Optional[typing_extensions.Literal["additional_flags"]]: ...
def WhichOneof(self, oneof_group: typing_extensions.Literal["_additional_flags", b"_additional_flags"]) -> typing_extensions.Literal["additional_flags"] | None: ...
@typing.overload
def WhichOneof(self, oneof_group: typing_extensions.Literal["_tx_account",b"_tx_account"]) -> typing.Optional[typing_extensions.Literal["tx_account"]]: ...
def WhichOneof(self, oneof_group: typing_extensions.Literal["_tx_account", b"_tx_account"]) -> typing_extensions.Literal["tx_account"] | None: ...
@typing.overload
def WhichOneof(self, oneof_group: typing_extensions.Literal["_tx_limit",b"_tx_limit"]) -> typing.Optional[typing_extensions.Literal["tx_limit"]]: ...
def WhichOneof(self, oneof_group: typing_extensions.Literal["_tx_limit", b"_tx_limit"]) -> typing_extensions.Literal["tx_limit"] | None: ...
global___EVMArguments = EVMArguments
class ManticoreRunningStatus(google.protobuf.message.Message):
DESCRIPTOR: google.protobuf.descriptor.Descriptor
IS_RUNNING_FIELD_NUMBER: builtins.int
is_running: builtins.bool
def __init__(self,
def __init__(
self,
*,
is_running: builtins.bool = ...,
) -> None: ...
def ClearField(self, field_name: typing_extensions.Literal["is_running",b"is_running"]) -> None: ...
) -> None: ...
def ClearField(self, field_name: typing_extensions.Literal["is_running", b"is_running"]) -> None: ...
global___ManticoreRunningStatus = ManticoreRunningStatus
class StopServerRequest(google.protobuf.message.Message):
DESCRIPTOR: google.protobuf.descriptor.Descriptor
def __init__(self,
) -> None: ...
def __init__(
self,
) -> None: ...
global___StopServerRequest = StopServerRequest
class StopServerResponse(google.protobuf.message.Message):
DESCRIPTOR: google.protobuf.descriptor.Descriptor
def __init__(self,
) -> None: ...
def __init__(
self,
) -> None: ...
global___StopServerResponse = StopServerResponse
class ControlStateRequest(google.protobuf.message.Message):
DESCRIPTOR: google.protobuf.descriptor.Descriptor
class _StateAction:
ValueType = typing.NewType('ValueType', builtins.int)
ValueType = typing.NewType("ValueType", builtins.int)
V: typing_extensions.TypeAlias = ValueType
class _StateActionEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ControlStateRequest._StateAction.ValueType], builtins.type):
class _StateActionEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ControlStateRequest._StateAction.ValueType], builtins.type): # noqa: F821
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
RESUME: ControlStateRequest._StateAction.ValueType # 0
PAUSE: ControlStateRequest._StateAction.ValueType # 1
KILL: ControlStateRequest._StateAction.ValueType # 2
class StateAction(_StateAction, metaclass=_StateActionEnumTypeWrapper):
pass
class StateAction(_StateAction, metaclass=_StateActionEnumTypeWrapper): ...
RESUME: ControlStateRequest.StateAction.ValueType # 0
PAUSE: ControlStateRequest.StateAction.ValueType # 1
KILL: ControlStateRequest.StateAction.ValueType # 2
@@ -283,18 +324,23 @@ class ControlStateRequest(google.protobuf.message.Message):
@property
def manticore_instance(self) -> global___ManticoreInstance: ...
action: global___ControlStateRequest.StateAction.ValueType
def __init__(self,
def __init__(
self,
*,
state_id: builtins.int = ...,
manticore_instance: typing.Optional[global___ManticoreInstance] = ...,
manticore_instance: global___ManticoreInstance | None = ...,
action: global___ControlStateRequest.StateAction.ValueType = ...,
) -> None: ...
def HasField(self, field_name: typing_extensions.Literal["manticore_instance",b"manticore_instance"]) -> builtins.bool: ...
def ClearField(self, field_name: typing_extensions.Literal["action",b"action","manticore_instance",b"manticore_instance","state_id",b"state_id"]) -> None: ...
) -> None: ...
def HasField(self, field_name: typing_extensions.Literal["manticore_instance", b"manticore_instance"]) -> builtins.bool: ...
def ClearField(self, field_name: typing_extensions.Literal["action", b"action", "manticore_instance", b"manticore_instance", "state_id", b"state_id"]) -> None: ...
global___ControlStateRequest = ControlStateRequest
class ControlStateResponse(google.protobuf.message.Message):
DESCRIPTOR: google.protobuf.descriptor.Descriptor
def __init__(self,
) -> None: ...
def __init__(
self,
) -> None: ...
global___ControlStateResponse = ControlStateResponse
@@ -2,10 +2,10 @@
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
from muicore import MUICore_pb2 as muicore_dot_MUICore__pb2
from manticore_server import ManticoreServer_pb2 as manticore__server_dot_ManticoreServer__pb2
class ManticoreUIStub(object):
class ManticoreServerStub(object):
"""Missing associated documentation comment in .proto file."""
def __init__(self, channel):
@@ -15,48 +15,48 @@ class ManticoreUIStub(object):
channel: A grpc.Channel.
"""
self.StartNative = channel.unary_unary(
'/muicore.ManticoreUI/StartNative',
request_serializer=muicore_dot_MUICore__pb2.NativeArguments.SerializeToString,
response_deserializer=muicore_dot_MUICore__pb2.ManticoreInstance.FromString,
'/manticore_server.ManticoreServer/StartNative',
request_serializer=manticore__server_dot_ManticoreServer__pb2.NativeArguments.SerializeToString,
response_deserializer=manticore__server_dot_ManticoreServer__pb2.ManticoreInstance.FromString,
)
self.StartEVM = channel.unary_unary(
'/muicore.ManticoreUI/StartEVM',
request_serializer=muicore_dot_MUICore__pb2.EVMArguments.SerializeToString,
response_deserializer=muicore_dot_MUICore__pb2.ManticoreInstance.FromString,
'/manticore_server.ManticoreServer/StartEVM',
request_serializer=manticore__server_dot_ManticoreServer__pb2.EVMArguments.SerializeToString,
response_deserializer=manticore__server_dot_ManticoreServer__pb2.ManticoreInstance.FromString,
)
self.Terminate = channel.unary_unary(
'/muicore.ManticoreUI/Terminate',
request_serializer=muicore_dot_MUICore__pb2.ManticoreInstance.SerializeToString,
response_deserializer=muicore_dot_MUICore__pb2.TerminateResponse.FromString,
'/manticore_server.ManticoreServer/Terminate',
request_serializer=manticore__server_dot_ManticoreServer__pb2.ManticoreInstance.SerializeToString,
response_deserializer=manticore__server_dot_ManticoreServer__pb2.TerminateResponse.FromString,
)
self.GetStateList = channel.unary_unary(
'/muicore.ManticoreUI/GetStateList',
request_serializer=muicore_dot_MUICore__pb2.ManticoreInstance.SerializeToString,
response_deserializer=muicore_dot_MUICore__pb2.MUIStateList.FromString,
'/manticore_server.ManticoreServer/GetStateList',
request_serializer=manticore__server_dot_ManticoreServer__pb2.ManticoreInstance.SerializeToString,
response_deserializer=manticore__server_dot_ManticoreServer__pb2.ManticoreStateList.FromString,
)
self.GetMessageList = channel.unary_unary(
'/muicore.ManticoreUI/GetMessageList',
request_serializer=muicore_dot_MUICore__pb2.ManticoreInstance.SerializeToString,
response_deserializer=muicore_dot_MUICore__pb2.MUIMessageList.FromString,
'/manticore_server.ManticoreServer/GetMessageList',
request_serializer=manticore__server_dot_ManticoreServer__pb2.ManticoreInstance.SerializeToString,
response_deserializer=manticore__server_dot_ManticoreServer__pb2.ManticoreMessageList.FromString,
)
self.CheckManticoreRunning = channel.unary_unary(
'/muicore.ManticoreUI/CheckManticoreRunning',
request_serializer=muicore_dot_MUICore__pb2.ManticoreInstance.SerializeToString,
response_deserializer=muicore_dot_MUICore__pb2.ManticoreRunningStatus.FromString,
'/manticore_server.ManticoreServer/CheckManticoreRunning',
request_serializer=manticore__server_dot_ManticoreServer__pb2.ManticoreInstance.SerializeToString,
response_deserializer=manticore__server_dot_ManticoreServer__pb2.ManticoreRunningStatus.FromString,
)
self.StopServer = channel.unary_unary(
'/muicore.ManticoreUI/StopServer',
request_serializer=muicore_dot_MUICore__pb2.StopServerRequest.SerializeToString,
response_deserializer=muicore_dot_MUICore__pb2.StopServerResponse.FromString,
'/manticore_server.ManticoreServer/StopServer',
request_serializer=manticore__server_dot_ManticoreServer__pb2.StopServerRequest.SerializeToString,
response_deserializer=manticore__server_dot_ManticoreServer__pb2.StopServerResponse.FromString,
)
self.ControlState = channel.unary_unary(
'/muicore.ManticoreUI/ControlState',
request_serializer=muicore_dot_MUICore__pb2.ControlStateRequest.SerializeToString,
response_deserializer=muicore_dot_MUICore__pb2.ControlStateResponse.FromString,
'/manticore_server.ManticoreServer/ControlState',
request_serializer=manticore__server_dot_ManticoreServer__pb2.ControlStateRequest.SerializeToString,
response_deserializer=manticore__server_dot_ManticoreServer__pb2.ControlStateResponse.FromString,
)
class ManticoreUIServicer(object):
class ManticoreServerServicer(object):
"""Missing associated documentation comment in .proto file."""
def StartNative(self, request, context):
@@ -108,56 +108,56 @@ class ManticoreUIServicer(object):
raise NotImplementedError('Method not implemented!')
def add_ManticoreUIServicer_to_server(servicer, server):
def add_ManticoreServerServicer_to_server(servicer, server):
rpc_method_handlers = {
'StartNative': grpc.unary_unary_rpc_method_handler(
servicer.StartNative,
request_deserializer=muicore_dot_MUICore__pb2.NativeArguments.FromString,
response_serializer=muicore_dot_MUICore__pb2.ManticoreInstance.SerializeToString,
request_deserializer=manticore__server_dot_ManticoreServer__pb2.NativeArguments.FromString,
response_serializer=manticore__server_dot_ManticoreServer__pb2.ManticoreInstance.SerializeToString,
),
'StartEVM': grpc.unary_unary_rpc_method_handler(
servicer.StartEVM,
request_deserializer=muicore_dot_MUICore__pb2.EVMArguments.FromString,
response_serializer=muicore_dot_MUICore__pb2.ManticoreInstance.SerializeToString,
request_deserializer=manticore__server_dot_ManticoreServer__pb2.EVMArguments.FromString,
response_serializer=manticore__server_dot_ManticoreServer__pb2.ManticoreInstance.SerializeToString,
),
'Terminate': grpc.unary_unary_rpc_method_handler(
servicer.Terminate,
request_deserializer=muicore_dot_MUICore__pb2.ManticoreInstance.FromString,
response_serializer=muicore_dot_MUICore__pb2.TerminateResponse.SerializeToString,
request_deserializer=manticore__server_dot_ManticoreServer__pb2.ManticoreInstance.FromString,
response_serializer=manticore__server_dot_ManticoreServer__pb2.TerminateResponse.SerializeToString,
),
'GetStateList': grpc.unary_unary_rpc_method_handler(
servicer.GetStateList,
request_deserializer=muicore_dot_MUICore__pb2.ManticoreInstance.FromString,
response_serializer=muicore_dot_MUICore__pb2.MUIStateList.SerializeToString,
request_deserializer=manticore__server_dot_ManticoreServer__pb2.ManticoreInstance.FromString,
response_serializer=manticore__server_dot_ManticoreServer__pb2.ManticoreStateList.SerializeToString,
),
'GetMessageList': grpc.unary_unary_rpc_method_handler(
servicer.GetMessageList,
request_deserializer=muicore_dot_MUICore__pb2.ManticoreInstance.FromString,
response_serializer=muicore_dot_MUICore__pb2.MUIMessageList.SerializeToString,
request_deserializer=manticore__server_dot_ManticoreServer__pb2.ManticoreInstance.FromString,
response_serializer=manticore__server_dot_ManticoreServer__pb2.ManticoreMessageList.SerializeToString,
),
'CheckManticoreRunning': grpc.unary_unary_rpc_method_handler(
servicer.CheckManticoreRunning,
request_deserializer=muicore_dot_MUICore__pb2.ManticoreInstance.FromString,
response_serializer=muicore_dot_MUICore__pb2.ManticoreRunningStatus.SerializeToString,
request_deserializer=manticore__server_dot_ManticoreServer__pb2.ManticoreInstance.FromString,
response_serializer=manticore__server_dot_ManticoreServer__pb2.ManticoreRunningStatus.SerializeToString,
),
'StopServer': grpc.unary_unary_rpc_method_handler(
servicer.StopServer,
request_deserializer=muicore_dot_MUICore__pb2.StopServerRequest.FromString,
response_serializer=muicore_dot_MUICore__pb2.StopServerResponse.SerializeToString,
request_deserializer=manticore__server_dot_ManticoreServer__pb2.StopServerRequest.FromString,
response_serializer=manticore__server_dot_ManticoreServer__pb2.StopServerResponse.SerializeToString,
),
'ControlState': grpc.unary_unary_rpc_method_handler(
servicer.ControlState,
request_deserializer=muicore_dot_MUICore__pb2.ControlStateRequest.FromString,
response_serializer=muicore_dot_MUICore__pb2.ControlStateResponse.SerializeToString,
request_deserializer=manticore__server_dot_ManticoreServer__pb2.ControlStateRequest.FromString,
response_serializer=manticore__server_dot_ManticoreServer__pb2.ControlStateResponse.SerializeToString,
),
}
generic_handler = grpc.method_handlers_generic_handler(
'muicore.ManticoreUI', rpc_method_handlers)
'manticore_server.ManticoreServer', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
# This class is part of an EXPERIMENTAL API.
class ManticoreUI(object):
class ManticoreServer(object):
"""Missing associated documentation comment in .proto file."""
@staticmethod
@@ -171,9 +171,9 @@ class ManticoreUI(object):
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/muicore.ManticoreUI/StartNative',
muicore_dot_MUICore__pb2.NativeArguments.SerializeToString,
muicore_dot_MUICore__pb2.ManticoreInstance.FromString,
return grpc.experimental.unary_unary(request, target, '/manticore_server.ManticoreServer/StartNative',
manticore__server_dot_ManticoreServer__pb2.NativeArguments.SerializeToString,
manticore__server_dot_ManticoreServer__pb2.ManticoreInstance.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -188,9 +188,9 @@ class ManticoreUI(object):
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/muicore.ManticoreUI/StartEVM',
muicore_dot_MUICore__pb2.EVMArguments.SerializeToString,
muicore_dot_MUICore__pb2.ManticoreInstance.FromString,
return grpc.experimental.unary_unary(request, target, '/manticore_server.ManticoreServer/StartEVM',
manticore__server_dot_ManticoreServer__pb2.EVMArguments.SerializeToString,
manticore__server_dot_ManticoreServer__pb2.ManticoreInstance.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -205,9 +205,9 @@ class ManticoreUI(object):
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/muicore.ManticoreUI/Terminate',
muicore_dot_MUICore__pb2.ManticoreInstance.SerializeToString,
muicore_dot_MUICore__pb2.TerminateResponse.FromString,
return grpc.experimental.unary_unary(request, target, '/manticore_server.ManticoreServer/Terminate',
manticore__server_dot_ManticoreServer__pb2.ManticoreInstance.SerializeToString,
manticore__server_dot_ManticoreServer__pb2.TerminateResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -222,9 +222,9 @@ class ManticoreUI(object):
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/muicore.ManticoreUI/GetStateList',
muicore_dot_MUICore__pb2.ManticoreInstance.SerializeToString,
muicore_dot_MUICore__pb2.MUIStateList.FromString,
return grpc.experimental.unary_unary(request, target, '/manticore_server.ManticoreServer/GetStateList',
manticore__server_dot_ManticoreServer__pb2.ManticoreInstance.SerializeToString,
manticore__server_dot_ManticoreServer__pb2.ManticoreStateList.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -239,9 +239,9 @@ class ManticoreUI(object):
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/muicore.ManticoreUI/GetMessageList',
muicore_dot_MUICore__pb2.ManticoreInstance.SerializeToString,
muicore_dot_MUICore__pb2.MUIMessageList.FromString,
return grpc.experimental.unary_unary(request, target, '/manticore_server.ManticoreServer/GetMessageList',
manticore__server_dot_ManticoreServer__pb2.ManticoreInstance.SerializeToString,
manticore__server_dot_ManticoreServer__pb2.ManticoreMessageList.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -256,9 +256,9 @@ class ManticoreUI(object):
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/muicore.ManticoreUI/CheckManticoreRunning',
muicore_dot_MUICore__pb2.ManticoreInstance.SerializeToString,
muicore_dot_MUICore__pb2.ManticoreRunningStatus.FromString,
return grpc.experimental.unary_unary(request, target, '/manticore_server.ManticoreServer/CheckManticoreRunning',
manticore__server_dot_ManticoreServer__pb2.ManticoreInstance.SerializeToString,
manticore__server_dot_ManticoreServer__pb2.ManticoreRunningStatus.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -273,9 +273,9 @@ class ManticoreUI(object):
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/muicore.ManticoreUI/StopServer',
muicore_dot_MUICore__pb2.StopServerRequest.SerializeToString,
muicore_dot_MUICore__pb2.StopServerResponse.FromString,
return grpc.experimental.unary_unary(request, target, '/manticore_server.ManticoreServer/StopServer',
manticore__server_dot_ManticoreServer__pb2.StopServerRequest.SerializeToString,
manticore__server_dot_ManticoreServer__pb2.StopServerResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -290,8 +290,8 @@ class ManticoreUI(object):
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/muicore.ManticoreUI/ControlState',
muicore_dot_MUICore__pb2.ControlStateRequest.SerializeToString,
muicore_dot_MUICore__pb2.ControlStateResponse.FromString,
return grpc.experimental.unary_unary(request, target, '/manticore_server.ManticoreServer/ControlState',
manticore__server_dot_ManticoreServer__pb2.ControlStateRequest.SerializeToString,
manticore__server_dot_ManticoreServer__pb2.ControlStateResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+1
View File
@@ -0,0 +1 @@
from . import manticore_server
@@ -5,13 +5,12 @@ from manticore.core.state import StateBase
from manticore.utils.enums import StateLists
# from https://github.com/trailofbits/ManticoreUI/blob/master/mui/introspect_plugin.py
class MUIIntrospectionPlugin(IntrospectionAPIPlugin):
NAME = "MUIIntrospectionPlugin"
class ManticoreServerIntrospectionPlugin(IntrospectionAPIPlugin):
NAME = "ManticoreServerIntrospectionPlugin"
@property
def name(self) -> str:
return "MUIIntrospectionPlugin"
return "ManticoreServerIntrospectionPlugin"
def create_state(self, state_id: int):
"""Override create_state to force a state update right after creation.
@@ -28,9 +28,12 @@ from manticore.utils.helpers import deque
from manticore.utils.log import CallbackStream, ManticoreContextFilter
from .evm_utils import setup_detectors_flags
from .introspect_plugin import MUIIntrospectionPlugin
from .MUICore_pb2 import *
from .MUICore_pb2_grpc import ManticoreUIServicer, add_ManticoreUIServicer_to_server
from .introspect_plugin import ManticoreServerIntrospectionPlugin
from .ManticoreServer_pb2 import *
from .ManticoreServer_pb2_grpc import (
ManticoreServerServicer,
add_ManticoreServerServicer_to_server,
)
from .native_plugin import UnicornEmulatePlugin
from .native_utils import parse_native_arguments
@@ -80,7 +83,7 @@ class ManticoreWrapper:
q.put(msg)
class MUIServicer(ManticoreUIServicer):
class ManticoreServicer(ManticoreServerServicer):
"""Provides functionality for the methods set out in the protobuf spec"""
def __init__(self, stop_event: Event):
@@ -157,7 +160,7 @@ class MUIServicer(ManticoreUIServicer):
if not native_arguments.stdin_size
else int(native_arguments.stdin_size),
workspace_url=parsed.workspace,
introspection_plugin_type=MUIIntrospectionPlugin,
introspection_plugin_type=ManticoreServerIntrospectionPlugin,
)
except Exception as e:
print(e)
@@ -343,9 +346,8 @@ class MUIServicer(ManticoreUIServicer):
def GetStateList(
self, mcore_instance: ManticoreInstance, context: _Context
) -> MUIStateList:
"""Returns full list of states for given ManticoreInstance.
Currently, implementation is based on MUI's Binary Ninja plugin."""
) -> ManticoreStateList:
"""Returns full list of states for given ManticoreInstance."""
active_states = []
waiting_states = []
paused_states = []
@@ -356,7 +358,7 @@ class MUIServicer(ManticoreUIServicer):
if mcore_instance.uuid not in self.manticore_instances:
context.set_code(grpc.StatusCode.FAILED_PRECONDITION)
context.set_details("Specified Manticore instance not found!")
return MUIStateList()
return ManticoreStateList()
mcore_wrapper = self.manticore_instances[mcore_instance.uuid]
states = (
@@ -379,7 +381,7 @@ class MUIServicer(ManticoreUIServicer):
state_args["children_ids"] = list(state_desc.children)
s = MUIState(**state_args)
s = ManticoreState(**state_args)
if state_desc.status == StateStatus.running:
active_states.append(s)
@@ -400,7 +402,7 @@ class MUIServicer(ManticoreUIServicer):
else:
raise ValueError(f"Unknown status {state_desc.status}")
return MUIStateList(
return ManticoreStateList(
active_states=active_states,
waiting_states=waiting_states,
paused_states=paused_states,
@@ -411,22 +413,22 @@ class MUIServicer(ManticoreUIServicer):
def GetMessageList(
self, mcore_instance: ManticoreInstance, context: _Context
) -> MUIMessageList:
) -> ManticoreMessageList:
"""Returns any new log messages for given ManticoreInstance since the previous call.
Currently, implementation is based on TUI."""
if mcore_instance.uuid not in self.manticore_instances:
context.set_code(grpc.StatusCode.FAILED_PRECONDITION)
context.set_details("Specified Manticore instance not found!")
return MUIMessageList()
return ManticoreMessageList()
q = self.manticore_instances[mcore_instance.uuid].log_queue
i = 0
messages = []
while not q.empty():
msg = MUILogMessage(content=q.get())
msg = ManticoreLogMessage(content=q.get())
messages.append(msg)
i += 1
return MUIMessageList(messages=messages)
return ManticoreMessageList(messages=messages)
def CheckManticoreRunning(
self, mcore_instance: ManticoreInstance, context: _Context
@@ -536,7 +538,7 @@ class MUIServicer(ManticoreUIServicer):
def main():
stop_event = Event()
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
add_ManticoreUIServicer_to_server(MUIServicer(stop_event), server)
add_ManticoreServerServicer_to_server(ManticoreServicer(stop_event), server)
server.add_insecure_port("[::]:50010")
server.start()
stop_event.wait()
-173
View File
@@ -1,173 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: muicore/MUICore.proto
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15muicore/MUICore.proto\x12\x07muicore\" \n\rMUILogMessage\x12\x0f\n\x07\x63ontent\x18\x01 \x01(\t\":\n\x0eMUIMessageList\x12(\n\x08messages\x18\x02 \x03(\x0b\x32\x16.muicore.MUILogMessage\"d\n\x08MUIState\x12\x10\n\x08state_id\x18\x03 \x01(\x05\x12\n\n\x02pc\x18\n \x01(\x04\x12\x16\n\tparent_id\x18\x1c \x01(\x05H\x00\x88\x01\x01\x12\x14\n\x0c\x63hildren_ids\x18\x1d \x03(\x05\x42\x0c\n\n_parent_id\"\x8e\x02\n\x0cMUIStateList\x12(\n\ractive_states\x18\x04 \x03(\x0b\x32\x11.muicore.MUIState\x12)\n\x0ewaiting_states\x18\x05 \x03(\x0b\x32\x11.muicore.MUIState\x12(\n\rforked_states\x18\x06 \x03(\x0b\x32\x11.muicore.MUIState\x12)\n\x0e\x65rrored_states\x18\x07 \x03(\x0b\x32\x11.muicore.MUIState\x12*\n\x0f\x63omplete_states\x18\x08 \x03(\x0b\x32\x11.muicore.MUIState\x12(\n\rpaused_states\x18! \x03(\x0b\x32\x11.muicore.MUIState\"!\n\x11ManticoreInstance\x12\x0c\n\x04uuid\x18\t \x01(\t\"\x13\n\x11TerminateResponse\"\xad\x01\n\x04Hook\x12\x14\n\x07\x61\x64\x64ress\x18\x1a \x01(\x04H\x00\x88\x01\x01\x12$\n\x04type\x18\x1b \x01(\x0e\x32\x16.muicore.Hook.HookType\x12\x16\n\tfunc_text\x18\x1f \x01(\tH\x01\x88\x01\x01\"7\n\x08HookType\x12\x08\n\x04\x46IND\x10\x00\x12\t\n\x05\x41VOID\x10\x01\x12\n\n\x06\x43USTOM\x10\x02\x12\n\n\x06GLOBAL\x10\x03\x42\n\n\x08_addressB\x0c\n\n_func_text\"\xc4\x02\n\x0fNativeArguments\x12\x14\n\x0cprogram_path\x18\x0b \x01(\t\x12\x13\n\x0b\x62inary_args\x18\x10 \x03(\t\x12\x0c\n\x04\x65nvp\x18\x11 \x03(\t\x12\x16\n\x0esymbolic_files\x18\x12 \x03(\t\x12\x1b\n\x0e\x63oncrete_start\x18\x13 \x01(\tH\x00\x88\x01\x01\x12\x17\n\nstdin_size\x18\x14 \x01(\tH\x01\x88\x01\x01\x12\"\n\x15\x61\x64\x64itional_mcore_args\x18\x15 \x01(\tH\x02\x88\x01\x01\x12\x1c\n\x05hooks\x18\x1e \x03(\x0b\x32\r.muicore.Hook\x12\x1a\n\remulate_until\x18 \x01(\x04H\x03\x88\x01\x01\x42\x11\n\x0f_concrete_startB\r\n\x0b_stdin_sizeB\x18\n\x16_additional_mcore_argsB\x10\n\x0e_emulate_until\"\xec\x01\n\x0c\x45VMArguments\x12\x15\n\rcontract_path\x18\x0c \x01(\t\x12\x15\n\rcontract_name\x18\r \x01(\t\x12\x10\n\x08solc_bin\x18\x0e \x01(\t\x12\x15\n\x08tx_limit\x18\x16 \x01(\tH\x00\x88\x01\x01\x12\x17\n\ntx_account\x18\x17 \x01(\tH\x01\x88\x01\x01\x12\x1c\n\x14\x64\x65tectors_to_exclude\x18\x18 \x03(\t\x12\x1d\n\x10\x61\x64\x64itional_flags\x18\x19 \x01(\tH\x02\x88\x01\x01\x42\x0b\n\t_tx_limitB\r\n\x0b_tx_accountB\x13\n\x11_additional_flags\",\n\x16ManticoreRunningStatus\x12\x12\n\nis_running\x18\x0f \x01(\x08\"\x13\n\x11StopServerRequest\"\x14\n\x12StopServerResponse\"\xc9\x01\n\x13\x43ontrolStateRequest\x12\x10\n\x08state_id\x18\" \x01(\x05\x12\x36\n\x12manticore_instance\x18# \x01(\x0b\x32\x1a.muicore.ManticoreInstance\x12\x38\n\x06\x61\x63tion\x18$ \x01(\x0e\x32(.muicore.ControlStateRequest.StateAction\".\n\x0bStateAction\x12\n\n\x06RESUME\x10\x00\x12\t\n\x05PAUSE\x10\x01\x12\x08\n\x04KILL\x10\x02\"\x16\n\x14\x43ontrolStateResponse2\xda\x04\n\x0bManticoreUI\x12\x45\n\x0bStartNative\x12\x18.muicore.NativeArguments\x1a\x1a.muicore.ManticoreInstance\"\x00\x12?\n\x08StartEVM\x12\x15.muicore.EVMArguments\x1a\x1a.muicore.ManticoreInstance\"\x00\x12\x45\n\tTerminate\x12\x1a.muicore.ManticoreInstance\x1a\x1a.muicore.TerminateResponse\"\x00\x12\x43\n\x0cGetStateList\x12\x1a.muicore.ManticoreInstance\x1a\x15.muicore.MUIStateList\"\x00\x12G\n\x0eGetMessageList\x12\x1a.muicore.ManticoreInstance\x1a\x17.muicore.MUIMessageList\"\x00\x12V\n\x15\x43heckManticoreRunning\x12\x1a.muicore.ManticoreInstance\x1a\x1f.muicore.ManticoreRunningStatus\"\x00\x12G\n\nStopServer\x12\x1a.muicore.StopServerRequest\x1a\x1b.muicore.StopServerResponse\"\x00\x12M\n\x0c\x43ontrolState\x12\x1c.muicore.ControlStateRequest\x1a\x1d.muicore.ControlStateResponse\"\x00\x62\x06proto3')
_MUILOGMESSAGE = DESCRIPTOR.message_types_by_name['MUILogMessage']
_MUIMESSAGELIST = DESCRIPTOR.message_types_by_name['MUIMessageList']
_MUISTATE = DESCRIPTOR.message_types_by_name['MUIState']
_MUISTATELIST = DESCRIPTOR.message_types_by_name['MUIStateList']
_MANTICOREINSTANCE = DESCRIPTOR.message_types_by_name['ManticoreInstance']
_TERMINATERESPONSE = DESCRIPTOR.message_types_by_name['TerminateResponse']
_HOOK = DESCRIPTOR.message_types_by_name['Hook']
_NATIVEARGUMENTS = DESCRIPTOR.message_types_by_name['NativeArguments']
_EVMARGUMENTS = DESCRIPTOR.message_types_by_name['EVMArguments']
_MANTICORERUNNINGSTATUS = DESCRIPTOR.message_types_by_name['ManticoreRunningStatus']
_STOPSERVERREQUEST = DESCRIPTOR.message_types_by_name['StopServerRequest']
_STOPSERVERRESPONSE = DESCRIPTOR.message_types_by_name['StopServerResponse']
_CONTROLSTATEREQUEST = DESCRIPTOR.message_types_by_name['ControlStateRequest']
_CONTROLSTATERESPONSE = DESCRIPTOR.message_types_by_name['ControlStateResponse']
_HOOK_HOOKTYPE = _HOOK.enum_types_by_name['HookType']
_CONTROLSTATEREQUEST_STATEACTION = _CONTROLSTATEREQUEST.enum_types_by_name['StateAction']
MUILogMessage = _reflection.GeneratedProtocolMessageType('MUILogMessage', (_message.Message,), {
'DESCRIPTOR' : _MUILOGMESSAGE,
'__module__' : 'muicore.MUICore_pb2'
# @@protoc_insertion_point(class_scope:muicore.MUILogMessage)
})
_sym_db.RegisterMessage(MUILogMessage)
MUIMessageList = _reflection.GeneratedProtocolMessageType('MUIMessageList', (_message.Message,), {
'DESCRIPTOR' : _MUIMESSAGELIST,
'__module__' : 'muicore.MUICore_pb2'
# @@protoc_insertion_point(class_scope:muicore.MUIMessageList)
})
_sym_db.RegisterMessage(MUIMessageList)
MUIState = _reflection.GeneratedProtocolMessageType('MUIState', (_message.Message,), {
'DESCRIPTOR' : _MUISTATE,
'__module__' : 'muicore.MUICore_pb2'
# @@protoc_insertion_point(class_scope:muicore.MUIState)
})
_sym_db.RegisterMessage(MUIState)
MUIStateList = _reflection.GeneratedProtocolMessageType('MUIStateList', (_message.Message,), {
'DESCRIPTOR' : _MUISTATELIST,
'__module__' : 'muicore.MUICore_pb2'
# @@protoc_insertion_point(class_scope:muicore.MUIStateList)
})
_sym_db.RegisterMessage(MUIStateList)
ManticoreInstance = _reflection.GeneratedProtocolMessageType('ManticoreInstance', (_message.Message,), {
'DESCRIPTOR' : _MANTICOREINSTANCE,
'__module__' : 'muicore.MUICore_pb2'
# @@protoc_insertion_point(class_scope:muicore.ManticoreInstance)
})
_sym_db.RegisterMessage(ManticoreInstance)
TerminateResponse = _reflection.GeneratedProtocolMessageType('TerminateResponse', (_message.Message,), {
'DESCRIPTOR' : _TERMINATERESPONSE,
'__module__' : 'muicore.MUICore_pb2'
# @@protoc_insertion_point(class_scope:muicore.TerminateResponse)
})
_sym_db.RegisterMessage(TerminateResponse)
Hook = _reflection.GeneratedProtocolMessageType('Hook', (_message.Message,), {
'DESCRIPTOR' : _HOOK,
'__module__' : 'muicore.MUICore_pb2'
# @@protoc_insertion_point(class_scope:muicore.Hook)
})
_sym_db.RegisterMessage(Hook)
NativeArguments = _reflection.GeneratedProtocolMessageType('NativeArguments', (_message.Message,), {
'DESCRIPTOR' : _NATIVEARGUMENTS,
'__module__' : 'muicore.MUICore_pb2'
# @@protoc_insertion_point(class_scope:muicore.NativeArguments)
})
_sym_db.RegisterMessage(NativeArguments)
EVMArguments = _reflection.GeneratedProtocolMessageType('EVMArguments', (_message.Message,), {
'DESCRIPTOR' : _EVMARGUMENTS,
'__module__' : 'muicore.MUICore_pb2'
# @@protoc_insertion_point(class_scope:muicore.EVMArguments)
})
_sym_db.RegisterMessage(EVMArguments)
ManticoreRunningStatus = _reflection.GeneratedProtocolMessageType('ManticoreRunningStatus', (_message.Message,), {
'DESCRIPTOR' : _MANTICORERUNNINGSTATUS,
'__module__' : 'muicore.MUICore_pb2'
# @@protoc_insertion_point(class_scope:muicore.ManticoreRunningStatus)
})
_sym_db.RegisterMessage(ManticoreRunningStatus)
StopServerRequest = _reflection.GeneratedProtocolMessageType('StopServerRequest', (_message.Message,), {
'DESCRIPTOR' : _STOPSERVERREQUEST,
'__module__' : 'muicore.MUICore_pb2'
# @@protoc_insertion_point(class_scope:muicore.StopServerRequest)
})
_sym_db.RegisterMessage(StopServerRequest)
StopServerResponse = _reflection.GeneratedProtocolMessageType('StopServerResponse', (_message.Message,), {
'DESCRIPTOR' : _STOPSERVERRESPONSE,
'__module__' : 'muicore.MUICore_pb2'
# @@protoc_insertion_point(class_scope:muicore.StopServerResponse)
})
_sym_db.RegisterMessage(StopServerResponse)
ControlStateRequest = _reflection.GeneratedProtocolMessageType('ControlStateRequest', (_message.Message,), {
'DESCRIPTOR' : _CONTROLSTATEREQUEST,
'__module__' : 'muicore.MUICore_pb2'
# @@protoc_insertion_point(class_scope:muicore.ControlStateRequest)
})
_sym_db.RegisterMessage(ControlStateRequest)
ControlStateResponse = _reflection.GeneratedProtocolMessageType('ControlStateResponse', (_message.Message,), {
'DESCRIPTOR' : _CONTROLSTATERESPONSE,
'__module__' : 'muicore.MUICore_pb2'
# @@protoc_insertion_point(class_scope:muicore.ControlStateResponse)
})
_sym_db.RegisterMessage(ControlStateResponse)
_MANTICOREUI = DESCRIPTOR.services_by_name['ManticoreUI']
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
_MUILOGMESSAGE._serialized_start=34
_MUILOGMESSAGE._serialized_end=66
_MUIMESSAGELIST._serialized_start=68
_MUIMESSAGELIST._serialized_end=126
_MUISTATE._serialized_start=128
_MUISTATE._serialized_end=228
_MUISTATELIST._serialized_start=231
_MUISTATELIST._serialized_end=501
_MANTICOREINSTANCE._serialized_start=503
_MANTICOREINSTANCE._serialized_end=536
_TERMINATERESPONSE._serialized_start=538
_TERMINATERESPONSE._serialized_end=557
_HOOK._serialized_start=560
_HOOK._serialized_end=733
_HOOK_HOOKTYPE._serialized_start=652
_HOOK_HOOKTYPE._serialized_end=707
_NATIVEARGUMENTS._serialized_start=736
_NATIVEARGUMENTS._serialized_end=1060
_EVMARGUMENTS._serialized_start=1063
_EVMARGUMENTS._serialized_end=1299
_MANTICORERUNNINGSTATUS._serialized_start=1301
_MANTICORERUNNINGSTATUS._serialized_end=1345
_STOPSERVERREQUEST._serialized_start=1347
_STOPSERVERREQUEST._serialized_end=1366
_STOPSERVERRESPONSE._serialized_start=1368
_STOPSERVERRESPONSE._serialized_end=1388
_CONTROLSTATEREQUEST._serialized_start=1391
_CONTROLSTATEREQUEST._serialized_end=1592
_CONTROLSTATEREQUEST_STATEACTION._serialized_start=1546
_CONTROLSTATEREQUEST_STATEACTION._serialized_end=1592
_CONTROLSTATERESPONSE._serialized_start=1594
_CONTROLSTATERESPONSE._serialized_end=1616
_MANTICOREUI._serialized_start=1619
_MANTICOREUI._serialized_end=2221
# @@protoc_insertion_point(module_scope)
-1
View File
@@ -1 +0,0 @@
from . import mui_server
+5 -5
View File
@@ -1,5 +1,5 @@
[tool.mypy]
files = ["muicore", "tests"]
files = ["manticore_server", "tests"]
ignore_missing_imports = true
warn_redundant_casts = true
warn_unused_ignores = true
@@ -7,13 +7,13 @@ warn_unreachable = true
[tool.isort]
profile = "black"
skip = ["venv", "muicore/MUICore_pb2.py", "muicore/MUICore_pb2_grpc.py"]
skip = ["venv", "manticore_server/ManticoreServer_pb2.py", "manticore_server/ManticoreServer_pb2_grpc.py"]
[tool.black]
line-length = 88
extend-exclude = '''
MUICore_pb2_grpc\.py
| MUICore_pb2\.py
| MUICore_pb2\.pyi
ManticoreServer_pb2_grpc\.py
| ManticoreServer_pb2\.py
| ManticoreServer_pb2\.pyi
| venv
'''
+4 -6
View File
@@ -4,9 +4,7 @@ from setuptools import Command, find_packages, setup
class GenerateCommand(Command):
description = (
"generates muicore server protobuf + grpc code from protobuf specification file"
)
description = "generates manticore_server server protobuf + grpc code from protobuf specification file"
user_options = []
def initialize_options(self):
@@ -25,13 +23,13 @@ class GenerateCommand(Command):
"--python_out=.",
"--grpc_python_out=.",
"--mypy_out=.",
"./muicore/MUICore.proto",
"./manticore_server/ManticoreServer.proto",
]
)
setup(
name="muicore",
name="manticore_server",
version="0.0.1",
packages=find_packages(exclude=["tests", "tests.*"]),
python_requires=">=3.7",
@@ -55,7 +53,7 @@ setup(
},
entry_points={
"console_scripts": [
"muicore=muicore.mui_server:main",
"manticore_server=manticore_server.manticore_server:main",
],
"distutils.commands": ["generate = GenerateCommand"],
},
+4 -4
View File
@@ -11,17 +11,17 @@ from uuid import UUID, uuid4
import grpc
from muicore import mui_server
from muicore.MUICore_pb2 import *
from manticore_server import manticore_server
from manticore_server.ManticoreServer_pb2 import *
from tests.mock_classes import MockContext
class MUICoreEVMTest(unittest.TestCase):
class ManticoreServerEVMTest(unittest.TestCase):
def setUp(self):
self.dirname = str(Path(getframeinfo(currentframe()).filename).resolve().parent)
self.contract_path = str(self.dirname / Path("contracts") / Path("adder.sol"))
self.test_event = threading.Event()
self.servicer = mui_server.MUIServicer(self.test_event)
self.servicer = manticore_server.ManticoreServicer(self.test_event)
self.solc_path = str(self.dirname / Path("solc"))
self.context = MockContext()
+4 -4
View File
@@ -9,19 +9,19 @@ from uuid import UUID, uuid4
import grpc
from muicore import mui_server
from muicore.MUICore_pb2 import *
from manticore_server import manticore_server
from manticore_server.ManticoreServer_pb2 import *
from tests.mock_classes import MockContext
class MUICoreNativeTest(unittest.TestCase):
class ManticoreServerCoreNativeTest(unittest.TestCase):
def setUp(self):
self.dirname = str(Path(getframeinfo(currentframe()).filename).resolve().parent)
self.binary_path = str(
self.dirname / Path("binaries") / Path("arguments_linux_amd64")
)
self.test_event = threading.Event()
self.servicer = mui_server.MUIServicer(self.test_event)
self.servicer = manticore_server.ManticoreServicer(self.test_event)
self.context = MockContext()
def tearDown(self):