def METHOD_NAME(self) -> str:
    """
    Return Dhashicon of the exe
    """
    # this code was implemented from
    # https://github.com/fr0gger/SuperPeHasher/commit/e9b753bf52d4e48dda2da0b7801075be4037a161#diff-2bb2d2d4d25fef20a893a4e93e96c9b8c0b0c6d5791fc14594cc9dd5cbf40b41
    # config
    dhashicon = None
    try:
        hash_size = 8
        # extract icon
        icon_path = self.filepath + ".ico"
        binary = lief.parse(self.filepath)
        if binary is None:
            # Invalid PE file
            raise NT_Header_Error("binary is None")
        # extracting icon and saves in a temp file
        binres = binary.resources_manager
        if not binres.has_type(lief.PE.RESOURCE_TYPES.ICON):
            # no icon resources in file
            raise No_Icon_Error("no icon resource in file")
        ico = binres.icons
        ico[0].save(icon_path)
        # resize
        exe_icon = Image.open(icon_path)
        exe_icon = exe_icon.convert("L").resize(
            (hash_size + 1, hash_size), Image.ANTIALIAS
        )
        diff = []
        for row in range(hash_size):
            for col in range(hash_size):
                left = exe_icon.getpixel((col, row))
                right = exe_icon.getpixel((col + 1, row))
                diff.append(left > right)
        decimal_value = 0
        icon_hash = []
        for index, value in enumerate(diff):
            if value:
                decimal_value += 2 ** (index % 8)
            if (index % 8) == 7:
                icon_hash.append(hex(decimal_value)[2:].rjust(2, "0"))
                decimal_value = 0
        os.remove(icon_path)
        dhashicon = "".join(icon_hash)
    except Exception as e:
        error = str(e)
        if not error or "resource" in error:
            logger.info(e, stack_info=True)
        else:
            logger.warning(e, stack_info=True)
    return dhashicon