开往未来的列车|悄悄盯着你···,可怕!公司部署了一个东西
我是一个网络监控软件 , 我被开发出来的使命就是监控网络中进进出出的所有通信流量 。 这个网络中所有人的上网内容我都看的清清楚楚 , 是不是很可怕?
拿到数据包后 , 我就得按照这个协议规范 , 一层层的脱去协议的外壳 , 拿到它们的负载数据 。
不过这个TCP协议有点复杂 , 抛开我们抓到的包本来就存在乱序的情况不说 , 它本身还有三次握手、四次挥手、超时重传、延迟回复等很多机制 , 有时候还会遇到时间跨度很久的长连接 , 这无疑都给我想要重组TCP会话造成了很大的难度 。
而我重组TCP会话的唯一线索就是数据包包头中的序列号SEQ和确认号ACK 。
不过我还是死磕RFC规范 , 把这些问题都攻克了 , 能够成功重组出一个个的TCP会话数据 , 成功率还蛮高的 。
应用协议识别TCP会话重组出来了 , 我就可以拿到里面传输的数据了 。 接下来要做的一件事就是识别应用层到底是什么应用在传输的呢?
用我们的行话说 , 那就是做应用协议识别 , 这个时候我就得看一下端口了 。
我根据三次握手数据包的方向 , 就可以确定出谁是客户端 , 谁是服务端 。
再看一下服务端的端口号(这个在TCP包头里面就可以看到) , 就能知道这是一个什么服务了 。
像常见的有下面这些:
22:SSH远程登陆
25:邮件服务
53:域名解析服务
80:HTTPWeb服务
3306:MySQL数据库服务
3389:远程桌面连接服务
······
最常见的就是80端口的Web服务了 , 人类每天上网都在用到 。 有时候Web服务不走80端口 , 换成了别的 , 不过这难不倒我 , 我可以通过分析TCP的负载数据特征 , 看看有没有HTTP协议的特征出现 , 因为HTTP协议的特征实在是太明显啦!
到了后来 , 根据端口的经验出错的概率越来越大了 , 我就统一根据内容来进行识别判断 , 不再相信端口 。 每个应用都有它们各自的协议特征 , 这个识别我可是下了点功夫 , 轻易不会透露 。
文件还原现在我知道应用层是什么协议了 , 我就可以把应用层协议传输的数据给整明白了 。
还是拿最常见的Web服务来说吧 , HTTP协议是一个基于请求-响应的协议 , 比如下面的这一次通信:
现在我就可以定位到响应包的负载段 , 就是在HTTP头 , 两个回车换行(0D0A)后面就是数据了 。
找到数据位置 , 再根据Content-Length的大小 , 把数据抠出来写成一个PNG格式的文件就大功告成了!
推荐阅读
- 阿里巴巴|送快递、送外卖、开滴滴、发短视频,是新一代年轻人的未来吗?
- 艾问人物||艾问人物,隐私计算“四小龙”将如何重塑未来互联网
- 芯片|日本:中国自研光子芯片“弯道超车”,未来芯片将“一文不值”!
- 人民日报中央厨房|Monterey:应对未来环境下的更多挑战,Project
- 阿里巴巴|网上赚钱2020:现在(未来)快速赚钱的8种方法
- Ai芯天下|确定半导体产业未来五年规划及核心,广东投入4000亿
- 路人战队|未来的第六代战斗机会是无人战斗机吗?
- 妃子笑1|LED显示屏未来的技术走向
- 微信|微信迎来新变化,兼具4大功能,是未来重要的生产力
- 怪科技|德施曼小嘀智能锁Q3H全体验,摒弃传统拥抱未来
