move utils

This commit is contained in:
DavidVentura
2024-01-25 00:09:27 +01:00
parent 12f78a506d
commit 65d033b82d
3 changed files with 94 additions and 148 deletions
+2 -2
View File
@@ -1,5 +1,5 @@
import { replaceFunctions, Commands, CommandsByValue, u16_swap } from "./func_replacements.js"; import { replaceFunctions, Commands, CommandsByValue } from "./func_replacements.js";
import { placeholderTypes, sprintf } from "./utils.js"; import { placeholderTypes, sprintf, u16_swap } from "./utils.js";
const hook_fn = (name_in_elf, enter, leave) => { const hook_fn = (name_in_elf, enter, leave) => {
var symbol_addr = DebugSymbol.fromName(name_in_elf).address; var symbol_addr = DebugSymbol.fromName(name_in_elf).address;
+72 -142
View File
@@ -1,84 +1,4 @@
export const u16_swap = (x) => ((x & 0xff00) >> 8) | ((x & 0x00ff) << 8); import { swap_endianness_u32, swap_endianness_u16, u16_swap } from "./utils.js";
export const XqBytesDec = (inoutbuf, buflen, rotate) => {
let new_buf = new Uint8Array(buflen);
new_buf.fill(0x1);
for (let i = 0; i < buflen; i++) {
let b = inoutbuf.add(i).readU8();
if ((b & 1) != 0) {
new_buf[i] = b - 1;
} else {
new_buf[i] = b + 1;
}
}
for (let i = rotate; i < buflen; i++) {
inoutbuf.add(i).writeU8(new_buf[i - rotate]);
}
for (let i = 0; i < rotate; i++) {
inoutbuf.add(i).writeU8(new_buf[buflen - rotate + i]);
}
};
export const XqBytesEnc = (inoutbuf, buflen, rotate) => {
let new_buf = new Uint8Array(buflen);
new_buf.fill(0x1);
for (let i = 0; i < buflen; i++) {
let b = inoutbuf.add(i).readU8();
if ((b & 1) != 0) {
new_buf[i] = b - 1;
} else {
new_buf[i] = b + 1;
}
}
for (let i = 0; i < buflen - rotate; i++) {
inoutbuf.add(i).writeU8(new_buf[i + rotate]);
}
for (let i = 0; i < rotate; i++) {
inoutbuf.add(buflen - rotate + i).writeU8(new_buf[i]);
}
};
const swap_endianness_u16 = (ptr) => {
const bytes = ptr.readU16();
const swapped = [(bytes & 0xff00) >> 8, bytes & 0x00ff];
return swapped;
};
const swap_endianness_u32 = (ptr) => {
const bytes = ptr.readU32();
const swapped = [
(bytes & 0xff000000) >> 24,
(bytes & 0x00ff0000) >> 16,
(bytes & 0x0000ff00) >> 8,
bytes & 0x000000ff,
];
return swapped;
};
const compare_buf = (a, b, len) => {
console.log(`comparin len ${len}`);
const ba = new Uint8Array(a.readByteArray(len));
const bb = new Uint8Array(b.readByteArray(len));
let deltas = new Uint8Array(len);
let bad = false;
for (let i = 0; i < len; i++) {
if (ba[i] == bb[i]) {
deltas[i] = 0;
} else {
deltas[i] = 0xff;
bad = true;
}
}
if (bad) {
console.log("deltas");
console.log(deltas.buffer);
console.log("buf a");
console.log(ba.buffer);
console.log("buf b");
console.log(bb.buffer);
console.log("####");
}
};
export const Commands = { export const Commands = {
Close: 0xf1f0, Close: 0xf1f0,
LanSearchExt: 0xf132, LanSearchExt: 0xf132,
@@ -109,6 +29,77 @@ export const CommandsByValue = Object.keys(Commands).reduce((acc, cur) => {
return acc; return acc;
}, {}); }, {});
const writeCommand2 = (command, buf) => {
buf.writeByteArray([(command & 0xff00) >> 8, command & 0xff]);
};
const writeCommand4 = (command, buf) => {
buf.writeByteArray([(command & 0xff00) >> 8, command & 0xff, 0x00, 0x00]);
};
export const XqBytesDec = (inoutbuf, buflen, rotate) => {
let new_buf = new Uint8Array(buflen);
new_buf.fill(0x1);
for (let i = 0; i < buflen; i++) {
let b = inoutbuf.add(i).readU8();
if ((b & 1) != 0) {
new_buf[i] = b - 1;
} else {
new_buf[i] = b + 1;
}
}
for (let i = rotate; i < buflen; i++) {
inoutbuf.add(i).writeU8(new_buf[i - rotate]);
}
for (let i = 0; i < rotate; i++) {
inoutbuf.add(i).writeU8(new_buf[buflen - rotate + i]);
}
};
export const XqBytesEnc = (inoutbuf, buflen, rotate) => {
let new_buf = new Uint8Array(buflen);
new_buf.fill(0x1);
for (let i = 0; i < buflen; i++) {
let b = inoutbuf.add(i).readU8();
if ((b & 1) != 0) {
new_buf[i] = b - 1;
} else {
new_buf[i] = b + 1;
}
}
for (let i = 0; i < buflen - rotate; i++) {
inoutbuf.add(i).writeU8(new_buf[i + rotate]);
}
for (let i = 0; i < rotate; i++) {
inoutbuf.add(buflen - rotate + i).writeU8(new_buf[i]);
}
};
const compare_buf = (a, b, len) => {
console.log(`comparin len ${len}`);
const ba = new Uint8Array(a.readByteArray(len));
const bb = new Uint8Array(b.readByteArray(len));
let deltas = new Uint8Array(len);
let bad = false;
for (let i = 0; i < len; i++) {
if (ba[i] == bb[i]) {
deltas[i] = 0;
} else {
deltas[i] = 0xff;
bad = true;
}
}
if (bad) {
console.log("deltas");
console.log(deltas.buffer);
console.log("buf a");
console.log(ba.buffer);
console.log("buf b");
console.log(bb.buffer);
console.log("####");
}
};
const reply_Drw = (inbuf, outbuf) => { const reply_Drw = (inbuf, outbuf) => {
/* /*
-> cmd = inbuf+10 -> cmd = inbuf+10
@@ -135,13 +126,6 @@ const pack_P2pHdr = (inbuf, out_buf) => {
out_buf.writeByteArray(inbuf.readByteArray(4)); out_buf.writeByteArray(inbuf.readByteArray(4));
return 4; return 4;
}; };
const writeCommand2 = (command, buf) => {
buf.writeByteArray([(command & 0xff00) >> 8, command & 0xff]);
};
const writeCommand4 = (command, buf) => {
buf.writeByteArray([(command & 0xff00) >> 8, command & 0xff, 0x00, 0x00]);
};
const create_Close = (buf) => { const create_Close = (buf) => {
writeCommand4(Commands.Close, buf); writeCommand4(Commands.Close, buf);
return 4; return 4;
@@ -202,19 +186,6 @@ const create_P2pReq = (outbuf, inbuf, m_s_addr, addr_fam) => {
}; };
const create_LstReq = (outbuf, inbuf) => { const create_LstReq = (outbuf, inbuf) => {
/* original
in
0 1 2 3 4 5 6 7 8 9 A B C D E F
0123456789ABCDEF 00000000 42 41 54 43 00 00 00 00 00 09 4c fb 45 58 4c 56
BATC......L.EXLV 00000010 53 00 00 00 00 00 00 00 00 00 00 00 S...........
out
0 1 2 3 4 5 6 7 8 9 A B C
D E F 0123456789ABCDEF 00000000 f1 67 00 14 00 00 00 00 42 41 54 43 00
00 00 00 .g......BATC.... 00000010 00 09 4c fb 45 58 4c 56 53 00 00 00
..L.EXLVS... retval 0x18
*/
const LISTREQ_SIZE = 0x14; const LISTREQ_SIZE = 0x14;
writeCommand2(Commands.LstReq, outbuf); writeCommand2(Commands.LstReq, outbuf);
outbuf.add(2).writeU16(LISTREQ_SIZE << 8); outbuf.add(2).writeU16(LISTREQ_SIZE << 8);
@@ -250,25 +221,6 @@ const dbg_create_Drw = (og_func) => {
// `2: ${idk_param2.toString(16)} 3: ${idk_param3.toString(16)} 4: // `2: ${idk_param2.toString(16)} 3: ${idk_param3.toString(16)} 4:
// ${idk_param4.toString(16)} copylen: ${copy_len}`, // ${idk_param4.toString(16)} copylen: ${copy_len}`,
//); //);
/*
* 2: ffffffd1 3: 0 4: 3100 copylen: 44
In buffer
0 1 2 3 4 5 6 7 8 9 A B C D E F
0123456789ABCDEF 00000000 11 0a 31 10 24 00 00 00 75 39 4c 74 01 01 01
01
..1.$...u9Lt.... 00000010 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01
................ 00000020 01 01 01 01 01 01 01 01 01 01 01 00
............ OG retval 52 OG out buffer 0 1 2 3 4 5 6 7 8 9 A
B C D E F 0123456789ABCDEF 00000000 f1 d0 00 30 00 00 00 00 d1 00
00 31 11 0a 31 10
...0.......1..1. 00000010 24 00 00 00 75 39 4c 74 01 01 01 01 01 01 01
01
$...u9Lt........ 00000020 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01
................ 00000030 01 01 01 01
*/
const copy_len_swapped = u16_swap(copy_len + 4); const copy_len_swapped = u16_swap(copy_len + 4);
writeCommand2(Commands.Drw, outbuf); writeCommand2(Commands.Drw, outbuf);
outbuf.add(2).writeU16(copy_len_swapped); outbuf.add(2).writeU16(copy_len_swapped);
@@ -284,11 +236,6 @@ const dbg_pack_ClntPkt = (og_func) => {
const pack_ClntPkt = (addr_fam, inbuf, outbuf) => { const pack_ClntPkt = (addr_fam, inbuf, outbuf) => {
const cmd = u16_swap(inbuf.readU16()); const cmd = u16_swap(inbuf.readU16());
console.log(`pack_ClntPkt: cmd 0x${cmd.toString(16)} = ${CommandsByValue[cmd]}; fam ${addr_fam}; inbuf =>`); console.log(`pack_ClntPkt: cmd 0x${cmd.toString(16)} = ${CommandsByValue[cmd]}; fam ${addr_fam}; inbuf =>`);
// console.log(inbuf.readByteArray(16));
// const ret = og_func(addr_fam, inbuf, outbuf);
// const new_outbuf = Memory.alloc(ret);
const hdrLen = pack_P2pHdr(inbuf, outbuf); const hdrLen = pack_P2pHdr(inbuf, outbuf);
const packFn = { const packFn = {
[Commands.LanSearch]: () => hdrLen, [Commands.LanSearch]: () => hdrLen,
@@ -307,10 +254,8 @@ const dbg_pack_ClntPkt = (og_func) => {
}, },
}; };
/* /*
// No PackClnt?
P2PAlive: 0xf1e0, P2PAlive: 0xf1e0,
P2PAliveAck: 0xf1e1, P2PAliveAck: 0xf1e1,
P2pRdy: 0xf142, // idk?? P2pRdy: 0xf142, // idk??
*/ */
@@ -425,18 +370,3 @@ export const replaceFunctions = () => {
replacements.forEach((x) => replace_func(...x)); replacements.forEach((x) => replace_func(...x));
return replacements.map((x) => x[0].name.replace("dbg_", "")); return replacements.map((x) => x[0].name.replace("dbg_", ""));
}; };
const setMemory = (m) => {
global.Memory = m;
};
/*
module.exports = {
replaceFunctions,
u16_swap,
Commands,
CommandsByValue,
reply_Drw,
replace_func,
setMemory,
};
*/
+16
View File
@@ -21,3 +21,19 @@ export const sprintf = (str, values) => {
}) })
.join(""); .join("");
}; };
export const u16_swap = (x) => ((x & 0xff00) >> 8) | ((x & 0x00ff) << 8);
export const swap_endianness_u16 = (ptr) => {
const bytes = ptr.readU16();
const swapped = [(bytes & 0xff00) >> 8, bytes & 0x00ff];
return swapped;
};
export const swap_endianness_u32 = (ptr) => {
const bytes = ptr.readU32();
const swapped = [
(bytes & 0xff000000) >> 24,
(bytes & 0x00ff0000) >> 16,
(bytes & 0x0000ff00) >> 8,
bytes & 0x000000ff,
];
return swapped;
};