ToB企服应用市场:ToB评测及商务社交产业平台

标题: 内网渗透之Windows认证(二) [打印本页]

作者: 圆咕噜咕噜    时间: 2022-9-5 17:57
标题: 内网渗透之Windows认证(二)

LM Hash

  1. import binascii
  2. import codecs
  3. from pyDes import *
  4. def DesEncrypt(str, Key):
  5.     k = des(Key, ECB, pad=None)
  6.     EncryptStr = k.encrypt(str)
  7.     return binascii.b2a_hex(EncryptStr)
  8. def ZeroPadding(str):
  9.     b = []
  10.     l = len(str)
  11.     num = 0
  12.     for n in range(l):
  13.         if (num < 8) and n % 7 == 0:
  14.             b.append(str[n:n + 7] + '0')
  15.             num = num + 1
  16.     return ''.join(b)
  17. if __name__ == "__main__":
  18.     passwd = sys.argv[1]
  19.     print('你的输入是:', passwd)
  20.     print('转化为大写:', passwd.upper())
  21.     # 用户的密码转换为大写,并转换为 16 进制字符串
  22.     passwd = codecs.encode(passwd.upper().encode(), 'hex_codec')
  23.     print('转为 hex:', passwd.decode())
  24.     # 密码不足 28 位,用 0 在右边补全
  25.     passwd_len = len(passwd)
  26.     if passwd_len < 28:
  27.         passwd = passwd.decode().ljust(28, '0')
  28.     print('补齐 28 位:', passwd)
  29.     # 28 位的密码被分成两个 14 位部分
  30.     PartOne = passwd[0:14]
  31.     PartTwo = passwd[14:]
  32.     print('两组 14 位的部分:', PartOne, PartTwo)
  33.     # 每部分分别转换成比特流,并且长度为 56 位,长度不足用 0 在左边补齐长度
  34.     PartOne = bin(int(PartOne, 16)).lstrip('0b').rjust(56, '0')
  35.     PartTwo = bin(int(PartTwo, 16)).lstrip('0b').rjust(56, '0')
  36.     print('两组 56 位比特流:', PartOne, PartTwo)
  37.     # 两组分别再分为 7 位一组末尾加 0,再分别组合成新的字符
  38.     PartOne = ZeroPadding(PartOne)
  39.     PartTwo = ZeroPadding(PartTwo)
  40.     print('两组再 7 位一组末尾加 0:', PartOne, PartTwo)
  41.     # 两组数据转 hex
  42.     PartOne = hex(int(PartOne, 2))[2:]
  43.     PartTwo = hex(int(PartTwo, 2))[2:]
  44.     if '0' == PartTwo:
  45.         PartTwo = "0000000000000000"
  46.     print('两组转为 hex:', PartOne, PartTwo)
  47.     # 16 位的二组数据,分别作为 DES key 为"KGS!@#$%"进行加密。
  48.     LMOne = DesEncrypt("KGS!@#$%", binascii.a2b_hex(PartOne)).decode()
  49.     LMTwo = DesEncrypt("KGS!@#$%", binascii.a2b_hex(PartTwo)).decode()
  50.     print('两组 DES 加密结果:', LMOne, LMTwo)
  51.     # 将二组 DES 加密后的编码拼接,得到 LM HASH 值。
  52.     LM = LMOne + LMTwo
  53.     print('LM hash:', LM)
复制代码

NTML Hash

  1. import hashlib
  2. import binascii
  3. import sys
  4. print(binascii.hexlify(hashlib.new("md4", sys.argv[1].encode("utf-16le")).digest()).decode())
复制代码

Windows本地认证

NTLM认证协议


协商

质询

验证

WireShark


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4