-
Notifications
You must be signed in to change notification settings - Fork 765
RPC API
Arachni uses its own RPC implementation, provided by Arachni-RPC (design specification).
The protocol is as simple as possible, utilizing OpenSSL sockets and very simple messages to facilitate communication.
The Arachni Framework provides its own serializer to the Arachni-RPC library. It is essence using MessagePack with the addition of Zlib compression when messages reach a certain size.
(To keep these examples short and sweet, I will be using the framework's own clients. For a no dependency, bare-bones, reference implementation of a client please see Arachni-RPC Pure.)
The RPC API of the Instances is well documented and contains all the info you'll need.
The only clarification required is about obtaining an Instance, by following these 3 simple steps:
First of all, we need to run a Dispatcher:
$ arachni_rpcd
Arachni - Web Application Security Scanner Framework v1.1
Author: Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
(With the support of the community and the Arachni Team.)
Website: http://arachni-scanner.com
Documentation: http://arachni-scanner.com/wiki
I, [2014-08-03T19:28:31.867294 #48953] INFO -- System: RPC Server started.
I, [2014-08-03T19:28:31.867399 #48953] INFO -- System: Listening on 127.0.0.1:7331
This is what happens when no options have been set; the default port is 7331
.
require 'arachni'
require 'arachni/rpc/client'
# Pay no attention to this, it just starts the system that manages network
# connections in the background
Arachni::Reactor.global.run_in_thread
dispatcher = Arachni::RPC::Client::Dispatcher.new(
Arachni::Options.instance,
'localhost:7331'
)
# Request for an instance to be dispatched.
ap instance_info = dispatcher.dispatch
# {
# "token" => "3edd7d8e9e4c717d364854e149ecd43c",
# "pid" => 48956,
# "port" => 24725,
# "url" => "127.0.0.1:24725",
# "owner" => "unknown",
# "birthdate" => "2014-08-03 19:28:31 +0300",
# "starttime" => "2014-08-03 19:50:48 +0300",
# "helpers" => {}
# }
instance = Arachni::RPC::Client::Instance.new(
Arachni::Options.instance,
instance_info['url'],
instance_info['token']
)
ap instance.service.alive?
# => true
In order to successfully authenticate yourself to the instance don't forget to include the authentication token.
Pages [all]
Can't find what you're looking for? Why not have a look at the support portal?