Lucene search
K

Adobe Dreamweaver Installed

🗓️ 24 Oct 2012 00:00:00Reported by TenableType 
nessus
 nessus
🔗 www.tenable.com👁 22 Views

Adobe Dreamweaver web development application installed on Windows hos

Refs
Code
#
# (C) Tenable, Inc.
#

include("compat.inc");

if (description)
{
  script_id(62684);
  script_version("1.13");
  script_set_attribute(attribute:"plugin_modification_date", value:"2026/06/24");

  script_xref(name:"IAVT", value:"0001-T-0517");

  script_name(english:"Adobe Dreamweaver Installed");

  script_set_attribute(attribute:"synopsis", value:"A web development application is installed on the remote Windows host.");
  script_set_attribute(
    attribute:"description",
    value:
"Adobe Dreamweaver, a web development application, is installed on the
remote host."
  );
  script_set_attribute(attribute:"see_also", value:"https://www.adobe.com/products/dreamweaver.html");
  script_set_attribute(attribute:"solution", value:"n/a");
  script_set_attribute(attribute:"risk_factor", value:"None");

  script_set_attribute(attribute:"plugin_publication_date", value:"2012/10/24");

  script_set_attribute(attribute:"plugin_type", value:"local");
  script_set_attribute(attribute:"cpe", value:"cpe:/a:adobe:dreamweaver");
  script_set_attribute(attribute:"asset_inventory", value:"True");
  script_set_attribute(attribute:"asset_inventory_category", value:"software_enumeration");
  script_set_attribute(attribute:"agent", value:"windows");
  script_end_attributes();

  script_category(ACT_GATHER_INFO);
  script_family(english:"Windows");

  script_copyright(english:"This script is Copyright (C) 2012-2026 and is owned by Tenable, Inc. or an Affiliate thereof.");

  script_dependencies("smb_hotfixes.nasl");
  script_require_keys("SMB/Registry/Enumerated");
  script_require_ports(139, 445);

  exit(0);
}

include("smb_func.inc");
include("smb_hotfixes.inc");
include("smb_hotfixes_fcheck.inc");
include("smb_reg_query.inc");
include("install_func.inc");
include("universal_collection.inc");

get_kb_item_or_exit("SMB/Registry/Enumerated");

# @collection-signature
var signature = {
  'Windows': {

    'Files': [
      {
        'Signature': [
          { 'Name': { 'Equals': 'Dreamweaver.exe' } }
        ],
        'Get': {
          'PEVersion': [
            { 'Value': 'FileVersion', 'Label': 'Dreamweaver.exe FileVersion' }
          ]
        }
      }
    ]
  }
};

function collect()
{
  # Walk SOFTWARE\Adobe for Dreamweaver subkeys and read each install's InstallPath.
  # Registry is used for path discovery only, so it stays procedural and out of the signature.
  registry_init();
  var hklm = registry_hive_connect(hive:HKEY_LOCAL_MACHINE, exit_on_fail:TRUE);

  var key_adobe = "SOFTWARE\Adobe";
  var subkeys_adobe = get_registry_subkeys(handle:hklm, key:key_adobe);

  var paths = [];
  var subkey_adobe, key, subkeys, subkey, path;

  foreach subkey_adobe (subkeys_adobe)
  {
    if ("dreamweaver" >!< tolower(subkey_adobe)) continue;

    key = key_adobe + "\" + subkey_adobe;
    subkeys = get_registry_subkeys(handle:hklm, key:key);
    foreach subkey (subkeys)
    {
      if (subkey !~ '^[0-9_]+$') continue;

      path = get_registry_value(handle:hklm, item:key + "\" + subkey + "\Installation\InstallPath");
      if (!isnull(path))
        append_element(var:paths, value:path);
    }
  }

  RegCloseKey(handle:hklm);
  close_registry(close:FALSE);

  var collector = new universal_collection::collector();

  if (empty_or_null(paths))
  {
    hotfix_check_fversion_end();
    return collector;
  }

  # Check Dreamweaver.exe under each discovered install path and collect its file version.
  var signature_entry, file_signature, sig_field, sig_operator, exe, file_path;
  var ver, error, version, match_data_entries, peversion_entry, match_data_entry;

  foreach path (paths)
  {
    foreach signature_entry (signature['Windows']['Files'])
    {
      foreach file_signature (signature_entry['Signature'])
      {
        sig_field = 'Name';
        sig_operator = 'Equals';

        exe = file_signature[sig_field][sig_operator]; # Dreamweaver.exe
        if (isnull(exe)) continue;

        file_path = hotfix_append_path(path:path, value:exe);
        ver = hotfix_get_fversion(path:file_path);

        error = hotfix_handle_error(error_code:ver['error'], file:file_path);
        if (error && ver['error'] != HCF_NOVER)
        {
          dbg::detailed_log(msg:error, lvl:1, src:FUNCTION_NAME);
          continue;
        }

        # Build PEVersion match data only when a version was read (HCF_OK).
        # HCF_NOVER still registers presence with no version (rendered as Unknown downstream).
        match_data_entries = [];
        if (ver['error'] == HCF_OK)
        {
          version = ver['version'];

          foreach peversion_entry (signature_entry['Get']['PEVersion'])
          {
            if (peversion_entry['Value'] != 'FileVersion') continue;

            match_data_entry = collector.make_peversion_match_data_entry(
              value          : version,
              label          : peversion_entry['Label'],
              peversion_type : peversion_entry['Value']
            );
            if (match_data_entry) append_element(var:match_data_entries, value:match_data_entry);
          }
        }

        collector.add_file_match(
          filepath     : file_path,
          executable   : 'true',
          sig_field    : sig_field,
          sig_operator : sig_operator,
          sig_val      : exe,
          match_data   : match_data_entries
        );
      }
    }
  }

  hotfix_check_fversion_end();

  return collector;
}

##
# Main
##
var app = 'Adobe Dreamweaver';

var collector = get_collector_or_collect(signature:signature, collect_func:@collect);

var finding, path, version, verui, match_data_entry, parts;

foreach finding (collector.collection)
{
  # Recover the registry InstallPath (keeps the trailing backslash that downstream
  # plugins such as adobe_apsa12-01.nasl rely on) by removing the matched filename.
  path = finding['CollectData']['FilePath'];
  path -= finding['CollectData']['Name'];

  version = NULL;
  verui = NULL;

  foreach match_data_entry (finding['MatchData'])
  {
    if (match_data_entry['Label'] == 'Dreamweaver.exe FileVersion')
    {
      version = match_data_entry['Values'][0];
      break;
    }
  }

  if (isnull(version))
    version = 'Unknown';
  else
  {
    parts = split(version, sep:'.', keep:FALSE);
    if (max_index(parts) >= 4)
    {
      verui = parts[0] + '.' + parts[1];
      if (int(parts[2]) == 0) verui += ' Build ' + parts[3];
      else verui += ' Build ' + parts[2];
    }
  }

  set_kb_item(name:'SMB/Adobe_Dreamweaver/' + version + '/Path', value:path);
  if (!isnull(verui))
    set_kb_item(name:'SMB/Adobe_Dreamweaver/' + version + '/Version_UI', value:verui);

  register_install(
    app_name        : app,
    vendor          : 'Adobe',
    product         : 'Dreamweaver',
    path            : path,
    version         : version,
    display_version : verui,
    cpe             : 'cpe:/a:adobe:dreamweaver'
  );
}

get_install_count(app_name:app, exit_if_zero:TRUE);

set_kb_item(name:'SMB/Adobe_Dreamweaver/installed', value:TRUE);

report_installs(app_name:app);

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

24 Jun 2026 00:00Current
5.8Medium risk
Vulners AI Score5.8
22