mirror of
				https://github.com/yv1ing/ShotRDP.git
				synced 2025-09-16 15:10:57 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			47 lines
		
	
	
		
			865 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			865 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package nla
 | |
| 
 | |
| import (
 | |
| 	"crypto/hmac"
 | |
| 	"crypto/md5"
 | |
| 	"crypto/rc4"
 | |
| 	"strings"
 | |
| 
 | |
| 	"ShotRDP/grdp/core"
 | |
| 	"golang.org/x/crypto/md4"
 | |
| )
 | |
| 
 | |
| func MD4(data []byte) []byte {
 | |
| 	h := md4.New()
 | |
| 	h.Write(data)
 | |
| 	return h.Sum(nil)
 | |
| }
 | |
| 
 | |
| func MD5(data []byte) []byte {
 | |
| 	h := md5.New()
 | |
| 	h.Write(data)
 | |
| 	return h.Sum(nil)
 | |
| }
 | |
| 
 | |
| func HMAC_MD5(key, data []byte) []byte {
 | |
| 	h := hmac.New(md5.New, key)
 | |
| 	h.Write(data)
 | |
| 	return h.Sum(nil)
 | |
| }
 | |
| 
 | |
| // Version 2 of NTLM hash function
 | |
| func NTOWFv2(password, user, domain string) []byte {
 | |
| 	return HMAC_MD5(MD4(core.UnicodeEncode(password)), core.UnicodeEncode(strings.ToUpper(user)+domain))
 | |
| }
 | |
| 
 | |
| // Same as NTOWFv2
 | |
| func LMOWFv2(password, user, domain string) []byte {
 | |
| 	return NTOWFv2(password, user, domain)
 | |
| }
 | |
| 
 | |
| func RC4K(key, src []byte) []byte {
 | |
| 	result := make([]byte, len(src))
 | |
| 	rc4obj, _ := rc4.NewCipher(key)
 | |
| 	rc4obj.XORKeyStream(result, src)
 | |
| 	return result
 | |
| }
 |