Kaspersky
Solved

Подключение к агенту на хосте через KSC13 OpenAPI

  • 15 July 2021
  • 1 reply
  • 38 views

Badge

Я автоматизирую инфраструктуру и для скрипта мне нужно временно приостановить антивирус на хосте.

Я нашел описание (ужасного) API и через два дня пришел к следующему:

  1. Использую Session.StartSession -> получаю «sessionID»
  2. С «sessionID» -> Использую HostGroup.FindHosts -> получаю «RequestID»
  3. С «sessionID», «RequestID» -> Использую ChunkAccessor.GetItemsChunk -> получаю «hostnameID»
  4. С «sessionID», «hostnameID» -> Использую CgwHelper.GetNagentLocation -> получаю «locationObj»:
    1. {
      "PxgRetVal": {
      "GwLocHostId": "4f0737f2-9885-46f4-8437-3ba72e50103c",
      "GwLocIndirect": true,
      "GwLocLocation": "http://172.20.23.121:15000",
      "GwLocSignUdp": true,
      "GwLocTargetComponent": "1103;86;1.0.0.0;b736452e-8f9d-42b0-a6bc-251535210f7a",
      "GwLocUseCompression": true
      }
      }
  5.  С «locationObj» в качестве массива → пытаемся использовать GatewayConnection.PrepareGatewayConnection:
    {
    "pLocations":
    [{
    "GwLocHostId": "4f0737f2-9885-46f4-8437-3ba72e50103c",
    "GwLocIndirect": true,
    "GwLocLocation": "http://172.20.23.121:15000",
    "GwLocSignUdp": true,
    "GwLocTargetComponent": "1103;86;1.0.0.0;b736452e-8f9d-42b0-a6bc-251535210f7a",
    "GwLocUseCompression": true
    }]
    }
  6. И я получаю ошибку:
    1. {
      "PxgError": {
      "code": 1192,
      "file": "c:\\a\\b\\a_6vlf7p9h\\s\\csadminkit\\development2\\kloapi\\contentstream\\sax_handler.cpp",
      "line": 314,
      "message": "Field 'type' is not found for the value with name: ",
      "module": "KLSTD",
      "subcode": 0
      }
      }

       

  7. При этом ничего полезного в документации по этому поводу нет:

Что делать?

icon

Best answer by Danila 15 July 2021, 10:02

Ранее я написал, что API ужасное. Теперь я подтверждаю - оно отвратное и документация к нему такая же.

Пишу ответ для своего текущего вопроса:

Как заставить GatewayConnection.PrepareGatewayConnection работать

Ответ:

После получения locationObj через CgwHelper.GetNagentLocation:

{
"PxgRetVal": {
"GwLocHostId": "4f0737f2-9885-46f4-8437-3ba72e50103c",
"GwLocIndirect": true,
"GwLocLocation": "http://172.20.23.121:15000",
"GwLocSignUdp": true,
"GwLocTargetComponent": "1103;86;1.0.0.0;b736452e-8f9d-42b0-a6bc-251535210f7a",
"GwLocUseCompression": true
}
}

Вызываем метод GatewayConnection.PrepareGatewayConnection со следующим телом:

{
"pLocations":[{
"type":"params",
"value":{
"GwLocHostId": "4f0737f2-9885-46f4-8437-3ba72e50103c",
"GwLocIndirect": true,
"GwLocLocation": "http://172.20.23.121:15000",
"GwLocSignUdp": true,
"GwLocTargetComponent": "1103;86;1.0.0.0;b736452e-8f9d-42b0-a6bc-251535210f7a",
"GwLocUseCompression": true
}
}]
}

Т.е. не просто отправляя

{
"pLocations":[{ %DATA% }]
}

А формируя структуру, которая не написана в документации:

{
"pLocations":[{
"type":"params",
"value":{
%DATA%
}
}]
}

 

View original

1 reply

Badge

Ранее я написал, что API ужасное. Теперь я подтверждаю - оно отвратное и документация к нему такая же.

Пишу ответ для своего текущего вопроса:

Как заставить GatewayConnection.PrepareGatewayConnection работать

Ответ:

После получения locationObj через CgwHelper.GetNagentLocation:

{
"PxgRetVal": {
"GwLocHostId": "4f0737f2-9885-46f4-8437-3ba72e50103c",
"GwLocIndirect": true,
"GwLocLocation": "http://172.20.23.121:15000",
"GwLocSignUdp": true,
"GwLocTargetComponent": "1103;86;1.0.0.0;b736452e-8f9d-42b0-a6bc-251535210f7a",
"GwLocUseCompression": true
}
}

Вызываем метод GatewayConnection.PrepareGatewayConnection со следующим телом:

{
"pLocations":[{
"type":"params",
"value":{
"GwLocHostId": "4f0737f2-9885-46f4-8437-3ba72e50103c",
"GwLocIndirect": true,
"GwLocLocation": "http://172.20.23.121:15000",
"GwLocSignUdp": true,
"GwLocTargetComponent": "1103;86;1.0.0.0;b736452e-8f9d-42b0-a6bc-251535210f7a",
"GwLocUseCompression": true
}
}]
}

Т.е. не просто отправляя

{
"pLocations":[{ %DATA% }]
}

А формируя структуру, которая не написана в документации:

{
"pLocations":[{
"type":"params",
"value":{
%DATA%
}
}]
}

 

Reply