diff options
author | Simone <26844016+simonebortolin@users.noreply.github.com> | 2024-10-19 22:01:27 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-19 22:01:27 +0200 |
commit | 252c15cf9ba813c615b8e024b92fdf50d3839ab8 (patch) | |
tree | d70ba76041e767b189f047e62a0b1d963c22b905 /assets | |
parent | Merge pull request #368 from stich86/stich86-f6005v3 (diff) | |
parent | Move CIG GPON password generator to frontend (diff) | |
download | hack-gpon.github.io-252c15cf9ba813c615b8e024b92fdf50d3839ab8.tar hack-gpon.github.io-252c15cf9ba813c615b8e024b92fdf50d3839ab8.tar.gz hack-gpon.github.io-252c15cf9ba813c615b8e024b92fdf50d3839ab8.tar.bz2 hack-gpon.github.io-252c15cf9ba813c615b8e024b92fdf50d3839ab8.tar.lz hack-gpon.github.io-252c15cf9ba813c615b8e024b92fdf50d3839ab8.tar.xz hack-gpon.github.io-252c15cf9ba813c615b8e024b92fdf50d3839ab8.tar.zst hack-gpon.github.io-252c15cf9ba813c615b8e024b92fdf50d3839ab8.zip |
Diffstat (limited to 'assets')
-rw-r--r-- | assets/js/cigpassword.js | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/assets/js/cigpassword.js b/assets/js/cigpassword.js new file mode 100644 index 0000000..7fbcf0f --- /dev/null +++ b/assets/js/cigpassword.js @@ -0,0 +1,28 @@ +function hexToBytes(hex) { + let bytes = new Uint8Array(hex.length / 2); + for (let i = 0; i < hex.length; i += 2) { + bytes[i / 2] = parseInt(hex.substr(i, 2), 16); + } + return bytes; +} + +function cigpassword_gpon(ont_serial, ont_user) { + const hardcoded_key = '01030a1013051764c8061419b49d0500'; + const hardcoded_seed = '2345679abcdefghijkmnpqrstuvwxyzACDEFGHJKLMNPQRSTUVWXYZ'; + + let ont_vendor = ont_serial.substring(0, 4).toUpperCase(); + let ont_id = ont_serial.substring(4).toLowerCase(); + let formatted_serial = `${ont_vendor}${ont_id}`; + + let key_bytes = CryptoJS.enc.Hex.parse(hardcoded_key); + let hmac = CryptoJS.HmacMD5(`${formatted_serial}-${ont_user}`, key_bytes); + let pw_md5_hmac = hexToBytes(hmac.toString(CryptoJS.enc.Hex)); + + let output = Array(pw_md5_hmac.length); + + for (let i = 0; i < pw_md5_hmac.length; i++) { + output[i] = hardcoded_seed[pw_md5_hmac[i] % 0x36]; + } + + return output.join(''); +} |