Home | History | Annotate | Download | only in layers
      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