Panoptes 1.0.0
Endpoint Detection and Response
Loading...
Searching...
No Matches
service_client.cpp
Go to the documentation of this file.
1#include "container_ipc.hpp"
2
3#include <grpcpp/grpcpp.h>
4#include "panoptes.grpc.pb.h"
5
6using grpc::Channel;
7using grpc::ClientContext;
8using grpc::Status;
9
10std::unique_ptr<PanoptesService::Stub> stub_;
11
16 std::string server_url = "localhost:" + std::to_string(SERVICE_PORT);
17 std::shared_ptr<grpc::Channel> channel = grpc::CreateChannel(server_url, grpc::InsecureChannelCredentials());
18 stub_ = PanoptesService::NewStub(channel);
19}
20
25bool PanoptesServiceClient::Hello(ExtensibilityType extensibilityType, std::string port) {
26 AckMessage reply;
27 ContainerInfo request;
28 ClientContext g_context;
29
30 int grpc_port = std::stoi(port);
31 request.set_container_type((ContainerType)extensibilityType);
32 request.set_grpc_port(grpc_port);
33
34 Status status = stub_->Hello(&g_context, request, &reply);
35
36 if (!status.ok()) {
37 std::cout << status.error_code() << ": " << status.error_message() << std::endl;
38 return !reply.ack_type();
39 }
40
41 return !reply.ack_type();
42}
43
44//bool PanoptesServiceClient::SendResults_Yara(std::string PePath, std::string FileHash, DWORD ProcessId, std::string YaraRulesPath, INT MatchRules, std::vector<std::string> DetectedRules) {
45// ClientContext context;
46// AckMessage reply;
47// ContainerReply request;
48//
49// ScanYara results;
50// results.set_portable_executable_path(PePath);
51// results.set_file_hash(FileHash);
52// results.set_process_id(ProcessId);
53// results.set_rules_path(YaraRulesPath);
54// results.set_detected_rule_count(MatchRules);
55//
56// for (int i = 0; i < DetectedRules.size(); i++) {
57// std::string detectionRuleName = DetectedRules[i];
58// results.add_detected_rules(detectionRuleName);
59// }
60//
61// request.mutable_yara_scan()->CopyFrom(results);
62//
63// Status status = stub_->ScanResults(&context, request, &reply);
64//
65// if (!status.ok()) {
66// std::cout << status.error_code() << ": " << status.error_message() << std::endl;
67// }
68//
69// return reply.ack_type();
70//}
71//
72//bool PanoptesServiceClient::SendResults_PE(std::string PePath, bool IsPeSigned, std::string PeSignerSubject, std::vector<std::string> PeImports) {
73// AckMessage reply;
74// ContainerReply request;
75// ClientContext g_context;
76//
77// ScanPE results;
78// results.set_portable_executable_path(PePath);
79// results.set_file_hash(PePath);
80// results.set_signed_(IsPeSigned);
81// results.set_signer(PeSignerSubject);
82// for (int i = 0; i < PeImports.size(); i++) {
83// results.add_imports(PeImports[i]);
84// }
85// request.mutable_pe_scan()->CopyFrom(results);
86//
87// Status status = stub_->ScanResults(&g_context, request, &reply);
88//
89// if (!status.ok()) {
90// std::cout << status.error_code() << ": " << status.error_message() << std::endl;
91// }
92//
93// return reply.ack_type();
94//}
95//
96//bool PanoptesServiceClient::SendResults_AMSI(std::string PePath, DWORD AmsiResult) {
97// AckMessage reply;
98// ContainerReply request;
99// ClientContext g_context;
100//
101// ScanAMSI results;
102// results.set_portable_executable_path(PePath);
103// results.set_amsi_result(AmsiResult);
104//
105// request.mutable_amsi_scan()->CopyFrom(results);
106//
107// Status status = stub_->ScanResults(&g_context, request, &reply);
108//
109// if (!status.ok()) {
110// std::cout << status.error_code() << ": " << status.error_message() << std::endl;
111// return !reply.ack_type();
112// }
113//
114// return !reply.ack_type();
115//}
#define SERVICE_PORT
ExtensibilityType
The type of extensibility.
PanoptesServiceClient()
The PanoptesServiceClient class is a class that implements the PanoptesServiceClient class.
bool Hello(ExtensibilityType extensibilityType, std::string port)
The Hello function sends a Hello message to the Panoptes main service from the container.
std::unique_ptr< PanoptesService::Stub > stub_