因此,对于CS项目,我应该嗅探网络流并从该流中构建文件。例如,如果程序指向〜/ dumps / tmp /,那么目录结构将是:
〜/转储/ TMP /192.168.0.1/ page1.html page2.html [第1页和第1页的各种资源; 2] 下载了file1 /192.168.0.2/ 等等。
我在C&在linux上使用pcap(因为我已经了解了C ++,并认为学习经验会很好)。
到目前为止,我一直在研究TCP / IP的各种标头格式
正如我所说,我可以通过dst / src对数据包进行排序,然后通过序列和确认窗口正确排序。
但这让我有一个大的?至于我如何弄清楚数据包a-z是如何成为html文件的一部分以及某个随机文件的A-Z部分被下载等?
另外,我应该查找哪种其他类型的标题格式?目前,我有:
我会发布更多的超链接图片,但我显然需要声誉才能做到这一点,抱歉 TCP,以太网,UDP,我会解决像FTP这样的问题(但我很确定FTP建立在TCP之上,就像HTTP一样)
因此,简而言之,我如何在网络流中找到文件,我是否缺少任何我需要能够阅读的主要协议?
回复 我无法弄清楚如何回复,所以这将是必须的。
我曾经多次使用过pcap,并且会再次使用这个项目,但我不会使用任何Wiresharks的东西(虽然它是一个很棒的程序),因为我不想开玩笑学习这种东西。
是的,我会查看OSI层,在一个涵盖常见协议的好网站上的任何建议?
我想我应该停下来,在这个'问题'成为讨论之前。
答案 0 :(得分:5)
文件的开头和结尾不在TCP中。您必须处理通过TCP承载的协议。例如,对于HTTP,您必须读取HTTP标头中的Content-Length标头,该标头应该等于HTTP主体的长度(完整的html页面)。然后,您将身体累积超过1个或更多TCP数据包,直到您拥有总内容,如Content-Length标头所示。
答案 1 :(得分:2)
由于这是一项学校作业,您可能会限制使用哪些工具,但您可能需要查看Wireshark。如果我将这项任务作为一个真实世界的项目,我将采用Wireshark并研究如何使用它的流提取和协议解析功能,并只是包装它们以自动化它们并获得所需的结果。
答案 2 :(得分:1)
您需要在混杂的以太网设备上打开原始套接字。然后使用libpcap存储和分析数据包。
答案 3 :(得分:0)
由于这是针对CS学校的,我将从OSI Model开始,它为您提供了良好的网络协议概述和逻辑结构。
文件位于6级(MIME)和7级(各种)。
然后,您需要遍历每个协议并检查如何确定哪些包含文件以及如何捕获它们。