Lucene search
+L

Fuji Xerox / Fujifilm Printer Detection (SNMP)

🗓️ 31 Jul 2023 00:00:00Reported by Copyright (C) 2023 Greenbone AGType 
openvas
 openvas
🔗 plugins.openvas.org👁 176 Views

Fuji Xerox / Fujifilm Printer Detection via SNM

Code
# SPDX-FileCopyrightText: 2023 Greenbone AG
# Some text descriptions might be excerpted from (a) referenced
# source(s), and are Copyright (C) by the respective right holder(s).
#
# SPDX-License-Identifier: GPL-2.0-only

if (description)
{
  script_oid("1.3.6.1.4.1.25623.1.0.170524");
  script_version("2025-08-07T05:44:51+0000");
  script_tag(name:"last_modification", value:"2025-08-07 05:44:51 +0000 (Thu, 07 Aug 2025)");
  script_tag(name:"creation_date", value:"2023-07-31 08:44:46 +0000 (Mon, 31 Jul 2023)");
  script_tag(name:"cvss_base", value:"0.0");
  script_tag(name:"cvss_base_vector", value:"AV:N/AC:L/Au:N/C:N/I:N/A:N");

  script_tag(name:"qod_type", value:"remote_banner");

  script_name("Fuji Xerox / Fujifilm Printer Detection (SNMP)");

  script_tag(name:"summary", value:"SNMP based detection of Fuji Xerox / Fujifilm printer
  devices.");

  script_category(ACT_GATHER_INFO);

  script_copyright("Copyright (C) 2023 Greenbone AG");
  script_family("Product detection");
  script_dependencies("gb_snmp_info_collect.nasl");
  script_require_udp_ports("Services/udp/snmp", 161);
  script_mandatory_keys("SNMP/sysdescr/available");

  exit(0);
}

include("dump.inc");
include("misc_func.inc");
include("snmp_func.inc");

port = snmp_get_port(default: 161);

sysdesc = snmp_get_sysdescr(port: port);
if(!sysdesc)
  exit(0);

# Some Xerox printers return a hex representative
# e.g. 58 65 72 6F 78 C2 AE 20 43 6F 6C 6F 72 20 31 30 ...
# Change back to a string and remove unprintable chars
if(sysdesc =~ "^[0-9A-F]{2} [0-9A-F]{2} [0-9A-F]{2}") {
  sysdesc = hex2str(str_replace(string: sysdesc, find: " ", replace: ""));
  sysdesc = bin2string(ddata: sysdesc, noprint_replacement: "");
}

# FUJI XEROX DocuPrint CM305 df; ...
# FUJIFILM ApeosPort C2410SD; ...
# nb:
# - Keep in sync with the pattern used in dont_print_on_printers.nasl
# - Case insensitive match (via "=~") is expected / done on purpose as different writings of XEROX
#   vs. Xerox has been seen
if(sysdesc =~ "^(FUJI XEROX|FUJIFILM) ") {
  set_kb_item(name: "fujifilm/printer/detected", value: TRUE);
  set_kb_item(name: "fujifilm/printer/snmp/detected", value: TRUE);
  set_kb_item(name: "fujifilm/printer/snmp/port", value: port);
  set_kb_item(name: "fujifilm/printer/snmp/" + port + "/concluded", value: sysdesc);

  # FUJI XEROX DocuColor 1450 GA ;ESS1.102.18,IOT 72.51.0,HCF 3.33.0,FIN C18.29.0,IIT 7.10.0,ADF 21.3.0,SJFI3.0.17,SSMI1.15.2
  mod = eregmatch(pattern: "(FUJI XEROX|FUJIFILM) ([^;]+);?", string: sysdesc);
  if(!isnull(mod[2])) {
    if(";" >!< mod[0] && sysdesc !~ "FUJIFILM") {
      # Likely extracted from hex response so just take the first part
      model = split(mod[2], sep: " ", keep: FALSE);
      set_kb_item(name: "fujifilm/printer/snmp/" + port + "/model", value: model[0]);
    } else {
      # nb: As seen in the example, we need to detect this kind of cases and fix them
      # FUJI XEROX DocuPrint CP225/228 w; ESS 01.10.00.20.3938, IOT <foo> 01.03.00
      # FUJI XEROX DocuPrint CM225/228 fw; ESS 01.02.00.20.3836, IOT <foo> 01.02.00
      model = mod[2];
      if (model =~ "/[0-9]+ ")
        model = ereg_replace(string: model, pattern: "(/[0-9]+)", replace: "");
      set_kb_item(name: "fujifilm/printer/snmp/" + port + "/model", value: model);
    }
  }

  # FUJI XEROX ApeosPort C4570; System 22.1.7, ESS 1.60.9, IOT 22.50.0, ADF 23.26.0, Fax 2.2.1, Panel 30.109.16, Boot 1.0.101, Contents 4.7.26, Plugin 4.7.26
  vers = eregmatch(pattern: "[;,] ?System ([0-9.]+)", string: sysdesc);
  if(!isnull(vers[1])) {
    set_kb_item(name: "fujifilm/printer/snmp/" + port + "/fw_version", value: vers[1]);
    exit(0);
  }

  # FUJI XEROX DocuPrint CP505 d; Controller 1.140.2, IOT 2.22.0, IOT2 4.8.0, Panel 92.16.11, Boot 1.1.200
  vers = eregmatch(pattern: "[;,] ?Controller ([0-9.]+)", string: sysdesc);
  if(!isnull(vers[1])) {
    set_kb_item(name: "fujifilm/printer/snmp/" + port + "/fw_version", value: vers[1]);
    exit(0);
  }

  # FUJI XEROX DocuPrint CM305 df; Net 16.41,ESS 201210101131,IOT 03.00.05
  # FUJI XEROX ApeosPort-IV C3375 ;ESS1.131.3,IOT 84.14.0,ADF 7.16.0,FAX 1.1.14,BOOT 1.0.54,SJFI3.3.0,SSMI1.20.1
  vers = eregmatch(pattern: "ESS( )?([0-9.]+),", string: sysdesc);
  if(!isnull(vers[2])) {
    set_kb_item(name: "fujifilm/printer/snmp/" + port + "/fw_version", value: vers[2]);
    exit(0);
  }

  # FUJIFILM ApeosPort C2410SD; version CXLBL.076.024 kernel 4.17.19-yocto-standard-9b7c8a0e4f5f02470de2620d0912f67e All-N-
  vers = eregmatch(pattern: "version( )?([A-Z0-9.]+)", string: sysdesc);
  if(!isnull(vers[2])) {
    set_kb_item(name: "fujifilm/printer/snmp/" + port + "/fw_version", value: vers[2]);
    exit(0);
  }

  # System 23.1.23; ESS 1.3.1; IOT 10.36.0; Finisher A 4.26.0; ADF 32.19.0; Fax 2.2.1; Panel 1.1.4; IPS Accelerator 21.9.0; Boot 1.0.155; Contents 5.0.32; Plugin 5.0.32
  ver_oid = "1.3.6.1.4.1.297.1.111.1.31.10.0";
  v = snmp_get(port: port, oid: ver_oid);

  ver = eregmatch(pattern: "System ([0-9.]+);", string: v);
  if(!isnull(ver[1])) {
    set_kb_item(name: "fujifilm/printer/snmp/" + port + "/fw_version", value: ver[1]);
    set_kb_item(name: "fujifilm/printer/snmp/" + port + "/concludedFwOID", value: ver_oid);
    exit(0);
  }

  # nb: This was determined using snmpwalk and version format similarity with other devices affected by same class of vulnerabilities
  # 01.00.41.20.0832
  ver_oid = "1.3.6.1.4.1.297.1.111.1.31.11";
  v = snmp_get(port: port, oid: ver_oid);

  if(!isnull(v)) {
    set_kb_item(name: "fujifilm/printer/snmp/" + port + "/fw_version", value: v);
    set_kb_item(name: "fujifilm/printer/snmp/" + port + "/concludedFwOID", value: ver_oid);
    exit(0);
  }

  exit(0);
}

# FX DocuPrint P115 w, ...
# nb: Keep in sync with the pattern used in dont_print_on_printers.nasl
else if(sysdesc =~ "^FX DocuPrint ") {
  set_kb_item(name: "fujifilm/printer/detected", value: TRUE);
  set_kb_item(name: "fujifilm/printer/snmp/detected", value: TRUE);
  set_kb_item(name: "fujifilm/printer/snmp/port", value: port);
  set_kb_item(name: "fujifilm/printer/snmp/" + port + "/concluded", value: sysdesc);
  # FX DocuPrint P115 w, Firmware Ver.D  ,MID 84U-E07
  mod = eregmatch(pattern: "FX ([^,;]+)[;,]?", string: sysdesc);
  if(!isnull(mod[1]))
    set_kb_item(name: "fujifilm/printer/snmp/" + port + "/model", value: mod[1]);

  vers = eregmatch(pattern: "[;,] ?Firmware Ver\. ?([A-Z0-9.]+)", string: sysdesc);
  if(!isnull(vers[1]))
    set_kb_item(name: "fujifilm/printer/snmp/" + port + "/fw_version", value: vers[1]);
}

exit(0);

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

07 Aug 2025 00:00Current
7.3High risk
Vulners AI Score7.3
176