mirror of
https://github.com/horsicq/Detect-It-Easy.git
synced 2026-06-24 01:54:08 +00:00
65 lines
1.8 KiB
Text
65 lines
1.8 KiB
Text
// Detect a RAR archive.
|
|
// Author: Jason Hood <jadoxa@yahoo.com.au>
|
|
|
|
includeScript("archive");
|
|
sName="RAR";
|
|
|
|
function detect_RAR(bFile,bShowOptions)
|
|
{
|
|
var nOffset,nSize;
|
|
if(bFile)
|
|
{
|
|
nOffset=0;
|
|
nSize=File.getSize();
|
|
}
|
|
else
|
|
{
|
|
nOffset=File.getOverlayOffset();
|
|
nSize=File.getOverlaySize();
|
|
}
|
|
if(nSize>=64)
|
|
{
|
|
if(File.compare("'Rar!'1A07",nOffset))
|
|
{
|
|
switch(File.readByte(nOffset+6))
|
|
{
|
|
case 0: sVersion="4"; break;
|
|
case 1: sVersion="5"; break;
|
|
}
|
|
bDetected=1;
|
|
}
|
|
else if(File.compare("'RE~^'",nOffset))
|
|
{
|
|
sVersion="1.4";
|
|
bDetected=1;
|
|
}
|
|
if(sVersion=="4")
|
|
{
|
|
var nOptions=File.readByte(nOffset+10);
|
|
if(nOptions&8)
|
|
{
|
|
sOptions="solid";
|
|
}
|
|
if(nOptions&0x80)
|
|
{
|
|
sOptions=sOptions.append("encrypted");
|
|
}
|
|
else if(bShowOptions)
|
|
{
|
|
nOffset+=7+File.readWord(nOffset+12);
|
|
while(File.readByte(nOffset+2)!=0x74)
|
|
{
|
|
nOffset+=File.readWord(nOffset+5)+File.readDword(nOffset+7);
|
|
}
|
|
while(File.readByte(nOffset+2)==0x74)
|
|
{
|
|
var nLen=File.readDword(nOffset+7);
|
|
Archive.add(File.readDword(nOffset+11),nLen,
|
|
(File.readByte(nOffset+3)&0xE0)==0xE0);
|
|
nOffset+=File.readWord(nOffset+5)+nLen;
|
|
}
|
|
sOptions=sOptions.append(Archive.contents());
|
|
}
|
|
}
|
|
}
|
|
}
|