Перейти к содержимому

Perforce Helix Core Server (p4d)

Запускает p4 -Ztag -p <address> infoединственная проба в этом проекте, которая обращается к внешнему бинарнику, а не говорит по wire-протоколу или HTTP напрямую. Почему — см. ниже.

targets:
- id: p4d-main
product: p4d
address: p4d.example.com:1666

Это не про credential и не про сеть — на той же машине, где работает сама enodia, должен быть установлен настоящий бинарник (собственный консольный клиент Perforce, свободно скачиваемый). Отсутствующий бинарник понятно и явно отказывает, а не маскируется под сетевую проблему. Переопределите путь через options.binary, если p4 не в $PATH (работает одинаково и на Windows, указывая на p4.exe):

targets:
- id: p4d-main
product: p4d
address: p4d.example.com:1666
options:
binary: /opt/perforce/bin/p4

Собственный RPC-протокол Perforce был полностью реверс-инжинирен вживую (захват пакетов плюс настоящий бинарник p4 против реального продакшн-прокси), и написанный вручную клиент корректно воспроизвёл всё рукопожатие — подтверждено побайтово против захвата. Но это же самое, подтверждённо корректное рукопожатие молча отбрасывается реальными прямыми серверами p4d (обязательный TLS и рейт-лимит оба исключены вживую: ни ошибки, ни сброса, просто нет ответа), тогда как настоящий бинарник p4 подключается к тем же самым адресам вообще без проблем. Вместо того чтобы поставлять пробу, работающую только с прокси, и эта проба, и Perforce Proxy обращаются к собственному CLI p4 оператора.

timeout (для конкретного таргета, либо defaults.timeout по умолчанию) применяется к подпроцессу p4 так же, как и к транспорту любой другой пробы. Это имеет конкретное значение именно здесь: процесс p4, застрявший при попытке достучаться до недоступного прямого сервера, зависает без какого-либо ответа и без сброса соединения на уровне TCP — ровно то поведение, что описано выше — так что без таймаута это остановило бы весь прогон сбора данных целиком, а не просто провалило бы один этот таргет. (Исправлено в 1.2.1 — более ранняя версия вообще не передавала таймаут в подпроцесс.)

Отсутствует — подтверждено вживую, что info отвечает полностью анонимно на реальных продакшн-серверах.

Ответ с полем proxyVersion означает, что по этому адресу на самом деле находится Perforce Proxy, а не прямой сервер — эта проба откажет вместо того, чтобы сообщить версию не того продукта, точно так же, как p4p в обратную сторону отклоняет ответ прямого сервера.

perforce-swarm — это веб-интерфейс Perforce для код-ревью, опрашиваемый по HTTP — другой продукт, отличный от самого сервера p4d, который описывает эта страница.

  • version — например, 2024.2, разобрано из формы serverVersion: P4D/LINUX26X86_64/2024.2/2726408 (2025/02/27)
  • extra.raw — полная неразобранная строка serverVersion
  • extra.serverID, extra.serverServices, если присутствуют

Сверяется с NVD и БДУ ФСТЭК, если настроен блок cve:.

Отсутствует — Perforce проприетарен, у endoflife.date нет страницы ни под одним из опробованных слагов (подтверждено 404), и нет публичных релизов на GitHub, на которые можно было бы опереться. Пока только инвентаризация — так же, как у Gentoo/ Kali Linux.