1 ## This file is part of Scapy 2 ## See http://www.secdev.org/projects/scapy for more informations 3 ## Copyright (C) Philippe Biondi <phil (at] secdev.org> 4 ## This program is published under a GPLv2 license 5 6 """ 7 Cisco Skinny protocol. 8 """ 9 10 from scapy.packet import * 11 from scapy.fields import * 12 from scapy.layers.inet import TCP 13 14 # shamelessly ripped from Ethereal dissector 15 skinny_messages = { 16 # Station -> Callmanager 17 0x0000: "KeepAliveMessage", 18 0x0001: "RegisterMessage", 19 0x0002: "IpPortMessage", 20 0x0003: "KeypadButtonMessage", 21 0x0004: "EnblocCallMessage", 22 0x0005: "StimulusMessage", 23 0x0006: "OffHookMessage", 24 0x0007: "OnHookMessage", 25 0x0008: "HookFlashMessage", 26 0x0009: "ForwardStatReqMessage", 27 0x000A: "SpeedDialStatReqMessage", 28 0x000B: "LineStatReqMessage", 29 0x000C: "ConfigStatReqMessage", 30 0x000D: "TimeDateReqMessage", 31 0x000E: "ButtonTemplateReqMessage", 32 0x000F: "VersionReqMessage", 33 0x0010: "CapabilitiesResMessage", 34 0x0011: "MediaPortListMessage", 35 0x0012: "ServerReqMessage", 36 0x0020: "AlarmMessage", 37 0x0021: "MulticastMediaReceptionAck", 38 0x0022: "OpenReceiveChannelAck", 39 0x0023: "ConnectionStatisticsRes", 40 0x0024: "OffHookWithCgpnMessage", 41 0x0025: "SoftKeySetReqMessage", 42 0x0026: "SoftKeyEventMessage", 43 0x0027: "UnregisterMessage", 44 0x0028: "SoftKeyTemplateReqMessage", 45 0x0029: "RegisterTokenReq", 46 0x002A: "MediaTransmissionFailure", 47 0x002B: "HeadsetStatusMessage", 48 0x002C: "MediaResourceNotification", 49 0x002D: "RegisterAvailableLinesMessage", 50 0x002E: "DeviceToUserDataMessage", 51 0x002F: "DeviceToUserDataResponseMessage", 52 0x0030: "UpdateCapabilitiesMessage", 53 0x0031: "OpenMultiMediaReceiveChannelAckMessage", 54 0x0032: "ClearConferenceMessage", 55 0x0033: "ServiceURLStatReqMessage", 56 0x0034: "FeatureStatReqMessage", 57 0x0035: "CreateConferenceResMessage", 58 0x0036: "DeleteConferenceResMessage", 59 0x0037: "ModifyConferenceResMessage", 60 0x0038: "AddParticipantResMessage", 61 0x0039: "AuditConferenceResMessage", 62 0x0040: "AuditParticipantResMessage", 63 0x0041: "DeviceToUserDataVersion1Message", 64 # Callmanager -> Station */ 65 0x0081: "RegisterAckMessage", 66 0x0082: "StartToneMessage", 67 0x0083: "StopToneMessage", 68 0x0085: "SetRingerMessage", 69 0x0086: "SetLampMessage", 70 0x0087: "SetHkFDetectMessage", 71 0x0088: "SetSpeakerModeMessage", 72 0x0089: "SetMicroModeMessage", 73 0x008A: "StartMediaTransmission", 74 0x008B: "StopMediaTransmission", 75 0x008C: "StartMediaReception", 76 0x008D: "StopMediaReception", 77 0x008F: "CallInfoMessage", 78 0x0090: "ForwardStatMessage", 79 0x0091: "SpeedDialStatMessage", 80 0x0092: "LineStatMessage", 81 0x0093: "ConfigStatMessage", 82 0x0094: "DefineTimeDate", 83 0x0095: "StartSessionTransmission", 84 0x0096: "StopSessionTransmission", 85 0x0097: "ButtonTemplateMessage", 86 0x0098: "VersionMessage", 87 0x0099: "DisplayTextMessage", 88 0x009A: "ClearDisplay", 89 0x009B: "CapabilitiesReqMessage", 90 0x009C: "EnunciatorCommandMessage", 91 0x009D: "RegisterRejectMessage", 92 0x009E: "ServerResMessage", 93 0x009F: "Reset", 94 0x0100: "KeepAliveAckMessage", 95 0x0101: "StartMulticastMediaReception", 96 0x0102: "StartMulticastMediaTransmission", 97 0x0103: "StopMulticastMediaReception", 98 0x0104: "StopMulticastMediaTransmission", 99 0x0105: "OpenReceiveChannel", 100 0x0106: "CloseReceiveChannel", 101 0x0107: "ConnectionStatisticsReq", 102 0x0108: "SoftKeyTemplateResMessage", 103 0x0109: "SoftKeySetResMessage", 104 0x0110: "SelectSoftKeysMessage", 105 0x0111: "CallStateMessage", 106 0x0112: "DisplayPromptStatusMessage", 107 0x0113: "ClearPromptStatusMessage", 108 0x0114: "DisplayNotifyMessage", 109 0x0115: "ClearNotifyMessage", 110 0x0116: "ActivateCallPlaneMessage", 111 0x0117: "DeactivateCallPlaneMessage", 112 0x0118: "UnregisterAckMessage", 113 0x0119: "BackSpaceReqMessage", 114 0x011A: "RegisterTokenAck", 115 0x011B: "RegisterTokenReject", 116 0x0042: "DeviceToUserDataResponseVersion1Message", 117 0x011C: "StartMediaFailureDetection", 118 0x011D: "DialedNumberMessage", 119 0x011E: "UserToDeviceDataMessage", 120 0x011F: "FeatureStatMessage", 121 0x0120: "DisplayPriNotifyMessage", 122 0x0121: "ClearPriNotifyMessage", 123 0x0122: "StartAnnouncementMessage", 124 0x0123: "StopAnnouncementMessage", 125 0x0124: "AnnouncementFinishMessage", 126 0x0127: "NotifyDtmfToneMessage", 127 0x0128: "SendDtmfToneMessage", 128 0x0129: "SubscribeDtmfPayloadReqMessage", 129 0x012A: "SubscribeDtmfPayloadResMessage", 130 0x012B: "SubscribeDtmfPayloadErrMessage", 131 0x012C: "UnSubscribeDtmfPayloadReqMessage", 132 0x012D: "UnSubscribeDtmfPayloadResMessage", 133 0x012E: "UnSubscribeDtmfPayloadErrMessage", 134 0x012F: "ServiceURLStatMessage", 135 0x0130: "CallSelectStatMessage", 136 0x0131: "OpenMultiMediaChannelMessage", 137 0x0132: "StartMultiMediaTransmission", 138 0x0133: "StopMultiMediaTransmission", 139 0x0134: "MiscellaneousCommandMessage", 140 0x0135: "FlowControlCommandMessage", 141 0x0136: "CloseMultiMediaReceiveChannel", 142 0x0137: "CreateConferenceReqMessage", 143 0x0138: "DeleteConferenceReqMessage", 144 0x0139: "ModifyConferenceReqMessage", 145 0x013A: "AddParticipantReqMessage", 146 0x013B: "DropParticipantReqMessage", 147 0x013C: "AuditConferenceReqMessage", 148 0x013D: "AuditParticipantReqMessage", 149 0x013F: "UserToDeviceDataVersion1Message", 150 } 151 152 153 154 class Skinny(Packet): 155 name="Skinny" 156 fields_desc = [ LEIntField("len",0), 157 LEIntField("res",0), 158 LEIntEnumField("msg",0,skinny_messages) ] 159 160 bind_layers( TCP, Skinny, dport=2000) 161 bind_layers( TCP, Skinny, sport=2000) 162