diff --git a/zefie_wtvp_minisrv/app.js b/zefie_wtvp_minisrv/app.js index f6e3c178..163f6019 100644 --- a/zefie_wtvp_minisrv/app.js +++ b/zefie_wtvp_minisrv/app.js @@ -1471,6 +1471,11 @@ async function processRequest(socket, data_hex, skipSecure = false, encryptedReq if (!headers) return; if (headers["wtv-client-serial-number"] != null && socket.ssid == null) { + if (!wtvshared.checkSSID(headers["wtv-client-serial-number"])) { + // close socket for invalid ssid + cleanupSocket(socket) + return; + } socket.ssid = wtvshared.makeSafeSSID(headers["wtv-client-serial-number"]); if (socket.ssid != null) { if (!ssid_sessions[socket.ssid]) { diff --git a/zefie_wtvp_minisrv/includes/classes/WTVShared.js b/zefie_wtvp_minisrv/includes/classes/WTVShared.js index 47d91786..7dae8119 100644 --- a/zefie_wtvp_minisrv/includes/classes/WTVShared.js +++ b/zefie_wtvp_minisrv/includes/classes/WTVShared.js @@ -69,6 +69,13 @@ class WTVShared { return crc.toString(16).padStart(2, '0'); } + // check if the SSID has a valid checksum + checkSSID(ssid) { + if (ssid.slice(-2) == this.getSSIDCRC(ssid)) + return true; + return false; + } + parseConfigVars(s) { if (s.indexOf("%ServiceDeps%") >= 0) {