$maskedData[$i] должен начинаться с 6 если длина <= 125
$unmaskedData .= $maskedData[тут должно быть 6] ^ $masks[$i % 4]; // а $i =0 % 4
что то типо такого
function unmask($data) {
$length = ord($data[1]) & 127;
$offset = 2;
if($length == 126) {
$offset = 4;
} else if($length == 127) {
$offset = 10;
}
$masks = substr($data, 2, 4);
$maskedData = substr($data, 6);
$unmaskedData = '';
for ($i = offset + 4, $j = 0; $i < strlen($maskedData); ++$i, ++$j) {
$unmaskedData .= $maskedData[$i] ^ $masks[$j % 4];
}
return $unmaskedData;
}