diff --git a/.gitignore b/.gitignore index 90593dcb..f7cb684d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ *.a *.o -*.dll *.exe *.so *.pyc diff --git a/setup.py b/setup.py index 11ac3e30..e2629b61 100644 --- a/setup.py +++ b/setup.py @@ -3,6 +3,8 @@ # This file is part of SFlock - http://www.sflock.org/. # See the file 'docs/LICENSE.txt' for copying permission. +import sys + from setuptools import setup, find_packages from distutils.util import convert_path @@ -13,6 +15,18 @@ assert "__version__" in ver_module_ns version = ver_module_ns["__version__"] +install_requires=[ + "click", + "cryptography>=2.1", + "olefile>=0.43", + # "peepdf>=0.4.1", + "python-magic>=0.4.13", + "pefile", +] + +if sys.platform == "win32": + install_require.append("python-magic-bin>=0.4.14") + setup( name="SFlock2", version=version, @@ -47,14 +61,7 @@ license="GPLv3", description="Sample staging and detonation utility", include_package_data=True, - install_requires=[ - "click", - "cryptography>=2.1", - "olefile>=0.43", - # "peepdf>=0.4.1", - "python-magic>=0.4.13", - "pefile", - ], + install_requires=install_requires, extras_require={ "dev": ["mock", "pytest"], "shellcode": ["unicorn>=2.0.0", "yara-python>=4.1.0"], diff --git a/sflock/__init__.py b/sflock/__init__.py index 59ba399b..9c2f50dc 100644 --- a/sflock/__init__.py +++ b/sflock/__init__.py @@ -2,7 +2,7 @@ # This file is part of SFlock - http://www.sflock.org/. # See the file 'docs/LICENSE.txt' for copying permission. -from sflock.compat import magic +import magic from sflock.exception import UnpackException from sflock.main import ident, unpack, supported, zipify from sflock.__version__ import __version__ diff --git a/sflock/abstracts.py b/sflock/abstracts.py index f5c3c367..d4f41daa 100644 --- a/sflock/abstracts.py +++ b/sflock/abstracts.py @@ -5,6 +5,7 @@ import hashlib import io +import magic import ntpath import olefile import os.path @@ -13,7 +14,6 @@ import subprocess import tempfile -from sflock.compat import magic from sflock.config import iter_passwords from sflock.exception import UnpackException from sflock.misc import data_file, make_list diff --git a/sflock/compat/__init__.py b/sflock/compat/__init__.py deleted file mode 100644 index 916815b8..00000000 --- a/sflock/compat/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# Copyright (C) 2016 Jurriaan Bremer. -# This file is part of SFlock - http://www.sflock.org/. -# See the file 'docs/LICENSE.txt' for copying permission. diff --git a/sflock/compat/magic.py b/sflock/compat/magic.py deleted file mode 100644 index 52579362..00000000 --- a/sflock/compat/magic.py +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (C) 2016-2018 Jurriaan Bremer. -# Copyright (C) 2018 Hatching B.V. -# This file is part of SFlock - http://www.sflock.org/. -# See the file 'docs/LICENSE.txt' for copying permission. - -from __future__ import absolute_import - -import logging -import os -import sys - -import sflock - -from sflock.misc import data_file - -log = logging.getLogger(__name__) - -# Provide libmagic support in terms of binaries under Windows. -if sys.platform == "win32": - if sys.maxsize != 0x7FFFFFFF: - os.environ["PATH"] = "%s;%s" % (data_file("win64"), os.environ["PATH"]) - magic_file = data_file("win64", "magic.mgc") - else: - os.environ["PATH"] = "%s;%s" % (data_file("win32"), os.environ["PATH"]) - magic_file = data_file("win32", "magic.mgc") - -# Therefore only import libmagic at this point. -import magic - -if sys.platform == "win32": - magic._instances[False] = magic.Magic(mime=False, magic_file=magic_file) - magic._instances[True] = magic.Magic(mime=True, magic_file=magic_file) - - -def from_file(f, mime=False): - try: - return magic.from_file(f, mime) - except magic.MagicException as e: - return e.message - - -def from_buffer(buf, mime=False): - try: - return magic.from_buffer(buf, mime) - except magic.MagicException as e: - return e.message diff --git a/sflock/data/win32/libmagic.dll b/sflock/data/win32/libmagic.dll new file mode 100644 index 00000000..8e6f81a8 Binary files /dev/null and b/sflock/data/win32/libmagic.dll differ diff --git a/sflock/data/win32/magic.mgc b/sflock/data/win32/magic.mgc index 40b05b9b..604602cf 100644 Binary files a/sflock/data/win32/magic.mgc and b/sflock/data/win32/magic.mgc differ diff --git a/sflock/data/win32/magic1.dll b/sflock/data/win32/magic1.dll deleted file mode 100644 index 657baebc..00000000 Binary files a/sflock/data/win32/magic1.dll and /dev/null differ diff --git a/sflock/data/win64/libmagic.dll b/sflock/data/win64/libmagic.dll new file mode 100644 index 00000000..4958cdc3 Binary files /dev/null and b/sflock/data/win64/libmagic.dll differ diff --git a/sflock/data/win64/magic.mgc b/sflock/data/win64/magic.mgc index 3410230d..604602cf 100644 Binary files a/sflock/data/win64/magic.mgc and b/sflock/data/win64/magic.mgc differ diff --git a/sflock/data/win64/magic1.dll b/sflock/data/win64/magic1.dll deleted file mode 100644 index 342b6e66..00000000 Binary files a/sflock/data/win64/magic1.dll and /dev/null differ