2011-02-02 2 views
1

나는 간단한 문제가있다. 사용자가 개발중인 시스템에서 zip 파일을 보낼 수 있으며 그 내용을 필터링해야한다.zip 파일 내에서 내게 전송 된 내선 번호가없는 파일의 MIME 형식을 찾으려면 어떻게해야합니까?

확장자로 내부 파일을 차단하는 것은 쉽지만 확장명이없는 파일은 매우 일반적이며 확장명은 파일의 내용에 대해 가장 신뢰할 수있는 원본이 아닙니다.

나는 이미 파이썬 매직을 사용하려했지만 내 서버가 지원하지 않는 일부 패키지가 필요하며 서버가 나를 도와주지 않을 것이다. 오! 시스템을 다른 서버로 변경할 수있는 옵션이 없습니다. 그래서, 저에게는 파이썬 마술이 없습니다.

누구든지 헤더로 파일 유형을 확인하는 방법에 대한 아이디어가 있습니까?

답변

1

직접적인 대답은 아니지만/etc/magic의 형식이 복잡하지 않으므로 검색해야하는 파일 형식이 몇 개 밖에 없으므로 아마도 자신의 검색 루틴을 작성하는 것이 가장 쉽습니다.

# Java 

0  beshort   0xcafe 
>2  beshort   0xbabe   application/x-java-applet 

우리가 얻을 : 당신은`데이터 = yourfile.open (경로) .read (4) '보다는하려고 할 단지 수 있도록

data = open(path).read() 
if data[0:4] == '\xca\xfe\xba\xbe': 
    minetype = 'application/x-java-applet' 
+1

당신은 정말에만 4 바이트를 읽을 필요 압축을 풀고 파일 전체를 읽습니다. –

+0

내 질문에 분명히 말하지 않았다고 생각합니다 ... –

+0

@Paul : 예, coures의 최적화를 할 수는 있지만 독자에게는 운동으로 남아 있습니다 :-) –