Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Armory and extensions #27

Open
daddycocoaman opened this issue Nov 1, 2022 · 3 comments
Open

Armory and extensions #27

daddycocoaman opened this issue Nov 1, 2022 · 3 comments
Assignees

Comments

@daddycocoaman
Copy link
Collaborator

Before handling #21, it makes sense to implement an Armory client so users can get the extensions or aliases they want to register or call. The armory isn't exposed via gRPC so a separate async client is needed to get the data.

@daddycocoaman daddycocoaman self-assigned this Nov 1, 2022
@666Danger-sudo
Copy link

Isn't there any way to execute commands on the beacon without passing by the wrapper functions?
For example:

beacons = await client.beacons()
interact = await client.interact_beacon(beacons[0].ID)
task = interact.console_execute([COMMAND TO EXECUTE ON CONSOLE] //not existing fuction

This library has unfortunately a lot of limitations. @moloch-- , can we implement this future so it will be more easier than writing wrappers around extensions that can change overtime? It can also be easier for maintaining the code up to date to the newest version of sliver so you don't have to implement command wrappers.

@daddycocoaman
Copy link
Collaborator Author

@666Danger-sudo Since communications with Sliver is over gRPC via protobuf, everything is eventually going to be some wrapper function.

Fortunately, the code generation for the gRPC functions has gotten a little easier to deal with. But the reality is that whenever Sliver gets changes to the .proto files, the underlying code here needs to be regenerated and the wrapper functions will need to pass the written tests. But with your example, interact.execute() does exist.

If you mean this in terms of the Armory, the reason for a separate client is because Sliver does not use gRPC to handle Armory commands. So, in order for SliverPy to know what extensions exist, and for users to be able to download extensions, it has to be written separately.

@666Danger-sudo
Copy link

I was trying .execute(), can you tell me whats the issue here?
for beacon in beacons:
beacon = sliver.InteractiveBeacon(beacon, CLIENT._channel)
task = await beacon.execute("ls","")
while True:
if task.done():
print(await task.result())
break
My computer goes in an infinite loop and never stops even the beacon checks in. Another thing is that this will probably be ok for execute os commands on the beacon directly, but will it work if I try to execute extensions?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants