mirror of
https://github.com/horsicq/Detect-It-Easy.git
synced 2026-06-24 01:54:08 +00:00
Renamed and moved numerous .sg files in the db directory to follow a more consistent naming convention and directory structure, grouping by type (e.g., compiler, cruncher, packer, protector, etc.). This improves maintainability and clarity of the signature database organization.
105 lines
3.9 KiB
JavaScript
105 lines
3.9 KiB
JavaScript
// Detect It Easy: detection rule file
|
|
// Author: LinXP
|
|
// Status: WIP
|
|
|
|
meta("audio", "FMOD Sample Bank (.FSB)");
|
|
|
|
function detect() {
|
|
if (Binary.getSize() >= 0x24) {
|
|
if (Binary.compare("'FSB'..")) {
|
|
var nSamples, nExtVer, nMode;
|
|
var sID = Binary.getString(0, 4);
|
|
sVersion = sID;
|
|
bDetected = true;
|
|
switch (sID) {
|
|
case "FSB1":
|
|
nSamples = Binary.read_int32(0x04);
|
|
break;
|
|
|
|
case "FSB2":
|
|
nSamples = Binary.read_int32(0x04);
|
|
break;
|
|
|
|
case "FSB3":
|
|
nSamples = Binary.read_int32(0x04);
|
|
nExtVer = Binary.read_int32(0x10);
|
|
nMode = Binary.read_int32(0x14);
|
|
break;
|
|
|
|
case "FSB4":
|
|
nSamples = Binary.read_int32(0x04);
|
|
nExtVer = Binary.read_int32(0x10);
|
|
nMode = Binary.read_int32(0x14);
|
|
break;
|
|
|
|
case "FSB5":
|
|
nSamples = Binary.read_int32(0x08);
|
|
nExtVer = Binary.read_int32(0x10);
|
|
nMode = Binary.read_int32(0x18);
|
|
switch (nMode) {
|
|
case 0x01:
|
|
sOption("PCM8");
|
|
break; // 8bit integer PCM data.
|
|
case 0x02:
|
|
sOption("PCM16");
|
|
break; // 16bit integer PCM data.
|
|
case 0x03:
|
|
sOption("PCM24");
|
|
break; // 24bit integer PCM data.
|
|
case 0x04:
|
|
sOption("PCM32");
|
|
break; // 32bit integer PCM data.
|
|
case 0x05:
|
|
sOption("PCMFLOAT");
|
|
break; // 32bit floating point PCM data.
|
|
case 0x06:
|
|
sOption("GCADPCM");
|
|
break; // Compressed Nintendo 3DS/Wii DSP data.
|
|
case 0x07:
|
|
sOption("IMA ADPCM");
|
|
break; // Compressed IMA ADPCM data.
|
|
case 0x08:
|
|
sOption("VAG");
|
|
break; // Compressed PlayStation Portable ADPCM data.
|
|
case 0x09:
|
|
sOption("HEVAG");
|
|
break; // Compressed PSVita ADPCM data.
|
|
case 0x0A:
|
|
sOption("XMA");
|
|
break; // Compressed Xbox360 XMA data.
|
|
case 0x0B:
|
|
sOption("MP3");
|
|
break; // Compressed MPEG layer 2 or 3 data.
|
|
case 0x0C:
|
|
sOption("CELT");
|
|
break; // Compressed CELT data.
|
|
case 0x0D:
|
|
sOption("AT9");
|
|
break; // Compressed PSVita ATRAC9 data.
|
|
case 0x0E:
|
|
sOption("XWMA");
|
|
break; // Compressed Xbox360 xWMA data.
|
|
case 0x0F:
|
|
sOption("VORBIS");
|
|
break; // Compressed Vorbis data.
|
|
case 0x10:
|
|
sOption("FADPCM");
|
|
break;
|
|
case 0x11:
|
|
sOption("OPUS");
|
|
break;
|
|
default:
|
|
bDetected = false;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
bDetected = false;
|
|
}
|
|
sOption("Samples:" + nSamples);
|
|
}
|
|
|
|
}
|
|
|
|
return result();
|
|
}
|