mirror of
https://github.com/shadow1ng/fscan.git
synced 2025-05-08 19:56:30 +00:00
Use aes encryption to store payloads to avoid AV detection
This commit is contained in:
parent
4c254b019a
commit
384bb326c0
@ -42,3 +42,58 @@ func ReadBytes(conn net.Conn) (result []byte, err error) {
|
|||||||
}
|
}
|
||||||
return result, err
|
return result, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var key = "0123456789abcdef"
|
||||||
|
|
||||||
|
func AesEncrypt(orig string, key string) string {
|
||||||
|
// 转成字节数组
|
||||||
|
origData := []byte(orig)
|
||||||
|
k := []byte(key)
|
||||||
|
// 分组秘钥
|
||||||
|
// NewCipher该函数限制了输入k的长度必须为16, 24或者32
|
||||||
|
block, _ := aes.NewCipher(k)
|
||||||
|
// 获取秘钥块的长度
|
||||||
|
blockSize := block.BlockSize()
|
||||||
|
// 补全码
|
||||||
|
origData = PKCS7Padding(origData, blockSize)
|
||||||
|
// 加密模式
|
||||||
|
blockMode := cipher.NewCBCEncrypter(block, k[:blockSize])
|
||||||
|
// 创建数组
|
||||||
|
cryted := make([]byte, len(origData))
|
||||||
|
// 加密
|
||||||
|
blockMode.CryptBlocks(cryted, origData)
|
||||||
|
return base64.StdEncoding.EncodeToString(cryted)
|
||||||
|
}
|
||||||
|
func AesDecrypt(cryted string, key string) string {
|
||||||
|
// 转成字节数组
|
||||||
|
crytedByte, _ := base64.StdEncoding.DecodeString(cryted)
|
||||||
|
k := []byte(key)
|
||||||
|
// 分组秘钥
|
||||||
|
block, _ := aes.NewCipher(k)
|
||||||
|
// 获取秘钥块的长度
|
||||||
|
blockSize := block.BlockSize()
|
||||||
|
// 加密模式
|
||||||
|
blockMode := cipher.NewCBCDecrypter(block, k[:blockSize])
|
||||||
|
// 创建数组
|
||||||
|
orig := make([]byte, len(crytedByte))
|
||||||
|
// 解密
|
||||||
|
blockMode.CryptBlocks(orig, crytedByte)
|
||||||
|
// 去补全码
|
||||||
|
orig = PKCS7UnPadding(orig)
|
||||||
|
return string(orig)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 补码
|
||||||
|
// AES加密数据块分组长度必须为128bit(byte[16]),密钥长度可以是128bit(byte[16])、192bit(byte[24])、256bit(byte[32])中的任意一个。
|
||||||
|
func PKCS7Padding(ciphertext []byte, blocksize int) []byte {
|
||||||
|
padding := blocksize - len(ciphertext)%blocksize
|
||||||
|
padtext := bytes.Repeat([]byte{byte(padding)}, padding)
|
||||||
|
return append(ciphertext, padtext...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 去码
|
||||||
|
func PKCS7UnPadding(origData []byte) []byte {
|
||||||
|
length := len(origData)
|
||||||
|
unpadding := int(origData[length-1])
|
||||||
|
return origData[:(length - unpadding)]
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user