summaryrefslogtreecommitdiffstats
path: root/assets
diff options
context:
space:
mode:
authorSimone <26844016+simonebortolin@users.noreply.github.com>2024-10-19 22:01:27 +0200
committerGitHub <noreply@github.com>2024-10-19 22:01:27 +0200
commit252c15cf9ba813c615b8e024b92fdf50d3839ab8 (patch)
treed70ba76041e767b189f047e62a0b1d963c22b905 /assets
parentMerge pull request #368 from stich86/stich86-f6005v3 (diff)
parentMove CIG GPON password generator to frontend (diff)
downloadhack-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.js28
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('');
+}