Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions evidence/cap-mh200-who25-boundary-20261022/frames.jsonl
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{"seq":1,"t_rel_ms":0,"dir":"tx","raw":"*#13**15##","who":13,"where":"","what":null,"dimension":15,"dimension_values":null,"annotation":"Command session: Query WHO 13 gateway model","interface":null,"scope":null}
{"seq":2,"t_rel_ms":11,"dir":"rx","raw":"*#13**15*4##","who":13,"where":"","what":null,"dimension":15,"dimension_values":["4"],"annotation":"Command session: reply to *#13**15##","interface":null,"scope":null}
{"seq":3,"t_rel_ms":11,"dir":"rx","raw":"*#*1##","who":null,"where":null,"what":null,"dimension":null,"dimension_values":null,"annotation":"Command session: ACK for *#13**15## (+10.77 ms)","interface":null,"scope":null}
{"seq":4,"t_rel_ms":17,"dir":"rx","raw":"*#13**15*4##","who":13,"where":"","what":null,"dimension":15,"dimension_values":["4"],"annotation":"Event session: received during the *#13**15## step","interface":null,"scope":null}
{"seq":5,"t_rel_ms":431,"dir":"tx","raw":"*#13**16##","who":13,"where":"","what":null,"dimension":16,"dimension_values":null,"annotation":"Command session: Query WHO 13 firmware version","interface":null,"scope":null}
{"seq":6,"t_rel_ms":486,"dir":"rx","raw":"*#13**16*2*1*0##","who":13,"where":"","what":null,"dimension":16,"dimension_values":["2","1","0"],"annotation":"Command session: reply to *#13**16##","interface":null,"scope":null}
{"seq":7,"t_rel_ms":486,"dir":"rx","raw":"*#*1##","who":null,"where":null,"what":null,"dimension":null,"dimension_values":null,"annotation":"Command session: ACK for *#13**16## (+55.24 ms)","interface":null,"scope":null}
{"seq":8,"t_rel_ms":493,"dir":"rx","raw":"*#13**16*2*1*0##","who":13,"where":"","what":null,"dimension":16,"dimension_values":["2","1","0"],"annotation":"Event session: received during the *#13**16## step","interface":null,"scope":null}
{"seq":9,"t_rel_ms":884,"dir":"tx","raw":"*#13**23##","who":13,"where":"","what":null,"dimension":23,"dimension_values":null,"annotation":"Command session: Query WHO 13 kernel version","interface":null,"scope":null}
{"seq":10,"t_rel_ms":894,"dir":"rx","raw":"*#13**23*2*0*6##","who":13,"where":"","what":null,"dimension":23,"dimension_values":["2","0","6"],"annotation":"Command session: reply to *#13**23##","interface":null,"scope":null}
{"seq":11,"t_rel_ms":894,"dir":"rx","raw":"*#*1##","who":null,"where":null,"what":null,"dimension":null,"dimension_values":null,"annotation":"Command session: ACK for *#13**23## (+9.95 ms)","interface":null,"scope":null}
{"seq":12,"t_rel_ms":901,"dir":"rx","raw":"*#13**23*2*0*6##","who":13,"where":"","what":null,"dimension":23,"dimension_values":["2","0","6"],"annotation":"Event session: received during the *#13**23## step","interface":null,"scope":null}
{"seq":13,"t_rel_ms":1291,"dir":"tx","raw":"*#13**24##","who":13,"where":"","what":null,"dimension":24,"dimension_values":null,"annotation":"Command session: Query WHO 13 distribution version","interface":null,"scope":null}
{"seq":14,"t_rel_ms":1332,"dir":"rx","raw":"*#13**24*3*0*5##","who":13,"where":"","what":null,"dimension":24,"dimension_values":["3","0","5"],"annotation":"Command session: reply to *#13**24##","interface":null,"scope":null}
{"seq":15,"t_rel_ms":1332,"dir":"rx","raw":"*#*1##","who":null,"where":null,"what":null,"dimension":null,"dimension_values":null,"annotation":"Command session: ACK for *#13**24## (+41.00 ms)","interface":null,"scope":null}
{"seq":16,"t_rel_ms":1332,"dir":"rx","raw":"*#13**24*3*0*5##","who":13,"where":"","what":null,"dimension":24,"dimension_values":["3","0","5"],"annotation":"Event session: received during the *#13**24## step","interface":null,"scope":null}
{"seq":17,"t_rel_ms":1745,"dir":"tx","raw":"*#1013*0*1##","who":1013,"where":"0","what":null,"dimension":1,"dimension_values":null,"annotation":"Command session: Query WHO 1013 gateway diagnostic object model","interface":null,"scope":null}
{"seq":18,"t_rel_ms":1794,"dir":"rx","raw":"*#1013**1*4##","who":1013,"where":"","what":null,"dimension":1,"dimension_values":["4"],"annotation":"Command session: reply to *#1013*0*1##","interface":null,"scope":null}
{"seq":19,"t_rel_ms":1794,"dir":"rx","raw":"*#*1##","who":null,"where":null,"what":null,"dimension":null,"dimension_values":null,"annotation":"Command session: ACK for *#1013*0*1## (+49.19 ms)","interface":null,"scope":null}
{"seq":20,"t_rel_ms":1794,"dir":"rx","raw":"*#1013**1*4##","who":1013,"where":"","what":null,"dimension":1,"dimension_values":["4"],"annotation":"Event session: received during the *#1013*0*1## step","interface":null,"scope":null}
{"seq":21,"t_rel_ms":2200,"dir":"tx","raw":"*#9*0##","who":9,"where":"0","what":null,"dimension":null,"dimension_values":null,"annotation":"Command session: Positive control: WHO 9 auxiliary channel 0 status request","interface":null,"scope":null}
{"seq":22,"t_rel_ms":2235,"dir":"rx","raw":"*9*0*0##","who":9,"where":"0","what":0,"dimension":null,"dimension_values":null,"annotation":"Command session: reply to *#9*0##","interface":null,"scope":null}
{"seq":23,"t_rel_ms":2235,"dir":"rx","raw":"*#*1##","who":null,"where":null,"what":null,"dimension":null,"dimension_values":null,"annotation":"Command session: ACK for *#9*0## (+34.51 ms)","interface":null,"scope":null}
{"seq":24,"t_rel_ms":2237,"dir":"rx","raw":"*9*0*0##","who":9,"where":"0","what":0,"dimension":null,"dimension_values":null,"annotation":"Event session: received during the *#9*0## step","interface":null,"scope":null}
{"seq":25,"t_rel_ms":10976,"dir":"rx","raw":"*1*0*99##","who":1,"where":"99","what":0,"dimension":null,"dimension_values":null,"annotation":"Event session: physical lighting positive control; WHERE replaced by synthetic address 99.","interface":null,"scope":null}
{"seq":26,"t_rel_ms":12441,"dir":"rx","raw":"*1*1*99##","who":1,"where":"99","what":1,"dimension":null,"dimension_values":null,"annotation":"Event session: physical lighting positive control; WHERE replaced by synthetic address 99.","interface":null,"scope":null}
{"seq":27,"t_rel_ms":13165,"dir":"tx","raw":"*25*21#1*21##","who":25,"where":"21","what":null,"dimension":null,"dimension_values":null,"annotation":"Command session: CEN+ short press, pushbutton 1, WHERE 21","interface":null,"scope":null}
{"seq":28,"t_rel_ms":13223,"dir":"rx","raw":"*#*0##","who":null,"where":null,"what":null,"dimension":null,"dimension_values":null,"annotation":"Command session: NACK for *25*21#1*21## (+57.43 ms); event session carried 0 WHO 25 and 0 other frames in the 2000 ms window","interface":null,"scope":null}
{"seq":29,"t_rel_ms":15176,"dir":"tx","raw":"*25*11#0*11##","who":25,"where":"11","what":null,"dimension":null,"dimension_values":null,"annotation":"Command session: ScenarioPlus command, WHAT 11#0, WHERE 11","interface":null,"scope":null}
{"seq":30,"t_rel_ms":15202,"dir":"rx","raw":"*#*0##","who":null,"where":null,"what":null,"dimension":null,"dimension_values":null,"annotation":"Command session: NACK for *25*11#0*11## (+25.39 ms); event session carried 0 WHO 25 and 0 other frames in the 2000 ms window","interface":null,"scope":null}
{"seq":31,"t_rel_ms":17181,"dir":"tx","raw":"*#25*21##","who":25,"where":"21","what":null,"dimension":null,"dimension_values":null,"annotation":"Command session: WHO 25 status request on WHERE 21 (not a published CEN+ status query)","interface":null,"scope":null}
{"seq":32,"t_rel_ms":17201,"dir":"rx","raw":"*#*0##","who":null,"where":null,"what":null,"dimension":null,"dimension_values":null,"annotation":"Command session: NACK for *#25*21## (+19.58 ms); event session carried 0 WHO 25 and 0 other frames in the 2000 ms window","interface":null,"scope":null}
{"seq":33,"t_rel_ms":19189,"dir":"tx","raw":"*25*11#121*10##","who":25,"where":"10","what":null,"dimension":null,"dimension_values":null,"annotation":"Command session: ScenarioPlus command, WHAT 11#121, WHERE 10","interface":null,"scope":null}
{"seq":34,"t_rel_ms":19213,"dir":"rx","raw":"*#*0##","who":null,"where":null,"what":null,"dimension":null,"dimension_values":null,"annotation":"Command session: NACK for *25*11#121*10## (+23.40 ms); event session carried 0 WHO 25 and 0 other frames in the 2000 ms window","interface":null,"scope":null}
{"seq":35,"t_rel_ms":21195,"dir":"tx","raw":"*25*12*131##","who":25,"where":"131","what":12,"dimension":null,"dimension_values":null,"annotation":"Command session: ScenarioPlus command, WHAT 12, WHERE 131","interface":null,"scope":null}
{"seq":36,"t_rel_ms":21230,"dir":"rx","raw":"*#*0##","who":null,"where":null,"what":null,"dimension":null,"dimension_values":null,"annotation":"Command session: NACK for *25*12*131## (+34.94 ms); event session carried 0 WHO 25 and 1 other frames in the 2000 ms window","interface":null,"scope":null}
{"seq":37,"t_rel_ms":23195,"dir":"tx","raw":"*25*23#8*233##","who":25,"where":"233","what":null,"dimension":null,"dimension_values":null,"annotation":"Command session: CEN+ extended press, pushbutton 8, WHERE 233","interface":null,"scope":null}
{"seq":38,"t_rel_ms":23219,"dir":"rx","raw":"*#*0##","who":null,"where":null,"what":null,"dimension":null,"dimension_values":null,"annotation":"Command session: NACK for *25*23#8*233## (+24.20 ms); event session carried 0 WHO 25 and 0 other frames in the 2000 ms window","interface":null,"scope":null}
{"seq":39,"t_rel_ms":25203,"dir":"tx","raw":"*25*31#1*339##","who":25,"where":"339","what":null,"dimension":null,"dimension_values":null,"annotation":"Command session: Dry-contact/IR WHAT 31#1, WHERE 339","interface":null,"scope":null}
{"seq":40,"t_rel_ms":25242,"dir":"rx","raw":"*#*0##","who":null,"where":null,"what":null,"dimension":null,"dimension_values":null,"annotation":"Command session: NACK for *25*31#1*339## (+39.49 ms); event session carried 0 WHO 25 and 0 other frames in the 2000 ms window","interface":null,"scope":null}
{"seq":41,"t_rel_ms":27209,"dir":"tx","raw":"*25*32#1*33##","who":25,"where":"33","what":null,"dimension":null,"dimension_values":null,"annotation":"Command session: Dry-contact/IR WHAT 32#1, WHERE 33","interface":null,"scope":null}
{"seq":42,"t_rel_ms":27223,"dir":"rx","raw":"*#*0##","who":null,"where":null,"what":null,"dimension":null,"dimension_values":null,"annotation":"Command session: NACK for *25*32#1*33## (+14.69 ms); event session carried 0 WHO 25 and 0 other frames in the 2000 ms window","interface":null,"scope":null}
67 changes: 67 additions & 0 deletions evidence/cap-mh200-who25-boundary-20261022/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
{
"evidence_id": "EVID-MH200-WHO25-BOUNDARY",
"capture_id": "cap-mh200-who25-boundary-20261022",
"title": "BTicino MH200 (FW 2.1.0) command-session replies to tested WHO 25 frames",
"capture_kind": "controlled_experiment",
"epistemic_status": "observed",
"confidence": "high",
"evidence_class": "public_capture",
"recorded_at": "2026-10-22",
"installation_id": "sanitized-installation",
"bus_id": "sanitized-main-bus",
"gateway_id": "MH200-GW-01",
"environment": {
"gateway_model": "MH200",
"gateway_firmware": "2.1.0",
"bus_topology": "Privacy-filtered capture from a live main SCS bus; no WHO 25 transmitter or dry-contact/IR interface was installed or configured.",
"who13_device_type": 4
},
"device_under_test": {
"sku": "BTicino MH200 gateway",
"description": "MH200 gateway under test, identified by product model and firmware; no installed hardware identifier is retained.",
"configured_where": "0",
"pseudonym_device_id": "MH200-GW-01"
},
"summary": "Contributor-recorded MH200 firmware 2.1.0 replies to eight literal WHO 25 probes were NACK, with measured socket latency 14.686..57.430 ms. The contributor declared a 2000 ms dual-session observation window per probe; no WHO 25 event frame occurs in the recording. Incoming WHO 25 hardware events and physical bus forwarding were not tested. This is a privacy projection of the retained contributor recording, not a new hardware run.",
"test_recipe": [
"Open concurrent event (*99*1##) and command (*99*0##) TCP sessions on port 20000; authentication is excluded from the public projection.",
"Identify the gateway with *#13**15##, *#13**16##, *#13**23##, *#13**24## and *#1013*0*1##; retain data and ACK replies.",
"Use *#9*0## as a positive command/event control. During a ten-second manual window, press a physical lighting control to confirm real bus events reach the monitor; its address is replaced by synthetic WHERE 99 in this projection.",
"Send literal probe *25*21#1*21## separately and observe both sessions for the declared 2000 ms window. Recorded command reply: NACK after 57.430 ms.",
"Send literal probe *25*11#0*11## separately and observe both sessions for the declared 2000 ms window. Recorded command reply: NACK after 25.392 ms.",
"Send literal probe *#25*21## separately and observe both sessions for the declared 2000 ms window. Recorded command reply: NACK after 19.576 ms.",
"Send literal probe *25*11#121*10## separately and observe both sessions for the declared 2000 ms window. Recorded command reply: NACK after 23.398 ms.",
"Send literal probe *25*12*131## separately and observe both sessions for the declared 2000 ms window. Recorded command reply: NACK after 34.942 ms.",
"Send literal probe *25*23#8*233## separately and observe both sessions for the declared 2000 ms window. Recorded command reply: NACK after 24.200 ms.",
"Send literal probe *25*31#1*339## separately and observe both sessions for the declared 2000 ms window. Recorded command reply: NACK after 39.486 ms.",
"Send literal probe *25*32#1*33## separately and observe both sessions for the declared 2000 ms window. Recorded command reply: NACK after 14.686 ms."
],
"claims_supported": [
"On the recorded MH200 firmware 2.1.0 setup, literal probe *25*21#1*21## received NACK after 57.430 ms.",
"On the recorded MH200 firmware 2.1.0 setup, literal probe *25*11#0*11## received NACK after 25.392 ms.",
"On the recorded MH200 firmware 2.1.0 setup, literal probe *#25*21## received NACK after 19.576 ms.",
"On the recorded MH200 firmware 2.1.0 setup, literal probe *25*11#121*10## received NACK after 23.398 ms.",
"On the recorded MH200 firmware 2.1.0 setup, literal probe *25*12*131## received NACK after 34.942 ms.",
"On the recorded MH200 firmware 2.1.0 setup, literal probe *25*23#8*233## received NACK after 24.200 ms.",
"On the recorded MH200 firmware 2.1.0 setup, literal probe *25*31#1*339## received NACK after 39.486 ms.",
"On the recorded MH200 firmware 2.1.0 setup, literal probe *25*32#1*33## received NACK after 14.686 ms.",
"No WHO 25 event frame was recorded during the eight declared probe windows; no WHO 25 transmitter was installed, so incoming event handling remains untested."
],
"related_documents": [
"functional/who-25-transversal/README.md",
"functional/who-25-transversal/cen-plus.md",
"functional/who-25-transversal/dry-contact-ir.md"
],
"frame_count": 42,
"machine_kb_claims": [
"ownkb:claim:c074148",
"ownkb:claim:c074149",
"ownkb:claim:c074150",
"ownkb:claim:c074151",
"ownkb:claim:c074152",
"ownkb:claim:c074153",
"ownkb:claim:c074154",
"ownkb:claim:c074155",
"ownkb:claim:c074156"
]
}
27 changes: 27 additions & 0 deletions evidence/cap-mh200-who25-boundary-20261022/privacy.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"classification": "sanitized",
"removed_value_classes": [
"capture_metadata",
"credential",
"device_id",
"hardware_id",
"installation_topology",
"network_address"
],
"notes": "Derived privacy projection, not the complete original recording. Authentication frames, original installation/bus/gateway identifiers and all date/time query data are excluded. The physical lighting control uses synthetic WHERE 99. No WHO 25 probe or command reply was removed or changed. Original fingerprints, retained-record mapping and exact transformations are in projection.json; session-log.jsonl preserves session labels and fractional relative timing without credentials or wall-clock payloads.",
"pseudonymization": {
"gateway": "MH200-GW-01",
"lighting_positive_control": "Synthetic WHERE 99; original configured address is omitted."
},
"retained_local_addresses": [
"0",
"10",
"11",
"131",
"21",
"233",
"33",
"339",
"99"
]
}
Loading
Loading