Skip to content
Open
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
477 changes: 420 additions & 57 deletions mirage/libs/ble.py

Large diffs are not rendered by default.

100 changes: 100 additions & 0 deletions mirage/libs/ble_utils/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,3 +98,103 @@ class BLESniffingMode:
ADVERTISEMENT = 0x0
NEW_CONNECTION = 0x1
EXISTING_CONNECTION = 0x2


# Control PDU opcodes supported by Zephyr RTOS
LLCTRL_TYPE_CONN_UPDATE_IND = 0x00
LLCTRL_TYPE_CHAN_MAP_IND = 0x01
LLCTRL_TYPE_TERMINATE_IND = 0x02
LLCTRL_TYPE_ENC_REQ = 0x03
LLCTRL_TYPE_ENC_RSP = 0x04
LLCTRL_TYPE_START_ENC_REQ = 0x05
LLCTRL_TYPE_START_ENC_RSP = 0x06
LLCTRL_TYPE_UNKNOWN_RSP = 0x07
LLCTRL_TYPE_FEATURE_REQ = 0x08
LLCTRL_TYPE_FEATURE_RSP = 0x09
LLCTRL_TYPE_PAUSE_ENC_REQ = 0x0A
LLCTRL_TYPE_PAUSE_ENC_RSP = 0x0B
LLCTRL_TYPE_VERSION_IND = 0x0C
LLCTRL_TYPE_REJECT_IND = 0x0D
LLCTRL_TYPE_SLAVE_FEATURE_REQ = 0x0E
LLCTRL_TYPE_CONN_PARAM_REQ = 0x0F
LLCTRL_TYPE_CONN_PARAM_RSP = 0x10
LLCTRL_TYPE_REJECT_EXT_IND = 0x11
LLCTRL_TYPE_PING_REQ = 0x12
LLCTRL_TYPE_PING_RSP = 0x13
LLCTRL_TYPE_LENGTH_REQ = 0x14
LLCTRL_TYPE_LENGTH_RSP = 0x15
LLCTRL_TYPE_PHY_REQ = 0x16
LLCTRL_TYPE_PHY_RSP = 0x17
LLCTRL_TYPE_PHY_UPD_IND = 0x18
LLCTRL_TYPE_MIN_USED_CHAN_IND = 0x19


# LL Controller Error Codes
LL_ERROR_CODES = {
0x01: "UNKNOWN HCI COMMAND",
0x02: "UNKNOWN CONNECTION IDENTIFIER",
0x03: "HARDWARE FAILURE",
0x04: "PAGE TIMEOUT",
0x05: "AUTHENTICATION FAILURE",
0x06: "PIN OR KEY MISSING",
0x07: "MEMORY CAPACITY EXCEEDED",
0x08: "CONNECTION TIMEOUT",
0x09: "CONNECTION LIMIT EXCEEDED",
0x0A: "SYNCHRONOUS CONNECTION LIMIT TO A DEVICE EXCEEDED",
0x0B: "CONNECTION ALREADY EXISTS",
0x0C: "COMMAND DISALLOWED",
0x0D: "CONNECTION REJECTED DUE TO LIMITED RESOURCES",
0x0E: "CONNECTION REJECTED DUE TO SECURITY REASONS",
0x0F: "CONNECTION REJECTED DUE TO UNACCEPTABLE BD_ADDR",
0x10: "CONNECTION ACCEPT TIMEOUT EXCEEDED",
0x11: "UNSUPPORTED FEATURE OR PARAMETER VALUE",
0x12: "INVALID HCI COMMAND PARAMETERS",
0x13: "REMOTE USER TERMINATED CONNECTION",
0x14: "REMOTE DEVICE TERMINATED CONNECTION DUE TO LOW RESOURCES",
0x15: "REMOTE DEVICE TERMINATED CONNECTION DUE TO POWER OFF",
0x16: "CONNECTION TERMINATED BY LOCAL HOST",
0x17: "REPEATED ATTEMPTS",
0x18: "PAIRING NOT ALLOWED",
0x19: "UNKNOWN LMP PDU",
0x1A: "UNSUPPORTED REMOTE FEATURE / UNSUPPORTED LMP FEATURE",
0x1B: "SCO OFFSET REJECTED",
0x1C: "SCO INTERVAL REJECTED",
0x1D: "SCO AIR MODE REJECTED",
0x1E: "INVALID LMP PARAMETERS / INVALID LL PARAMETERS",
0x1F: "UNSPECIFIED ERROR",
0x20: "UNSUPPORTED LMP PARAMETER VALUE / UNSUPPORTED LL PARAMETER VALUE",
0x21: "ROLE CHANGE NOT ALLOWED",
0x22: "LMP RESPONSE TIMEOUT / LL RESPONSE TIMEOUT",
0x23: "LMP ERROR TRANSACTION COLLISION / LL PROCEDURE COLLISION",
0x24: "LMP PDU NOT ALLOWED",
0x25: "ENCRYPTION MODE NOT ACCEPTABLE",
0x26: "LINK KEY CANNOT BE CHANGED",
0x27: "REQUESTED QoS NOT SUPPORTED",
0x28: "INSTANT PASSED",
0x29: "PAIRING WITH UNIT KEY NOT SUPPORTED",
0x2A: "DIFFERENT TRANSACTION COLLISION",
0x2C: "QoS UNACCEPTABLE PARAMETER",
0x2D: "QoS REJECTED",
0x2E: "CHANNEL ASSESSMENT NOT SUPPORTED",
0x2F: "INSUFFICIENT SECURITY",
0x30: "PARAMETER OUT OF MANDATORY RANGE",
0x32: "ROLE SWITCH PENDING",
0x34: "RESERVED SLOT VIOLATION",
0x35: "ROLE SWITCH FAILED",
0x36: "EXTENDED INQUIRY RESPONSE TOO LARGE",
0x37: "SIMPLE PAIRING NOT SUPPORTED BY HOST",
0x38: "HOST BUSY–PAIRING",
0x39: "CONNECTION REJECTED DUE TO NO SUITABLE CHANNEL FOUND",
0x3A: "CONTROLLER BUSY",
0x3B: "UNACCEPTABLE CONNECTION PARAMETERS",
0x3C: "ADVERTISING TIMEOUT",
0x3D: "CONNECTION TERMINATED DUE TO MIC FAILURE",
0x3E: "CONNECTION FAILED TO BE ESTABLISHED / SYNCHRONIZATION TIMEOUT",
0x3F: "MAC CONNECTION FAILED",
0x40: "COARSE CLOCK ADJUSTMENT REJECTED BUT WILL TRY TO ADJUST USING CLOCK DRAGGING",
0x41: "TYPE0 SUBMAP NOT DEFINED",
0x42: "UNKNOWN ADVERTISING IDENTIFIER",
0x43: "LIMIT REACHED",
0x44: "OPERATION CANCELLED BY HOST",
0x45: "PACKET TOO LONG",
}
2 changes: 1 addition & 1 deletion mirage/libs/ble_utils/dissectors.py
Original file line number Diff line number Diff line change
Expand Up @@ -448,7 +448,7 @@ def build(self):
gui = self.content["gui"]
shift = self.content["shift"]
(hidCode,modifiers) = HIDMapping(locale).getHIDCodeFromKey(key=key,alt=alt,ctrl=ctrl,shift=shift,gui=gui)
self.data = bytes([0,modifiers,hidCode,0,0,0,0,0])
self.data = bytes([modifiers,hidCode,0,0,0,0,0,0,0,0,0])

def __str__(self):
sortie = "key="+str(self.content["key"])+",ctrl="+("yes" if self.content["ctrl"] else "no")+",alt="+("yes" if self.content["alt"] else "no")+",shift="+("yes" if self.content["shift"] else "no")+",gui="+("yes" if self.content["gui"] else "no")
Expand Down
Loading