← 返回题库
中级

实现时间戳重放攻击检测

未完成
中级参考 代码结构已给出,请填写 ____ 处
def solve():
    from pyodide.http import open_url
    from io import StringIO
    import pandas as pd, json
    payloads_csv = open_url(____).read()
    payloads = pd.read_csv(StringIO(____))
    WINDOW = ____
    received_ts = {}
    def detect_replay(____):
        try: payload = json.loads(____)
        except: return False, '____'
        ts = payload.get(____)
        if ts is None: return False, '____'
        key = f"____"
        if key in received_ts:
            return False, f'____'
        if abs(____) > WINDOW:
            return False, f'____'
        received_ts[key] = received_at
        return True, '____'
    for _, row in payloads.iterrows():
        ok, reason = detect_replay(____)
        if not ok: print(____)
        else: print(____)

示例

输入
solve()
期望输出
id=1 DEV001: OK
id=2 DEV003: OK
id=3 DEV004: OK
id=4 DEV001: REJECT(missing_timestamp)
id=5 DEV099: OK
id=6 DEV002: OK
id=7 DEV005: OK
id=8 DEV001: REJECT(replay(ts=1748736000))
id=9 DEV007: OK
id=10 DEV008: OK
id=11 DEV009: OK
id=12 DEV009: OK
id=13 DEV002: OK
id=14 DEV001: OK
id=15 DEV007: OK
id=16 DEV005: OK
id=17 DEV001: OK
id=18 DEV007: OK
id=19 DEV007: OK
id=20 DEV009: OK
id=21 DEV005: OK
id=22 DEV007: OK
id=23 DEV001: OK
id=24 DEV002: OK
id=25 DEV003: OK
id=26 DEV002: OK
id=27 DEV003: OK
id=28 DEV005: OK
id=29 DEV003: OK
id=30 DEV001: OK
Python 代码 🔒 登录后使用
🔒

登录后即可练习

注册免费账号,在浏览器中直接运行 Python 代码