| Source | Link |
|---|---|
| adobe | www.adobe.com/products/dreamweaver.html |
#
# (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