2011-02-15 2 views
0

이것은 간단한 질문 일 수도 있고 꽤 복잡한 질문 일 수도 있습니다.PHP에서 강제로 열고 읽는 zip 파일

PHP 사용하기 zip 파일을 열려면 파일을 디렉토리로 추출하고 zip 파일을 닫으려면 복잡한 클래스가 아니어야합니다.

그러나 파일이 이러한 파일의 예 등 EXE의 SFX 아카이브처럼 지퍼가 아니라 아직 WinRar를 읽을 수 할 수 있다고 말할 수

모든 파일에 있나요 어떤 요인 conmen은 WinRar에 소스를 찾아 볼 수있게합니다.

또 다른 예는 EXE 파일을 개별적으로 검사하는 바이러스 백신 소프트웨어입니까?

그래서 예 :

$handle = fopen("an_unknown_file.abc", "rb"); 
while (!feof($handle)) 
{ 
    //What generic code could I use to determain weather the file can be extracted ? 
} 
fclose($handle); 

감사합니다.

답변

3

Zip의 사양에 따라 실제 "zip"파일 부분은 파일 내에 아무 곳에 나 포함될 수 있습니다. 반드시 파일에서 '0'위치에서 시작할 필요는 없습니다. 이것이 자동 추출 zip이 작동하는 방법입니다. 작은 .exe 스텁 프로그램으로 큰 끝에 .zip 파일이 추가됩니다.

zip 찾기는 파일 내에서 zip 파일의 "magic number"를 검색 한 다음, 실제로 zip 파일인지 또는 zip의 마법을 포함하는 임의의 무언가를 결정하기 위해 몇 가지 경험적 방법을 사용합니다 번호.

.docx 파일은 Word 파일 내용을 나타내는 다양한 XML 파일을 포함하는 .zip 파일입니다. .jar 파일과 마찬가지로 다양한 종류의 Java 코드가 포함 된 zip 파일이 있습니다.

Winrar는 파일을 스캔하여 식별 가능한 "압축 아카이브입니다"유형의 서명을 찾습니다.이 중 하나는 zip 파일의 형식입니다.

그다지 마법 같은 것은 없습니다. 파일을 스캔하고 서명을 찾는 것입니다.

+0

브릴리언트 답변, 이것은 제가 찾던 정보입니다. Zip의 "매직 넘버"에 관한 몇 가지 논문에 대한 링크가 있습니까? 나는 그것을 읽을 수있다. 감사합니다 – RobertPitt

+0

아니,하지만 당신은 빨리 Google에서 뭔가를 찾을 수있을거야 확신합니다. "기본"zip 파일의 경우, 유닉스 시스템의 "magic"파일을 살펴볼 수 있습니다.이 파일은 매직 넘버와 발견을위한 발견 적 방법을 가지고 있습니다. –

+0

매직 넘버는'PK'입니다. 모든 종류의 파일에 숨겨진 아카이브를 발견하는 방법을 찾았습니다. 고마워요. – RobertPitt

1

질문이 정확히 무엇인지 모르겠지만 여기서 혼란스러운 점이 있습니다 ... 파일 확장명은 파일 확장명을 파일/프로그램과 관련시키는 사람과 컴퓨터에게 편리한 방법으로 설명 할 수 있습니다. 그들과 함께 일해라. WinRar (또는 다른 프로그램)는 파일에 들어있는 내용을 읽고 이해할 수 있으면이를 사용합니다. 유일한 중요한 점은 파일 형식 (파일의 데이터)이 유효하며 사용중인 프로그램이이 파일 형식으로 작업 할 수 있다는 것입니다.

파일이 WinRar에서 사용할 수있는 형식 (.rar, .zip, .gz 등) 인 경우 확장명은 .txt 또는 .whatever이며 WinRar는 계속 작업 할 수 있습니다. 그것. 확장은 단지 편의를위한 것입니다.

+0

미안하지만, 확장 기능과 콘텐츠 유형을 이해합니다. 제 질문은 일반 파일의 아카이브 파일을 결정합니다. 워드 파일 인'.docx' 파일을 가져옵니다.이 파일은 다음과 같은 구조를 가지지 않습니다. '.rar' winrar 아카이브 파일이지만 winrar가 그 안에있는 내용 파일을 읽을 수 있어야 유사점이 있어야합니다. – RobertPitt

+0

글쎄, .rar와 .gz도 상당히 다르지만 WinRar는 둘 다 작동합니다. WinRar (또는 다른 프로그램)를 만든 사람이이 파일 형식을 사용하도록 만들었습니다. .docx도 마찬가지입니다. WinRar를 작성한 사람들은 .docx 형식을 "이해"할 수 있도록 작성했습니다. 이 문제에 대해서는 실제로 "법"이 없습니다.소프트웨어가 더 많은 형식으로 작동하도록 만들 수 있다면, 사용자가 사용하는 경우 아카이버가 mp3를 재생하는 것이 이상 할 것입니다. 이해할 수 있다면 그렇게하십시오. 나는 .docx에 대해 많이 알지 못합니다. , WinRar가 사용할 수 있도록 .rar와 공통점이있는 것은 필요 없습니다. – Nikoloff

+0

WinRar는 여기에 명시된 바와 같이'docx'와 함께 작동하도록 제작되지 않았습니다 : http://www.rarlab.com/otherfmt .htm - 파일에 메타 데이터가 있는지 여부를 결정할 수있는 일종의 일반 리더를 구축 했으므로 해당 데이터를 일반적으로 읽을 수 있어야합니다. 이것이 내가 관심을 갖고있는 파일 경로를 이해하는 데 필요한 일반적인 경로입니다. 그 자체로 구조. – RobertPitt