Ethereal-dev: Re: [Ethereal-dev] Problems with H.323 dissector(s)
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: "Martin Regner" <martin.regner@xxxxxxxxx>
Date: Mon, 1 Sep 2003 06:15:19 +0200
Andres Sikkema wrote:
>There is another error in the IRR/PerCallInfo stuff. The H.245
>TransportAddress has a problem deciding what kind of address it is. I
>haven't been able to find out why, the ASN.1 and the dissector seem to
>agree about optionality and stuff.
>
>See attached capture file containing one frame with the problem.
The problem seems to be with the H.225 NonStandardParameter. The definition of NonStandardParameter in H.225 is not the same
as in H.245. The NonStandardParameter in H.225 has an extensionmarker in NonStandardIdentifier and in H221NonStandard.
Ronnie made a fix a week ago, but it seems that it was not completely correct even if it solved the problem for all the captures I tried with.
When I made some changes as described below I got your sample capture to be decoded correctly (I think) and it seems that my other captures are still working (I have only tried some of them yet). I have attached the results I got after my modifications and what results
the H.323-plugin gave for the same capture.
NonStandardParameter ::= SEQUENCE
{
nonStandardIdentifier NonStandardIdentifier,
data OCTET STRING
}
NonStandardIdentifier ::= CHOICE
{
object OBJECT IDENTIFIER,
h221NonStandard H221NonStandard,
...
}
H221NonStandard ::= SEQUENCE
{ t35CountryCode INTEGER(0..255),
t35Extension INTEGER(0..255),
manufacturerCode INTEGER(0..65535),
...
}
I think that the table for NonStandardParameter_with_extension_sequence (NonStandardParameter for H.221) should be:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
static per_sequence_t NonStandardParameter_with_extension_sequence[] = {
{ "nonStandardIdentifier", NO_EXTENSIONS, NOT_OPTIONAL,
dissect_h245_NonStandardIdentifier_with_extension },
{ "data", NO_EXTENSIONS, NOT_OPTIONAL,
dissect_h245_NonStandardParameterData },
{ NULL, 0, 0, NULL }
};
and then there needs to be a specific implementation of NonStandardIdentifier and H221NonStandard to be used for H.221, e.g. :
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
static per_sequence_t h221NonStandard_with_extension_sequence[] = {
{ "t35CountryCode", EXTENSION_ROOT, NOT_OPTIONAL,
dissect_h245_t35CountryCode },
{ "t35Extension", EXTENSION_ROOT, NOT_OPTIONAL,
dissect_h245_t35Extension },
{ "manufacturerCode", EXTENSION_ROOT, NOT_OPTIONAL,
dissect_h245_manufacturerCode },
{ NULL, 0, 0, NULL }
};
int
dissect_h245_h221NonStandard_with_extension(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
{
t35CountryCode = 0;
t35Extension = 0;
manufacturerCode = 0;
offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h245_h221NonStandard, ett_h245_h221NonStandard, h221NonStandard_with_extension_sequence);
h221NonStandard = ((t35CountryCode * 256) + t35Extension) * 65536 + manufacturerCode;
return offset;
}
static per_choice_t NonStandardIdentifier_with_extension_choice[] = {
{ 0, "object", EXTENSION_ROOT,
dissect_h245_object },
{ 1, "h221NonStandard", EXTENSION_ROOT,
dissect_h245_h221NonStandard_with_extension },
{ 0, NULL, 0, NULL }
};
static int
dissect_h245_NonStandardIdentifier_with_extension(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
{
guint32 value;
*object = '\0';
h221NonStandard = 0;
offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h245_NonStandardIdentifier, ett_h245_NonStandardIdentifier, NonStandardIdentifier_with_extension_choice, "NonStandardIdentifier with extension", &value);
switch (value) {
case 0 : /* object */
nsp_handle = dissector_get_port_handle(nsp_object_dissector_table, adler32_str(object));
break;
case 1 : /* h221NonStandard */
nsp_handle = dissector_get_port_handle(nsp_h221_dissector_table, h221NonStandard);
break;
default :
nsp_handle = NULL;
}
return offset;
}
The NonStandard definitions in the H.245 specifications doesn't have any extension markers:
--------------------------------------------------------------------------------------------------------------------------------
NonStandardParameter ::=SEQUENCE
{
nonStandardIdentifier NonStandardIdentifier,
data OCTET STRING
}
NonStandardIdentifier ::=CHOICE
{
object OBJECT IDENTIFIER,
h221NonStandard SEQUENCE
{
t35CountryCode INTEGER (0..255), -- country, per T.35 Annex A
t35Extension INTEGER (0..255),
-- assigned nationally unless t35CountryCode is binary
-- 1111 1111, in which case it shall contain the country code
-- according to T.35 Annex B
manufacturerCode INTEGER (0..65535) -- assigned nationally
}
}
Frame 1 (197 bytes on wire, 197 bytes captured)
Arrival Time: Dec 9, 2002 18:48:28.925013000
Time delta from previous packet: 0.000000000 seconds
Time relative to first packet: 0.000000000 seconds
Frame Number: 1
Packet Length: 197 bytes
Capture Length: 197 bytes
File Offset: 40 (0x28)
Ethernet II, Src: 00:02:b9:fa:41:79, Dst: 00:80:c8:ca:fd:c4
Destination: 00:80:c8:ca:fd:c4 (D-Link_ca:fd:c4)
Source: 00:02:b9:fa:41:79 (Cisco_fa:41:79)
Type: IP (0x0800)
Internet Protocol, Src Addr: 10.102.1.33 (10.102.1.33), Dst Addr: 10.102.1.33 (10.101.1.240)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..0. = ECN-Capable Transport (ECT): 0
.... ...0 = ECN-CE: 0
Total Length: 183
Identification: 0x0019 (25)
Flags: 0x00
.0.. = Don't fragment: Not set
..0. = More fragments: Not set
Fragment offset: 0
Time to live: 255
Protocol: UDP (0x11)
Header checksum: 0xa341 (correct)
Source: 10.102.1.33 (10.102.1.33)
Destination: 10.102.1.33 (10.102.1.33)
User Datagram Protocol, Src Port: 56733 (56733), Dst Port: 1719 (1719)
Source port: 56733 (56733)
Destination port: 1719 (1719)
Length: 163
Checksum: 0x3a6a (correct)
H.225.0 RAS
RasMessage
RasMessage: .101 10.. : infoRequestResponse (22)
InfoRequestResponse
RequestSeqNum: 26
EndPointType
GatewayInfo
protocol
Item 0
SupportedProtocols
SupportedProtocols: .011 1... : voice (7)
VoiceCaps
SupportedPrefixes
Item 0
SupportedPrefix
prefix
prefix: ...0 .... : dialedDigits (0)
privateNumberDigits: 9
mc: 0... .... False
undefinedNode: .0.. .... False
EndpointIdentifier: 615743C40000008C
rasAddress
rasAddress: .000 .... : ipAddress (0)
ipAddress
IP: 10.102.1.33 (10.102.1.33)
Port: 56733
callSignalAddress
Item 0
TransportAddress
TransportAddress: .000 .... : ipAddress (0)
ipAddress
IP: 10.102.1.33 (10.102.1.33)
Port: 1720
endpointAlias
Item 0
AliasAddress
AliasAddress: .1.. .... : h323ID (1)
h323ID: Cisco_GW_UK_WAN
perCallInfo
Item 0
perCallInfo_item
NonStandardParameter
NonStandardIdentifier with extension
NonStandardIdentifier type: .... ...1 : h221NonStandard (1)
h221NonStandard
t35CountryCode: United States (181)
t35Extension: 0
manufacturerCode: 18
Octet String Length: 5
data: 70388A5247
CallReferenceValue: 7
conferenceID: 33F68493D06711D380109EE14B943CDA
h245
callSignaling
CallType
CallType: .... ...0 0... .... : pointToPoint (0)
BandWidth: 1280
CallModel
CallModel: .0.. .... : direct (0)
CallIdentifier
guid: 33F68493D06711D380119EE14B943CDA
needResponse: 0... .... False
Frame 1 (197 bytes on wire, 197 bytes captured)
Arrival Time: Dec 9, 2002 18:48:28.925013000
Time delta from previous packet: 0.000000000 seconds
Time relative to first packet: 0.000000000 seconds
Frame Number: 1
Packet Length: 197 bytes
Capture Length: 197 bytes
File Offset: 40 (0x28)
Ethernet II, Src: 00:02:b9:fa:41:79, Dst: 00:80:c8:ca:fd:c4
Destination: 00:80:c8:ca:fd:c4 (D-Link_ca:fd:c4)
Source: 00:02:b9:fa:41:79 (Cisco_fa:41:79)
Type: IP (0x0800)
Internet Protocol, Src Addr: 10.102.1.33 (10.102.1.33), Dst Addr: 10.101.1.240 (10.101.1.240)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..0. = ECN-Capable Transport (ECT): 0
.... ...0 = ECN-CE: 0
Total Length: 183
Identification: 0x0019
Flags: 0x00
.0.. = Don't fragment: Not set
..0. = More fragments: Not set
Fragment offset: 0
Time to live: 255
Protocol: UDP (0x11)
Header checksum: 0xa341 (correct)
Source: 10.102.1.33 (10.102.1.33)
Destination: 10.101.1.240 (10.101.1.240)
User Datagram Protocol, Src Port: 56733 (56733), Dst Port: 1719 (1719)
Source port: 56733 (56733)
Destination port: 1719 (1719)
Length: 163
Checksum: 0x3a6a (correct)
ITU-T Recommendation H.225.0
infoRequestResponse
requestSeqNum: 26
endpointType (EndpointType)
gateway (GatewayInfo)
protocol (SupportedProtocols)
Item 0 (voice)
voice
supportedPrefixes (SupportedPrefix)
Item 0 (SupportedPrefix)
prefix (e164)
e164: 9
mc: False
undefinedNode: False
endpointIdentifier: 615743C40000008C
rasAddress (ipAddress)
ipAddress
ip: 10.102.1.33 (10.102.1.33)
port: 56733
callSignalAddress (TransportAddress)
Item 0 (ipAddress)
ipAddress
ip: 10.102.1.33 (10.102.1.33)
port: 1720
endpointAlias (AliasAddress)
Item 0 (h323_ID)
h323_ID: Cisco_GW_UK_WAN
perCallInfo (InfoRequestResponse-perCallInfo)
Item 0 (InfoRequestResponse-perCallInfo-subtype)
nonStandardData (NonStandardParameter)
nonStandardIdentifier (h221NonStandard)
h221NonStandard
t35CountryCode: 181
t35Extension: 0
manufacturerCode: 18
data: p8RG
callReferenceValue: 7
conferenceID: 33F68493-D067-11D3-8010-9EE14B943CDA
h245 (TransportChannelInfo)
callSignaling (TransportChannelInfo)
callType (pointToPoint)
pointToPoint: pointToPoint
bandWidth: 1280
callModel (direct)
direct: direct
callIdentifier (CallIdentifier)
guid: 33F68493-D067-11D3-8011-9EE14B943CDA
needResponse: False
Frame 1 (197 bytes on wire, 197 bytes captured)
Arrival Time: Dec 9, 2002 18:48:28.925013000
Time delta from previous packet: 0.000000000 seconds
Time relative to first packet: 0.000000000 seconds
Frame Number: 1
Packet Length: 197 bytes
Capture Length: 197 bytes
File Offset: 40 (0x28)
Ethernet II, Src: 00:02:b9:fa:41:79, Dst: 00:80:c8:ca:fd:c4
Destination: 00:80:c8:ca:fd:c4 (D-Link_ca:fd:c4)
Source: 00:02:b9:fa:41:79 (Cisco_fa:41:79)
Type: IP (0x0800)
Internet Protocol, Src Addr: 10.102.1.33 (10.102.1.33), Dst Addr: 10.102.1.33 (10.101.1.240)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..0. = ECN-Capable Transport (ECT): 0
.... ...0 = ECN-CE: 0
Total Length: 183
Identification: 0x0019 (25)
Flags: 0x00
.0.. = Don't fragment: Not set
..0. = More fragments: Not set
Fragment offset: 0
Time to live: 255
Protocol: UDP (0x11)
Header checksum: 0xa341 (correct)
Source: 10.102.1.33 (10.102.1.33)
Destination: 10.102.1.33 (10.102.1.33)
User Datagram Protocol, Src Port: 56733 (56733), Dst Port: 1719 (1719)
Source port: 56733 (56733)
Destination port: 1719 (1719)
Length: 163
Checksum: 0x3a6a (correct)
H.225.0 RAS
RasMessage
Extension Bit: 0... .... False
RasMessage: .101 10.. : infoRequestResponse (22)
InfoRequestResponse
Extension Bit: .... ..1. True
Optional Field Bit: .... ...0 False (nonStandardData is NOT present)
Optional Field Bit: 1... .... True (endpointAlias is present)
Optional Field Bit: .1.. .... True (perCallInfo is present)
RequestSeqNum: 26
EndPointType
Extension Bit: 0... .... False
Optional Field Bit: .0.. .... False (nonStandardData is NOT present)
Optional Field Bit: ..0. .... False (vendor is NOT present)
Optional Field Bit: ...0 .... False (gatekeeper is NOT present)
Optional Field Bit: .... 1... True (gateway is present)
Optional Field Bit: .... .0.. False (mcu is NOT present)
Optional Field Bit: .... ..0. False (terminal is NOT present)
GatewayInfo
Extension Bit: .... ...0 False
Optional Field Bit: 1... .... True (protocol is present)
Optional Field Bit: .0.. .... False (nonStandardData is NOT present)
protocol
Sequence-Of Length: 1
Item 0
SupportedProtocols
Extension Bit: 0... .... False
SupportedProtocols: .011 1... : voice (7)
VoiceCaps
Extension Bit: .... .1.. True
Optional Field Bit: .... ..0. False (nonStandardData is NOT present)
Small Number Bit: .... ...0 False
Number of Sequence Extensions: 1
Extension Present Bit: .... ..0. False (dataRatesSupported is NOT present)
Extension Present Bit: .... ...1 True (supportedPrefixes is present)
Open Type Length: 4
SupportedPrefixes
Sequence-Of Length: 1
Item 0
SupportedPrefix
Extension Bit: 0... .... False
Optional Field Bit: .0.. .... False (nonStandardData is NOT present)
prefix
Extension Bit: ..0. .... False
prefix: ...0 .... : dialedDigits (0)
Octet String Length: 1
privateNumberDigits: 9
mc: 0... .... False
undefinedNode: .0.. .... False
Octet String Length: 16
EndpointIdentifier: 615743C40000008C
rasAddress
Extension Bit: 0... .... False
rasAddress: .000 .... : ipAddress (0)
ipAddress
IP: 10.102.1.33 (10.102.1.33)
Port: 56733
callSignalAddress
Sequence-Of Length: 1
Item 0
TransportAddress
Extension Bit: 0... .... False
TransportAddress: .000 .... : ipAddress (0)
ipAddress
IP: 10.102.1.33 (10.102.1.33)
Port: 1720
endpointAlias
Sequence-Of Length: 1
Item 0
AliasAddress
Extension Bit: 0... .... False
AliasAddress: .1.. .... : h323ID (1)
Octet String Length: 15
h323ID: Cisco_GW_UK_WAN
perCallInfo
Sequence-Of Length: 1
Item 0
perCallInfo_item
Extension Bit: 1... .... True
Optional Field Bit: .1.. .... True (nonStandardData is present)
Optional Field Bit: ..0. .... False (originator is NOT present)
Optional Field Bit: ...0 .... False (audio is NOT present)
Optional Field Bit: .... 0... False (video is NOT present)
Optional Field Bit: .... .0.. False (data is NOT present)
NonStandardParameter
NonStandardIdentifier with extension
Extension Bit: .... ..0. False
NonStandardIdentifier type: .... ...1 : h221NonStandard (1)
h221NonStandard
Extension Bit: 0... .... False
t35CountryCode: United States (181)
t35Extension: 0
manufacturerCode: 18
Octet String Length: 5
data: 70388A5247
CallReferenceValue: 7
conferenceID: 33F68493D06711D380109EE14B943CDA
h245
Extension Bit: 0... .... False
Optional Field Bit: .0.. .... False (sendAddress is NOT present)
Optional Field Bit: ..0. .... False (recvAddress is NOT present)
callSignaling
Extension Bit: ...0 .... False
Optional Field Bit: .... 0... False (sendAddress is NOT present)
Optional Field Bit: .... .0.. False (recvAddress is NOT present)
CallType
Extension Bit: .... ..0. False
CallType: .... ...0 0... .... : pointToPoint (0)
BandWidth: 1280
CallModel
Extension Bit: 0... .... False
CallModel: .0.. .... : direct (0)
Small Number Bit: ..0. .... False
Number of Sequence Extensions: 5
Extension Present Bit: .1.. .... True (callIdentifier is present)
Extension Present Bit: ..0. .... False (tokens is NOT present)
Extension Present Bit: ...0 .... False (cryptoTokens is NOT present)
Extension Present Bit: .... 0... False (substituteConfIDs is NOT present)
Extension Present Bit: .... .0.. False (pdu is NOT present)
Extension Present Bit: .... ..0. False (callLinkage is NOT present)
Open Type Length: 17
CallIdentifier
Extension Bit: 0... .... False
guid: 33F68493D06711D380119EE14B943CDA
Small Number Bit: 0... .... False
Number of Sequence Extensions: 3
Extension Present Bit: .... ...0 False (tokens is NOT present)
Extension Present Bit: 0... .... False (cryptoTokens is NOT present)
Extension Present Bit: .0.. .... False (integrityCheckValue is NOT present)
Extension Present Bit: ..1. .... True (needResponse is present)
Open Type Length: 1
needResponse: 0... .... False
- Prev by Date: Re: [Ethereal-dev] Patch: better decoding of NTLMSSP address list
- Previous by thread: Re: [Ethereal-dev] Problems with H.323 dissector(s)
- Next by thread: [Ethereal-dev] Problem with libpcap pcap_next() method
- Index(es):





