Skip to content

Commit c40e6de

Browse files
Merge pull request #39 from LimberDuck/develop
v0.12.2
2 parents 5b3c1a4 + 8f1493f commit c40e6de

9 files changed

Lines changed: 81 additions & 14 deletions

File tree

.vscode/tasks.json

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,22 @@
2727
"command": "${config:virtualenvPath}/python -m $MODULE_NAME"
2828
},
2929
{
30-
"label": "Build Application",
30+
"label": "Build Package",
3131
"type": "shell",
3232
"command": "${config:virtualenvPath}/python setup.py sdist bdist_wheel"
3333
},
34+
{
35+
"label": "Build Application",
36+
"type": "shell",
37+
"options": {
38+
"env": {
39+
"MODULE_NAME": "nessus_file_analyzer",
40+
"APP_NAME": "NFAlocal",
41+
"APP_NAME_DASH": "LimberDuck-NFA"
42+
}
43+
},
44+
"command": "${config:virtualenvPath}/PyInstaller $MODULE_NAME/__main__.py --name $APP_NAME --windowed --icon=./icons/$APP_NAME_DASH.ico --distpath dist --hidden-import=nfa_plugin_software_enumeration.software_enumeration"
45+
},
3446
{
3547
"label": "Start sphinx-autobuild",
3648
"type": "shell",

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ This document records all notable changes to [nessus file analyzer (NFA) by Limb
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.12.2] - 2026-01-22
9+
10+
### Fixed
11+
12+
- The Software Enumeration plugin is now visible in the **Advanced reports** tab when using LimberDuck NFA downloaded from [GitHub Releases](https://github.com/LimberDuck/nessus-file-analyzer/releases).
13+
814
## [0.12.1] - 2026-01-19
915

1016
### Changed
@@ -244,6 +250,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
244250

245251
- Initial release
246252

253+
[0.12.2]: https://github.com/LimberDuck/nessus-file-analyzer/compare/v0.12.1...v0.12.2
254+
[0.12.1]: https://github.com/LimberDuck/nessus-file-analyzer/compare/v0.12.0...v0.12.1
247255
[0.12.0]: https://github.com/LimberDuck/nessus-file-analyzer/compare/v0.11.0...v0.12.0
248256
[0.11.0]: https://github.com/LimberDuck/nessus-file-analyzer/compare/v0.10.0...v0.11.0
249257
[0.10.0]: https://github.com/LimberDuck/nessus-file-analyzer/compare/v0.9.0...v0.10.0

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
**nessus file analyzer (NFA) by LimberDuck** (pronounced *ˈlɪm.bɚ dʌk*) is a GUI
44
tool which enables you to parse multiple nessus files containing the results
5-
of scans performed by using Nessus by (C) Tenable, Inc. and exports parsed
5+
of scans performed by using Tenable Nessus and Tenable Security Center, and exports parsed
66
data to a spreadsheet file for effortless analysis.
77

88
Operational memory usage will be kept low while parsing even the largest of
@@ -40,7 +40,7 @@ decrease our workload and focus on data analysis.
4040
* host,
4141
* vulnerabilities,
4242
* noncompliance
43-
* check advanced reports like software enumeration
43+
* generate advanced reports like software enumeration
4444
* change target directory for output file to desired one, leave it default (current working directory) or set to be the same as source files
4545
* add suffix for output file with `_YYYYMMDD_HHMMSS` and/or custom text
4646

nessus_file_analyzer/__about__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@
4545
"effortless analysis."
4646
)
4747
__uri__ = "https://limberduck.org"
48-
__version__ = "0.12.1"
49-
__release_date__ = "2026.01.19"
48+
__version__ = "0.12.2"
49+
__release_date__ = "2026.01.22"
5050
__author__ = "Damian Krawczyk"
5151
__email__ = "damian.krawczyk@limberduck.org"
5252
__license_name__ = "GNU GPLv3"

nessus_file_analyzer/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.12.1"
1+
__version__ = "0.12.2"

nessus_file_analyzer/ico_generator.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
along with this program. If not, see <https://www.gnu.org/licenses/>.
2121
"""
2222

23-
from nessus_file_analyzer import utilities
23+
# from nessus_file_analyzer import utilities
2424

25-
png_filename = "../icons/LimberDuck-NFA.png"
25+
# png_filename = "../icons/LimberDuck-NFA.png"
2626

27-
print(utilities.file_to_base64(utilities.png_to_ico(png_filename)))
27+
# print(utilities.file_to_base64(utilities.png_to_ico(png_filename)))

nessus_file_analyzer/plugins/discovery.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,40 @@
1616
from importlib_metadata import entry_points
1717

1818

19+
# Bundled plugins for PyInstaller frozen builds
20+
# Entry points don't work in frozen apps, so we register known plugins here
21+
BUNDLED_PLUGINS = [
22+
('nfa_plugin_software_enumeration.software_enumeration', 'SoftwareEnumerationPlugin'),
23+
]
24+
25+
26+
def _discover_bundled_plugins() -> List[Type[NFAPlugin]]:
27+
"""
28+
Load plugins bundled with PyInstaller frozen builds.
29+
30+
Returns:
31+
List of plugin classes from bundled plugins
32+
"""
33+
discovered_plugins = []
34+
35+
for module_path, class_name in BUNDLED_PLUGINS:
36+
try:
37+
import importlib
38+
module = importlib.import_module(module_path)
39+
plugin_class = getattr(module, class_name)
40+
if isinstance(plugin_class, type) and issubclass(plugin_class, NFAPlugin):
41+
discovered_plugins.append(plugin_class)
42+
else:
43+
print(f"Warning: Bundled plugin {class_name} does not inherit from NFAPlugin")
44+
except ImportError as e:
45+
# Plugin not bundled, skip silently
46+
pass
47+
except Exception as e:
48+
print(f"Warning: Failed to load bundled plugin {class_name}: {e}")
49+
50+
return discovered_plugins
51+
52+
1953
def discover_plugins() -> List[Type[NFAPlugin]]:
2054
"""
2155
Discover all installed NFA plugins using entry points.
@@ -29,6 +63,9 @@ def discover_plugins() -> List[Type[NFAPlugin]]:
2963
],
3064
}
3165
66+
For PyInstaller frozen builds, bundled plugins are loaded directly
67+
since entry points don't work in frozen applications.
68+
3269
Returns:
3370
List of plugin classes (not instances) that inherit from NFAPlugin
3471
"""
@@ -56,6 +93,16 @@ def discover_plugins() -> List[Type[NFAPlugin]]:
5693
except Exception as e:
5794
print(f"Warning: Failed to discover plugins: {e}")
5895

96+
# For frozen builds (PyInstaller), also try loading bundled plugins
97+
# This is needed because entry points don't work in frozen applications
98+
if getattr(sys, 'frozen', False):
99+
bundled = _discover_bundled_plugins()
100+
# Add bundled plugins that weren't already discovered via entry points
101+
existing_names = {p.__name__ for p in discovered_plugins}
102+
for plugin in bundled:
103+
if plugin.__name__ not in existing_names:
104+
discovered_plugins.append(plugin)
105+
59106
return discovered_plugins
60107

61108

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
author="Damian Krawczyk",
2323
author_email="damian.krawczyk@limberduck.org",
2424
description="nessus file analyzer (NFA) by LimberDuck is a GUI tool which enables you to parse nessus scan files from "
25-
"Nessus and Tenable.SC by (C) Tenable, Inc. and exports results to a spreadsheet file for "
25+
"Tenable Nessus and Tenable Security Center, and exports results to a spreadsheet file for "
2626
"effortless analysis.",
2727
long_description=long_description,
2828
long_description_content_type="text/markdown",

version.rc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
VSVersionInfo(
22
ffi=FixedFileInfo(
3-
filevers=(0, 12, 1, 0),
4-
prodvers=(0, 12, 1, 0),
3+
filevers=(0, 12, 2, 0),
4+
prodvers=(0, 12, 2, 0),
55
mask=0x3f,
66
flags=0x0,
77
OS=0x40004,
@@ -16,12 +16,12 @@ VSVersionInfo(
1616
u'040904B0',
1717
[StringStruct(u'CompanyName', u'LimberDuck'),
1818
StringStruct(u'FileDescription', u'nessus file analyzer (NFA) by LimberDuck. Visit https://limberduck.org'),
19-
StringStruct(u'FileVersion', u'0.12.1.0'),
19+
StringStruct(u'FileVersion', u'0.12.2.0'),
2020
StringStruct(u'InternalName', u'nessus-file-analyzer'),
2121
StringStruct(u'LegalCopyright', u'\xa9 Damian Krawczyk.'),
2222
StringStruct(u'OriginalFilename', u'LimberDuck NFA.exe'),
2323
StringStruct(u'ProductName', u'nessus file analyzer (NFA)'),
24-
StringStruct(u'ProductVersion', u'0.12.1.0')])
24+
StringStruct(u'ProductVersion', u'0.12.2.0')])
2525
]),
2626
VarFileInfo([VarStruct(u'Translation', [1033, 1200])])
2727
]

0 commit comments

Comments
 (0)