<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Взаимодействие с Check Point SandBlast через API in Russian</title>
    <link>https://community.checkpoint.com/t5/Russian/%D0%92%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D0%B5-%D1%81-Check-Point-SandBlast-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-API/m-p/96566#M197</link>
    <description>&lt;H1 data-pm-slice="1 1 []"&gt;Взаимодействие с Check Point SandBlast через API&lt;/H1&gt;
&lt;FIGURE class="full-width "&gt;
&lt;DIV id="tinyMceEditoroldflint_0" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;FIGCAPTION&gt;&lt;/FIGCAPTION&gt;
&lt;/FIGURE&gt;
&lt;P&gt;Эта статья будет полезна тем, кто знаком с технологиями &lt;STRONG&gt;Check Point&lt;/STRONG&gt; по эмуляции файлов (&lt;STRONG&gt;Threat Emulation&lt;/STRONG&gt;) и проактивной очистке файлов (&lt;STRONG&gt;Threat Extraction&lt;/STRONG&gt;) и желает сделать шаг в сторону автоматизации данных задач. У Check Point есть &lt;A href="https://sc1.checkpoint.com/documents/TPAPI/CP_1.0_ThreatPreventionAPI_APIRefGuide/html_frameset.htm" rel="noopener noreferrer nofollow" target="_blank"&gt;&lt;STRONG&gt;Threat Prevention API&lt;/STRONG&gt;&lt;/A&gt;, который работает как в облаке , так и на локальных устройствах, и &lt;STRONG&gt;функционально он идентичен проверке файлов в потоках web/smtp/ftp/smb/nfs трафика&lt;/STRONG&gt;. Данная статья отчасти является авторской трактовкой набора статей из официальной документации, но построенная на своем опыте эксплуатации и на собственных примерах. Также в статье вы найдете авторские коллекции Postman для работы с Threat Prevention API.&lt;/P&gt;
&lt;H2&gt;Основные сокращения&lt;/H2&gt;
&lt;P&gt;Threat Prevention API работает с тремя основными компонентами, которые в API вызываются через следующие текстовые значения:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;av&lt;/STRONG&gt; - компонент Anti-Virus, отвечает за сигнатурный анализ известных угроз.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;te&lt;/STRONG&gt; - компонент Threat Emulation, отвечает за проверку файлов в песочнице, и вынесение вердикта зловредный (malicious)/чистый(benign) после эмуляции.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;extraction&lt;/STRONG&gt; - компонент Threat Extraction, отвечающий за быструю конвертацию офисных документов в безопасный вид (в котором удаляется весь потенциально вредоносный контент), в целях их быстрой доставки пользователям/системам.&lt;/P&gt;
&lt;H2&gt;Структура API и основные ограничения&lt;/H2&gt;
&lt;P&gt;Threat Prevention API использует всего 4 запроса - &lt;STRONG&gt;upload, query, download и quota&lt;/STRONG&gt;. В заголовке для всех четырех запросов нужно передать API ключ, используя параметр &lt;STRONG&gt;Authorization&lt;/STRONG&gt;. На первый взгляд, структура может показаться гораздо проще, чем в &lt;A href="https://sc1.checkpoint.com/documents/latest/APIs/#introduction~v1.6.1" rel="noopener noreferrer nofollow" target="_blank"&gt;&lt;STRONG&gt;Management API&lt;/STRONG&gt;&lt;/A&gt;, но количество полей в запросах upload и query и структура этих запросов достаточно комплексные. Их можно функционально сравнить с профилями Threat Prevention в политике безопасности шлюза/песочницы.&lt;/P&gt;
&lt;P&gt;На данный момент, выпущена единственная версия Threat Prevention API - 1.0, в URL для API вызовов следует указывать &lt;STRONG&gt;v1&lt;/STRONG&gt; в той части, где требуется указать версию. В отличии от Management API, указывать версию API в URL адресе обязательно, иначе запрос не выполнится.&lt;/P&gt;
&lt;P&gt;Компонент Anti-Virus при вызове без других компонентов (te, extraction) на данный момент поддерживает только запросы query с md5 хэш суммами. Threat Emulation и Threat Extraction поддерживает также sha1 и sha256 хэш суммы.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Очень важно не делать ошибок в запросах!&lt;/STRONG&gt; Запрос может быть исполнен без ошибки, но не полностью. Чуть забегая вперед рассмотрим что может происходить при ошибках/опечатках в запросах.&lt;/P&gt;
&lt;P&gt;Запрос с опечаткой с слове reports(reportss):&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{ "request":  [  

		{	
			"sha256": {{sha256}},
			"features": ["te"] , 
			"te": {
				"images": [
                    {
                        "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
                        "revision": 1
                    }
                ],
                reportss: ["tar", "pdf", "xml"]
            }
		}
	] 
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;В ответе ошибки не будет, но при этом информации об отчетах не будет вовсе&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "The request has been fully answered."
      },
      "sha256": "9cc488fa6209caeb201678f8360a6bb806bd2f85b59d108517ddbbf90baec33a",
      "file_type": "pdf",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 3,
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      }
    }
  ]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&amp;nbsp;А вот на запрос без опечатки в ключе reports&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{ "request":  [  

		{	
			"sha256": {{sha256}},
			"features": ["te"] , 
			"te": {
				"images": [
                    {
                        "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
                        "revision": 1
                    }
                ],
                reports: ["tar", "pdf", "xml"]
            }
		}
	] 
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;Мы получаем ответ, в котором уже содержатся id для загрузки отчетов&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "The request has been fully answered."
      },
      "sha256": "9cc488fa6209caeb201678f8360a6bb806bd2f85b59d108517ddbbf90baec33a",
      "file_type": "pdf",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious",
              "full_report": "b684066e-e41c-481a-a5b4-be43c27d8b65",
              "pdf_report": "e48f14f1-bcc7-4776-b04b-1a0a09335115",
              "xml_report": "d416d4a9-4b7c-4d6d-84b9-62545c588963"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 3,
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      }
    }
  ]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P data-pm-slice="1 1 []"&gt;Если же отправить неправильный/просроченный API ключ, то в ответ получим ошибку 403.&lt;/P&gt;
&lt;H3&gt;SandBlast API: в облаке и на локальных устройствах&lt;/H3&gt;
&lt;P&gt;API запросы можно отправлять на устройства Check Point, на которых включен компонент (blade) Threat Emulation. В качестве адреса для запросов нужно использовать ip/url устройства и порт 18194 (например - https://&lt;STRONG&gt;&lt;EM&gt;10.10.57.19:18194&lt;/EM&gt;&lt;/STRONG&gt;/tecloud/api/v1/file/query). Также следует убедиться в том, что политикой безопасности на устройстве разрешено такое подключение. Авторизация через API ключ на локальных устройствах по умолчанию &lt;STRONG&gt;выключена&lt;/STRONG&gt; и ключ Authorization в заголовках запросов можно не отправлять вовсе.&lt;/P&gt;
&lt;P&gt;API запросы в облако CheckPoint нужно отправлять на адрес &lt;STRONG&gt;te.checkpoint.com&lt;/STRONG&gt; (например - https://&lt;STRONG&gt;&lt;EM&gt;te.checkpoint.com&lt;/EM&gt;&lt;/STRONG&gt;/tecloud/api/v1/file/query). API ключ можно получить в виде триальной лицензии на 60 дней, обратившись к партнерам Check Point или в локальный офис компании.&lt;/P&gt;
&lt;P&gt;На локальных устройствах Threat Extraction пока не поддерживается в стандартном &lt;A href="https://sc1.checkpoint.com/documents/TPAPI/CP_1.0_ThreatPreventionAPI_APIRefGuide/html_frameset.htm" rel="noopener noreferrer nofollow" target="_blank"&gt;Threat Prevention API &lt;/A&gt;и следует использовать &lt;A href="https://supportcenter.checkpoint.com/supportcenter/portal?eventSubmit_doGoviewsolutiondetails=&amp;amp;solutionid=sk137032&amp;amp;partition=Basic&amp;amp;product=Threat#Access%20the%20API" rel="noopener noreferrer nofollow" target="_blank"&gt;&lt;STRONG&gt;Threat Prevention API for Security Gateway&lt;/STRONG&gt;&lt;/A&gt; (о нем мы поговорим подробнее в конце статьи).&lt;/P&gt;
&lt;P&gt;Локальные устройства не поддерживают запрос quota.&lt;/P&gt;
&lt;P&gt;В остальном отличий между запросами к локальным устройствам и к облаку нет.&lt;/P&gt;
&lt;H2&gt;Вызов Upload API&lt;/H2&gt;
&lt;P&gt;Используемый метод - &lt;STRONG&gt;POST&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Адрес для вызова - &lt;STRONG&gt;https://&lt;EM&gt;&amp;lt;service_address&amp;gt;&lt;/EM&gt;/tecloud/api/v1/file/upload&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Запрос состоит из двух частей (form-data): файла предназначенный для эмуляции/очистки и тела запроса с текстом.&lt;/P&gt;
&lt;P&gt;Текстовый запрос не может быть пустым, но при этом может не содержать никакой конфигурации. Для того, чтобы запрос был успешным, нужно отправить минимум следующий текст в запросе:&lt;/P&gt;
&lt;P&gt;Необходимый минимум для запроса upload&lt;/P&gt;
&lt;LI-SPOILER&gt;
&lt;DIV class="table" data-pm-slice="4 4 [&amp;quot;spoiler&amp;quot;,null]"&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;HTTP POST&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;https://&lt;EM&gt;&amp;lt;service_address&amp;gt;&lt;/EM&gt;/tecloud/api/v1/file/upload&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;Headers:&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Authorization: &lt;EM&gt;&amp;lt;api_key&amp;gt;&lt;/EM&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;Body&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;"request":&amp;nbsp;{&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;File&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;File&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/LI-SPOILER&gt;
&lt;P data-pm-slice="1 1 []"&gt;В таком случае файл на обработку попадет в соответствии с параметрами по умолчанию: компонент - &lt;STRONG&gt;te&lt;/STRONG&gt;, образы ОС - &lt;STRONG&gt;Win XP и Win 7&lt;/STRONG&gt;, без генерации отчета.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Комментарии по основным полям в текстовом запросе:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;file_name&lt;/STRONG&gt; и &lt;STRONG&gt;file_type&lt;/STRONG&gt; можно оставить пустыми или не отправлять вовсе, так как это не особо полезная информация при загрузке файла. В API ответе данные поля заполнятся автоматически на основе имени загружаемого файла, а информацию в кэше все равно придется искать по md5/sha1/sha256 hash суммам.&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 18px; background-color: #ffffff;"&gt;Пример запроса с пустыми file_name и file_type&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{

"request": {

"file_name": "",

"file_type": "",

}

}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P data-pm-slice="1 1 []"&gt;&lt;STRONG&gt;features&lt;/STRONG&gt; - список, в котором указывается необходимый функционал при обработке в песочнице - av (Anti-Virus), te (Threat Emulation), extraction (Threat Extraction). Если данный параметр не передать вовсе, то будет задействован только компонент по умолчанию - te(Threat Emulation).&lt;/P&gt;
&lt;P&gt;Чтобы включить проверку в трех доступных компонентах, нужно указать эти компоненты в API запросе.&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 18px; background-color: #ffffff;"&gt;Пример запроса с проверкой в av, te и extraction&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{ "request":  [  

		{	
			"sha256": {{sha256}},
			"features": ["av", "te", "extraction"]  
		}
	] 
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;H4 data-pm-slice="1 1 []"&gt;Ключи в разделе te&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;images&lt;/STRONG&gt; - список, внутри которого должны быть указаны словари с id и номером ревизии операционных систем, в которых будет выполняться проверка. ID и номера ревизий одинаковые для всех локальных устройств и облака.&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 18px; background-color: #ffffff;"&gt;Список операционных систем и ревизий&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-SPOILER&gt;
&lt;DIV class="table" data-pm-slice="4 4 [&amp;quot;spoiler&amp;quot;,null]"&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;
&lt;P&gt;&lt;STRONG&gt;Available OS Image ID&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TH&gt;
&lt;TH&gt;
&lt;P&gt;&lt;STRONG&gt;Revision&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TH&gt;
&lt;TH&gt;
&lt;P&gt;&lt;STRONG&gt;Image OS and Application&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TH&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;e50e99f3-5963-4573-af9e-e3f4750b55e2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Windows&lt;/STRONG&gt;: XP - 32bit SP3&lt;BR /&gt;&lt;STRONG&gt;Office&lt;/STRONG&gt;: 2003, 2007&lt;BR /&gt;&lt;STRONG&gt;Adobe Acrobat Reader&lt;/STRONG&gt;: 9.0&lt;BR /&gt;&lt;STRONG&gt;Flash Player&lt;/STRONG&gt;&amp;nbsp;9r115 and&amp;nbsp;&lt;STRONG&gt;ActiveX&lt;/STRONG&gt;&amp;nbsp;10.0&lt;BR /&gt;&lt;STRONG&gt;Java Runtime:&lt;/STRONG&gt;&amp;nbsp;1.6.0u22&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;7e6fe36e-889e-4c25-8704-56378f0830df&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Windows&lt;/STRONG&gt;: 7 - 32bit&lt;BR /&gt;&lt;STRONG&gt;Office&lt;/STRONG&gt;: 2003, 2007&lt;BR /&gt;&lt;STRONG&gt;Adobe Acrobat Reader&lt;/STRONG&gt;: 9.0&lt;BR /&gt;&lt;STRONG&gt;Flash Player:&lt;/STRONG&gt;&amp;nbsp;10.2r152 (&lt;STRONG&gt;Plugin&lt;/STRONG&gt;&amp;amp;&amp;nbsp;&lt;STRONG&gt;ActiveX&lt;/STRONG&gt;)&lt;BR /&gt;&lt;STRONG&gt;Java Runtime:&lt;/STRONG&gt;&amp;nbsp;1.6.0u0&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;8d188031-1010-4466-828b-0cd13d4303ff&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Windows&lt;/STRONG&gt;: 7 - 32bit&lt;BR /&gt;&lt;STRONG&gt;Office&lt;/STRONG&gt;: 2010&lt;BR /&gt;&lt;STRONG&gt;Adobe Acrobat Reader&lt;/STRONG&gt;: 9.4&lt;BR /&gt;&lt;STRONG&gt;Flash Player:&lt;/STRONG&gt;&amp;nbsp;11.0.1.152 (&lt;STRONG&gt;Plugin&lt;/STRONG&gt;&amp;nbsp;&amp;amp;&amp;nbsp;&lt;STRONG&gt;ActiveX&lt;/STRONG&gt;)&lt;BR /&gt;&lt;STRONG&gt;Java Runtime:&lt;/STRONG&gt;&amp;nbsp;1.7.0u0&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;5e5de275-a103-4f67-b55b-47532918fa59&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Windows&lt;/STRONG&gt;: 7 - 32bit&lt;BR /&gt;&lt;STRONG&gt;Office&lt;/STRONG&gt;: 2013&lt;BR /&gt;&lt;STRONG&gt;Adobe Acrobat Reader&lt;/STRONG&gt;: 11.0&lt;BR /&gt;&lt;STRONG&gt;Flash Player:&lt;/STRONG&gt;&amp;nbsp;15 (&lt;STRONG&gt;Plugin&lt;/STRONG&gt;&amp;nbsp;&amp;amp;&amp;nbsp;&lt;STRONG&gt;ActiveX&lt;/STRONG&gt;)&lt;BR /&gt;&lt;STRONG&gt;Java Runtime:&lt;/STRONG&gt;&amp;nbsp;1.7.0u9&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;3ff3ddae-e7fd-4969-818c-d5f1a2be336d&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Windows&lt;/STRONG&gt;: 7 - 64bit&lt;BR /&gt;&lt;STRONG&gt;Office&lt;/STRONG&gt;: 2013 (32bit)&lt;BR /&gt;&lt;STRONG&gt;Adobe Acrobat Reader&lt;/STRONG&gt;: 11.0.01&lt;BR /&gt;&lt;STRONG&gt;Flash Player:&lt;/STRONG&gt;&amp;nbsp;13 (&lt;STRONG&gt;Plugin&lt;/STRONG&gt;&amp;nbsp;&amp;amp;&amp;nbsp;&lt;STRONG&gt;ActiveX&lt;/STRONG&gt;)&lt;BR /&gt;&lt;STRONG&gt;Java Runtime:&lt;/STRONG&gt;&amp;nbsp;1.7.0u9&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;6c453c9b-20f7-471a-956c-3198a868dc92&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;1&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Windows&lt;/STRONG&gt;: 8.1 - 64bit&lt;BR /&gt;&lt;STRONG&gt;Office&lt;/STRONG&gt;: 2013 (64bit)&lt;BR /&gt;&lt;STRONG&gt;Adobe Acrobat Reader&lt;/STRONG&gt;: 11.0.10&lt;BR /&gt;&lt;STRONG&gt;Flash Player:&lt;/STRONG&gt;&amp;nbsp;18.0.0.160 (&lt;STRONG&gt;Plugin&lt;/STRONG&gt;&amp;nbsp;&amp;amp;&amp;nbsp;&lt;STRONG&gt;ActiveX&lt;/STRONG&gt;)&lt;BR /&gt;&lt;STRONG&gt;Java Runtime:&lt;/STRONG&gt;&amp;nbsp;1.7.0u9&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;10b4a9c6-e414-425c-ae8b-fe4dd7b25244&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Windows&lt;/STRONG&gt;: 10&lt;BR /&gt;&lt;STRONG&gt;Office&lt;/STRONG&gt;: Professional Plus 2016 en-us&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&lt;STRONG&gt;Adobe Acrobat Reader&lt;/STRONG&gt;: DC 2015 MUI&lt;BR /&gt;&lt;STRONG&gt;Flash Player:&lt;/STRONG&gt;&amp;nbsp;20 (&lt;STRONG&gt;Plugin&lt;/STRONG&gt;&amp;nbsp;&amp;amp;&amp;nbsp;&lt;STRONG&gt;ActiveX&lt;/STRONG&gt;)&lt;BR /&gt;&lt;STRONG&gt;Java Runtime:&lt;/STRONG&gt;&amp;nbsp;1.7.0u9&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/LI-SPOILER&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-pm-slice="1 3 []"&gt;Если ключ images не указать вовсе, то эмуляция будет проходить в образах, рекомендованных Check Point (на данный момент это Win XP и Win 7). Данные образы рекомендованы исходя из соображений наилучшего баланса производительности и catch rate.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;reports &lt;/STRONG&gt;- список отчетов, которые мы запрашиваем на случай, если файл окажется вредоносным. Доступны следующие варианты:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;summary&lt;/STRONG&gt; - .tar.gz архив, содержащий в себе отчет об эмуляции по &lt;STRONG&gt;всем&lt;/STRONG&gt; запрошенным image'ам (как html страницу, так и такие компоненты как видеоролик из ОС эмулятора, дамп сетевого трафика, отчет в json, так и сам сэмпл в архиве под защитой пароля). В ответе ищем ключ - &lt;STRONG&gt;summary_report &lt;/STRONG&gt;для последующей загрузки отчета.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;pdf&lt;/STRONG&gt; - документ об эмуляции в &lt;STRONG&gt;одном&lt;/STRONG&gt; image, который многие привыкли получать через Smart Console. В ответе ищем ключ - &lt;STRONG&gt;pdf_report &lt;/STRONG&gt;для последующей загрузки отчета.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;xml&lt;/STRONG&gt; - документ об эмуляции в &lt;STRONG&gt;одном&lt;/STRONG&gt; image, удобный для последующего парсинга параметров в отчете. В ответе ищем ключ - &lt;STRONG&gt;xml_report &lt;/STRONG&gt;для последующей загрузки отчета.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P data-pm-slice="1 1 [&amp;quot;list&amp;quot;,null,&amp;quot;listitem&amp;quot;,null]"&gt;&lt;STRONG&gt;tar&lt;/STRONG&gt; - .tar.gz архив, содержащий в себе отчет об эмуляции в &lt;STRONG&gt;одном&lt;/STRONG&gt; запрошенным image'ам (как html страницу, так и такие компоненты как видеоролик из ОС эмулятора, дамп сетевого трафика, отчет в json, так и сам сэмпл в архиве под защитой пароля). В ответе ищем ключ - &lt;STRONG&gt;full_report &lt;/STRONG&gt;для последующей загрузки отчета.&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;SPAN style="font-size: 18px; background-color: #ffffff;"&gt;Что внутри отчета summary&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2020-09-04 at 12.00.07.png" style="width: 784px;"&gt;&lt;img src="https://community.checkpoint.com/t5/image/serverpage/image-id/8038i51D8097B590F9609/image-size/large?v=v2&amp;amp;px=999" role="button" title="Screenshot 2020-09-04 at 12.00.07.png" alt="Screenshot 2020-09-04 at 12.00.07.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 18px; background-color: #ffffff;"&gt;Ключи full_report, pdf_report, xml_report есть в словаре для каждой ОС&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "The request has been fully answered."
      },
      "sha256": "9e6f07d03b37db0d3902bde4e239687a9e3d650e8c368188c7095750e24ad2d5",
      "file_type": "html",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious",
              "full_report": "8d18067e-b24d-4103-8469-0117cd25eea9",
              "pdf_report": "05848b2a-4cfd-494d-b949-6cfe15d0dc0b",
              "xml_report": "ecb17c9d-8607-4904-af49-0970722dd5c8"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          },
          {
            "report": {
              "verdict": "malicious",
              "full_report": "d7c27012-8e0c-4c7e-8472-46cc895d9185",
              "pdf_report": "488e850c-7c96-4da9-9bc9-7195506afe03",
              "xml_report": "e5a3a78d-c8f0-4044-84c2-39dc80ddaea2"
            },
            "status": "found",
            "id": "6c453c9b-20f7-471a-956c-3198a868dc92",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 3,
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      }
    }
  ]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&lt;SPAN style="font-size: 18px; background-color: #ffffff;"&gt;&lt;SPAN&gt;А вот ключ summary_report - есть один для эмуляции в целом&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "The request has been fully answered."
      },
      "sha256": "d57eadb7b2f91eea66ea77a9e098d049c4ecebd5a4c70fb984688df08d1fa833",
      "file_type": "exe",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious",
              "full_report": "c9a1767b-741e-49da-996f-7d632296cf9f",
              "xml_report": "cc4dbea9-518c-4e59-b6a3-4ea463ca384b"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          },
          {
            "report": {
              "verdict": "malicious",
              "full_report": "ba520713-8c0b-4672-a12f-0b4a1575b913",
              "xml_report": "87bdb8ca-dc44-449d-a9ab-2d95e7fe2503"
            },
            "status": "found",
            "id": "6c453c9b-20f7-471a-956c-3198a868dc92",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 3,
        "summary_report": "7e7db12d-5df6-4e14-85f3-2c1e29cd3e34",
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      }
    }
  ]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;Можно запросить одновременно отчеты tar и xml и pdf, можно summary и tar и xml. Одновременно запросить summary отчет и pdf не получится.&lt;/P&gt;
&lt;H4&gt;Ключи в разделе extraction&lt;/H4&gt;
&lt;P&gt;Для threat extraction используется всего два ключа:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;method&lt;/STRONG&gt; - pdf(конвертация в pdf, используется по умолчанию) или clean(очистка активного содержимого).&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;extracted_parts_codes&lt;/STRONG&gt; - список кодов для удаления активного содержимого, применимо только для метода clean&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Коды для удаления содержимого из файлов&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;
&lt;P&gt;&lt;STRONG&gt;Code&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TH&gt;
&lt;TH&gt;
&lt;P&gt;&lt;STRONG&gt;Description&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TH&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1025&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Linked Objects&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1026&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Macros and Code&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1034&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Sensitive Hyperlinks&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1137&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;PDF GoToR Actions&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1139&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;PDF Launch Actions&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1141&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;PDF URI Actions&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1142&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;PDF Sound Actions&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1143&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;PDF Movie Actions&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1150&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;PDF JavaScript Actions&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1151&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;PDF Submit Form Actions&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1018&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Database Queries&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1019&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Embedded Objects&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1021&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Fast Save Data&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Custom Properties&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1036&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Statistic Properties&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1037&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Summary Properties&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/LI-SPOILER&gt;
&lt;P&gt;&lt;SPAN&gt;Для загрузки очищенной копии потребуется сделать ещё и запрос query (о нем пойдет речь далее) через несколько секунд, указав hash сумму файла и компонент extraction в тексте запроса. Забрать очищенный файл можно будет с помощью id из ответа на запрос query - extracted_file_download_id. Ещё раз, чуть забегая вперед, привожу примеры запроса и ответа query для поиска id на загрузку очищенного документа.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Запрос query для поиска ключа extracted_file_download_id&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{ "request":  [  

		{	
			"sha256": "9a346005ee8c9adb489072eb8b5b61699652962c17596de9c326ca68247a8876",
			"features": ["extraction"] , 
			"extraction": {
		        "method": "pdf"
            }
		}
	] 
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&lt;SPAN&gt;Ответ на запрос query (найдите ключ extracted_file_download_id)&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
    "response": [
        {
            "status": {
                "code": 1001,
                "label": "FOUND",
                "message": "The request has been fully answered."
            },
            "sha256": "9a346005ee8c9adb489072eb8b5b61699652962c17596de9c326ca68247a8876",
            "file_type": "",
            "file_name": "",
            "features": [
                "extraction"
            ],
            "extraction": {
                "method": "pdf",
                "extract_result": "CP_EXTRACT_RESULT_SUCCESS",
                "extracted_file_download_id": "b5f2b34e-3603-4627-9e0e-54665a531ab2",
                "output_file_name": "kp-20-xls.cleaned.xls.pdf",
                "time": "0.013",
                "extract_content": "Macros and Code",
                "extraction_data": {
                    "input_extension": "xls",
                    "input_real_extension": "xls",
                    "message": "OK",
                    "output_file_name": "kp-20-xls.cleaned.xls.pdf",
                    "protection_name": "Potential malicious content extracted",
                    "protection_type": "Conversion to PDF",
                    "protocol_version": "1.0",
                    "risk": 5.0,
                    "scrub_activity": "Active content was found - XLS file was converted to PDF",
                    "scrub_method": "Convert to PDF",
                    "scrub_result": 0.0,
                    "scrub_time": "0.013",
                    "scrubbed_content": "Macros and Code"
                },
                "tex_product": false,
                "status": {
                    "code": 1001,
                    "label": "FOUND",
                    "message": "The request has been fully answered."
                }
            }
        }
    ]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;H4&gt;Общие сведения&lt;/H4&gt;
&lt;P&gt;В одном API вызове можно отправить только один файл на проверку.&lt;/P&gt;
&lt;P&gt;Компонент av не требует дополнительного раздела с ключами, достаточно указать его в словаре &lt;STRONG&gt;features&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H2&gt;Вызов Query API&lt;/H2&gt;
&lt;P&gt;Используемый метод - &lt;STRONG&gt;POST&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Адрес для вызова - &lt;STRONG&gt;https://&lt;/STRONG&gt;&lt;EM&gt;&lt;STRONG&gt;&amp;lt;service_address&amp;gt;&lt;/STRONG&gt;&lt;/EM&gt;&lt;STRONG&gt;/tecloud/api/v1/file/query&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Перед тем как отправлять файл на загрузку (запрос upload), желательно выполнить проверку кэша песочницы (запрос query) в целях оптимизации нагрузки на API сервер, так как возможно на API сервере уже есть информация и вердикт по загружаемому файлу. Вызов состоит только из текстовой части. Обязательная часть запроса - sha1/sha256/md5 hash сумма файла. Её кстати можно получить в ответе на запрос upload.&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Необходимый минимум для запроса query&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;HTTP POST
https://&amp;lt;service_address&amp;gt;/tecloud/api/v1/file/query
Headers:
Authorization: &amp;lt;api_key&amp;gt;
Body
{
"request": {
"sha256": &amp;lt;sha256 hash sum&amp;gt;
}
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&lt;SPAN&gt;Пример ответа на запрос upload, где видны sha1/md5/sha256 hash суммы&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
  "response": {
    "status": {
      "code": 1002,
      "label": "UPLOAD_SUCCESS",
      "message": "The file was uploaded successfully."
    },
    "sha1": "954b5a851993d49ef8b2412b44f213153bfbdb32",
    "md5": "ac29b7c26e7dcf6c6fdb13ac0efe98ec",
    "sha256": "313c0feb009356495b7f4a60e96737120beb30e1912c6d866218cee830aebd90",
    "file_type": "",
    "file_name": "kp-20-doc.doc",
    "features": [
      "te"
    ],
    "te": {
      "trust": 0,
      "images": [
        {
          "report": {
            "verdict": "unknown"
          },
          "status": "not_found",
          "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
          "revision": 1
        }
      ],
      "score": -2147483648,
      "status": {
        "code": 1002,
        "label": "UPLOAD_SUCCESS",
        "message": "The file was uploaded successfully."
      }
    }
  }
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;Запрос query помимо hash суммы в идеале должен быть таким же, как был (или планируется быть) запрос upload, или даже "уже" (содержать в запросе query меньше полей чем в запросе upload). В случае, когда запрос query содержит в себе больше полей, чем было в запросе upload, вы получите в ответе не всю требуемую информацию.&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Вот пример ответа на запрос query, где были найдены не все требуемые данные&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
  "response": [
    {
      "status": {
        "code": 1006,
        "label": "PARTIALLY_FOUND",
        "message": "The request cannot be fully answered at this time."
      },
      "sha256": "313c0feb009356495b7f4a60e96737120beb30e1912c6d866218cee830aebd90",
      "file_type": "doc",
      "file_name": "",
      "features": [
        "te",
        "extraction"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious",
              "pdf_report": "4e9cddaf-03a4-489f-aa03-3c18f8d57a52",
              "xml_report": "9c18018f-c761-4dea-9372-6a12fcb15170"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 1,
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      },
      "extraction": {
        "method": "pdf",
        "tex_product": false,
        "status": {
          "code": 1004,
          "label": "NOT_FOUND",
          "message": "Could not find the requested file. Please upload it."
        }
      }
    }
  ]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&lt;SPAN&gt;Обратите внимание на поля &lt;STRONG&gt;code&lt;/STRONG&gt; и &lt;STRONG&gt;label&lt;/STRONG&gt;. Данные поля встречаются три раза в словарях status. Вначале видим глобальный ключ "code": 1006 и "label": "PARTIALLY_FOUND". Далее данные ключи встречаются по каждому отдельному компоненту, которые мы запросили - te и extraction. И если для te понятно, что данные найдены, то для extraction информация отсутствует.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Вот так выглядел запрос query для примера выше&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{ "request":  [  

		{	
			"sha256": {{sha256}},
			"features": ["te", "extraction"] , 
			"te": {
				"images": [
                    {
                        "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
                        "revision": 1
                    }
                ],
                "reports": [
                    "xml", "pdf"
                ]
            }
		}
	] 
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&lt;SPAN&gt;Если отправить запрос query без компонента extraction&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{ "request":  [  

		{	
			"sha256": {{sha256}},
			"features": ["te"] , 
			"te": {
				"images": [
                    {
                        "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
                        "revision": 1
                    }
                ],
                "reports": [
                    "xml", "pdf"
                ]
            }
		}
	] 
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&lt;SPAN&gt;То и в ответе будет полная информация ("code": 1001, "label": "FOUND")&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "The request has been fully answered."
      },
      "sha256": "313c0feb009356495b7f4a60e96737120beb30e1912c6d866218cee830aebd90",
      "file_type": "doc",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious",
              "pdf_report": "4e9cddaf-03a4-489f-aa03-3c18f8d57a52",
              "xml_report": "9c18018f-c761-4dea-9372-6a12fcb15170"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 1,
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      }
    }
  ]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&lt;SPAN&gt;Если никакой информации в кэше нет вовсе, то в ответе будет "label": "NOT_FOUND"&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
  "response": [
    {
      "status": {
        "code": 1004,
        "label": "NOT_FOUND",
        "message": "Could not find the requested file. Please upload it."
      },
      "sha256": "313c0feb009356495b7f4a60e96737120beb30e1912c6d866218cee830aebd91",
      "file_type": "",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 0,
        "images": [
          {
            "report": {
              "verdict": "unknown"
            },
            "status": "not_found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "status": {
          "code": 1004,
          "label": "NOT_FOUND",
          "message": "Could not find the requested file. Please upload it."
        }
      }
    }
  ]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;В одном API вызове можно отправить сразу несколько хэш сумм на проверку. В ответе будут возвращены данные в том же самом порядке, как они были отправлены в запросе.&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Пример запроса query с несколькими sha256 суммами&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{ "request":  [  

		{	
			"sha256": "b84531d3829bf6131655773a3863d6b16f6389b7f4036aef9b81c0cb60e7fd81"
        },
        		{	
			"sha256": "b84531d3829bf6131655773a3863d6b16f6389b7f4036aef9b81c0cb60e7fd82"
        }
	] 
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&lt;SPAN&gt;Ответ на запрос query с несколькими sha256 суммами&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "The request has been fully answered."
      },
      "sha256": "b84531d3829bf6131655773a3863d6b16f6389b7f4036aef9b81c0cb60e7fd81",
      "file_type": "dll",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 3,
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      }
    },
    {
      "status": {
        "code": 1004,
        "label": "NOT_FOUND",
        "message": "Could not find the requested file. Please upload it."
      },
      "sha256": "b84531d3829bf6131655773a3863d6b16f6389b7f4036aef9b81c0cb60e7fd82",
      "file_type": "",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 0,
        "images": [
          {
            "report": {
              "verdict": "unknown"
            },
            "status": "not_found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "status": {
          "code": 1004,
          "label": "NOT_FOUND",
          "message": "Could not find the requested file. Please upload it."
        }
      }
    }
  ]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;Запрос сразу нескольких hash сумму в запросе query также благоприятно скажется на производительности API сервера.&lt;/P&gt;
&lt;H2&gt;Вызов Download API&lt;/H2&gt;
&lt;P&gt;Используемый метод - &lt;STRONG&gt;POST &lt;/STRONG&gt;(согласно документации), &lt;STRONG&gt;GET &lt;/STRONG&gt;также работает (и может показаться более логичным)&lt;/P&gt;
&lt;P&gt;Адрес для вызова - &lt;STRONG&gt;https://&lt;/STRONG&gt;&lt;EM&gt;&lt;STRONG&gt;&amp;lt;service_address&amp;gt;&lt;/STRONG&gt;&lt;/EM&gt;&lt;STRONG&gt;/tecloud/api/v1/file/download?id=&lt;/STRONG&gt;&lt;EM&gt;&lt;STRONG&gt;&amp;lt;id&amp;gt;&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;В заголовке требуется передать API ключ, тело запроса - пустое, id для загрузки передается в url адресе.&lt;/P&gt;
&lt;P&gt;В ответ на query запрос, в случае если эмуляция завершена и при загрузке файла были запрошены отчеты, будут видны id для загрузки отчетов. В случае, если запрашивается очищенная копия, то следует искать id для загрузки очищенного документа.&lt;/P&gt;
&lt;P&gt;Итого, ключами в ответе на запрос query, содержащими значение id для загрузки могут быть:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;summary_report&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;full_report&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;pdf_report&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;xml_report&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;extracted_file_download_id&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Безусловно, чтобы в ответе на запрос query были получена эти ключи, их нужно указать в запросе (для отчетов) или не забыть сделать запрос по функции extraction (для очищенных документов)&lt;/P&gt;
&lt;H3&gt;Вызов Quota API&lt;/H3&gt;
&lt;P&gt;Используемый метод - &lt;STRONG&gt;POST&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Адрес для вызова - &lt;STRONG&gt;https://&lt;/STRONG&gt;&lt;EM&gt;&lt;STRONG&gt;&amp;lt;service_address&amp;gt;&lt;/STRONG&gt;&lt;/EM&gt;&lt;STRONG&gt;/tecloud/api/v1/file/quota&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Для проверки оставшейся квоты в облаке используется запрос quota. Тело запроса пустое.&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Пример ответа на запрос quota&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
  "response": [
    {
      "remain_quota_hour": 1250,
      "remain_quota_month": 10000000,
      "assigned_quota_hour": 1250,
      "assigned_quota_month": 10000000,
      "hourly_quota_next_reset": "1599141600",
      "monthly_quota_next_reset": "1601510400",
      "quota_id": "TEST",
      "cloud_monthly_quota_period_start": "1421712300",
      "cloud_monthly_quota_usage_for_this_gw": 0,
      "cloud_hourly_quota_usage_for_this_gw": 0,
      "cloud_monthly_quota_usage_for_quota_id": 0,
      "cloud_hourly_quota_usage_for_quota_id": 0,
      "monthly_exceeded_quota": 0,
      "hourly_exceeded_quota": 0,
      "cloud_quota_max_allow_to_exceed_percentage": 1000,
      "pod_time_gmt": "1599138715",
      "quota_expiration": "0",
      "action": "ALLOW"
    }
  ]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;H2&gt;Threat Prevention API for Security Gateway&lt;/H2&gt;
&lt;P&gt;Данный API был разработан раньше, чем Threat Prevention API и предназначен только для локальных устройств. На данный момент он может быть полезен только в том случае, если вам нужен Threat Extraction API. Для Threat Emulation лучше использовать обычный Threat Prevention API. Чтобы включить &lt;STRONG&gt;TP API for SG&lt;/STRONG&gt; и сконфигурировать API ключ требуется выполнить действия из &lt;A href="https://supportcenter.checkpoint.com/supportcenter/portal?eventSubmit_doGoviewsolutiondetails=&amp;amp;solutionid=sk113599" rel="noopener noreferrer nofollow" target="_blank"&gt;&lt;STRONG&gt;sk113599&lt;/STRONG&gt;&lt;/A&gt;. Рекомендую обратить внимание на шаг 6b и проверить доступность страницы &lt;EM&gt;https://&amp;lt;IPAddressofSecurityGateway&amp;gt;/UserCheck/TPAPI &lt;/EM&gt;потому как в случае отрицательного результата дальнейшая конфигурация не имеет смысла. На данный url будут отправляться все API вызовы. Тип вызова (upload/query) регулируется в ключе тела вызова - &lt;EM&gt;&lt;STRONG&gt;request_name&lt;/STRONG&gt;. &lt;/EM&gt;Также обязательными ключами являются&lt;EM&gt; - api_key&lt;/EM&gt; (нужно запомнить его в процессе конфигурации) и &lt;EM&gt;protocol_version &lt;/EM&gt;(на данный момент актуальная версия 1.1). Официальную документацию для данного API вы можете найти в &lt;A href="https://supportcenter.checkpoint.com/supportcenter/portal?eventSubmit_doGoviewsolutiondetails=&amp;amp;solutionid=sk137032&amp;amp;partition=Basic&amp;amp;product=Threat" rel="noopener noreferrer nofollow" target="_blank"&gt;&lt;STRONG&gt;sk137032&lt;/STRONG&gt;&lt;/A&gt;. К относительным преимуществам можно отнести возможность отправлять сразу несколько файлов на эмуляцию при их загрузке, так как файлы отправляются в виде текстовой строки base64. Чтобы кодировать/декодировать файлы в/из base64 можно использовать для целей демонстрации в Postman онлайн конвертер, например - &lt;A href="https://base64.guru/" rel="noopener noreferrer nofollow" target="_blank"&gt;https://base64.guru&lt;/A&gt;. В практических целях при написании кода следует использовать встроенные методы encode и decode.&lt;/P&gt;
&lt;P&gt;Теперь остановимся подробнее на функциях &lt;STRONG&gt;te&lt;/STRONG&gt; и &lt;STRONG&gt;extraction&lt;/STRONG&gt; в данном API.&lt;/P&gt;
&lt;P&gt;Для компонента &lt;STRONG&gt;te&lt;/STRONG&gt; предусмотрен словарь &lt;STRONG&gt;te_options &lt;/STRONG&gt;в запросах upload/query, а ключи в данном запросе полностью совпадают с ключами te в &lt;A href="https://sc1.checkpoint.com/documents/TPAPI/CP_1.0_ThreatPreventionAPI_APIRefGuide/html_frameset.htm" rel="noopener noreferrer nofollow" target="_blank"&gt;Threat Prevention API&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Пример запроса для эмуляции файла в Win10 с отчетами&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
"request": [{
    "protocol_version": "1.1",
    "api_key": "&amp;lt;api_key&amp;gt;",
    "request_name": "UploadFile",
    "file_enc_data": "&amp;lt;base64_encoded_file&amp;gt;",
    "file_orig_name": "&amp;lt;filename&amp;gt;",
    "te_options": {
        "images": [
                {
                    "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
                    "revision": 1
                }
            ],
        "reports": ["summary", "xml"]
    }
    }
    ]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&lt;SPAN&gt;Для компонента &lt;STRONG&gt;extraction&lt;/STRONG&gt; предусмотрен словарь &lt;STRONG&gt;scrub_options&lt;/STRONG&gt;. В данном запросе указывается метод очистки: конвертация в PDF, очистка от активного содержимого или же выбрать режим в соответствии с профилем Threat Prevention(указывается имя профиля). Отличительной особенностью ответа на API запрос с extraction для файла является то, что вы получаете очищенную копию в ответе на этот запрос в виде шифрованной строки base64 (вам не нужно делать запрос query и искать id для загрузки документа)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Пример запроса на очистку файла&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;    {
	"request": [{
		"protocol_version": "1.1",
		"api_key": "&amp;lt;API_KEY&amp;gt;",
		"request_name": "UploadFile",
		"file_enc_data": "&amp;lt;base64_encoded_file&amp;gt;",
		"file_orig_name": "hi.txt",
		"scrub_options": {
			"scrub_method": 2
		}
	}]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&lt;SPAN&gt;Ответ на запрос&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
	"response": [{
		"protocol_version": "1.1",
		"src_ip": "&amp;lt;IP_ADDRESS&amp;gt;",
		"scrub": {
			"file_enc_data": "&amp;lt;base64_encoded_converted_to_PDF_file&amp;gt;",
			"input_real_extension": "js",
			"message": "OK",
			"orig_file_url": "",
			"output_file_name": "hi.cleaned.pdf",
			"protection_name": "Extract potentially malicious content",
			"protection_type": "Conversion to PDF",
			"real_extension": "txt",
			"risk": 0,
			"scrub_activity": "TXT file was converted to PDF",
			"scrub_method": "Convert to PDF",
			"scrub_result": 0,
			"scrub_time": "0.011",
			"scrubbed_content": ""
		}
	}]
} &lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;DIV class="post__body post__body_full"&gt;
&lt;DIV id="post-content-body" class="post__text post__text_v2" data-io-article-url="https://habr.com/ru/post/517460/"&gt;
&lt;P&gt;Несмотря на то, что для получения очищенной копии требуется меньше API запросов, я считаю такой вариант менее предпочтительным и удобным, нежели запрос form-data, используемый в &lt;A href="https://sc1.checkpoint.com/documents/TPAPI/CP_1.0_ThreatPreventionAPI_APIRefGuide/html_frameset.htm" rel="noopener noreferrer nofollow" target="_blank"&gt;Threat Prevention API&lt;/A&gt;.&lt;/P&gt;
&lt;H2&gt;Коллекции Postman&lt;/H2&gt;
&lt;P&gt;Мною были созданы коллекции в Postman как для Threat Prevention API, так и для Threat Prevention API for Security Gateway, где представлены наиболее распространённые API запросы. Для того, чтобы ip/url API сервера и ключ подставлялись в запросы автоматически, а hash сумма sha256 после загрузки файла также запоминалась, внутри коллекций созданы три переменные(найти их можно перейдя в настройках коллекции Edit -&amp;gt; Variables): &lt;EM&gt;te_api(требуется заполнить)&lt;/EM&gt;, &lt;EM&gt;api_key(требуется заполнить, кроме случая использования TP API с локальными устройствами)&lt;/EM&gt;, &lt;EM&gt;sha256 (оставить пустым, в TP API for SG не используется)&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://yadi.sk/d/QeItfsxJGN21-Q" target="_self" rel="nofollow noreferrer"&gt;&lt;STRONG&gt;Скачать коллекцию Postman для Threat Prevention API&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://yadi.sk/d/H5N2VX_S-WnPGw" rel="noopener noreferrer nofollow" target="_blank"&gt;&lt;STRONG&gt;Скачать коллекцию Postman для Threat Prevention for Security Gateway API&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;Примеры использования&lt;/H2&gt;
&lt;P&gt;В сообществе &lt;A href="https://community.checkpoint.com/t5/SandBlast-Network/Best-Practices-for-Threat-Prevention-API-Calls-to-Appliance/m-p/82825#M1043" rel="noopener noreferrer nofollow" target="_blank"&gt;Check Mates&lt;/A&gt; представлены скрипты, написанные на Python, которые проверяют файлы из нужной директории как через &lt;A href="https://sc1.checkpoint.com/documents/TPAPI/CP_1.0_ThreatPreventionAPI_APIRefGuide/html_frameset.htm" rel="noopener noreferrer nofollow" target="_blank"&gt;TP API&lt;/A&gt;, так и &lt;A href="https://supportcenter.checkpoint.com/supportcenter/portal?eventSubmit_doGoviewsolutiondetails=&amp;amp;solutionid=sk137032" rel="noopener noreferrer nofollow" target="_blank"&gt;TP API for SG&lt;/A&gt;. Через взаимодействие с Threat Prevention API ваши возможности по проверке файлов значительно расширяются, так как теперь вы можете проверять файлы сразу в нескольких платформах (интересным выглядит проверка в &lt;A href="https://developers.virustotal.com/reference" rel="noopener noreferrer nofollow" target="_blank"&gt;&lt;STRONG&gt;VirusTotal API&lt;/STRONG&gt;&lt;/A&gt;, а затем в песочнице Check Point), а файлы получать не только из сетевого трафика, но и забирать их из любых сетевых дисков и, например, CRM систем.&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
    <pubDate>Fri, 11 Sep 2020 11:46:38 GMT</pubDate>
    <dc:creator>oldflint</dc:creator>
    <dc:date>2020-09-11T11:46:38Z</dc:date>
    <item>
      <title>Взаимодействие с Check Point SandBlast через API</title>
      <link>https://community.checkpoint.com/t5/Russian/%D0%92%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D0%B5-%D1%81-Check-Point-SandBlast-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-API/m-p/96566#M197</link>
      <description>&lt;H1 data-pm-slice="1 1 []"&gt;Взаимодействие с Check Point SandBlast через API&lt;/H1&gt;
&lt;FIGURE class="full-width "&gt;
&lt;DIV id="tinyMceEditoroldflint_0" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;FIGCAPTION&gt;&lt;/FIGCAPTION&gt;
&lt;/FIGURE&gt;
&lt;P&gt;Эта статья будет полезна тем, кто знаком с технологиями &lt;STRONG&gt;Check Point&lt;/STRONG&gt; по эмуляции файлов (&lt;STRONG&gt;Threat Emulation&lt;/STRONG&gt;) и проактивной очистке файлов (&lt;STRONG&gt;Threat Extraction&lt;/STRONG&gt;) и желает сделать шаг в сторону автоматизации данных задач. У Check Point есть &lt;A href="https://sc1.checkpoint.com/documents/TPAPI/CP_1.0_ThreatPreventionAPI_APIRefGuide/html_frameset.htm" rel="noopener noreferrer nofollow" target="_blank"&gt;&lt;STRONG&gt;Threat Prevention API&lt;/STRONG&gt;&lt;/A&gt;, который работает как в облаке , так и на локальных устройствах, и &lt;STRONG&gt;функционально он идентичен проверке файлов в потоках web/smtp/ftp/smb/nfs трафика&lt;/STRONG&gt;. Данная статья отчасти является авторской трактовкой набора статей из официальной документации, но построенная на своем опыте эксплуатации и на собственных примерах. Также в статье вы найдете авторские коллекции Postman для работы с Threat Prevention API.&lt;/P&gt;
&lt;H2&gt;Основные сокращения&lt;/H2&gt;
&lt;P&gt;Threat Prevention API работает с тремя основными компонентами, которые в API вызываются через следующие текстовые значения:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;av&lt;/STRONG&gt; - компонент Anti-Virus, отвечает за сигнатурный анализ известных угроз.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;te&lt;/STRONG&gt; - компонент Threat Emulation, отвечает за проверку файлов в песочнице, и вынесение вердикта зловредный (malicious)/чистый(benign) после эмуляции.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;extraction&lt;/STRONG&gt; - компонент Threat Extraction, отвечающий за быструю конвертацию офисных документов в безопасный вид (в котором удаляется весь потенциально вредоносный контент), в целях их быстрой доставки пользователям/системам.&lt;/P&gt;
&lt;H2&gt;Структура API и основные ограничения&lt;/H2&gt;
&lt;P&gt;Threat Prevention API использует всего 4 запроса - &lt;STRONG&gt;upload, query, download и quota&lt;/STRONG&gt;. В заголовке для всех четырех запросов нужно передать API ключ, используя параметр &lt;STRONG&gt;Authorization&lt;/STRONG&gt;. На первый взгляд, структура может показаться гораздо проще, чем в &lt;A href="https://sc1.checkpoint.com/documents/latest/APIs/#introduction~v1.6.1" rel="noopener noreferrer nofollow" target="_blank"&gt;&lt;STRONG&gt;Management API&lt;/STRONG&gt;&lt;/A&gt;, но количество полей в запросах upload и query и структура этих запросов достаточно комплексные. Их можно функционально сравнить с профилями Threat Prevention в политике безопасности шлюза/песочницы.&lt;/P&gt;
&lt;P&gt;На данный момент, выпущена единственная версия Threat Prevention API - 1.0, в URL для API вызовов следует указывать &lt;STRONG&gt;v1&lt;/STRONG&gt; в той части, где требуется указать версию. В отличии от Management API, указывать версию API в URL адресе обязательно, иначе запрос не выполнится.&lt;/P&gt;
&lt;P&gt;Компонент Anti-Virus при вызове без других компонентов (te, extraction) на данный момент поддерживает только запросы query с md5 хэш суммами. Threat Emulation и Threat Extraction поддерживает также sha1 и sha256 хэш суммы.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Очень важно не делать ошибок в запросах!&lt;/STRONG&gt; Запрос может быть исполнен без ошибки, но не полностью. Чуть забегая вперед рассмотрим что может происходить при ошибках/опечатках в запросах.&lt;/P&gt;
&lt;P&gt;Запрос с опечаткой с слове reports(reportss):&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{ "request":  [  

		{	
			"sha256": {{sha256}},
			"features": ["te"] , 
			"te": {
				"images": [
                    {
                        "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
                        "revision": 1
                    }
                ],
                reportss: ["tar", "pdf", "xml"]
            }
		}
	] 
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;В ответе ошибки не будет, но при этом информации об отчетах не будет вовсе&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "The request has been fully answered."
      },
      "sha256": "9cc488fa6209caeb201678f8360a6bb806bd2f85b59d108517ddbbf90baec33a",
      "file_type": "pdf",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 3,
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      }
    }
  ]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&amp;nbsp;А вот на запрос без опечатки в ключе reports&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{ "request":  [  

		{	
			"sha256": {{sha256}},
			"features": ["te"] , 
			"te": {
				"images": [
                    {
                        "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
                        "revision": 1
                    }
                ],
                reports: ["tar", "pdf", "xml"]
            }
		}
	] 
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;Мы получаем ответ, в котором уже содержатся id для загрузки отчетов&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "The request has been fully answered."
      },
      "sha256": "9cc488fa6209caeb201678f8360a6bb806bd2f85b59d108517ddbbf90baec33a",
      "file_type": "pdf",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious",
              "full_report": "b684066e-e41c-481a-a5b4-be43c27d8b65",
              "pdf_report": "e48f14f1-bcc7-4776-b04b-1a0a09335115",
              "xml_report": "d416d4a9-4b7c-4d6d-84b9-62545c588963"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 3,
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      }
    }
  ]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P data-pm-slice="1 1 []"&gt;Если же отправить неправильный/просроченный API ключ, то в ответ получим ошибку 403.&lt;/P&gt;
&lt;H3&gt;SandBlast API: в облаке и на локальных устройствах&lt;/H3&gt;
&lt;P&gt;API запросы можно отправлять на устройства Check Point, на которых включен компонент (blade) Threat Emulation. В качестве адреса для запросов нужно использовать ip/url устройства и порт 18194 (например - https://&lt;STRONG&gt;&lt;EM&gt;10.10.57.19:18194&lt;/EM&gt;&lt;/STRONG&gt;/tecloud/api/v1/file/query). Также следует убедиться в том, что политикой безопасности на устройстве разрешено такое подключение. Авторизация через API ключ на локальных устройствах по умолчанию &lt;STRONG&gt;выключена&lt;/STRONG&gt; и ключ Authorization в заголовках запросов можно не отправлять вовсе.&lt;/P&gt;
&lt;P&gt;API запросы в облако CheckPoint нужно отправлять на адрес &lt;STRONG&gt;te.checkpoint.com&lt;/STRONG&gt; (например - https://&lt;STRONG&gt;&lt;EM&gt;te.checkpoint.com&lt;/EM&gt;&lt;/STRONG&gt;/tecloud/api/v1/file/query). API ключ можно получить в виде триальной лицензии на 60 дней, обратившись к партнерам Check Point или в локальный офис компании.&lt;/P&gt;
&lt;P&gt;На локальных устройствах Threat Extraction пока не поддерживается в стандартном &lt;A href="https://sc1.checkpoint.com/documents/TPAPI/CP_1.0_ThreatPreventionAPI_APIRefGuide/html_frameset.htm" rel="noopener noreferrer nofollow" target="_blank"&gt;Threat Prevention API &lt;/A&gt;и следует использовать &lt;A href="https://supportcenter.checkpoint.com/supportcenter/portal?eventSubmit_doGoviewsolutiondetails=&amp;amp;solutionid=sk137032&amp;amp;partition=Basic&amp;amp;product=Threat#Access%20the%20API" rel="noopener noreferrer nofollow" target="_blank"&gt;&lt;STRONG&gt;Threat Prevention API for Security Gateway&lt;/STRONG&gt;&lt;/A&gt; (о нем мы поговорим подробнее в конце статьи).&lt;/P&gt;
&lt;P&gt;Локальные устройства не поддерживают запрос quota.&lt;/P&gt;
&lt;P&gt;В остальном отличий между запросами к локальным устройствам и к облаку нет.&lt;/P&gt;
&lt;H2&gt;Вызов Upload API&lt;/H2&gt;
&lt;P&gt;Используемый метод - &lt;STRONG&gt;POST&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Адрес для вызова - &lt;STRONG&gt;https://&lt;EM&gt;&amp;lt;service_address&amp;gt;&lt;/EM&gt;/tecloud/api/v1/file/upload&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Запрос состоит из двух частей (form-data): файла предназначенный для эмуляции/очистки и тела запроса с текстом.&lt;/P&gt;
&lt;P&gt;Текстовый запрос не может быть пустым, но при этом может не содержать никакой конфигурации. Для того, чтобы запрос был успешным, нужно отправить минимум следующий текст в запросе:&lt;/P&gt;
&lt;P&gt;Необходимый минимум для запроса upload&lt;/P&gt;
&lt;LI-SPOILER&gt;
&lt;DIV class="table" data-pm-slice="4 4 [&amp;quot;spoiler&amp;quot;,null]"&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;HTTP POST&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;https://&lt;EM&gt;&amp;lt;service_address&amp;gt;&lt;/EM&gt;/tecloud/api/v1/file/upload&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;Headers:&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Authorization: &lt;EM&gt;&amp;lt;api_key&amp;gt;&lt;/EM&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;Body&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;"request":&amp;nbsp;{&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;File&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;File&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/LI-SPOILER&gt;
&lt;P data-pm-slice="1 1 []"&gt;В таком случае файл на обработку попадет в соответствии с параметрами по умолчанию: компонент - &lt;STRONG&gt;te&lt;/STRONG&gt;, образы ОС - &lt;STRONG&gt;Win XP и Win 7&lt;/STRONG&gt;, без генерации отчета.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Комментарии по основным полям в текстовом запросе:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;file_name&lt;/STRONG&gt; и &lt;STRONG&gt;file_type&lt;/STRONG&gt; можно оставить пустыми или не отправлять вовсе, так как это не особо полезная информация при загрузке файла. В API ответе данные поля заполнятся автоматически на основе имени загружаемого файла, а информацию в кэше все равно придется искать по md5/sha1/sha256 hash суммам.&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 18px; background-color: #ffffff;"&gt;Пример запроса с пустыми file_name и file_type&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{

"request": {

"file_name": "",

"file_type": "",

}

}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P data-pm-slice="1 1 []"&gt;&lt;STRONG&gt;features&lt;/STRONG&gt; - список, в котором указывается необходимый функционал при обработке в песочнице - av (Anti-Virus), te (Threat Emulation), extraction (Threat Extraction). Если данный параметр не передать вовсе, то будет задействован только компонент по умолчанию - te(Threat Emulation).&lt;/P&gt;
&lt;P&gt;Чтобы включить проверку в трех доступных компонентах, нужно указать эти компоненты в API запросе.&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 18px; background-color: #ffffff;"&gt;Пример запроса с проверкой в av, te и extraction&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{ "request":  [  

		{	
			"sha256": {{sha256}},
			"features": ["av", "te", "extraction"]  
		}
	] 
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;H4 data-pm-slice="1 1 []"&gt;Ключи в разделе te&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;images&lt;/STRONG&gt; - список, внутри которого должны быть указаны словари с id и номером ревизии операционных систем, в которых будет выполняться проверка. ID и номера ревизий одинаковые для всех локальных устройств и облака.&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 18px; background-color: #ffffff;"&gt;Список операционных систем и ревизий&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-SPOILER&gt;
&lt;DIV class="table" data-pm-slice="4 4 [&amp;quot;spoiler&amp;quot;,null]"&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;
&lt;P&gt;&lt;STRONG&gt;Available OS Image ID&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TH&gt;
&lt;TH&gt;
&lt;P&gt;&lt;STRONG&gt;Revision&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TH&gt;
&lt;TH&gt;
&lt;P&gt;&lt;STRONG&gt;Image OS and Application&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TH&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;e50e99f3-5963-4573-af9e-e3f4750b55e2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Windows&lt;/STRONG&gt;: XP - 32bit SP3&lt;BR /&gt;&lt;STRONG&gt;Office&lt;/STRONG&gt;: 2003, 2007&lt;BR /&gt;&lt;STRONG&gt;Adobe Acrobat Reader&lt;/STRONG&gt;: 9.0&lt;BR /&gt;&lt;STRONG&gt;Flash Player&lt;/STRONG&gt;&amp;nbsp;9r115 and&amp;nbsp;&lt;STRONG&gt;ActiveX&lt;/STRONG&gt;&amp;nbsp;10.0&lt;BR /&gt;&lt;STRONG&gt;Java Runtime:&lt;/STRONG&gt;&amp;nbsp;1.6.0u22&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;7e6fe36e-889e-4c25-8704-56378f0830df&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Windows&lt;/STRONG&gt;: 7 - 32bit&lt;BR /&gt;&lt;STRONG&gt;Office&lt;/STRONG&gt;: 2003, 2007&lt;BR /&gt;&lt;STRONG&gt;Adobe Acrobat Reader&lt;/STRONG&gt;: 9.0&lt;BR /&gt;&lt;STRONG&gt;Flash Player:&lt;/STRONG&gt;&amp;nbsp;10.2r152 (&lt;STRONG&gt;Plugin&lt;/STRONG&gt;&amp;amp;&amp;nbsp;&lt;STRONG&gt;ActiveX&lt;/STRONG&gt;)&lt;BR /&gt;&lt;STRONG&gt;Java Runtime:&lt;/STRONG&gt;&amp;nbsp;1.6.0u0&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;8d188031-1010-4466-828b-0cd13d4303ff&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Windows&lt;/STRONG&gt;: 7 - 32bit&lt;BR /&gt;&lt;STRONG&gt;Office&lt;/STRONG&gt;: 2010&lt;BR /&gt;&lt;STRONG&gt;Adobe Acrobat Reader&lt;/STRONG&gt;: 9.4&lt;BR /&gt;&lt;STRONG&gt;Flash Player:&lt;/STRONG&gt;&amp;nbsp;11.0.1.152 (&lt;STRONG&gt;Plugin&lt;/STRONG&gt;&amp;nbsp;&amp;amp;&amp;nbsp;&lt;STRONG&gt;ActiveX&lt;/STRONG&gt;)&lt;BR /&gt;&lt;STRONG&gt;Java Runtime:&lt;/STRONG&gt;&amp;nbsp;1.7.0u0&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;5e5de275-a103-4f67-b55b-47532918fa59&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Windows&lt;/STRONG&gt;: 7 - 32bit&lt;BR /&gt;&lt;STRONG&gt;Office&lt;/STRONG&gt;: 2013&lt;BR /&gt;&lt;STRONG&gt;Adobe Acrobat Reader&lt;/STRONG&gt;: 11.0&lt;BR /&gt;&lt;STRONG&gt;Flash Player:&lt;/STRONG&gt;&amp;nbsp;15 (&lt;STRONG&gt;Plugin&lt;/STRONG&gt;&amp;nbsp;&amp;amp;&amp;nbsp;&lt;STRONG&gt;ActiveX&lt;/STRONG&gt;)&lt;BR /&gt;&lt;STRONG&gt;Java Runtime:&lt;/STRONG&gt;&amp;nbsp;1.7.0u9&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;3ff3ddae-e7fd-4969-818c-d5f1a2be336d&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Windows&lt;/STRONG&gt;: 7 - 64bit&lt;BR /&gt;&lt;STRONG&gt;Office&lt;/STRONG&gt;: 2013 (32bit)&lt;BR /&gt;&lt;STRONG&gt;Adobe Acrobat Reader&lt;/STRONG&gt;: 11.0.01&lt;BR /&gt;&lt;STRONG&gt;Flash Player:&lt;/STRONG&gt;&amp;nbsp;13 (&lt;STRONG&gt;Plugin&lt;/STRONG&gt;&amp;nbsp;&amp;amp;&amp;nbsp;&lt;STRONG&gt;ActiveX&lt;/STRONG&gt;)&lt;BR /&gt;&lt;STRONG&gt;Java Runtime:&lt;/STRONG&gt;&amp;nbsp;1.7.0u9&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;6c453c9b-20f7-471a-956c-3198a868dc92&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;1&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Windows&lt;/STRONG&gt;: 8.1 - 64bit&lt;BR /&gt;&lt;STRONG&gt;Office&lt;/STRONG&gt;: 2013 (64bit)&lt;BR /&gt;&lt;STRONG&gt;Adobe Acrobat Reader&lt;/STRONG&gt;: 11.0.10&lt;BR /&gt;&lt;STRONG&gt;Flash Player:&lt;/STRONG&gt;&amp;nbsp;18.0.0.160 (&lt;STRONG&gt;Plugin&lt;/STRONG&gt;&amp;nbsp;&amp;amp;&amp;nbsp;&lt;STRONG&gt;ActiveX&lt;/STRONG&gt;)&lt;BR /&gt;&lt;STRONG&gt;Java Runtime:&lt;/STRONG&gt;&amp;nbsp;1.7.0u9&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;10b4a9c6-e414-425c-ae8b-fe4dd7b25244&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Windows&lt;/STRONG&gt;: 10&lt;BR /&gt;&lt;STRONG&gt;Office&lt;/STRONG&gt;: Professional Plus 2016 en-us&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&lt;STRONG&gt;Adobe Acrobat Reader&lt;/STRONG&gt;: DC 2015 MUI&lt;BR /&gt;&lt;STRONG&gt;Flash Player:&lt;/STRONG&gt;&amp;nbsp;20 (&lt;STRONG&gt;Plugin&lt;/STRONG&gt;&amp;nbsp;&amp;amp;&amp;nbsp;&lt;STRONG&gt;ActiveX&lt;/STRONG&gt;)&lt;BR /&gt;&lt;STRONG&gt;Java Runtime:&lt;/STRONG&gt;&amp;nbsp;1.7.0u9&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/LI-SPOILER&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-pm-slice="1 3 []"&gt;Если ключ images не указать вовсе, то эмуляция будет проходить в образах, рекомендованных Check Point (на данный момент это Win XP и Win 7). Данные образы рекомендованы исходя из соображений наилучшего баланса производительности и catch rate.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;reports &lt;/STRONG&gt;- список отчетов, которые мы запрашиваем на случай, если файл окажется вредоносным. Доступны следующие варианты:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;summary&lt;/STRONG&gt; - .tar.gz архив, содержащий в себе отчет об эмуляции по &lt;STRONG&gt;всем&lt;/STRONG&gt; запрошенным image'ам (как html страницу, так и такие компоненты как видеоролик из ОС эмулятора, дамп сетевого трафика, отчет в json, так и сам сэмпл в архиве под защитой пароля). В ответе ищем ключ - &lt;STRONG&gt;summary_report &lt;/STRONG&gt;для последующей загрузки отчета.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;pdf&lt;/STRONG&gt; - документ об эмуляции в &lt;STRONG&gt;одном&lt;/STRONG&gt; image, который многие привыкли получать через Smart Console. В ответе ищем ключ - &lt;STRONG&gt;pdf_report &lt;/STRONG&gt;для последующей загрузки отчета.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;xml&lt;/STRONG&gt; - документ об эмуляции в &lt;STRONG&gt;одном&lt;/STRONG&gt; image, удобный для последующего парсинга параметров в отчете. В ответе ищем ключ - &lt;STRONG&gt;xml_report &lt;/STRONG&gt;для последующей загрузки отчета.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P data-pm-slice="1 1 [&amp;quot;list&amp;quot;,null,&amp;quot;listitem&amp;quot;,null]"&gt;&lt;STRONG&gt;tar&lt;/STRONG&gt; - .tar.gz архив, содержащий в себе отчет об эмуляции в &lt;STRONG&gt;одном&lt;/STRONG&gt; запрошенным image'ам (как html страницу, так и такие компоненты как видеоролик из ОС эмулятора, дамп сетевого трафика, отчет в json, так и сам сэмпл в архиве под защитой пароля). В ответе ищем ключ - &lt;STRONG&gt;full_report &lt;/STRONG&gt;для последующей загрузки отчета.&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;SPAN style="font-size: 18px; background-color: #ffffff;"&gt;Что внутри отчета summary&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2020-09-04 at 12.00.07.png" style="width: 784px;"&gt;&lt;img src="https://community.checkpoint.com/t5/image/serverpage/image-id/8038i51D8097B590F9609/image-size/large?v=v2&amp;amp;px=999" role="button" title="Screenshot 2020-09-04 at 12.00.07.png" alt="Screenshot 2020-09-04 at 12.00.07.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 18px; background-color: #ffffff;"&gt;Ключи full_report, pdf_report, xml_report есть в словаре для каждой ОС&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "The request has been fully answered."
      },
      "sha256": "9e6f07d03b37db0d3902bde4e239687a9e3d650e8c368188c7095750e24ad2d5",
      "file_type": "html",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious",
              "full_report": "8d18067e-b24d-4103-8469-0117cd25eea9",
              "pdf_report": "05848b2a-4cfd-494d-b949-6cfe15d0dc0b",
              "xml_report": "ecb17c9d-8607-4904-af49-0970722dd5c8"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          },
          {
            "report": {
              "verdict": "malicious",
              "full_report": "d7c27012-8e0c-4c7e-8472-46cc895d9185",
              "pdf_report": "488e850c-7c96-4da9-9bc9-7195506afe03",
              "xml_report": "e5a3a78d-c8f0-4044-84c2-39dc80ddaea2"
            },
            "status": "found",
            "id": "6c453c9b-20f7-471a-956c-3198a868dc92",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 3,
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      }
    }
  ]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&lt;SPAN style="font-size: 18px; background-color: #ffffff;"&gt;&lt;SPAN&gt;А вот ключ summary_report - есть один для эмуляции в целом&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "The request has been fully answered."
      },
      "sha256": "d57eadb7b2f91eea66ea77a9e098d049c4ecebd5a4c70fb984688df08d1fa833",
      "file_type": "exe",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious",
              "full_report": "c9a1767b-741e-49da-996f-7d632296cf9f",
              "xml_report": "cc4dbea9-518c-4e59-b6a3-4ea463ca384b"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          },
          {
            "report": {
              "verdict": "malicious",
              "full_report": "ba520713-8c0b-4672-a12f-0b4a1575b913",
              "xml_report": "87bdb8ca-dc44-449d-a9ab-2d95e7fe2503"
            },
            "status": "found",
            "id": "6c453c9b-20f7-471a-956c-3198a868dc92",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 3,
        "summary_report": "7e7db12d-5df6-4e14-85f3-2c1e29cd3e34",
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      }
    }
  ]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;Можно запросить одновременно отчеты tar и xml и pdf, можно summary и tar и xml. Одновременно запросить summary отчет и pdf не получится.&lt;/P&gt;
&lt;H4&gt;Ключи в разделе extraction&lt;/H4&gt;
&lt;P&gt;Для threat extraction используется всего два ключа:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;method&lt;/STRONG&gt; - pdf(конвертация в pdf, используется по умолчанию) или clean(очистка активного содержимого).&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;extracted_parts_codes&lt;/STRONG&gt; - список кодов для удаления активного содержимого, применимо только для метода clean&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Коды для удаления содержимого из файлов&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;
&lt;P&gt;&lt;STRONG&gt;Code&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TH&gt;
&lt;TH&gt;
&lt;P&gt;&lt;STRONG&gt;Description&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TH&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1025&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Linked Objects&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1026&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Macros and Code&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1034&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Sensitive Hyperlinks&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1137&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;PDF GoToR Actions&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1139&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;PDF Launch Actions&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1141&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;PDF URI Actions&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1142&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;PDF Sound Actions&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1143&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;PDF Movie Actions&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1150&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;PDF JavaScript Actions&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1151&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;PDF Submit Form Actions&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1018&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Database Queries&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1019&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Embedded Objects&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1021&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Fast Save Data&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Custom Properties&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1036&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Statistic Properties&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;1037&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Summary Properties&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/LI-SPOILER&gt;
&lt;P&gt;&lt;SPAN&gt;Для загрузки очищенной копии потребуется сделать ещё и запрос query (о нем пойдет речь далее) через несколько секунд, указав hash сумму файла и компонент extraction в тексте запроса. Забрать очищенный файл можно будет с помощью id из ответа на запрос query - extracted_file_download_id. Ещё раз, чуть забегая вперед, привожу примеры запроса и ответа query для поиска id на загрузку очищенного документа.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Запрос query для поиска ключа extracted_file_download_id&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{ "request":  [  

		{	
			"sha256": "9a346005ee8c9adb489072eb8b5b61699652962c17596de9c326ca68247a8876",
			"features": ["extraction"] , 
			"extraction": {
		        "method": "pdf"
            }
		}
	] 
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&lt;SPAN&gt;Ответ на запрос query (найдите ключ extracted_file_download_id)&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
    "response": [
        {
            "status": {
                "code": 1001,
                "label": "FOUND",
                "message": "The request has been fully answered."
            },
            "sha256": "9a346005ee8c9adb489072eb8b5b61699652962c17596de9c326ca68247a8876",
            "file_type": "",
            "file_name": "",
            "features": [
                "extraction"
            ],
            "extraction": {
                "method": "pdf",
                "extract_result": "CP_EXTRACT_RESULT_SUCCESS",
                "extracted_file_download_id": "b5f2b34e-3603-4627-9e0e-54665a531ab2",
                "output_file_name": "kp-20-xls.cleaned.xls.pdf",
                "time": "0.013",
                "extract_content": "Macros and Code",
                "extraction_data": {
                    "input_extension": "xls",
                    "input_real_extension": "xls",
                    "message": "OK",
                    "output_file_name": "kp-20-xls.cleaned.xls.pdf",
                    "protection_name": "Potential malicious content extracted",
                    "protection_type": "Conversion to PDF",
                    "protocol_version": "1.0",
                    "risk": 5.0,
                    "scrub_activity": "Active content was found - XLS file was converted to PDF",
                    "scrub_method": "Convert to PDF",
                    "scrub_result": 0.0,
                    "scrub_time": "0.013",
                    "scrubbed_content": "Macros and Code"
                },
                "tex_product": false,
                "status": {
                    "code": 1001,
                    "label": "FOUND",
                    "message": "The request has been fully answered."
                }
            }
        }
    ]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;H4&gt;Общие сведения&lt;/H4&gt;
&lt;P&gt;В одном API вызове можно отправить только один файл на проверку.&lt;/P&gt;
&lt;P&gt;Компонент av не требует дополнительного раздела с ключами, достаточно указать его в словаре &lt;STRONG&gt;features&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H2&gt;Вызов Query API&lt;/H2&gt;
&lt;P&gt;Используемый метод - &lt;STRONG&gt;POST&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Адрес для вызова - &lt;STRONG&gt;https://&lt;/STRONG&gt;&lt;EM&gt;&lt;STRONG&gt;&amp;lt;service_address&amp;gt;&lt;/STRONG&gt;&lt;/EM&gt;&lt;STRONG&gt;/tecloud/api/v1/file/query&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Перед тем как отправлять файл на загрузку (запрос upload), желательно выполнить проверку кэша песочницы (запрос query) в целях оптимизации нагрузки на API сервер, так как возможно на API сервере уже есть информация и вердикт по загружаемому файлу. Вызов состоит только из текстовой части. Обязательная часть запроса - sha1/sha256/md5 hash сумма файла. Её кстати можно получить в ответе на запрос upload.&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Необходимый минимум для запроса query&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;HTTP POST
https://&amp;lt;service_address&amp;gt;/tecloud/api/v1/file/query
Headers:
Authorization: &amp;lt;api_key&amp;gt;
Body
{
"request": {
"sha256": &amp;lt;sha256 hash sum&amp;gt;
}
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&lt;SPAN&gt;Пример ответа на запрос upload, где видны sha1/md5/sha256 hash суммы&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
  "response": {
    "status": {
      "code": 1002,
      "label": "UPLOAD_SUCCESS",
      "message": "The file was uploaded successfully."
    },
    "sha1": "954b5a851993d49ef8b2412b44f213153bfbdb32",
    "md5": "ac29b7c26e7dcf6c6fdb13ac0efe98ec",
    "sha256": "313c0feb009356495b7f4a60e96737120beb30e1912c6d866218cee830aebd90",
    "file_type": "",
    "file_name": "kp-20-doc.doc",
    "features": [
      "te"
    ],
    "te": {
      "trust": 0,
      "images": [
        {
          "report": {
            "verdict": "unknown"
          },
          "status": "not_found",
          "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
          "revision": 1
        }
      ],
      "score": -2147483648,
      "status": {
        "code": 1002,
        "label": "UPLOAD_SUCCESS",
        "message": "The file was uploaded successfully."
      }
    }
  }
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;Запрос query помимо hash суммы в идеале должен быть таким же, как был (или планируется быть) запрос upload, или даже "уже" (содержать в запросе query меньше полей чем в запросе upload). В случае, когда запрос query содержит в себе больше полей, чем было в запросе upload, вы получите в ответе не всю требуемую информацию.&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Вот пример ответа на запрос query, где были найдены не все требуемые данные&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
  "response": [
    {
      "status": {
        "code": 1006,
        "label": "PARTIALLY_FOUND",
        "message": "The request cannot be fully answered at this time."
      },
      "sha256": "313c0feb009356495b7f4a60e96737120beb30e1912c6d866218cee830aebd90",
      "file_type": "doc",
      "file_name": "",
      "features": [
        "te",
        "extraction"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious",
              "pdf_report": "4e9cddaf-03a4-489f-aa03-3c18f8d57a52",
              "xml_report": "9c18018f-c761-4dea-9372-6a12fcb15170"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 1,
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      },
      "extraction": {
        "method": "pdf",
        "tex_product": false,
        "status": {
          "code": 1004,
          "label": "NOT_FOUND",
          "message": "Could not find the requested file. Please upload it."
        }
      }
    }
  ]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&lt;SPAN&gt;Обратите внимание на поля &lt;STRONG&gt;code&lt;/STRONG&gt; и &lt;STRONG&gt;label&lt;/STRONG&gt;. Данные поля встречаются три раза в словарях status. Вначале видим глобальный ключ "code": 1006 и "label": "PARTIALLY_FOUND". Далее данные ключи встречаются по каждому отдельному компоненту, которые мы запросили - te и extraction. И если для te понятно, что данные найдены, то для extraction информация отсутствует.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Вот так выглядел запрос query для примера выше&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{ "request":  [  

		{	
			"sha256": {{sha256}},
			"features": ["te", "extraction"] , 
			"te": {
				"images": [
                    {
                        "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
                        "revision": 1
                    }
                ],
                "reports": [
                    "xml", "pdf"
                ]
            }
		}
	] 
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&lt;SPAN&gt;Если отправить запрос query без компонента extraction&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{ "request":  [  

		{	
			"sha256": {{sha256}},
			"features": ["te"] , 
			"te": {
				"images": [
                    {
                        "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
                        "revision": 1
                    }
                ],
                "reports": [
                    "xml", "pdf"
                ]
            }
		}
	] 
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&lt;SPAN&gt;То и в ответе будет полная информация ("code": 1001, "label": "FOUND")&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "The request has been fully answered."
      },
      "sha256": "313c0feb009356495b7f4a60e96737120beb30e1912c6d866218cee830aebd90",
      "file_type": "doc",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious",
              "pdf_report": "4e9cddaf-03a4-489f-aa03-3c18f8d57a52",
              "xml_report": "9c18018f-c761-4dea-9372-6a12fcb15170"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 1,
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      }
    }
  ]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&lt;SPAN&gt;Если никакой информации в кэше нет вовсе, то в ответе будет "label": "NOT_FOUND"&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
  "response": [
    {
      "status": {
        "code": 1004,
        "label": "NOT_FOUND",
        "message": "Could not find the requested file. Please upload it."
      },
      "sha256": "313c0feb009356495b7f4a60e96737120beb30e1912c6d866218cee830aebd91",
      "file_type": "",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 0,
        "images": [
          {
            "report": {
              "verdict": "unknown"
            },
            "status": "not_found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "status": {
          "code": 1004,
          "label": "NOT_FOUND",
          "message": "Could not find the requested file. Please upload it."
        }
      }
    }
  ]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;В одном API вызове можно отправить сразу несколько хэш сумм на проверку. В ответе будут возвращены данные в том же самом порядке, как они были отправлены в запросе.&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Пример запроса query с несколькими sha256 суммами&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{ "request":  [  

		{	
			"sha256": "b84531d3829bf6131655773a3863d6b16f6389b7f4036aef9b81c0cb60e7fd81"
        },
        		{	
			"sha256": "b84531d3829bf6131655773a3863d6b16f6389b7f4036aef9b81c0cb60e7fd82"
        }
	] 
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&lt;SPAN&gt;Ответ на запрос query с несколькими sha256 суммами&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "The request has been fully answered."
      },
      "sha256": "b84531d3829bf6131655773a3863d6b16f6389b7f4036aef9b81c0cb60e7fd81",
      "file_type": "dll",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 3,
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      }
    },
    {
      "status": {
        "code": 1004,
        "label": "NOT_FOUND",
        "message": "Could not find the requested file. Please upload it."
      },
      "sha256": "b84531d3829bf6131655773a3863d6b16f6389b7f4036aef9b81c0cb60e7fd82",
      "file_type": "",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 0,
        "images": [
          {
            "report": {
              "verdict": "unknown"
            },
            "status": "not_found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "status": {
          "code": 1004,
          "label": "NOT_FOUND",
          "message": "Could not find the requested file. Please upload it."
        }
      }
    }
  ]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;Запрос сразу нескольких hash сумму в запросе query также благоприятно скажется на производительности API сервера.&lt;/P&gt;
&lt;H2&gt;Вызов Download API&lt;/H2&gt;
&lt;P&gt;Используемый метод - &lt;STRONG&gt;POST &lt;/STRONG&gt;(согласно документации), &lt;STRONG&gt;GET &lt;/STRONG&gt;также работает (и может показаться более логичным)&lt;/P&gt;
&lt;P&gt;Адрес для вызова - &lt;STRONG&gt;https://&lt;/STRONG&gt;&lt;EM&gt;&lt;STRONG&gt;&amp;lt;service_address&amp;gt;&lt;/STRONG&gt;&lt;/EM&gt;&lt;STRONG&gt;/tecloud/api/v1/file/download?id=&lt;/STRONG&gt;&lt;EM&gt;&lt;STRONG&gt;&amp;lt;id&amp;gt;&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;В заголовке требуется передать API ключ, тело запроса - пустое, id для загрузки передается в url адресе.&lt;/P&gt;
&lt;P&gt;В ответ на query запрос, в случае если эмуляция завершена и при загрузке файла были запрошены отчеты, будут видны id для загрузки отчетов. В случае, если запрашивается очищенная копия, то следует искать id для загрузки очищенного документа.&lt;/P&gt;
&lt;P&gt;Итого, ключами в ответе на запрос query, содержащими значение id для загрузки могут быть:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;summary_report&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;full_report&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;pdf_report&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;xml_report&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;extracted_file_download_id&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Безусловно, чтобы в ответе на запрос query были получена эти ключи, их нужно указать в запросе (для отчетов) или не забыть сделать запрос по функции extraction (для очищенных документов)&lt;/P&gt;
&lt;H3&gt;Вызов Quota API&lt;/H3&gt;
&lt;P&gt;Используемый метод - &lt;STRONG&gt;POST&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Адрес для вызова - &lt;STRONG&gt;https://&lt;/STRONG&gt;&lt;EM&gt;&lt;STRONG&gt;&amp;lt;service_address&amp;gt;&lt;/STRONG&gt;&lt;/EM&gt;&lt;STRONG&gt;/tecloud/api/v1/file/quota&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Для проверки оставшейся квоты в облаке используется запрос quota. Тело запроса пустое.&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Пример ответа на запрос quota&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
  "response": [
    {
      "remain_quota_hour": 1250,
      "remain_quota_month": 10000000,
      "assigned_quota_hour": 1250,
      "assigned_quota_month": 10000000,
      "hourly_quota_next_reset": "1599141600",
      "monthly_quota_next_reset": "1601510400",
      "quota_id": "TEST",
      "cloud_monthly_quota_period_start": "1421712300",
      "cloud_monthly_quota_usage_for_this_gw": 0,
      "cloud_hourly_quota_usage_for_this_gw": 0,
      "cloud_monthly_quota_usage_for_quota_id": 0,
      "cloud_hourly_quota_usage_for_quota_id": 0,
      "monthly_exceeded_quota": 0,
      "hourly_exceeded_quota": 0,
      "cloud_quota_max_allow_to_exceed_percentage": 1000,
      "pod_time_gmt": "1599138715",
      "quota_expiration": "0",
      "action": "ALLOW"
    }
  ]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;H2&gt;Threat Prevention API for Security Gateway&lt;/H2&gt;
&lt;P&gt;Данный API был разработан раньше, чем Threat Prevention API и предназначен только для локальных устройств. На данный момент он может быть полезен только в том случае, если вам нужен Threat Extraction API. Для Threat Emulation лучше использовать обычный Threat Prevention API. Чтобы включить &lt;STRONG&gt;TP API for SG&lt;/STRONG&gt; и сконфигурировать API ключ требуется выполнить действия из &lt;A href="https://supportcenter.checkpoint.com/supportcenter/portal?eventSubmit_doGoviewsolutiondetails=&amp;amp;solutionid=sk113599" rel="noopener noreferrer nofollow" target="_blank"&gt;&lt;STRONG&gt;sk113599&lt;/STRONG&gt;&lt;/A&gt;. Рекомендую обратить внимание на шаг 6b и проверить доступность страницы &lt;EM&gt;https://&amp;lt;IPAddressofSecurityGateway&amp;gt;/UserCheck/TPAPI &lt;/EM&gt;потому как в случае отрицательного результата дальнейшая конфигурация не имеет смысла. На данный url будут отправляться все API вызовы. Тип вызова (upload/query) регулируется в ключе тела вызова - &lt;EM&gt;&lt;STRONG&gt;request_name&lt;/STRONG&gt;. &lt;/EM&gt;Также обязательными ключами являются&lt;EM&gt; - api_key&lt;/EM&gt; (нужно запомнить его в процессе конфигурации) и &lt;EM&gt;protocol_version &lt;/EM&gt;(на данный момент актуальная версия 1.1). Официальную документацию для данного API вы можете найти в &lt;A href="https://supportcenter.checkpoint.com/supportcenter/portal?eventSubmit_doGoviewsolutiondetails=&amp;amp;solutionid=sk137032&amp;amp;partition=Basic&amp;amp;product=Threat" rel="noopener noreferrer nofollow" target="_blank"&gt;&lt;STRONG&gt;sk137032&lt;/STRONG&gt;&lt;/A&gt;. К относительным преимуществам можно отнести возможность отправлять сразу несколько файлов на эмуляцию при их загрузке, так как файлы отправляются в виде текстовой строки base64. Чтобы кодировать/декодировать файлы в/из base64 можно использовать для целей демонстрации в Postman онлайн конвертер, например - &lt;A href="https://base64.guru/" rel="noopener noreferrer nofollow" target="_blank"&gt;https://base64.guru&lt;/A&gt;. В практических целях при написании кода следует использовать встроенные методы encode и decode.&lt;/P&gt;
&lt;P&gt;Теперь остановимся подробнее на функциях &lt;STRONG&gt;te&lt;/STRONG&gt; и &lt;STRONG&gt;extraction&lt;/STRONG&gt; в данном API.&lt;/P&gt;
&lt;P&gt;Для компонента &lt;STRONG&gt;te&lt;/STRONG&gt; предусмотрен словарь &lt;STRONG&gt;te_options &lt;/STRONG&gt;в запросах upload/query, а ключи в данном запросе полностью совпадают с ключами te в &lt;A href="https://sc1.checkpoint.com/documents/TPAPI/CP_1.0_ThreatPreventionAPI_APIRefGuide/html_frameset.htm" rel="noopener noreferrer nofollow" target="_blank"&gt;Threat Prevention API&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Пример запроса для эмуляции файла в Win10 с отчетами&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
"request": [{
    "protocol_version": "1.1",
    "api_key": "&amp;lt;api_key&amp;gt;",
    "request_name": "UploadFile",
    "file_enc_data": "&amp;lt;base64_encoded_file&amp;gt;",
    "file_orig_name": "&amp;lt;filename&amp;gt;",
    "te_options": {
        "images": [
                {
                    "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
                    "revision": 1
                }
            ],
        "reports": ["summary", "xml"]
    }
    }
    ]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&lt;SPAN&gt;Для компонента &lt;STRONG&gt;extraction&lt;/STRONG&gt; предусмотрен словарь &lt;STRONG&gt;scrub_options&lt;/STRONG&gt;. В данном запросе указывается метод очистки: конвертация в PDF, очистка от активного содержимого или же выбрать режим в соответствии с профилем Threat Prevention(указывается имя профиля). Отличительной особенностью ответа на API запрос с extraction для файла является то, что вы получаете очищенную копию в ответе на этот запрос в виде шифрованной строки base64 (вам не нужно делать запрос query и искать id для загрузки документа)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Пример запроса на очистку файла&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;    {
	"request": [{
		"protocol_version": "1.1",
		"api_key": "&amp;lt;API_KEY&amp;gt;",
		"request_name": "UploadFile",
		"file_enc_data": "&amp;lt;base64_encoded_file&amp;gt;",
		"file_orig_name": "hi.txt",
		"scrub_options": {
			"scrub_method": 2
		}
	}]
}&lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&lt;SPAN&gt;Ответ на запрос&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-SPOILER&gt;&lt;LI-CODE lang="python"&gt;{
	"response": [{
		"protocol_version": "1.1",
		"src_ip": "&amp;lt;IP_ADDRESS&amp;gt;",
		"scrub": {
			"file_enc_data": "&amp;lt;base64_encoded_converted_to_PDF_file&amp;gt;",
			"input_real_extension": "js",
			"message": "OK",
			"orig_file_url": "",
			"output_file_name": "hi.cleaned.pdf",
			"protection_name": "Extract potentially malicious content",
			"protection_type": "Conversion to PDF",
			"real_extension": "txt",
			"risk": 0,
			"scrub_activity": "TXT file was converted to PDF",
			"scrub_method": "Convert to PDF",
			"scrub_result": 0,
			"scrub_time": "0.011",
			"scrubbed_content": ""
		}
	}]
} &lt;/LI-CODE&gt;&lt;/LI-SPOILER&gt;
&lt;DIV class="post__body post__body_full"&gt;
&lt;DIV id="post-content-body" class="post__text post__text_v2" data-io-article-url="https://habr.com/ru/post/517460/"&gt;
&lt;P&gt;Несмотря на то, что для получения очищенной копии требуется меньше API запросов, я считаю такой вариант менее предпочтительным и удобным, нежели запрос form-data, используемый в &lt;A href="https://sc1.checkpoint.com/documents/TPAPI/CP_1.0_ThreatPreventionAPI_APIRefGuide/html_frameset.htm" rel="noopener noreferrer nofollow" target="_blank"&gt;Threat Prevention API&lt;/A&gt;.&lt;/P&gt;
&lt;H2&gt;Коллекции Postman&lt;/H2&gt;
&lt;P&gt;Мною были созданы коллекции в Postman как для Threat Prevention API, так и для Threat Prevention API for Security Gateway, где представлены наиболее распространённые API запросы. Для того, чтобы ip/url API сервера и ключ подставлялись в запросы автоматически, а hash сумма sha256 после загрузки файла также запоминалась, внутри коллекций созданы три переменные(найти их можно перейдя в настройках коллекции Edit -&amp;gt; Variables): &lt;EM&gt;te_api(требуется заполнить)&lt;/EM&gt;, &lt;EM&gt;api_key(требуется заполнить, кроме случая использования TP API с локальными устройствами)&lt;/EM&gt;, &lt;EM&gt;sha256 (оставить пустым, в TP API for SG не используется)&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://yadi.sk/d/QeItfsxJGN21-Q" target="_self" rel="nofollow noreferrer"&gt;&lt;STRONG&gt;Скачать коллекцию Postman для Threat Prevention API&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://yadi.sk/d/H5N2VX_S-WnPGw" rel="noopener noreferrer nofollow" target="_blank"&gt;&lt;STRONG&gt;Скачать коллекцию Postman для Threat Prevention for Security Gateway API&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;Примеры использования&lt;/H2&gt;
&lt;P&gt;В сообществе &lt;A href="https://community.checkpoint.com/t5/SandBlast-Network/Best-Practices-for-Threat-Prevention-API-Calls-to-Appliance/m-p/82825#M1043" rel="noopener noreferrer nofollow" target="_blank"&gt;Check Mates&lt;/A&gt; представлены скрипты, написанные на Python, которые проверяют файлы из нужной директории как через &lt;A href="https://sc1.checkpoint.com/documents/TPAPI/CP_1.0_ThreatPreventionAPI_APIRefGuide/html_frameset.htm" rel="noopener noreferrer nofollow" target="_blank"&gt;TP API&lt;/A&gt;, так и &lt;A href="https://supportcenter.checkpoint.com/supportcenter/portal?eventSubmit_doGoviewsolutiondetails=&amp;amp;solutionid=sk137032" rel="noopener noreferrer nofollow" target="_blank"&gt;TP API for SG&lt;/A&gt;. Через взаимодействие с Threat Prevention API ваши возможности по проверке файлов значительно расширяются, так как теперь вы можете проверять файлы сразу в нескольких платформах (интересным выглядит проверка в &lt;A href="https://developers.virustotal.com/reference" rel="noopener noreferrer nofollow" target="_blank"&gt;&lt;STRONG&gt;VirusTotal API&lt;/STRONG&gt;&lt;/A&gt;, а затем в песочнице Check Point), а файлы получать не только из сетевого трафика, но и забирать их из любых сетевых дисков и, например, CRM систем.&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
      <pubDate>Fri, 11 Sep 2020 11:46:38 GMT</pubDate>
      <guid>https://community.checkpoint.com/t5/Russian/%D0%92%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D0%B5-%D1%81-Check-Point-SandBlast-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-API/m-p/96566#M197</guid>
      <dc:creator>oldflint</dc:creator>
      <dc:date>2020-09-11T11:46:38Z</dc:date>
    </item>
  </channel>
</rss>

