欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 编程语言 > c# >内容正文

c#

如何通过 wireshark 捕获 c# 上传的图片 -凯发k8官方网

发布时间:2023/11/18 c# 47 coder
凯发k8官方网 收集整理的这篇文章主要介绍了 如何通过 wireshark 捕获 c# 上传的图片 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

一:背景

1. 讲故事

这些天计划好好研究下tcp/ip,以及socket套接字,毕竟工控中设计到各种交互协议,如果只是模模糊糊的了解,对分析此类dump还是非常不利的,而研究协议最好的入手点就是用抓包工具 wireshark,废话不多说,这篇通过 wireshark 提取一个小图片作为入手。

二:wireshark 图片抓包

1. 捕获图片

为了方便演示,我们就用最简单的 http 上传图片的方式,客户端代码如下:


接下来是server端代码,用 chatgpt 吐出来的代码做了一点简单修改。


    public class homecontroller : controller
    {
        private readonly ilogger _logger;
        private readonly iwebhostenvironment _env;
        public homecontroller(iwebhostenvironment env)
        {
            _env = env;
        }
        [httppost]
        public async task upload(iformfile file)
        {
            if (file == null || file.length == 0)
            {
                return badrequest("please select a file to upload.");
            }
            // 生成唯一的文件名
            var filename = guid.newguid().tostring()   path.getextension(file.filename);
            // 拼接文件保存路径
            var filepath = path.combine(_env.webrootpath, "uploads", filename);
            // 保存文件到磁盘
            using (var stream = new filestream(filepath, filemode.create))
            {
                await file.copytoasync(stream);
            }
            return ok("file uploaded successfully.");
        }
    }

接下来将 asp.net core 部署在虚拟机上,修改端口为80,appsettings.json 修改如下:


{
  "logging": {
    "loglevel": {
      "default": "information",
      "microsoft.aspnetcore": "warning"
    }
  },
  "kestrel": {
    "endpoints": {
      "http": {
        "url": "http://0.0.0.0:80"
      }
    }
  }
}

运行之后,一切正常,截图如下:

2. wireshark 捕获

这里我们将 wireshark 部署在 server (192.168.25.133)端,不过在开启之前有两点要注意:

  • 寻找到你需要采集流量包的网卡,比如我这里的 ethernet0
  • 设置一个捕获过滤器,这样就不会把你的 wireshark 采集界面给卡死。

参考截图如下:

启动捕获后,在凯发k8官方网首页开始上传一个 1m左右的图片,在 wireshark 中可以看到这 1m 的图片被切割成了 791 个 tcp segment 发送。

接下来在 上图中的 http 请求上点击右键,选择 follow -> tcp stream ,会自动打开本次 http 传输的全部内容,接下来记得做下面三个选择:

  • 选择正确的数据包流向
  • 数据格式为原始的raw格式
  • save as 保存到本地

详情截图如下:

根据 http 上传图片的格式,把内容中换行符之前和之后的二进制都去掉,而这个换行符的二进制表示为 0d0a,接下来打开 winhex,删掉 0d0a 之前和之后的所有多余字符。截图如下:

  1. 之前
  1. 之后

如果大家有点懵,可以观察一个正确的 png 在 winhex 上的表现,选中多余的二进制之后做一个 delete 操作,然后重命名为 test.png,截图如下:

哈哈,一张图片映入眼帘,打完收工!

三:总结

wireshark 还是非常强大有意思的,相比呈现工具更多的还是需要对协议的理解,希望能对dump分析提供一些原料动力!

总结

以上是凯发k8官方网为你收集整理的如何通过 wireshark 捕获 c# 上传的图片的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图