计网实验探索 ¶
约 3218 个字 38 行代码 预计阅读时间 13 分钟
使用的工具
- Wireshark
- Burpsuite
TCP¶
实验注意
像 Wireshark 这种工具,通常显示的都是相对序列号 / 确认号,而不是实际序列号 / 确认号,相对序列号 / 确认号是和 TCP 会话的初始序列号相关联的。
比如,在“包1”中,最初的相对序列号的值是0,但是最下方面板中的ASCII码显示真实序列号的值是0xf61c6cbe,转化为10进制为4129057982
可以选择Wireshark菜单栏中的 Edit -> Preferences ->protocols ->TCP,去掉Relative sequence number后面勾选框中的√即可
Clash 给手机提供代理 ¶
-
确定电脑可以通过 clash 进行正常连接,或者能通过 SSR 连接
-
打开 Clash 的
Allow Lan
,这一步是为了让 Clash 允许局域网连接(在 SSR 中,则是允许来自局域网的连接) -
电脑进入
cmd
,输入ipconfig
找到电脑自己的 IPv4 地址,例如192.168.127.1
这里 192.168 是 C 类 IP,是内网中返回的
- 看看 Clash 界面的 Port 是多少,不用管那个 Socks Port。例如,Port 是
1125
在 SSR 中,是看本地端口,例如,本地端口是 1125
-
手机或其它设备先连接上电脑 win10 的自带热点,进入手机 WiFi 的详细设置界面
-
把选项 代理 从 无 改成 手动 ,选项 主机名 设置为
192.168.127.1
,选项 代理服务器端口 改为1125
,确认即可
使用“共享文件夹”实现 iPhone 与 PC 间文件快速传输 ¶
PC 端设置 ¶
- 设置读取 / 写入权限
(1)考虑到信息安全问题,建议将共享用户数量限制为 1,根据使用情况自行设定。
(2)完全控制权限慎选。
- 获取 IP 地址
使用Win+R
, 输入cmd
, 输入ipconfig
手机端设置 ¶
打开 iPhone 端“文件”——点击右上角三个点——选择“连接服务器”——输入 IP 地址——点击连接——选择注册用户——输入电脑名称及密码——完成。然后打开“文件”应用,就可以看到共享文件夹了。
Proxy¶
什么是代理
代理服务器是一种位于用户和互联网之间的服务器,用于转发用户请求。代理服务器的作用是代替用户发送请求,然后将响应返回给用户。代理服务器可以用于访问被封锁的网站、保护用户隐私、提高访问速度等。
正向代理 ¶
正向代理(forward proxy
这种代理其实在生活中是比较常见的,比如访问外国网站技术,其用到的就是代理技术。
有时候,用户想要访问某国外网站,该网站无法在国内直接访问,但是我们可以访问到一个代理服务器,这个代理服务器可以访问到这个国外网站。这样呢,用户对该国外网站的访问就需要通过代理服务器来转发请求,并且该代理服务器也会将请求的响应再返回给用户。这个上网的过程就是用到了正向代理。
正向代理,其实是代理服务器代理了客户端,去和目标服务器进行交互。
- 突破访问限制
- 提高访问速度
- 隐藏客户端真实 IP
Clash for Windows 优雅地使用 TUN 模式接管系统流量 · Dejavu's Blog
Mythologyli/zju-connect: ZJU RVPN 客户端的 Go 语言实现
反向代理 ¶
反向代理(reverse proxy
反向代理,其实是代理服务器代理了目标服务器,去和客户端进行交互。
终于有人把正向代理和反向代理解释的明明白白了!- 腾讯云开发者社区 - 腾讯云
静态路由 ¶
静态路由是一种需要管理员手动配置的特殊路由。静态路由比动态路由使用更少的带宽,并且不占用 CPU 资源来计算和分析路由更新。但是,当网络发生故障或者拓扑发生变化后,静态路由不会自动更新,必须手动重新配置。
静态路由的组成 ¶
静态路由主要包括 5 个主要的参数:目的 IP 地址和子网掩码、出接口和下一跳 IP 地址、优先级。
1、目的 IP 地址 / 子网掩码
目的 IP 地址就是路由要到达的目的主机或者目的网络的 IP 地址,子网掩码就是目的地址所对应的子网掩码。当目的地址和子网掩码全为 0 的时候,表示静态缺省路由(默认路由
2、出接口和下一跳地址
根据不同的出接口类型,在配置静态路由的时候,可以选择出接口的方式,也可以指定下一跳 IP 地址,还可以同时指定出接口和下一跳 IP 地址。
- 对于点对点类型的接口,只需指定出接口。当然,也可以同时指定下一跳 IP 地址,但这时已没有意义。
- 对于 NBMA 类型的接口,只需配置下一跳 IP 地址,当然,也可以同时指定出接口。
- 对于广播类型的接口和 VT( virtual-template )接口,必须指定下一跳 IP 地址,有些情况下还需要指定出接口。
3、静态路由的优先级
对于不同的静态路由,可以为它们配置不同的优先级。优先级值越小表示静态路由的优先级越高。配置到达相同目的地的多条静态路由,如果指定相同的优先级,则可实现负载分担;如果指定不同优先级,则可以实现路由备份。
对 zdty 体测预约进行抓包分析 ¶
一个平平无奇的周日晚上,在上课的 PhilFan 收到 Fufu 在群里发的消息
"zdty 真垃圾,都是明文传 "
顺带传了一张预约好的体测照片,不过这个时间段不是还没有开放咩??
于是 PhilFan 决定稍微抓抓看,看看有多垃圾,复习以下刚学到的 HTTP 抓包技能。(世界是一个巨大的草台班子
另外需要注意的是,现在已经没有必要使用代码进行预约了,因为 app 预约也不麻烦(就是玩一下 hhh
以下行为均以学习计网知识为目的,模仿带来的任何风险由使用者自己承担,请注意保护好自己的隐私信息
第一步——如何抓包手机 APP ¶
- 第一种是用电脑给手机提供热点,相当于电脑当作了手机的流量来源,直接在电脑上使用抓包工具(如
wireshark
等)进行分析即可。
- 第二种我也没有试过,直接使用手机端的抓包 APP 进行分析。
第二步——找到对应的报文 ¶
打开 wireshark,选择 HTTP 进行筛选
为了不抓到其他无关信息,还是尽量关一下其他网站和 APP
打开 zdty,体测预约,看到类似如下信息说明可以抓到
以 4 月 12 日体测为例,点开体测预约,我们发现有一个报文
由课上知识我们知道:
HTTP 报文由请求行、请求头、空白行 (
\r\n
)、请求体请求行由三部分构成:第一部分说明请求类型为 get 方法请求,第二部分(用 / 分开)是资源 URL,第三部分说明使用的是 HTTP1.1 版本。
很奇怪的是,这里我们看到这个 GET 请求的 URL,直接将 token 和日期什么的进行明文传递了。
(朴素认知下,这是不是意味着只要嗅探到你的浙大体艺预约报文,就可以获得你的 token,进而可以取消你的预约)
分析上图我们可以发现请求头的一些信息,重复刚才的步骤多次可以找到一定规律
- id:3325(应该是体测时间的排序,且相邻时间数字也是相邻的)
- testDate:体测的日期
- timeSolt:体测的时间段
- jToken:不太懂具体是什么作用,推测是进行用户的识别
- __:不清楚具体作用,推测为时间戳。
再试着点一次预约,我们发现了一个新的报文
分析这个请求的 URL,发现多了几个参数
- testPointName:紫金港田径场体测中心(应该是体测地点,
也可以改成快乐星球 - tel:你的电话
- periodId:学年,这次应该是 2024
其实到找到你的 token,知道你要预约的时间段和年份,就可以抓了。
没有搞懂的地方
浙大体艺是用什么框架
token,cookie,session,cache的区别
第三步——使用代码进行报文模拟 ¶
这一步其实就没有什么难度了
相当于你只需要知道这个 URL,对这个 URL 发 GET 请求就可以了
询问 gpt 就行了
- 使用 curl 命令
- 使用 PowerShell
- 使用 Python 的
request
库即可
注意要将刚才的信息抓下来填好
# 示例
import requests
BASE_URL = "http://tyys.zju.edu.cn"
JSESSIONID = ""
JTOKEN = ""
TEL = ""
def schedule_appointment(schedule_id, test_date, time_slot_id, test_point_name="快乐星球", test_option_id="", period_id="2024"):
url = f"{BASE_URL}/pft/app/schedule/student/event/submit"
params = {
"scheduleId": schedule_id,
"testPointName": test_point_name,
"testDate": test_date,
"timeSoltId": time_slot_id,
"testOptionId": test_option_id,
"tel": TEL,
"periodId": period_id,
"jToken": JTOKEN,
}
cookies = {
"JSESSIONID": JSESSIONID
}
response = requests.get(url, params=params, cookies=cookies)
print(response.status_code)
print(response.text)
# Example usage
schedule_appointment("3322", "2024-04-12", "13:30-14:00")
可以发现,我的体测地点变成了快乐星球(😂
同理,可以抓到取消预约的 URL
其中scheduledId
参数需要获取 " 我的预约 " 列表,再抓取响应报文获得
def cancel_appointment(scheduled_id):
url = f"{BASE_URL}/pft/app/schedule/student/my/undo"
params = {
"scheduledId": scheduled_id,
"jToken": JTOKEN
}
response = requests.get(url, params=params)
print(response.status_code)
内网穿透 ¶
路由器相关 ¶
L2TP(Layer 2 Tunneling Protocol)¶
分享:玉泉 Windows 有线网 L2TP/IPv6 不死脚本 - CC98 论坛
L2TP 是 第二层隧道协议,主要用于 VPN(虚拟专用网络) 连接,通常与 IPsec 结合使用,以增强安全性。
特点:
- 仅提供隧道功能,不提供加密,需要结合 IPSec 才能实现安全的 VPN 连接。
- 适用于远程访问和站点间 VPN 连接。
- 支持 PPP(点对点协议),可用于认证(如 PAP、CHAP
OpenWrt¶
openwrt 配置 IPv6 NAT(2024) - CC98 论坛 搬到1舍后终于用上了IPV6 relay!!(附Redmi AC2100 OpenWrt固件) - CC98论坛
紫金港 OpenWrt & Adguard Home 配置小总结 - CC98 论坛
Openwrt 配置合集——编译、l2tp、静态路由、IPV6(NAT6、Relay) - CC98 论坛
OpenWrt 路由器 MacVLAN+MWAN3 有线网多拨超详细指南 - CC98 论坛
OpenWrt 是一个 基于 Linux 的嵌入式路由器操作系统,支持许多 路由器和嵌入式设备。
特点:
- 开源,可自定义路由器功能,如防火墙、QoS、VPN。
- 强大的软件包管理,可安装 OpenVPN、L2TP、Shadowsocks、AdGuardHome 等。
- 支持 IPv6,能方便地进行 IPv6 隧道或原生 IPv6 连接。
- 适合高级用户和开发者,支持 Shell、Lua、Python 等编程语言。
Padavan¶
浙大校园网 Padavan 固件路由器配置教程 - CC98 论坛
Padavan IPV6 设置终结帖(RedMi AC2100) - CC98 论坛
Padavan 是一个专门为 MTK(联发科)路由器 设计的 第三方固件,基于 ASUSWRT(华硕官方固件)进行改进,支持某些 小米、华硕、斐讯 路由器。
特点:
- 轻量化、稳定、高效,比 OpenWrt 更适合日常使用。
- 支持 IPv6、VPN(L2TP/PPTP
IPv6(Internet Protocol Version 6)¶
IPv6 是 互联网协议的第六版,用于替代 IPv4,解决地址耗尽问题。
特点:
- 地址空间大,使用 128 位地址,可提供几乎无限的 IP。
- 无 NAT(网络地址转换),设备可直接全球互联。
- 内置安全性,支持 IPSec,增强安全性。
- 支持自动配置(SLAAC 和 DHCPv6),减少网络管理复杂度。
校网 IPv6 终极指南 - CC98论坛
有线IPv6环境下基于DNS64/NAT64突破外网出口限速的方法 - CC98论坛
学校网络架构升级,l2tp 和 ipv6 出了点问题 - CC98 论坛