fiddler 网页游戏

0

注*这里还有一个坑,就是如果你使用最新版本的WX,你会发现无法抓包小程序数据,这里需要回滚下WX版本,我这里是把WX设置成3.5.X.XX版本

(KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.3964.2 Safari/537.36'

我们按住这条记录,拖动到Composer工具里,简单调试去除一下无用的头部信息三国群英传网页游戏服务端,看浏览器是否能正常返回。我们精简后的请求为下图示例

通过逐条查看,或者搜索china字样,我们找到了一个异步请求数据包,这个包是用来做词义联想的,虽然不是最终的翻译数据包,但是该包相对简单也可以实现翻译功能,我们就来模拟这个包实现翻译功能。

fiddler 网页游戏

我们通过一个示例,来强化上面的学习。我们来使用Fiddler抓取百度翻译输入china的数据包,然后使用我们熟悉的编程语言来写一个翻译软件。

通过这个命令,我们既可以修改请求,也可以修改响应。常常用来劫持数据,例如你玩的某个游戏里,你有100个金币,通过劫持数据,你可以吧自己的金币数量修改成1万甚至更多。

TextView和SyntaxView作用相似,用来显示服务器返回的具体内容。当返回内容非常大的时候TextView会卡死很久才显示。SyntaxView比TextView响应快很多

Any Process 这个按钮可以拖动选择抓指定应用程序的包,比如拖动到firefox就只显示firefox的数据包。默认显示全部应用程序。

"Keep 1000 sessions"表示显示多少条数据记录,默认显示全部,这里建议设置为500或者1000,默认全部的话,时间久了会把你电脑内存耗光.

Decode选中之后会自动尝试解压响应的内容,包括但不限于以下格式(gzip、deflate、bzip2、brotli)。

在这里我们可以修改Fiddler监听的端口,勾选红圈标示出来的这项,允许远程计算机连接。以便在以后我们抓取手机等移动设备的数据包。勾选之后在手机Wifi设置里设置代理为 “内网IP:8888"(如 192.168.1.2:8888)就可以抓取手机的HTTP数据包。

安装过程很简单绿色,选择好安装路径,点击Install就可以了。这里特别注意下,你要记住你的安装路径,因为Fiddler默认不会创建桌面快捷方式,需要你去安装目录打开程序或者手动创建快捷方式。

Fiddler是基于代理模式工作的,简单来说,当你打开Fiddler软件,他会开始监听本机8888端口。然后将系统默认代理设置为127.0.0.1:8888。这样本机所有使用系统代理的软件包括浏览器会先把数据发送到Fiddler,然后Fiddler再将数据发送到服务器。服务器返回的数据先发送给Fiddler,再由Fiddler发送到指定的程序。在这个过程中Fiddler起到了转发数据(代理)的作用。由于数据无论是请求还是响应都通过Fiddler进行转发,所以Fiddler有权限对数据进行获取、存储、修改等操作。

第一行表示: helios 对 h2opolo 所发送的 3 号查询请求回应了 3 条回答记录(nt | rt: answer records), 3 条名称服务器记录,

ancount, nscout, arcount(nt: 具体字段含义需补充) 将被显示为'[na]', '[nn]', '[nau]', 其中 n 代表合适的计数. 如果包中以下回应位(比如 AA 位, RA 位, rcode 位), 或者字节 2 或 3 中任何一个'必须为 0'的位被置位(nt: 设置为 1), '[b2&3]=x' 将被显示, 其中 x 表示头部字节 2 与字节 3 进行与操作后的值.

异常检查会在方括中显示出附加的域: 如果一个查询同时包含一个回应(nt: 可理解为, 对之前其他一个请求的回应), 并且此回应包含权威或附加记录段,

主机 h2opolo 向 helios 上运行的名称服务器查询 ucbvax.berkeley.edu 的地址记录(nt: qtype 等于 A). 此查询本身的 id号为'3'. 符号'+'意味着递归查询标志被设置(nt: dns 服务器可向更高层 dns 服务器查询本服务器不包含的地址记录). 这个最终通过 IP 包发送的查询请求数据长度为 37 字节, 其中不包括 UDP 和 IP 协议的头数据. 因为此查询操作为默认值(nt | rt: normal one 的理解), op 字段被省略.

h2opolo.1538 > helios.domain: 3+ A? ucbvax.berkeley.edu. (37)

(nt: 从下文来看, 格式应该是 src > dst: id op flags qtype qclass? name (len))

我们可以发现, 不管包的 ACK 或其他标志是否被设置, 以上的 AND 操作都会给我们相同的值, 其 10 进制表达就是 2(2 进制表达就是 00000010).

为了达到我们的目标, 我们需要把 13 号字节的二进制值与其他的一个数做 AND 操作(nt:逻辑与)来得到 SYN 比特位的值. 目标是:只要 SYN 被设置就行, 于是我们就把她与上 13 号字节的 SYN 值(nt: 00000010).

现在, 假设我们需要抓取带 SYN 标志的数据包, 而忽略它是否包含其他标志.(nt:只要带 SYN 就是我们想要的). 让我们来看看当一个含有

接近目标了, 因为我们已经知道, 如果数据包头部中的 SYN 被置位, 那么头部中的第 13 个字节的值为 2(nt: 按照网络序, 即大头方式, 最重要的字节在前面(在前面,即该字节实际内存地址比较小, 最重要的字节,指数学表示中数的高位, 如 356 中的 3) ).表达为 tcpdump 能理解的关系式就是:

0*2^7 + 0*2^6 + 0*2^5 + 0*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 2(nt: 1 * 2^6 表示 1 乘以 2 的 6 次方, 也许这样更

假设编号为 13 的字节是一个 8 位的无符号字符型,并且按照网络字节号排序(nt:对于一个字节来说,网络字节序等同于主机字节序), 其二进制值

提醒一下自己, 我们只是要得到包含 SYN 标志的数据包. 让我们看看在一个包的包头中, 如果 SYN 位被设置, 到底在 13 号字节发生了什么:

这里有我们感兴趣的控制标志位. 从右往左这些位被依次编号为 0 到 7, 从而 PSH 位在 3 号, 而 URG 位在 5 号.

CWR | ECE | URG | ACK | PSH | RST | SYN | FIN(nt | rt:从表达方式上可推断:这 8 个位是用或的方式来组合的, 可回头再翻)现假设我们想要监控建立一个 TCP 连接整个过程中所产生的数据包. 可回忆如下:TCP 使用 3 次握手协议来建立一个新的连接; 其与此三次握手连接顺序对应,并带有相应 TCP 控制标志的数据包如下:

如果所抓到的 tcp 包(nt:即这里的 snapshot)太小了,以至 tcpdump 无法完整得到其头部数据, 这时, tcpdump 会尽量解析这个不完整的头,并把剩下不能解析的部分显示为'[|tcp]'. 如果头部含有虚假的属性信息(比如其长度属性其实比头部实际长度长或短), tcpdump 会为该头部显示'[bad opt]'. 如果头部的长度告诉我们某些选项(nt | rt:从下文来看, 指 tcp 包的头部中针对 ip 包的一些选项, 回头再翻)会在此包中,

第六行的含义为:rtsg 向 csam 发送了 19 字节的数据(字节的编号为 2 到 20,传送方向为 rtsg 到 csam). 包中设置了 PUSH 标 志. 在第 7 行,csam 喊到, 她已经从 rtsg 中收到了 21 以下的字节, 但不包括 21 编号的字节. 这些字节存放在 csam 的 socket 的接收缓冲中, 相应地,csam 的接收缓冲窗口大小会减少 19 字节(nt:可以从第 5 行和第 7 行 win 属性值的变化看出来). csam 在第 7 行这个包中也向rtsg 发送了一个字节. 在第 8 行和第 9 行, csam 继续向 rtsg 分别发送了两个只包含一个字节的数据包, 并且这个数据包带 PUSH 标志.

csam.login > rtsg.1023: S 947648:947648(0) ack 768513 win 4096 rtsg.1023 > csam.login: . ack 1 win 4096

rtsg.1023 > csam.login: S 768512:768512(0) win 4096

Urg(urgent) 表示数据包中有紧急的数据. options 描述了 tcp 的一些选项, 这些选项都用尖括号来表示(如 ).

tcpdump 对 Arp/rarp 包的输出信息中会包含请求类型及该请求对应的参数. 显示格式简洁明了. 以下是从主机 rtsg 到主机csam 的'rlogin'

比如, 以下显示了对一个外发压缩 TCP 数据包的打印, 这个数据包隐含一个连接标识(connection identifier); 应答号增加了 6,顺序号增加了 49, 包 ID 号增加了 6; 包数据长度为 3 字节(octect), 压缩头部为 6 字节.(nt:如此看来这应该不是一个特殊的压缩数据包).

*S+n 或者 *SA+n, 其中 n 代表包的(顺序号或(顺序号和应答号))增加或减少的数目(nt | rt:S,SA 拗口, 需再译).

reconfirm).对于 TCP 数据包, 连接标识紧接着类型表示被打印. 如果此包被压缩, 其被编码过的头部将被打印.

类型分为 ip, utcp 以及 ctcp(nt:未知, 需补充). 对于 ip 包,连接信息将不被打印(nt:SLIP 连接上,ip 包的连接信息可能无用或没有定义.

对于 SLIP 网络(nt:SLIP links, 可理解为一个网络, 即通过串行线路建立的连接, 而一个简单的连接也可看成一个网络),数据包的'direction indicator'('方向指示标志')("I"表示入, "O"表示出), 类型以及压缩信息将会被打印. 包类型会被首先打印.

比如 'async4'就代表此包为异步数据包,并且优先级别为 4. 通常认为,这些包们会内含一个 LLC 包(逻辑链路控制包); 这时,如果此包不是一个 ISO datagram 或所谓的 SNAP 包,其 LLC 头部将会被打印(nt:应该是指此包内含的 LLC 包的包头).

(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp 这些选项等都要放到第一个参数的位置,用来过滤数据报的类型

还好有 Tcpdump。我们可以用 Tcpdump + Wireshark 的完美组合实现:在 Linux 里抓包,然后在 Windows 里分析包。

Wireshark(以前是 ethereal)是 Windows 下非常简单易用的抓包工具。但在 Linux 下很难找到一个好用的图形化抓包工具。

(nt: 'echo reuqest' 与 'echo reply' 这两种类型的 ICMP 数据包通常由 ping 程序产生))

打印除'echo request'或者'echo reply'类型以外的 ICMP 数据包( 比如,需要打印所有非 ping 程序产生的数据包时可用到此表达式 .

劫掠三国通天塔单机游戏打印所有通过网关 snup 的 ftp 数据包(注意, 表达式被单引号括起来了, 这可以防止 shell 对其中的括号进行错误解析)

截获主机 210.27.48.1 和主机 210.27.48.2 或 210.27.48.3 的通信tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)

也可以指定 ip,例如截获所有 210.27.48.1 的主机收到的和发出的所有的数据包tcpdump host 210.27.48.1

8.在手机里打开游览器 输入 192.168.1.4:8888 如果访问成功会看到"Fiddler Echo Service"

7."代理服务器主机名" 写上电脑的 IP 地址 (eg. 192.168.1.4) 端口 默认为 8888 设置完毕点保存

4.确认电脑的 IP 地址 可以在 DOS 下使用 IPCONFIG 查看或网络连接里查看 (eg. 我的是 192.168.1.4)

专题: 萌三国单机游戏   单机三国4游戏   三国游戏单机9