白兔(White Rabbit,WR)协议学习笔记(一)

1. PTP协议

        PTP(IEEE 1588)协议,也就是精确同步时钟协议,用于设备之间的高精度时间同步。

https://blog.youkuaiyun.com/weixin_46303553/article/details/128228364(TP-link官方账号的科普贴)

1.1 PTP协议的同步过程

        在两个设备未同步时,主从时钟存在偏差Offset。启动同步时,主设备向从设备发送Sync消息,将主设备发出Sync的时间打上时间戳T_{m1},并在Sync消息发出后,利用Follow_Up消息将T_{m1}传输给从设备。从设备将接收到Sync消息的时间打上时间戳T_{s1}。注意,T_{m1}T_{s1}不在一个时钟域中,他们之间存在偏差Offset。

        在接收到Follow_Up消息后,从设备发出Delay_Req消息,该消息的发出时间记为T_{s2},主设备接收到该消息的时间戳记为T_{m2},同样的T_{s2}T_{m2}之间也有偏差Offset。假设链路对称,其传输延迟可以表示为

T_{s1}-T_{m1}+Offset=Delay

同样的,对于T_{s2}T_{m2}也可以得到传输延迟Delay,但由于Delay_Req消息是由从设备传往主设备,那么其传输延迟表示为

T_{m2}-T_{s2}-Offset=Delay

所以主从时钟偏差Offset可以表示为

Offset=\frac{T_{m2}-T_{s2}-T_{s1}+T_{m1}}{2}

传输延迟可表示为

Delay=\frac{T_{m2}-T_{s2}+T_{s1}-T_{m1}}{2}

图1.1 PTP协议的同步过程[1]

2. 白兔协议(一)

        白兔协议是PTP协议的扩展协议,其由欧洲核子中心(CERN)提出,并在大型强子对撞机(LHC)等大型物理实验中应用,国内的LHAASO,HIAF等实验也使用白兔协议作为同步协议。白兔协议利用PTP协议实现时间的同步,并利用全数字双混频鉴相器(Digital DualMixer TimeDifference,DDMTD)进一步提高同步精度至亚纳秒级。

        PTP协议假定以太网链路是对称的,并且没有考虑硬件延迟。白兔协议则考虑光纤链路的不对称性及硬件延迟。白兔协议使用波分复用技术(WDM),将两种波段(1350nm与1490nm)的光使用同一根光纤传输以克服链路的不对称性质,利用DDMTD测量时钟相位差提高时间戳精度,提前标定固定的硬件延迟,最后能够达到亚纳秒的时间同步。

[1]李培基,李卫,朱祥维,龚航,.网络时间同步协议综述【J】.计算机工程与应用,2019,(03):30-38.

### 杂项(Misc)类别中的隐藏小白兔Rabbit)Flag解析 在CTF竞赛中,`misc`类别通常涉及多种类型的挑战,包括但不限于隐写术、密码学基础、数据分析和逆向工程等。根据提供的代码片段[^1],以下是对如何寻找与小白兔rabbit)相关的隐藏Flag的详细分析。 #### 1. 数据加载与可视化 代码首先通过`numpy`加载了三个数据文件:`template_trace_0.npy`、`template_trace_1.npy`和`energy_traces_with_flag.npy`。这些文件可能包含能量追踪数据或模板信号,用于区分不同的二进制状态(0或1)。为了理解数据结构,代码使用`matplotlib`对两个模板信号进行了可视化检查: ```python plt.figure(figsize=(12,6)) plt.plot(template_0, label='Template 0') plt.plot(template_1, label='Template 1') plt.legend() plt.show() ``` 此部分有助于观察两个模板信号之间的差异,并确定关键区域[^1]。 #### 2. 差异分析与关键点定位 接下来,代码计算了两个模板信号之间的绝对差异,并找到差异最大的位置: ```python diff = np.abs(template_0 - template_1) critical_point = np.argmax(diff) ``` 此处的关键点`critical_point`代表了两个模板信号之间最显著的区别位置。该位置对于后续的二进制分类至关重要。 #### 3. 二进制分类与Flag提取 通过对每个能量追踪数据的关键点值进行比较,代码将其分类为`0`或`1`: ```python bits = [] for trace in traces: val = trace[critical_point] threshold = (template_0[critical_point] + template_1[critical_point]) / 2 bits.append('0' if val < threshold else '1') ``` 随后,将所有二进制位拼接成字符串并转换为文本形式: ```python bit_string = ''.join(bits) flag = bits_to_text(bit_string) print("Flag:", flag) ``` 此处的`bits_to_text`函数将二进制字符串转换为ASCII字符,从而得到最终的Flag。 #### 4. 寻找小白兔Rabbit)Flag 结合题目背景,如果目标是寻找与小白兔rabbit)相关的Flag,可以尝试以下方法: - **关键词搜索**:检查是否在原始数据文件中嵌入了“rabbit”或其他相关关键词。 - **图像隐写术**:如果提供了图像文件,可以使用工具如`steghide`或`zsteg`来检测隐藏信息。 - **文本分析**:对提取的Flag内容进行分析,确认是否包含“rabbit”或其变体。 以下是改进后的代码示例,增加了对“rabbit”关键词的检测: ```python if "rabbit" in flag.lower(): print("Rabbit Flag Found:", flag) else: print("No Rabbit Flag Detected.") ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值