mirror of
				https://git.unlock-music.dev/um/web.git
				synced 2025-11-04 11:53:30 +08:00 
			
		
		
		
	Add Header Check For .mgg
This commit is contained in:
		
							parent
							
								
									1d3725f9a4
								
							
						
					
					
						commit
						ff63c420eb
					
				@ -1,4 +1,4 @@
 | 
			
		||||
import {FLAC_HEADER, IsBytesEqual} from "./util"
 | 
			
		||||
import {FLAC_HEADER, IsBytesEqual, OGG_HEADER} from "./util"
 | 
			
		||||
 | 
			
		||||
const QMOggConstHeader = [
 | 
			
		||||
    0x4F, 0x67, 0x67, 0x53, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
@ -119,18 +119,18 @@ export function QmcMaskDetectMflac(data) {
 | 
			
		||||
        } catch (e) {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return mask
 | 
			
		||||
    return mask;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function QmcMaskDetectMgg(input) {
 | 
			
		||||
    if (input.length < QMOggConstHeader.length) return;
 | 
			
		||||
export function QmcMaskDetectMgg(data) {
 | 
			
		||||
    if (data.length < QMOggConstHeader.length) return;
 | 
			
		||||
    let matrixConfidence = {};
 | 
			
		||||
    for (let i = 0; i < 58; i++) matrixConfidence[i] = {};
 | 
			
		||||
 | 
			
		||||
    for (let idx128 = 0; idx128 < QMOggConstHeader.length; idx128++) {
 | 
			
		||||
        if (QMOggConstHeaderConfidence[idx128] === 0) continue;
 | 
			
		||||
        let idx58 = GetMask58Index(idx128);
 | 
			
		||||
        let mask = input[idx128] ^ QMOggConstHeader[idx128];
 | 
			
		||||
        let mask = data[idx128] ^ QMOggConstHeader[idx128];
 | 
			
		||||
        let confidence = QMOggConstHeaderConfidence[idx128];
 | 
			
		||||
        if (mask in matrixConfidence[idx58]) {
 | 
			
		||||
            matrixConfidence[idx58][mask] += confidence
 | 
			
		||||
@ -146,7 +146,9 @@ export function QmcMaskDetectMgg(input) {
 | 
			
		||||
    } catch (e) {
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    return new QmcMask(matrix, superA, superB);
 | 
			
		||||
    const mask = new QmcMask(matrix, superA, superB);
 | 
			
		||||
    if (!IsBytesEqual(OGG_HEADER, mask.Decrypt(data.slice(0, OGG_HEADER.length)))) return;
 | 
			
		||||
    return mask;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function QmcMaskCreate128(mask128) {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user