PulseWidth
PulseWidth принимает телеметрию промышленных датчиков и выдаёт закрытый экспорт только с нужными правами сессии. В раздатке есть ELF `pulsewidth`. При проверке длины кадра ограничение применяют к 8-битному значению, а чтение использует полное число байт.
## Решение
В `ingest_frame()` сравнивают `(uint8_t)n` с размером `scratch[64]`, затем вызывают `read_exact(session_state.scratch, n)`. Старшие биты длины при проверке теряются.
Берём `n = 320`. После приведения к `uint8_t` остаётся `64`, поэтому лимит пройден. А чтение запишет все 320 байт, из которых 256 окажутся за пределами scratch-буфера.
Сразу за ним лежат поля сессии:
| Смещение | Поле | Нужное значение |
|---:|---|---|
| 64 | `role`, 4 байта | `0x4341504c` |
| 68 | `export_lane`, 4 байта | `0x45585054` |
| 72 | `audit_cookie`, 8 байт | `0x2605061337c0ffee` |
Собираем кадр в little-endian:
```python
import struct
payload = b"A" * 64
payload += struct.pack("