先定義一個表scrambledSegments
再定義一個地圖orderMap
再定義一個方法restorePassword
const scrambledSegments = [
'lz_b',
'no_c',
'CTF{',
'pico',
'706c',
'5}',
'ts_p',
'lien',
];
const orderMap = [3, 2, 1, 7, 6, 0, 4, 5];
function restorePassword(scrambled, order) {
let result = '';
for (let i = 0; i < order.length; i++) {
result += scrambled[order[i]];
}
return result;
}
const recovered = restorePassword(scrambledSegments, orderMap);
console.log('還原密碼:', recovered);
顯示
HEAPU8.subarray(ptr, ptr + length)
console.log(JSON.stringify(Array.from(HEAPU8.subarray(ptr, ptr + length))));
console.log(JSON.stringify(Array.from(HEAPU8.subarray(19660816, 19660816 + 240))));
console.log($var6, $var5,$var4,$var3,$var2,$var1,$var0)
console.log(JSON.stringify([
$var6, $var5, $var4, $var3, $var2, $var1, $var0
]));
console.log(JSON.stringify([
stack[0].value, stack[1].value,
]));
console.log(JSON.stringify([
$var5.value
]));
let base = 19660816;
let len = 240;
let mem = new Uint8Array(memories[“$env.memory”].buffer, base, len);
for (let i = 0; i < len; i += 16) {
let line = mem.slice(i, i + 16)
.map(b => b.toString(16).padStart(2, ‘0’))
.join(‘ ‘);
console.log((base + i).toString(16).padStart(8, ‘0’) + “: “ + line);
}
11467184
function dumpPtr(ptr, len) {
const data = HEAPU8.subarray(ptr, ptr + len);
const hex = Array.from(data).map(b => b.toString(16).padStart(2, ‘0’)).join(‘ ‘);
const ascii = Array.from(data).map(b => (b >= 32 && b <= 126) ? String.fromCharCode(b) : ‘.’).join(‘’);
console.log(“🔢 Hex:\n”, hex);
console.log(“🔤 ASCII:\n”, ascii);
}