Scenexe socket fiddler. Modify incoming and outgoing packets by writing functions for incoming and outgoing.
이 스크립트는 직접 설치하는 용도가 아닙니다. 다른 스크립트에서 메타 지시문 // @require https://update.greatest.deepsurf.us/scripts/457775/1135824/Scenexe%20Socket%20Fiddler.js을(를) 사용하여 포함하는 라이브러리입니다.
// ==UserScript==
// @name Scenexe Socket Fiddler
// @namespace ScenexeSocketFiddler
// @version 0.1
// @description Scenexe socket fiddler. Modify incoming and outgoing packets by writing functions for incoming and outgoing.
// @author discordtehe
// @match https://*.scenexe.io
// @require https://greatest.deepsurf.us/scripts/457386-scenexeutils/code/ScenexeUtils.js?version=1134854
// @grant none
// ==/UserScript==
window.incoming = (data)=>{return data};
window.outgoing = (data)=>{return data};
WebSocket.prototype.addEventListener = new Proxy(WebSocket.prototype.addEventListener, {
apply: function (target, scope, args) {
if (args[0] === 'message') {
args[1] = new Proxy(args[1], {
apply: function(ftarget, fscope, fargs) {
var decoded = decode(new Uint8Array(fargs[0].data));
decoded = incoming(decoded);
if (decoded != undefined)
fargs[0] = new MessageEvent('message', {data: encode(decoded)})
let fdata = ftarget.apply(fscope, fargs);
return fdata;
}
})
}
let data = target.apply(scope, args);
return data;
}
})
WebSocket.prototype.send = new Proxy(WebSocket.prototype.send, {
apply: function (target, scope, args) {
var decoded = decodeInverse(new Uint8Array(args[0])); //decodeInverse because this data has been already encoded by scenexe's main.js
decoded = outgoing(decoded);
if (decoded != undefined)
args[0] = encodeInverse(decoded);
let data = target.apply(scope, args);
return data;
}
})