mirror of
https://github.com/gchq/CyberChef.git
synced 2026-02-06 15:36:50 +00:00
Merge 57f7942b58 into eeb39a0b2b
This commit is contained in:
commit
69df3bfd01
@ -376,6 +376,7 @@
|
||||
"CSS selector",
|
||||
"Extract EXIF",
|
||||
"Extract ID3",
|
||||
"Extract Audio Metadata",
|
||||
"Extract Files",
|
||||
"RAKE",
|
||||
"Template"
|
||||
@ -505,7 +506,8 @@
|
||||
"View Bit Plane",
|
||||
"Randomize Colour Palette",
|
||||
"Extract LSB",
|
||||
"ELF Info"
|
||||
"ELF Info",
|
||||
"Extract Audio Metadata"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -538,7 +540,8 @@
|
||||
"Hex Density chart",
|
||||
"Scatter chart",
|
||||
"Series chart",
|
||||
"Heatmap chart"
|
||||
"Heatmap chart",
|
||||
"Extract Audio Metadata"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
1550
src/core/operations/ExtractAudioMetadata.mjs
Normal file
1550
src/core/operations/ExtractAudioMetadata.mjs
Normal file
File diff suppressed because it is too large
Load Diff
@ -65,6 +65,7 @@ import "./tests/DropNthBytes.mjs";
|
||||
import "./tests/ECDSA.mjs";
|
||||
import "./tests/ELFInfo.mjs";
|
||||
import "./tests/Enigma.mjs";
|
||||
import "./tests/ExtractAudioMetadata.mjs";
|
||||
import "./tests/ExtractEmailAddresses.mjs";
|
||||
import "./tests/ExtractHashes.mjs";
|
||||
import "./tests/ExtractIPAddresses.mjs";
|
||||
|
||||
287
tests/operations/tests/ExtractAudioMetadata.mjs
Normal file
287
tests/operations/tests/ExtractAudioMetadata.mjs
Normal file
@ -0,0 +1,287 @@
|
||||
/**
|
||||
* Extract Audio Metadata operation tests.
|
||||
*
|
||||
* @author d0s1nt
|
||||
* @copyright Crown Copyright 2025
|
||||
* @license Apache-2.0
|
||||
*/
|
||||
import TestRegister from "../../lib/TestRegister.mjs";
|
||||
import {
|
||||
MP3_HEX, WAV_HEX, FLAC_HEX, AAC_HEX,
|
||||
AC3_HEX, OGG_HEX, OPUS_HEX, WMA_HEX,
|
||||
M4A_HEX, AIFF_HEX
|
||||
} from "../../samples/Audio.mjs";
|
||||
|
||||
TestRegister.addTests([
|
||||
// ---- MP3 ----
|
||||
{
|
||||
name: "Extract Audio Metadata: MP3 container and MIME",
|
||||
input: MP3_HEX,
|
||||
expectedMatch: /Container<\/td><td>mp3<\/td>.*MIME<\/td><td>audio\/mpeg<\/td>/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.mp3", 524288] }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Extract Audio Metadata: MP3 common tags (title, artist)",
|
||||
input: MP3_HEX,
|
||||
expectedMatch: /Title<\/td><td>Galway<\/td>.*Artist<\/td><td>Kevin MacLeod<\/td>/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.mp3", 524288] }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Extract Audio Metadata: MP3 ID3v2 frames (TIT2, TPE1, TSSE)",
|
||||
input: MP3_HEX,
|
||||
expectedMatch: /ID3v2 Frames.*TIT2.*Galway.*TPE1.*Kevin MacLeod.*TSSE.*Lavf56\.40\.101/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.mp3", 524288] }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Extract Audio Metadata: MP3 detections (id3v2)",
|
||||
input: MP3_HEX,
|
||||
expectedMatch: /Metadata systems<\/td><td>id3v2<\/td>/,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.mp3", 524288] }
|
||||
]
|
||||
},
|
||||
|
||||
// ---- WAV ----
|
||||
{
|
||||
name: "Extract Audio Metadata: WAV container and MIME",
|
||||
input: WAV_HEX,
|
||||
expectedMatch: /Container<\/td><td>wav<\/td>.*MIME<\/td><td>audio\/wav<\/td>/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.wav", 524288] }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Extract Audio Metadata: WAV RIFF chunks (fmt)",
|
||||
input: WAV_HEX,
|
||||
expectedMatch: /RIFF Chunks.*fmt .*16 bytes @ offset 20/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.wav", 524288] }
|
||||
]
|
||||
},
|
||||
|
||||
// ---- FLAC ----
|
||||
{
|
||||
name: "Extract Audio Metadata: FLAC container and common tags",
|
||||
input: FLAC_HEX,
|
||||
expectedMatch: /Container<\/td><td>flac<\/td>.*Title<\/td><td>Galway<\/td>.*Artist<\/td><td>Kevin MacLeod<\/td>/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.flac", 524288] }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Extract Audio Metadata: FLAC metadata blocks (STREAMINFO, VORBIS_COMMENT)",
|
||||
input: FLAC_HEX,
|
||||
expectedMatch: /FLAC Metadata Blocks.*STREAMINFO<\/td><td>34 bytes<\/td>.*VORBIS_COMMENT<\/td><td>86 bytes<\/td>/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.flac", 524288] }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Extract Audio Metadata: FLAC Vorbis comments (vendor, tags)",
|
||||
input: FLAC_HEX,
|
||||
expectedMatch: /Vorbis Comments.*Vendor<\/td><td>Lavf56\.40\.101<\/td>.*TITLE<\/td><td>Galway<\/td>.*ARTIST<\/td><td>Kevin MacLeod<\/td>.*ENCODER<\/td><td>Lavf56\.40\.101<\/td>/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.flac", 524288] }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Extract Audio Metadata: FLAC detections",
|
||||
input: FLAC_HEX,
|
||||
expectedMatch: /Metadata systems<\/td><td>flac_metablocks, vorbis_comments<\/td>/,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.flac", 524288] }
|
||||
]
|
||||
},
|
||||
|
||||
// ---- AAC ----
|
||||
{
|
||||
name: "Extract Audio Metadata: AAC container and MIME",
|
||||
input: AAC_HEX,
|
||||
expectedMatch: /Container<\/td><td>aac<\/td>.*MIME<\/td><td>audio\/aac<\/td>/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.aac", 524288] }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Extract Audio Metadata: AAC ADTS technical fields",
|
||||
input: AAC_HEX,
|
||||
expectedMatch: /AAC ADTS.*mpeg_version<\/td><td>MPEG-4<\/td>.*profile<\/td><td>LC<\/td>.*sample_rate<\/td><td>44100<\/td>.*channel_description<\/td><td>stereo<\/td>/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.aac", 524288] }
|
||||
]
|
||||
},
|
||||
|
||||
// ---- AC3 ----
|
||||
{
|
||||
name: "Extract Audio Metadata: AC3 container and MIME",
|
||||
input: AC3_HEX,
|
||||
expectedMatch: /Container<\/td><td>ac3<\/td>.*MIME<\/td><td>audio\/ac3<\/td>/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.ac3", 524288] }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Extract Audio Metadata: AC3 technical fields (sample rate, bitrate, channels)",
|
||||
input: AC3_HEX,
|
||||
expectedMatch: /AC3 \(Dolby Digital\).*sample_rate<\/td><td>44100<\/td>.*bitrate_kbps<\/td><td>192<\/td>.*channel_layout<\/td><td>2\.0 \(L R\)<\/td>/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.ac3", 524288] }
|
||||
]
|
||||
},
|
||||
|
||||
// ---- OGG Vorbis ----
|
||||
{
|
||||
name: "Extract Audio Metadata: OGG container and common tags",
|
||||
input: OGG_HEX,
|
||||
expectedMatch: /Container<\/td><td>ogg<\/td>.*Title<\/td><td>Galway<\/td>.*Artist<\/td><td>Kevin MacLeod<\/td>/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.ogg", 524288] }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Extract Audio Metadata: OGG Vorbis comments (vendor, encoder)",
|
||||
input: OGG_HEX,
|
||||
expectedMatch: /Vorbis Comments.*Vendor<\/td><td>Lavf56\.40\.101<\/td>.*ENCODER<\/td><td>Lavc56\.60\.100 libvorbis<\/td>/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.ogg", 524288] }
|
||||
]
|
||||
},
|
||||
|
||||
// ---- Opus ----
|
||||
{
|
||||
name: "Extract Audio Metadata: Opus container and common tags",
|
||||
input: OPUS_HEX,
|
||||
expectedMatch: /Container<\/td><td>opus<\/td>.*Title<\/td><td>Galway<\/td>.*Artist<\/td><td>Kevin MacLeod<\/td>/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.opus", 524288] }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Extract Audio Metadata: Opus Vorbis comments (vendor, encoder)",
|
||||
input: OPUS_HEX,
|
||||
expectedMatch: /Vorbis Comments.*Vendor<\/td><td>Lavf58\.19\.102<\/td>.*ENCODER<\/td><td>Lavc58\.34\.100 libopus<\/td>/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.opus", 524288] }
|
||||
]
|
||||
},
|
||||
|
||||
// ---- WMA/ASF ----
|
||||
{
|
||||
name: "Extract Audio Metadata: WMA container and MIME",
|
||||
input: WMA_HEX,
|
||||
expectedMatch: /Container<\/td><td>wma<\/td>.*MIME<\/td><td>audio\/x-ms-wma<\/td>/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.wma", 524288] }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Extract Audio Metadata: WMA common tags (title, artist)",
|
||||
input: WMA_HEX,
|
||||
expectedMatch: /Title<\/td><td>Galway<\/td>.*Artist<\/td><td>Kevin MacLeod<\/td>/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.wma", 524288] }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Extract Audio Metadata: WMA ASF Content Description",
|
||||
input: WMA_HEX,
|
||||
expectedMatch: /ASF Content Description.*title<\/td><td>Galway<\/td>.*author<\/td><td>Kevin MacLeod<\/td>/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.wma", 524288] }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Extract Audio Metadata: WMA ASF Extended Content (encoding settings)",
|
||||
input: WMA_HEX,
|
||||
expectedMatch: /ASF Extended Content.*WM\/EncodingSettings<\/td><td>Lavf56\.40\.101<\/td>/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.wma", 524288] }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Extract Audio Metadata: WMA detections",
|
||||
input: WMA_HEX,
|
||||
expectedMatch: /Metadata systems<\/td><td>asf_header, asf_content_desc, asf_ext_content_desc<\/td>/,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.wma", 524288] }
|
||||
]
|
||||
},
|
||||
|
||||
// ---- M4A ----
|
||||
{
|
||||
name: "Extract Audio Metadata: M4A container, MIME and brand",
|
||||
input: M4A_HEX,
|
||||
expectedMatch: /Container<\/td><td>m4a<\/td>.*MIME<\/td><td>audio\/mp4<\/td>.*Brand<\/td><td>M4A <\/td>/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.m4a", 524288] }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Extract Audio Metadata: M4A top-level atoms (ftyp, mdat)",
|
||||
input: M4A_HEX,
|
||||
expectedMatch: /MP4 Top-Level Atoms.*ftyp<\/td>.*mdat<\/td>/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.m4a", 524288] }
|
||||
]
|
||||
},
|
||||
|
||||
// ---- AIFF ----
|
||||
{
|
||||
name: "Extract Audio Metadata: AIFF container, MIME and brand",
|
||||
input: AIFF_HEX,
|
||||
expectedMatch: /Container<\/td><td>aiff<\/td>.*MIME<\/td><td>audio\/aiff<\/td>.*Brand<\/td><td>AIFF<\/td>/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.aiff", 524288] }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Extract Audio Metadata: AIFF common tag (title from NAME chunk)",
|
||||
input: AIFF_HEX,
|
||||
expectedMatch: /Title<\/td><td>Galway<\/td>/,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.aiff", 524288] }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Extract Audio Metadata: AIFF chunks (NAME)",
|
||||
input: AIFF_HEX,
|
||||
expectedMatch: /AIFF Chunks.*NAME<\/td><td>Galway<\/td>/s,
|
||||
recipeConfig: [
|
||||
{ op: "From Hex", args: ["None"] },
|
||||
{ op: "Extract Audio Metadata", args: ["test.aiff", 524288] }
|
||||
]
|
||||
},
|
||||
]);
|
||||
73
tests/samples/Audio.mjs
Normal file
73
tests/samples/Audio.mjs
Normal file
@ -0,0 +1,73 @@
|
||||
/**
|
||||
* Audio file headers in various formats for use in tests.
|
||||
*
|
||||
* Each constant contains the minimal bytes needed for container
|
||||
* detection and metadata extraction (trimmed from real audio files).
|
||||
*
|
||||
* @author d0s1nt [d0s1nt@cyberchefaudio]
|
||||
* @copyright Crown Copyright 2025
|
||||
* @license Apache-2.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* MP3 with ID3v2.4 header — title: Galway, artist: Kevin MacLeod
|
||||
* 78 bytes: ID3v2 header + TIT2 + TPE1 + TSSE frames
|
||||
*/
|
||||
export const MP3_HEX = "4944330400000000004e544954320000000800000347616c77617900545045310000000f0000034b6576696e204d61634c656f6400545353450000000f0000034c61766635362e34302e3130310000000000000000000000";
|
||||
|
||||
/**
|
||||
* WAV (RIFF/WAVE) header — 2 channels, 16-bit, 44100 Hz
|
||||
* 48 bytes: RIFF header + fmt chunk + data chunk start
|
||||
*/
|
||||
export const WAV_HEX = "52494646e69d2a0057415645666d7420100000000100020044ac000010b102000400100064617461489d2a0000000100";
|
||||
|
||||
/**
|
||||
* FLAC with streaminfo + Vorbis comment block — title: Galway, artist: Kevin MacLeod
|
||||
* 174 bytes: fLaC magic + STREAMINFO (34 bytes) + VORBIS_COMMENT block (86 bytes)
|
||||
*/
|
||||
export const FLAC_HEX = "664c6143000000221200120000052e00319f0ac442f0000aa752c925754a50e5f02e117eeb46467e7053040000560d0000004c61766635362e34302e313031030000000c0000007469746c653d47616c776179140000006172746973743d4b6576696e204d61634c656f6415000000656e636f6465723d4c61766635362e34302e313031";
|
||||
|
||||
/**
|
||||
* AAC ADTS frame header — MPEG-4, LC profile, 44100 Hz, stereo
|
||||
* 32 bytes: ADTS sync + frame header fields
|
||||
*/
|
||||
export const AAC_HEX = "fff150800bbffcde02004c61766335382e33342e31303000423590002000001e";
|
||||
|
||||
/**
|
||||
* AC3 (Dolby Digital) sync frame header — 44100 Hz, 192 kbps, 2.0 stereo
|
||||
* 32 bytes: AC3 sync word + BSI fields
|
||||
*/
|
||||
export const AC3_HEX = "0b773968544043e106f575f0d4da1c1ac159850953e549a125736e8d37359d3f";
|
||||
|
||||
/**
|
||||
* OGG Vorbis — two OGG pages with identification + comment headers
|
||||
* title: Galway, artist: Kevin MacLeod, vendor: Lavf56.40.101
|
||||
* 281 bytes
|
||||
*/
|
||||
export const OGG_HEX = "4f6767530002000000000000000027a7032a000000002acbc833011e01766f72626973000000000244ac00000000000080b5010000000000b8014f6767530000000000000000000027a7032a010000007e1abea41168ffffffffffffffffffffffffffffff0703766f726269730d0000004c61766635362e34302e313031030000001f000000656e636f6465723d4c61766335362e36302e313030206c6962766f726269730c0000007469746c653d47616c776179140000006172746973743d4b6576696e204d61634c656f64";
|
||||
|
||||
/**
|
||||
* Opus — two OGG pages with OpusHead + OpusTags headers
|
||||
* title: Galway, artist: Kevin MacLeod, vendor: Lavf58.19.102
|
||||
* 233 bytes
|
||||
*/
|
||||
export const OPUS_HEX = "4f67675300020000000000000000919a59f200000000f6117eb601134f707573486561640102380180bb00000000004f67675300000000000000000000919a59f201000000b047e56601664f707573546167730d0000004c61766635382e31392e313032030000001d000000656e636f6465723d4c61766335382e33342e313030206c69626f7075730c0000007469746c653d47616c776179140000006172746973743d4b6576696e204d61634c656f64";
|
||||
|
||||
/**
|
||||
* WMA/ASF — ASF header with Content Description + Extended Content
|
||||
* title: Galway, author: Kevin MacLeod, encoder: Lavf56.40.101
|
||||
* 700 bytes: ASF Header Object + all sub-objects
|
||||
*/
|
||||
export const WMA_HEX = "3026b2758e66cf11a6d900aa0062ce6c8a02000000000000060000000102a1dcab8c47a9cf118ee400c00c205365680000000000000000000000000000000000000000000000bc3504000000000000803ed5deb19d0156000000000000007040490b00000000b03a7009000000001c0c00000000000002000000800c0000800c000000f40100b503bf5f2ea9cf118ee300c00c2053652e0000000000000011d2d3abbaa9cf118ee600c00c2053650600000000003326b2758e66cf11a6d900aa0062ce6c4c000000000000000e001c00000000000000470061006c0077006100790000004b006500760069006e0020004d00610063004c0065006f006400000040a4d0d207e3d21197f000a0c95ea850b40000000000000003000c007400690074006c006500000000000e00470061006c0077006100790000000e0041007500740068006f007200000000001c004b006500760069006e0020004d00610063004c0065006f0064000000280057004d002f0045006e0063006f00640069006e006700530065007400740069006e0067007300000000001c004c00610076006600350036002e00340030002e0031003000310000009107dcb7b7a9cf118ee600c00c2053657200000000000000409e69f84d5bcf11a8fd00805f5c442b50cdc3bf8f61cf118bb200aa00b4e22000000000000000001c000000080000000100000000006101020044ac0000803e0000e70210000a000000000001000000000001e702e7020100004052d1861d31d011a3a400a0c90348f664000000000000004152d1861d31d011a3a400a0c90348f60100000002001700570069006e0064006f007700730020004d006500640069006100200041007500640069006f0020005600380000000000020061013626b2758e66cf11a6d900aa0062ce6c32330400000000000000000000000000000000000000000056000000000000000101";
|
||||
|
||||
/**
|
||||
* M4A (MPEG-4 Audio) — ftyp atom with brand "M4A ", plus mdat
|
||||
* 512 bytes: ftyp + free + mdat start (moov not included in slice)
|
||||
*/
|
||||
export const M4A_HEX = "0000001c667479704d344120000002004d34412069736f6d69736f3200000008667265650003e2236d6461742111450014500146fff10a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5de98214b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4bc211a93a09c3e310803595989841e21e02814c4d2f28f925da49e5fe61d4521f0088400d65662610788780a0563ab2a671af1d0cd2fd9997d18be037ff8852d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d";
|
||||
|
||||
/**
|
||||
* AIFF (FORM/AIFF) header with NAME chunk = "Galway", COMM and SSND chunks
|
||||
* 36 bytes: FORM header + NAME chunk + COMM chunk start
|
||||
*/
|
||||
export const AIFF_HEX = "464f524d002a9d84414946464e414d450000000647616c776179434f4d4d00000012000200";
|
||||
Loading…
Reference in New Issue
Block a user