docker-packing-box icon indicating copy to clipboard operation
docker-packing-box copied to clipboard

AttributeError while using `model train`

Open dhondta opened this issue 3 years ago • 1 comments

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'

dhondta avatar Aug 09 '22 21:08 dhondta

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.

dhondta avatar Aug 09 '22 22:08 dhondta

This was fixed with 8b574a7ea3817cf98580ec316061887e90a9392b.

dhondta avatar Oct 03 '22 21:10 dhondta