从新手到入门,如何进入协议分析的世界
“ 协议分析与还原自学及入门指南。”
有部分朋友给我发消息,说对协议还原很感兴趣,但苦于没人指导,希望得到我的帮助,问我如何进行协议分析的学习。
这篇文章从初学者的角度,编列了一个学习指南,希望能对协议分析的朋友朋友们有所帮助。
01
—
学习指南
对协议分析而言,打交道的是网络流量,因此,对网络协议的了解是一切的基础。学习指南第一部分,将告诉你需要学习的网络协议知识:
1、TCP/IP协议的学习
对接受过高等教育的朋友而言,TCP/IP协议应该不陌生,这里提出来,是为了让大家对一些重点知识进行确认。
学习的重点如下:
掌握IP、TCP、UDP这些协议的区别和联系;
理解协议的分层机制和各层之间的关系;
熟悉协议的交互流程,如TCP三次握手等;
了解IP地址和端口的功能和作用。
2、应用层协议的学习
应用层是传输承载内容的所在,协议还原的本质就是要将这些应用层的数据提取出来。应用层数据千变万化,协议数量和种类很多,但对一些常见协议如HTTP,DNS,SSL的熟悉,对协议分析技能的提高会有很大的帮助。
学习的重点如下:
掌握HTTP协议的原理、方法、应用场景、数据格式及各个字段和值的含义;
掌握DNS协议的原理、机制、特征及各个数据段的含义;
掌握SSL协议的原理、交互流程及数据特征。
同时,对应用层协议的学习不能局限于协议本身,同时需要关注其细节,例如HTTP协议的请求和响应体内数据的编码,格式等知识。
对网络知识的学习,可留意本公号的相关文章。
学习完网络知识,还远远没有入门,还需要熟练使用和掌握各类抓包工具和分析方法,学习指南第二部分,将告诉需要学习的抓包工具和分析方法:
1、Wireshark
这是一个功能强大的报文工具,具备友好的用户界面,使用非常普遍,除了最初级的抓包、导流、搜索、保存等基本功能外,还应掌握各种过滤、显示和统计等高级功能。
2、Fiddler
这个工具主要是用于HTTP和HTTPS协议的分析,一些抓包和分析的具体方法需要掌握牢。
3、tcpdump
这是Linux下的抓包工具,它的各种参数需要熟悉。
4、一些方法
对分析工具的使用中,需要学会下列方法,以提高效率:
从大量报文中找到特定IP或其它特征的流量;
定位特定应用或特定动作产生的流量;
从海量报文中找到有价值的信息。
对工具的使用,可以参考本公号菜单栏的工具技巧栏目。
学习完网络知识和工具使用,还没完,需要在此基础上更深入一层,对数据的编码和解码有一定了解,学习指南第三部分,将告诉你一些需要学习的编码知识:
1、常见的编码
gzip
URL
json
MIME
UTF8
JS
protobuf
xml
BASE64
2、关注点
各个编码的特点,特征及常用场合。
本公号内,也有部分编码知识的介绍。
在对前面提到的知识学习好之后,学习指南的最后一部分,第四部分,将告诉你接下来需要做什么:
实战实战实战,重要的事要说三遍。
实战需要从两个方面入手:
1、找一个APP,去抓包,分析它产生的报文,尝试从报文中提取有价值的信息,发现一些规律。
2、找一个报文分享的网站,下载一些标准协议的报文文件,拓展协议知识的边界,会发现,前面学习的协议知识,只是协议海洋里很小的一部分。
02
—
结语
按照前一章进行了入门级学习以后,你就可以独立进行简单的协议分析任务了,然后,就需要在此基础上边应用边学习了,关键是需要做到融会贯通,以一反三。
同时,还要时刻记得,协议不是一成不变的,社会发展很快,科技发展更快,想跟进时代的潮流,要保持一颗学习之心。
大家一起进步,共同提高吧。
长按进行关注。
相关文章:

C# 学习笔记01
想写一个app可以访问数据库,实现对数据库的查询,修改等,突然发现知识实在有限,故选择C#来实现此app。 使用简单的三层架构来作为此app的架构。表现层(UI)、业务逻辑层(BLL)、数据访问…
转载 iOS js oc相互调用(JavaScriptCore) --iOS调用js
iOS js oc相互调用(JavaScriptCore) 从iOS7开始 苹果公布了JavaScriptCore.framework 它使得JS与OC的交互更加方便了。 下面我们就简单了解一下这个框架 首先我导入framework 方法如下 点击Linked Frameworks and Libraries 的添加后 选择 JavaScriptCor…

【一步步学小程序】2.列表展示
我们上一节已经创建了一个可以点击切换的tabbar。这节我们开始正式敲代码,在首页上展示一个可以上下滚动的课程列表: 首先打开上一节的pages/home/homeMain/homeMain.wxml文件,布局相关代码都会在此文件中,小程序的布局方式类似H…

git分支的合并
原文: http://gitbook.liuhui998.com/3_3.html http://gitbook.liuhui998.com/5_3.html 一、如何分支的合并在git中,可以使用git merge 和git rebase两个命令来进行分支的合并。git merge 和git rebase在大体上都差不多,下文主要以git merg…

【一步步学小程序】3. 使用自定义组件(component)
上一节创建了一个包含多个课程数据的列表。这一节我们用自定义组件(component),来优化列表页面,即如图,我们把每个课程单元格封装为组件。 使用组件的好处: 自定义组件可以在不同的页面中重复使用将复杂…

《lua程序设计(第二版)》学习笔记(五)-- 函数基础
-- 第 5 章 函数-- 一种对语句和表达式进行抽象的主要机制 print(os.date()); -- 打印日期 Sun Apr 20 12:44:46 2014 -- 一看到sun,感慨广州没有晴天 -- 函数没有参数也要括号 -- 特殊情况:只有一个参数的时候, 并且参数一个string/table构造…

HTTP协议中的chunked编码解析
“ HTTP协议中的chunked传输编码全接触。”在HTTP协议中,服务器发往客户端的数据中,通常都包括HTTP头和HTTP体,当存在HTTP体的时候,HTTP体的长度通常是由HTTP头内的“Content-Length”字段确定。就像下图:不过…

html-css实例
<!DOCTYPE html> <html><head><meta charset"utf-8" /><title>求签</title><style type"text/css">*{margin: 0px;padding: 0px;font-family: "微软雅黑",arial,sans-serif;}body{background: url(im…

【Swift】变量/常量/类型总结
1、变量(Variable) 变量,可以理解为存放某一类型的值的容器,如: var count:Int var shouldRemind:BOOL var text:String var list:[ChecklistItem]一个变量的数据类型,决定了它能存放什么类型的数据。有些…

ODBC更新记录集提示”记录集为只读“
创建的ODBC应用程序默认的记录集不具有只读属性,但是再更新记录表时会提示”记录集为只读“,这是为什么呢? 今天看书找到了答案: 因为MFC中的数据库类不支持需要连接两个或者多个表的记录集更新,如果选择数据源的时候选…

gzip格式分析与识别
“ 介绍gzip格式,识别gzip压缩的数据流量。”在协议分析过程中,经常会发现gzip压缩的数据,例如在HTTP协议中,在HTTP头中会标示,内容编码为gzip、DEFLATE。但是,还有很多情况,例如一些非HTTP协议…

CSS 和 JS 动画哪个更快
基于Javascript的动画暗中同CSS过渡效果一样,甚至更加快,这怎么可能呢?而Adobe和Google持续发布的富媒体移动网站的性能可媲美本地应用,这又怎么可能呢? 本文逐一遍览了基于Javascript的DOM动画库,如Veloci…

C语言之分支结构 if(一)
一 程序的三种基本结构 顺序结构:程序从上往下依次执行,这个叫顺序结构 分支结构:有选择的执行或者不执行某段代码 循环结构:重复的执行某段代码 二 分支结构之if 最简单的俩种用法 (tips: if语句后面的大括号可以省略:…

react-native安装Ant Design
1.集成Ant Design到项目 项目根目录中执行命令: npm install ant-design/react-native --save2.集成按需加载babel-plugin-import到项目 项目根目录中执行命令: npm install --save-dev babel-plugin-import3.创建.babelrc文件 根目录中创建新文件…

车联网APP,安全设施薄弱的山寨品
“ 目前的车联网APP,几乎没有安全性可言。”在网络上闲逛,一不小心,逛进了车联网的领地。物联网、车联网、IoT如火如荼,各个大佬、院士加持,看着相当的高大上。但是,在伟岸的外表下,到底真实的情…

CSS里总算是有了一种简单的垂直居中布局的方法了
<!DOCTYPE html> <html xmlns"http://www.w3.org/1999/xhtml"> <head><meta http-equiv"Content-Type" content"text/html; charsetutf-8"/><title>无标题文档</title><style type"text/css"&…

【星榜单】盘点那些坑爹的国产手机们
【星榜单】盘点那些坑爹的国产手机们 国产手机的那些坑爹事儿很多,中庸到基本大众脸的设计还算是有点良心的,那些奇葩的名字、所谓的高配低价低却又山寨级的做工、饥饿营销让你看得到买不到、伪小清新却又华而不实放眼过去的国产智能手机比比皆是&#x…

App Tracking Transparency被拒解决
App Tracking Transparency 如果使用了App Tracking Transparency,苹果要求在iOS 14.5及以上的版本中必须在弹框取得用户同意后,才可以跟踪用户。否则会被拒: 解决方案 参照官方文档说明(https://developer.apple.com/documen…

ProtoBuf格式详解
“介绍protobuf编码格式。”protobuf是一种数据交换格式,又称PB编码,由Google开源,类似于Json、XML,但其内部是纯二进制格式,比Json,XML等格式要更精炼,主要用于数据的序列化和反序列化…

Android studio 第二次作业
作业要求: 作一个显示框里面分成三行 一二行占这个框的1/2 第三行独占1/2 第三行里面分成两列第一列占25%,第二列占75%。 屏幕显示效果 实现步骤: <LinearLayout android:orientation"vertical"注意这里是横向布局 …

Cable master (POJ No.1064)
二分搜索思想:bool C(double x)可以得到长度为x的绳子//#define LOCAL #include<stdio.h> #include<math.h> int const MAX_N10005; int const MAX_M100; double const INF100000000; int N,K; double d[MAX_N],lb,ub; //判断是否满足条件 bool C(doubl…

iOS 11 导致tableview 刷新之后漂移问题
在10 系好好的,在11系统刷新只有就会多一个白块。查询才返现,添加一下代码 完美解决此bugself.mainTableView.estimatedRowHeight 0; self.mainTableView.estimatedSectionHeaderHeight 0; self.mainTableView.estimatedSectionFooterHeight 0;

HTTP协议解析之Cookie
“ Cookie与身份认证。”提到HTTP协议,不可避免地都会牵涉到Cookie,可以说,Cookie作为HTTP的重要组成部分,促进了HTTP协议的发展壮大。HTTP协议如果没有了Cookie,将会是一个无状态,无法便捷地进行用户识别的…

libevent源码深度剖析十一
libevent源码深度剖析十一 ——时间管理 张亮 为了支持定时器,Libevent必须和系统时间打交道,这一部分的内容也比较简单,主要涉及到时间的加减辅助函数、时间缓存、时间校正和定时器堆的时间值调整等。下面就结合源代码来分析一下。 1 初始化…

CentOS 安装Apache
# centOS 安装A M P 环境[参考简书作者,非常感谢!!!](https://www.jianshu.com/p/bc14ff0ab1c7) ## 一 Apache 环境安装 1 安装Apache > yum install httpd2 操作指令一览 > systemctl start httpd //启动apache > systemct…

使用admin lte 碰到访问Google字体的问题
下载了admin lte 的模板,运行的时候,发现很慢,看了一下console,发现adminlte.css里有import google的字体文件,众所周知的原因,无法访问,所以网页很慢,没办法,只能下载到本地了,cnbl…

如何突破DNS报文的512字节限制
“DNS协议大家都应该很熟悉,最近有同学问到如何获得UDP承载的超过512字节的DNS报文,借此机会,我们一起了解下DNS协议与报文长度有关的一些细节。”本文将讨论的是DNS协议在UDP承载时超过512字节的这一细节。在之前的文章里,对DNS协…

Fragment为什么须要无参构造方法
日前在项目代码里遇到偷懒使用重写Fragment带参构造方法来传参的做法,顿生好奇,继承android.support.v4.app.Fragment而又不写无参构造方法不是会出现lint错误编译不通过的咩?仔细追究,原来是这货被加了SuppressLint("ValidF…

CentOS 安装FTP
# 安装FTP * 1 安装命令> yum -y install vsftpd * 2 使用如下命令增加账户,其中 /var/www/html 是我们的 ftp 目录,ftpadmin 为 ftp 用户名。 > useradd -d /var/www/html -s /sbin/nologin ftpadmin * 3 给 ftpadmin 这个用户设置密码 > pa…

HTTP协议中的Range和Content-Range
“ 琢磨HTTP协议的每一个细节。”HTTP协议博大精深,每一个细节都应细细体会。否则,在协议还原的过程中,你会遇到各种问题。今天,本文中将对HTTP协议的Range和Content-Range进行分析。Range和Content-Range是 HTTP/1.1中新增的HTTP…