08-24-2018, 07:39 PM
(This post was last modified: 08-24-2018, 08:00 PM by soxrok2212.)
(06-28-2017, 03:19 AM)mrfancypants Wrote: I've finally worked out part of the algorithm for 589/599. Not enough to crack it (in fact, with what I worked out, it's totally possible that it's [effectively] uncrackable because they feed it from a RNG), but enough to understand how passwords are being constructed.
Consider the following. Actual parameters of a NVG599 off eBay:
SSID: ATTn3f64I2
Wireless key: nyrip9=c5bgv
Access key: 18?/72@@<3
Second SSID: vATTvb%g?<&c
Second wireless key: #h,t)0(ZUwI0
Looks random, right? Now watch:
Code:ssid_charset='23456789ABCDEFGHIJKMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz' pw_charset='abcdefghijkmnpqrstuvwxyz23456789#%+=?' ext_charset='!"#$%&\'()*+,-./:;<=?@[]_`{|}0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' def intpw(x): val=0 for n in range(0,12): val+=pw_charset.find(x[n])*(37**(11-n)) if (val%8)==7: val+=37**12 return val def intssid(x): val=0 for n in range(0,7): val+=ssid_charset.find(x[n+3])*(56**(6-n)) return val def int_ext(x): val=0 for n in range(0,len(x)): val+=ext_charset.find(x[n])*(90**(len(x)-1-n)) return val >>> '%x' % intssid('ATTn3f64I2') '13c2a3ea400' >>> '%x' % intpw('nyrip9=c5bgv') '7a7b4bbbf4f69800' >>> '%x' % int_ext("b%g?<&c") '1f71654cac80' >>> '%x' % int_ext("#h,t)0") '3d6180c00' >>> '%x' % int_ext("(ZUwI0") 'a98a65dc0'
I'll let you meditate on this for now and I'll explain later(hint: consider positions of top and bottom set bits in '7a7b...')
Given that the sha1 of the serial number is used to generate the vATT SSID, there has to be a correllation if mrfancypants was able to recover everything here. The script I found is useful somehow, and sha1 with the serial HAS to be used to generate the keys.
If only we had the serial number from that eBay sticker... I *might* have a way to recover it.

(hint: consider positions of top and bottom set bits in '7a7b...')