Tråd bedømmelse:
  • 0 Stemmer - 0 Gennemsnit
  • 1
  • 2
  • 3
  • 4
  • 5
Guide til N scripts
21-02-2024, 15:27 (Denne besked var sidst ændret: 21-02-2024, 19:46 af SaNiTy.)
#1
Guide til N scripts
Hej,

Da N har valgt at bruge Object.freeze på vores elskede WebSocket, har det vanskeliggjort at bruge de tidligere scripts, der har været delt, men det er bestemt ikke umuligt.

Jeg har lavet en lille step-by-step guide med billeder til, hvordan man kan bruge sockets igen.

https://imgur.com/a/M4bKFJ0

1) Log ind på N
2) Lav "CTRL - SHIFT - I"
3) Klik på sources-fanen
4) Højre klik på "top" og klik "Search in all files"
5) Søg efter "f.onopen" og klik ind på resultatet
6) Klik på linjen ud for "f.onopen"
7) Hop over i N og lav "CTRL - R" eller refresh N
8) Verificer at det ser nogenlunde sådan ud som på billede 5 i linket
9) Klik på console-fanen
10) Skriv "socket = f"
11) Klik nu på linjen ud for "f.onopen" igen og klik på den blå pil i højre hjørne
12) Du kan nu bruge de forskellige scripts igen med socket.send og socket.onmessage
13) Du skal udføre punkterne fra 7 til 11 i et ikke alt for langsomt tempo, ellers ryger forbindelsen til N

Skriv endelig privat hvis der er spørgsmål til metodikken.

Jeg kan forstå at folk stadig har problemer med at få scripts til at fungere, så her er et simpelt script som skriver ".." og tager jeres timer Smile
I må selv rette det til.


Smid nedenstående kode ind i step 10 i stedet:

let socket = f
let proto = WebSocket.prototype.send
let onmessage = socket.onmessage
let myid = null;

socket.onmessage = function (e) {
var cmd = e.data.split(",");
if (cmd[0] == "3" && cmd[1] == "hour") {
var params = cmd[2].split(':');
var hour = params[0],
token = params[1];

setTimeout(function () {
proto.call(socket, "3,time," + token + ":1");
console.log("Received hour %s.", hour);
}, Math.floor(Math.random() * 29000) + 1000);
}
return onmessage(e);
}

socket.send = function (data) {
if (myid == null && data.substr(0, 2) == " ,") {
myid = data.split(",")[1];
console.log("Obtained session id %s", myid);

setInterval(function () {
socket.send('!,' + myid + ',..')
}, Math.floor(Math.random() * 120000) + 540000);
}
proto.call(socket, data);
}
Find alle beskeder fra denne bruger
Citer denne besked i et svar
22-02-2024, 18:34 (Denne besked var sidst ændret: 12-03-2024, 10:16 af test2.)
#2
RE: Guide til N scripts
et nemmer trick er at bruge TramperMonkey til det.

da du kan sige at det TramperMoney, skal køre inden noget andet. Det vil sige, du kan overskrive den orginale WebSocket obj. og så overskrive den. Så når de på N, kalder den socket. Kan du opsnappe den..

Eks som virker. Det er bare bacis, som printer dataen som N sender. 

Kode:
// ==UserScript==
// @name         n socket script
// @namespace    http://tampermonkey.net/
// @version      2024-02-22
// @description  try to take over the world!
// @author       You
// @match        https://www.netstationen.dk/visi/client.asp
// @icon         https://www.google.com/s2/favicons?sz=64&domain=netstationen.dk
// @grant        none
// @run-at document-start
// ==/UserScript==

(function() {
   'use strict';

   function ss(socket){
var realonmessage = socket.onmessage;
       socket.onmessage = function(e) {
           var data = e.data;
           console.log("data:" + data)
           realonmessage(e)
       }

   }

   //start script, når forbinder til socketen.
   const sockets = [];
   const nativeWebSocket = window.WebSocket;
   window.WebSocket = function(...args){
       console.log("New Socket!!")
       const socket = new nativeWebSocket(...args);
       sockets.push(socket);
       setTimeout(function() {
           ss(socket);
       }, 1000);
       return socket;
   };
})();
 

Det som er "key" her. Er at der under userscript stå 
Kode:
// @run-at document-start
Det sikre at det her kode kode køre før alt andet på siden.

Så kan vi lave 
Kode:
const nativeWebSocket = window.WebSocket;

   window.WebSocket = function(...args){
så gemmer jeg den orginale WebSocket kode. som er en function. Og så overskriver jeg den. Så det vil sige alt kode her efter. vil gå igennem den kode jeg har. Så der inde kalder jeg bare
Kode:
 const socket = new nativeWebSocket(...args);
For at køre den normale logik. men her har du så det socket instance, som de bruger.
Find alle beskeder fra denne bruger
Citer denne besked i et svar
23-02-2024, 12:55
#3
RE: Guide til N scripts
(22-02-2024, 18:34)test2 Skrev: et nemmer trick er at bruge TramperMonkey til det.

da du kan sige at det TramperMoney, skal køre inden noget andet. Det vil sige, du kan overskrive den orginale WebSocket obj. og så overskrive den. Så når de på N, kalder den socket. Kan du opsnappe den..

Eks som virker. Det er bare bacis, som printer dataen som N sender. 

Kode:
// ==UserScript==
// @name         n socket script
// @namespace    http://tampermonkey.net/
// @version      2024-02-22
// @description  try to take over the world!
// @author       You
// @match        https://www.netstationen.dk/visi/client.asp
// @icon         https://www.google.com/s2/favicons?sz=64&domain=netstationen.dk
// @grant        none
// @run-at document-start
// ==/UserScript==

(function() {
   'use strict';

   function ss(socket){
       socket.onmessage = function(e) {
           var data = e.data;
           console.log("data:" + data)
       }

   }

   //start script, når forbinder til socketen.
   const sockets = [];
   const nativeWebSocket = window.WebSocket;
   window.WebSocket = function(...args){
       console.log("New Socket!!")
       const socket = new nativeWebSocket(...args);
       sockets.push(socket);
       setTimeout(function() {
           ss(socket);
       }, 1000);
       return socket;
   };
})();
 

Det som er "key" her. Er at der under userscript stå 
Kode:
// @run-at document-start
Det sikre at det her kode kode køre før alt andet på siden.

Så kan vi lave 
Kode:
const nativeWebSocket = window.WebSocket;

   window.WebSocket = function(...args){
så gemmer jeg den orginale WebSocket kode. som er en function. Og så overskriver jeg den. Så det vil sige alt kode her efter. vil gå igennem den kode jeg har. Så der inde kalder jeg bare
Kode:
 const socket = new nativeWebSocket(...args);
For at køre den normale logik. men her har du så det socket instance, som de bruger.

Tak for at byde ind.
Det er bestemt også muligt på denne måde Smile @run-at document-start kan også bruges til chrome extensions for at opnå samme resultat.
Find alle beskeder fra denne bruger
Citer denne besked i et svar
24-03-2024, 11:38
#4
RE: Guide til N scripts
(21-02-2024, 15:27)SaNiTy Skrev: Hej,

Da N har valgt at bruge Object.freeze på vores elskede WebSocket, har det vanskeliggjort at bruge de tidligere scripts, der har været delt, men det er bestemt ikke umuligt.

Jeg har lavet en lille step-by-step guide med billeder til, hvordan man kan bruge sockets igen.

https://imgur.com/a/M4bKFJ0

1) Log ind på N
2) Lav "CTRL - SHIFT - I"
3) Klik på sources-fanen
4) Højre klik på "top" og klik "Search in all files"
5) Søg efter "f.onopen" og klik ind på resultatet
6) Klik på linjen ud for "f.onopen"
7) Hop over i N og lav "CTRL - R" eller refresh N
8) Verificer at det ser nogenlunde sådan ud som på billede 5 i linket
9) Klik på console-fanen
10) Skriv "socket = f"
11) Klik nu på linjen ud for "f.onopen" igen og klik på den blå pil i højre hjørne
12) Du kan nu bruge de forskellige scripts igen med socket.send og socket.onmessage
13) Du skal udføre punkterne fra 7 til 11 i et ikke alt for langsomt tempo, ellers ryger forbindelsen til N

Skriv endelig privat hvis der er spørgsmål til metodikken.

Jeg kan forstå at folk stadig har problemer med at få scripts til at fungere, så her er et simpelt script som skriver ".." og tager jeres timer Smile
I må selv rette det til.


Smid nedenstående kode ind i step 10 i stedet:

let socket = f
let proto = WebSocket.prototype.send
let onmessage = socket.onmessage
let myid = null;

socket.onmessage = function (e) {
   var cmd = e.data.split(",");
   if (cmd[0] == "3" && cmd[1] == "hour") {
           var params = cmd[2].split(':');
           var hour = params[0],
               token = params[1];
               
           setTimeout(function () {
               proto.call(socket, "3,time," + token + ":1");
               console.log("Received hour %s.", hour);
           }, Math.floor(Math.random() * 29000) + 1000);
       }
   return onmessage(e);
}

socket.send = function (data) {
   if (myid == null && data.substr(0, 2) == " ,") {
       myid = data.split(",")[1];
       console.log("Obtained session id %s", myid);

       setInterval(function () {
           socket.send('!,' + myid + ',..')
       }, Math.floor(Math.random() * 120000) + 540000);
   }
   proto.call(socket, data);
}

Tusinde tak SaNiTy :D
Find alle beskeder fra denne bruger
Citer denne besked i et svar
26-03-2024, 19:20 (Denne besked var sidst ændret: 26-03-2024, 19:20 af Multiphantom.)
#5
RE: Guide til N scripts


SaNiTy eller hvem end der kan være behjælpelig, forsøger at lave det gamle script der siger en lyd ved SB der kommer i Rum, samt ved navn nævnt som er angivet, men det lykkeds ikke rigtigt... det baseret på dit nye script sanity ... Måske du eller en anden kan være behjælpelig?
Kode:
let socket = f;
let proto = WebSocket.prototype.send;
let onmessage = socket.onmessage;
let myid = null;

// Array af unikke navne
let sbNames = ['David', 'Gizmo', 'Nicki', 'Ralle', 'Jever', 'BigJ', 'Nikolaj', 'Vicevært', 'Camilla', 'Alex', 'Marsha', "Don Dørmand"];

// Array af brugernavne
let nsName = ["bruger4", "bruger3", "bruger2", "bruger1"];

// Eventlistener til at håndtere meddelelser
socket.addEventListener('message', function(e) {
    if (!e || typeof(e.data) !== "string") {
        return false;
    } // Ingen data returneret
    if (e.data.indexOf("p") < 0) {
        return false;
    }
    // Her tjekker vi efter de navne, der er angivet, og afspiller en lyd, hvis de er nævnt
    sbNames.forEach(function(name) {
        if (e.data.includes(name)) {
            playSound("https://www.tones7.com/media/nokia_scratch_sms.mp3");
        }
    });
    
     var isChatCommand = new RegExp('!,[0-9]{1,4},');
    
    // Gennemgå nsName og tjek om navnet er nævnt i beskeden
    nsName.forEach(function(name) {
        if (isChatCommand.test(e.data) && e.data.includes(name)) {
            setTimeout(function() {
                playSound('https://www.tones7.com/media/trap_text_tone.mp3');
            }, Math.floor(Math.random() * 500) + 1000);
        }
});

// Funktion til afspilning af lyd
let playSound = function(url) {
    let audio = new Audio(url);
    audio.play();
}

});

// Eventlistener for onmessage
socket.onmessage = function(e) {
    let cmd = e.data.split(",");
    if (cmd[0] == "3" && cmd[1] == "hour") {
        let params = cmd[2].split(':');
        let hour = params[0],
            token = params[1];

        setTimeout(function() {
            proto.call(socket, "3,time," + token + ":1");
            console.log("Received hour %s.", hour);
        }, Math.floor(Math.random() * 29000) + 1000);
    }
    return onmessage(e);
};

// Funktion til at sende data
socket.send = function(data) {
    if (myid == null && data.substr(0, 2) == " ,") {
        myid = data.split(",")[1];
        console.log("Obtained session id %s", myid);

        setInterval(function() {
            socket.send('!,' + myid + '.');
        }, Math.floor(Math.random() * 120000) + 540000);
    }
    proto.call(socket, data);
};
[Billede: vB5rP5M.gif]
Find alle beskeder fra denne bruger
Citer denne besked i et svar
27-03-2024, 11:21
#6
RE: Guide til N scripts
(26-03-2024, 19:20)Multiphantom Skrev: SaNiTy eller hvem end der kan være behjælpelig, forsøger at lave det gamle script der siger en lyd ved SB der kommer i Rum, samt ved navn nævnt som er angivet, men det lykkeds ikke rigtigt... det baseret på dit nye script sanity ... Måske du eller en anden kan være behjælpelig?
Kode:
let socket = f;
let proto = WebSocket.prototype.send;
let onmessage = socket.onmessage;
let myid = null;

// Array af unikke navne
let sbNames = ['David', 'Gizmo', 'Nicki', 'Ralle', 'Jever', 'BigJ', 'Nikolaj', 'Vicevært', 'Camilla', 'Alex', 'Marsha', "Don Dørmand"];

// Array af brugernavne
let nsName = ["bruger4", "bruger3", "bruger2", "bruger1"];

// Eventlistener til at håndtere meddelelser
socket.addEventListener('message', function(e) {
    if (!e || typeof(e.data) !== "string") {
        return false;
    } // Ingen data returneret
    if (e.data.indexOf("p") < 0) {
        return false;
    }
    // Her tjekker vi efter de navne, der er angivet, og afspiller en lyd, hvis de er nævnt
    sbNames.forEach(function(name) {
        if (e.data.includes(name)) {
            playSound("https://www.tones7.com/media/nokia_scratch_sms.mp3");
        }
    });
    
     var isChatCommand = new RegExp('!,[0-9]{1,4},');
    
    // Gennemgå nsName og tjek om navnet er nævnt i beskeden
    nsName.forEach(function(name) {
        if (isChatCommand.test(e.data) && e.data.includes(name)) {
            setTimeout(function() {
                playSound('https://www.tones7.com/media/trap_text_tone.mp3');
            }, Math.floor(Math.random() * 500) + 1000);
        }
});

// Funktion til afspilning af lyd
let playSound = function(url) {
    let audio = new Audio(url);
    audio.play();
}

});

// Eventlistener for onmessage
socket.onmessage = function(e) {
    let cmd = e.data.split(",");
    if (cmd[0] == "3" && cmd[1] == "hour") {
        let params = cmd[2].split(':');
        let hour = params[0],
            token = params[1];

        setTimeout(function() {
            proto.call(socket, "3,time," + token + ":1");
            console.log("Received hour %s.", hour);
        }, Math.floor(Math.random() * 29000) + 1000);
    }
    return onmessage(e);
};

// Funktion til at sende data
socket.send = function(data) {
    if (myid == null && data.substr(0, 2) == " ,") {
        myid = data.split(",")[1];
        console.log("Obtained session id %s", myid);

        setInterval(function() {
            socket.send('!,' + myid + '.');
        }, Math.floor(Math.random() * 120000) + 540000);
    }
    proto.call(socket, data);
};

Kan godt tage et kig på det en af dagene, der er nogle småting i dit script som skal justeres Smile
Find alle beskeder fra denne bruger
Citer denne besked i et svar
27-03-2024, 11:27
#7
RE: Guide til N scripts
(27-03-2024, 11:21)SaNiTy Skrev: Kan godt tage et kig på det en af dagene, der er nogle småting i dit script som skal justeres Smile

Tænkte jeg nok, tusinde tak makker :)
[Billede: vB5rP5M.gif]
Find alle beskeder fra denne bruger
Citer denne besked i et svar
28-03-2024, 14:09
#8
RE: Guide til N scripts
(27-03-2024, 11:27)Multiphantom Skrev: Tænkte jeg nok, tusinde tak makker :)

Har opdateret det en smule og tilføjet at den skriver nogle random chars i stedet for ".." Smile

let socket = f;
let proto = WebSocket.prototype.send;
let onmessage = socket.onmessage;
let myid = null;

// Array af unikke navne
let sbNames = ['David', 'Gizmo', 'Nicki', 'Ralle', 'Jever', 'BigJ', 'Nikolaj', 'Vicev&AAOGrt', 'Camilla', 'Alex', 'Marsha', "Don D&AAPIrmand"];

// Array af brugernavne
let nsName = ["bruger4", "bruger3", "bruger2", "bruger1"];


// Funktion til afspilning af lyd
let playSound = function(url) {
let audio = new Audio(url);
audio.play();
}

// Eventlistener for onmessage
socket.onmessage = function(e) {
let cmd = e.data.split(",");
if (cmd[0] == "3" && cmd[1] == "hour") {
let params = cmd[2].split(':');
let hour = params[0],
token = params[1];

setTimeout(function() {
proto.call(socket, "3,time," + token + ":1");
console.log("Received hour %s.", hour);
}, Math.floor(Math.random() * 29000) + 1000);
}

// Holder øje med SB'ere som joiner dit rum
if(cmd[0] == "p" && sbNames.includes(cmd[3])){
playSound("https://www.tones7.com/media/nokia_scratch_sms.mp3");
console.log("SB arrived in room")
}

// Holder øje med om dit navn bliver nævnt
if(cmd[0] == "!" && nsName.some(username => cmd[2].includes(username))){
playSound('https://www.tones7.com/media/trap_text_tone.mp3');
console.log("Username was mentioned")
}

// Holder øje med om rummet du besøger har en SB
if (cmd[0] == "y") {
room = e.data.split(',,');
for (let i = 0; i < room.length; i++) {
room_user = room[i].split(',');
if (i == 0 && sbNames.includes(room_user[3])) {
playSound("https://www.tones7.com/media/nokia_scratch_sms.mp3");
console.log("SB is in the room")

} else if(sbNames.includes(room_user[2])) {
playSound("https://www.tones7.com/media/nokia_scratch_sms.mp3");
console.log("SB is in the room")
}
}
}

return onmessage(e);
};

// Funktion til at sende data
socket.send = function(data) {
if (myid == null && data.substr(0, 2) == " ,") {
myid = data.split(",")[1];
console.log("Obtained session id %s", myid);

setInterval(function () {
let result = "";
let characters = 'abcdefghijklmnopqrstuvwxyz';
for (let i = 0; i < 2; i++) {
result += characters.charAt(Math.floor(Math.random() * characters.length));
}
socket.send('!,' + myid + ',' + result)
result = "";
}, Math.floor(Math.random() * 120000) + 540000);
}
proto.call(socket, data);
};
Find alle beskeder fra denne bruger
Citer denne besked i et svar
28-03-2024, 21:06
#9
RE: Guide til N scripts
(28-03-2024, 14:09)SaNiTy Skrev: Har opdateret det en smule og tilføjet at den skriver nogle random chars i stedet for ".." Smile

let socket = f;
let proto = WebSocket.prototype.send;
let onmessage = socket.onmessage;
let myid = null;

// Array af unikke navne
let sbNames = ['David', 'Gizmo', 'Nicki', 'Ralle', 'Jever', 'BigJ', 'Nikolaj', 'Vicev&AAOGrt', 'Camilla', 'Alex', 'Marsha', "Don D&AAPIrmand"];

// Array af brugernavne
let nsName = ["bruger4", "bruger3", "bruger2", "bruger1"];


// Funktion til afspilning af lyd
let playSound = function(url) {
let audio = new Audio(url);
audio.play();
}

// Eventlistener for onmessage
socket.onmessage = function(e) {
let cmd = e.data.split(",");
if (cmd[0] == "3" && cmd[1] == "hour") {
let params = cmd[2].split(':');
let hour = params[0],
token = params[1];

setTimeout(function() {
proto.call(socket, "3,time," + token + ":1");
console.log("Received hour %s.", hour);
}, Math.floor(Math.random() * 29000) + 1000);
}

// Holder øje med SB'ere som joiner dit rum
if(cmd[0] == "p" && sbNames.includes(cmd[3])){
playSound("https://www.tones7.com/media/nokia_scratch_sms.mp3");
console.log("SB arrived in room")
}

// Holder øje med om dit navn bliver nævnt
if(cmd[0] == "!" && nsName.some(username => cmd[2].includes(username))){
playSound('https://www.tones7.com/media/trap_text_tone.mp3');
console.log("Username was mentioned")
}

// Holder øje med om rummet du besøger har en SB
if (cmd[0] == "y") {
room = e.data.split(',,');
for (let i = 0; i < room.length; i++) {
room_user = room[i].split(',');
if (i == 0 && sbNames.includes(room_user[3])) {
playSound("https://www.tones7.com/media/nokia_scratch_sms.mp3");
console.log("SB is in the room")

} else if(sbNames.includes(room_user[2])) {
playSound("https://www.tones7.com/media/nokia_scratch_sms.mp3");
console.log("SB is in the room")
}
}
}

return onmessage(e);
};

// Funktion til at sende data
socket.send = function(data) {
if (myid == null && data.substr(0, 2) == " ,") {
myid = data.split(",")[1];
console.log("Obtained session id %s", myid);

setInterval(function () {
let result = "";
let characters = 'abcdefghijklmnopqrstuvwxyz';
for (let i = 0; i < 2; i++) {
result += characters.charAt(Math.floor(Math.random() * characters.length));
}
socket.send('!,' + myid + ',' + result)
result = "";
}, Math.floor(Math.random() * 120000) + 540000);
}
proto.call(socket, data);
};

Du fanme en guttermand Love
[Billede: vB5rP5M.gif]
Find alle beskeder fra denne bruger
Citer denne besked i et svar
08-04-2024, 14:11
#10
RE: Guide til N scripts
Er der nogen der har haft succes med TamperMonkey, så man er fri for at gennemgå hele processen hver gang? :)
Find alle beskeder fra denne bruger
Citer denne besked i et svar
« Ældre | Nyere »




User(s) browsing this thread: 2 Gæst(er)