python3网络编程传输图片_Python Socket网络编程 - 文件传输

欢迎来到黑帽子编程 网络编程第二篇文章,上回我们已经学会了如何创建 TCP 客户端/服务器 也实现了了 短链接 - 长连接, 半双工通讯 - 全双工通讯

上一篇文章是基础,建议先看: Python 黑帽子编程 (一) 网络编程

通过渗透测试进入的服务器没有安装 netcat 却安装了 Python。在这种情况下,Python 可以快速的创建一个简单的服务器和客户端用来传递想要的文件。

文件数据读取 _open()

我们先来创建一个文件读取的函数 _open() 方法00973f021f06718f2c12b3245c5582f562ee5f17.png

执行结果太长了, 复制不过来,就不贴了

文件写入/保存 _save()

接下来我们创建一个 文件保存的函数 _save()e5719bf41fe9d400e87e1a5e1f6faf9d7f0b65a9.png

这样我们的读写文件函数就准备好了. 接下来我们只需要创建一个网络通道来传输文件数据就好了

约束/协议

像 HTTP (应用层)协议那样, 数据包的第一行为请求行 包含 请求方法 请求路径 HTTP版本,然后头部附加信息, 最后是请求内容。我们也可以为我们的程序定义一个简单的通讯协议

发送文件前我们先发送 文件名和文件大小最后发送文件数据,这样方便我们接收和写入数据。这也是一个不错的 Python 习题,让我们开始把

服务器8b9e07c64c96c56026d57fd3856f6495b49c84f2.png

① 解析第一个数据包拿到文件名称和大小,② 准备好接收之后发一条信息告诉客户端 我尊卑好了 可以发送文件数据 ③ 保存成功后响应信息。

客户端5d09446f1a74487f676d18f5f476947db392d082.png

① 从文件路径中解析文件名称,② 封装第一个数据包 文件名和文件大小,③ 等待客户端告诉自己可以发送文件数据,④ 等待执行结果。

执行结果

服务器

"C:\Program Files (x86)\Python38-32\python.exe" D:/python/socket/server.py

[+] Listening on port  8888

[+] Accepted connection from 127.0.0.1:2084

[+] Receive to filesize: 377561

[+] File save on fa5b0887640934e04f8c03bddf5c4f7fe3e7a13c.jpg@518w_1e_1c.jpg, size: 377561Process finished with exit code -1

客户端

"C:\Program Files (x86)\Python38-32\python.exe" D:/python/socket/client.py

[+] Connected successfully .

[+] File transfer success

Process finished with exit code 0

文件大小是 377561字节(byte), 368.71191 KB 我们看一下计算机上面的 368 KB 没有问题

大家可以优化, socket连接的异常处理, 判读文件是否存在,文件hash名称, 存储成功后返回文件名等等。下一篇文章我们尝试做一个反弹 shell,最后我们将这两个功能结合,做一个简单的 netcat

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值