|
|
@ -53,35 +53,25 @@ class _error:
|
|
|
|
|
|
|
|
|
|
|
|
class typeFile:
|
|
|
|
class typeFile:
|
|
|
|
"""Получение типа файла"""
|
|
|
|
"""Получение типа файла"""
|
|
|
|
__mgc = None
|
|
|
|
|
|
|
|
__cookie = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def __init__(self,magic=0x410):
|
|
|
|
def __init__(self, flag=0x410):
|
|
|
|
# Загружаем libmagic.so
|
|
|
|
# Загружаем libmagic.so
|
|
|
|
self.__mgc = ctypes.cdll.LoadLibrary("libmagic.so")
|
|
|
|
self.lib = ctypes.cdll.LoadLibrary("libmagic.so")
|
|
|
|
# Создаем новый cookie (требуется для
|
|
|
|
self.lib.error.restype = ctypes.c_char_p
|
|
|
|
# работы с magic-последовательностями)
|
|
|
|
self.lib.magic_file.restype = ctypes.c_char_p
|
|
|
|
# 0x10 | 0x400 = MAGIC_MIME (константа
|
|
|
|
# 0x10 | 0x400 = MAGIC_MIME (константа, декларируется в magic.h)
|
|
|
|
# декларируется в magic.h)
|
|
|
|
self.magic = self.lib.magic_open(flag)
|
|
|
|
self.__cookie = self.__mgc.magic_open(magic)
|
|
|
|
self.lib.magic_load(self.magic, None)
|
|
|
|
# Загружаем в __cookie
|
|
|
|
|
|
|
|
# /etc/file/magic.mime (т.к. указано None)
|
|
|
|
|
|
|
|
self.__mgc.magic_load(self.__cookie, None)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def __del__(self):
|
|
|
|
def __del__(self):
|
|
|
|
"""Закрываем __cookie"""
|
|
|
|
"""Закрываем magic"""
|
|
|
|
self.__mgc.magic_close(self.__cookie)
|
|
|
|
self.lib.magic_close(self.magic)
|
|
|
|
|
|
|
|
|
|
|
|
def getMType(self,filename):
|
|
|
|
def getMType(self, filename):
|
|
|
|
"""информация о типе файла"""
|
|
|
|
"""Информация о типе файла"""
|
|
|
|
result = self.__mgc.magic_file(self.__cookie,filename)
|
|
|
|
return self.lib.magic_file(self.magic, filename)
|
|
|
|
# magic_file возвращает указатель const char*,
|
|
|
|
|
|
|
|
# mimetype.value - это строка по указателю
|
|
|
|
def isBinary(self, filename):
|
|
|
|
mimetype = ctypes.c_char_p(result)
|
|
|
|
|
|
|
|
rez = mimetype.value
|
|
|
|
|
|
|
|
return rez
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def isBinary(self,filename):
|
|
|
|
|
|
|
|
"""является ли файл бинарным"""
|
|
|
|
"""является ли файл бинарным"""
|
|
|
|
mime = self.getMType(filename)
|
|
|
|
mime = self.getMType(filename)
|
|
|
|
# В случае ошибки
|
|
|
|
# В случае ошибки
|
|
|
|