docker-packing-box
docker-packing-box copied to clipboard
AttributeError while using `model train`
Reported by @lagitannerie
# dataset -v make elf-upx-dataset -f ELF -a -p upx -n 400 -s /mnt/share/dataset-packed-elf/not-packed
...
# model train elf-upx-dataset --algorithm dt
00:00:01.735 [INFO] Selected algorithm: Decision Tree
00:00:01.736 [INFO] Reference dataset: elf-upx-dataset(ELF64)
00:00:01.737 [INFO] Computing features...
Traceback (most recent call last):
File "/opt/tools/model", line 117, in <module>
getattr(m, args.command)(**vars(args))
File "/usr/local/lib/python3.8/dist-packages/pbox/learning/model.py", line 511, in train
if not self._prepare(**kw):
File "/usr/local/lib/python3.8/dist-packages/pbox/learning/model.py", line 218, in _prepare
__parse(ds.files.listdir(is_executable), False)
File "/usr/local/lib/python3.8/dist-packages/pbox/learning/model.py", line 201, in __parse
self._features.update(exe.features)
File "/usr/local/lib/python3.8/dist-packages/pbox/learning/executable.py", line 42, in __getattribute__
return super(Executable, self).__getattribute__(name)
File "/usr/local/lib/python3.8/dist-packages/pbox/learning/executable.py", line 82, in features
return {n: FEATURE_DESCRIPTIONS.get(n, "") for n in self.data.keys()}
File "/usr/local/lib/python3.8/dist-packages/pbox/learning/executable.py", line 42, in __getattribute__
return super(Executable, self).__getattribute__(name)
File "/usr/lib/python3.8/functools.py", line 967, in __get__
val = self.func(instance)
File "/usr/local/lib/python3.8/dist-packages/pbox/learning/executable.py", line 56, in data
data, done, tbd = {k: v for k, v in self.rawdata.items()}, [], {}
File "/usr/local/lib/python3.8/dist-packages/pbox/learning/executable.py", line 42, in __getattribute__
return super(Executable, self).__getattribute__(name)
File "/usr/lib/python3.8/functools.py", line 967, in __get__
val = self.func(instance)
File "/usr/local/lib/python3.8/dist-packages/pbox/learning/executable.py", line 90, in rawdata
r = func(self)
File "/usr/local/lib/python3.8/dist-packages/pbox/learning/features/common.py", line 33, in _wrapper
return f(binary, *args, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/pbox/learning/features/common.py", line 44, in <lambda>
section_characteristics = _parse_binary(lambda exe: str([_chars(s) for s in exe.sections]))
File "/usr/local/lib/python3.8/dist-packages/pbox/learning/features/common.py", line 44, in <listcomp>
section_characteristics = _parse_binary(lambda exe: str([_chars(s) for s in exe.sections]))
File "/usr/local/lib/python3.8/dist-packages/pbox/learning/features/common.py", line 38, in <lambda>
_chars = lambda s: (s.name, {k: getattr(s, k) for k in CHARACTERISTICS})
File "/usr/local/lib/python3.8/dist-packages/pbox/learning/features/common.py", line 38, in <dictcomp>
_chars = lambda s: (s.name, {k: getattr(s, k) for k in CHARACTERISTICS})
AttributeError: 'lief.ELF.Section' object has no attribute 'characteristics'
Hi @lagitannerie
Thank you for reporting this error.
This comes from a work in progress as features computation is not totally ready for ELF and Mach-O formats yet.
I will handle this in a next version of the pbox package very soon.
This was fixed with 8b574a7ea3817cf98580ec316061887e90a9392b.