Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const isObject = (obj) => {
- return Object.prototype.toString.call(obj) === '[object Object]';
- };
- function receiveWebSocketMessageHook(event) {
- if (event.data !== '3') {
- data = JSON.parse(event.data.substring(2));
- console.log("Received non-trivial event", data);
- if (!data.length === 2) {
- return;
- }
- response = data[1];
- for (const item of response) {
- if (item instanceof Array) {
- for (const thing of item) {
- if (isObject(thing) && 'isNewRecord' in thing) {
- fetch('http://192.168.2.37:8080/taser', {
- method: 'POST',
- mode: 'no-cors',
- headers: { 'Content-Type': 'application/json'},
- body: JSON.stringify({'taser_power': 1.0}),
- })
- }
- }
- }
- }
- }
- }
- function sniff() {
- console.log('Injecting sniff')
- var OrigWebSocket = window.WebSocket;
- var callWebSocket = OrigWebSocket.apply.bind(OrigWebSocket);
- var wsAddListener = OrigWebSocket.prototype.addEventListener;
- wsAddListener = wsAddListener.call.bind(wsAddListener);
- window.WebSocket = function WebSocket(url, protocols) {
- console.log('Creating websocket to', url);
- var ws;
- if (!(this instanceof WebSocket)) {
- // Called without 'new' (browsers will throw an error).
- ws = callWebSocket(this, arguments);
- console.log('Called without new')
- } else if (arguments.length === 1) {
- ws = new OrigWebSocket(url);
- console.log('1 arg')
- } else if (arguments.length >= 2) {
- ws = new OrigWebSocket(url,protocols);
- console.log('2 arg')
- } else {
- // No arguments (browsers will throw an error)
- ws = new OrigWebSocket();
- console.log('No arg')
- }
- console.log('Adding listener');
- wsAddListener(ws, 'message', receiveWebSocketMessageHook);
- // wsAddListener(ws, 'message', function(event) {
- // console.log("Received:", event);
- // });
- wsAddListener(ws, 'open', function(event) {
- console.log("Open:", event);
- });
- wsAddListener(ws, 'close', function(event) {
- console.log("Close:", event);
- });
- wsAddListener(ws, 'error', function(event) {
- console.log("Error:", event);
- });
- return ws;
- }
- .bind();
- window.WebSocket.prototype = OrigWebSocket.prototype;
- window.WebSocket.prototype.constructor = window.WebSocket;
- // var wsSend = OrigWebSocket.prototype.send;
- // wsSend = wsSend.apply.bind(wsSend);
- // OrigWebSocket.prototype.send = function(data) {
- // console.log("Sent:", data);
- // return wsSend(this, arguments);
- // };
- // console.log('Injecting onmessage')
- // var wsOnMessage = OrigWebSocket.prototype.onmessage;
- // wsOnMessage = wsOnMessage.apply.bind(wsOnMessage);
- // OrigWebSocket.prototype.onmessage = function(data) {
- // console.log("Sentt::", data);
- // return wsOnMessage(this, arguments);
- // };
- // console.log('Finished injecting onmessage')
- }
- sniff();
Advertisement
Add Comment
Please, Sign In to add comment