86890704fd
todo: add documentation & wireshark dissector
337 lines
18 KiB
Text
Executable file
337 lines
18 KiB
Text
Executable file
# GTP unit tests
|
|
#
|
|
# Type the following command to launch start the tests:
|
|
# $ test/run_tests -P "load_contrib('gtp')" -t scapy/contrib/gtp.uts
|
|
|
|
+ GTPv1
|
|
|
|
= GTPHeader, basic instantiation
|
|
|
|
a = GTPHeader()
|
|
assert a.version == 1
|
|
assert a.E == a.S == a.PN == 0
|
|
|
|
= GTP_U_Header detection
|
|
|
|
a = GTPHeader(raw(GTP_U_Header()/GTPErrorIndication()))
|
|
assert isinstance(a, GTP_U_Header)
|
|
|
|
= GTP_U_Header sub layers
|
|
|
|
a = IPv6(raw(IPv6()/UDP()/GTP_U_Header()/IPv6()))
|
|
b = IPv6(raw(IPv6()/UDP()/GTP_U_Header()/IP()))
|
|
c = IP(raw(IP()/UDP()/GTP_U_Header()/IPv6()))
|
|
d = IP(raw(IP()/UDP()/GTP_U_Header()/IP()))
|
|
|
|
assert isinstance(a[GTP_U_Header].payload, IPv6)
|
|
assert isinstance(b[GTP_U_Header].payload, IP)
|
|
assert isinstance(c[GTP_U_Header].payload, IPv6)
|
|
assert isinstance(d[GTP_U_Header].payload, IP)
|
|
|
|
a = IP(raw(IP()/UDP()/GTP_U_Header()/PPP()))
|
|
assert isinstance(a[GTP_U_Header].payload, PPP)
|
|
|
|
= GTPCreatePDPContextRequest(), basic instantiation
|
|
gtp = IP(src="127.0.0.1")/UDP(dport=2123)/GTPHeader(teid=2807)/GTPCreatePDPContextRequest()
|
|
gtp.dport == 2123 and gtp.teid == 2807 and len(gtp.IE_list) == 5
|
|
|
|
= GTPCreatePDPContextRequest(), basic dissection
|
|
~ random_weird_py3
|
|
random.seed(0x2807)
|
|
rg = raw(gtp)
|
|
print(rg)
|
|
assert rg in [b"E\x00\x00K\x00\x01\x00\x00@\x11|\x9f\x7f\x00\x00\x01\x7f\x00\x00\x01\x08K\x08K\x007\x1a\xc30\x10\x00'\x00\x00\n\xf7\x10\xd6\xd2\xf6\xd8\x14\x0b\x85\x00\x04\xa3\xad\x98\xfa\x85\x00\x04F\\`\xd6\x87\x00\x0fBCD5lPP8N2u8h9l",
|
|
b"E\x00\x00K\x00\x01\x00\x00@\x11|\x9f\x7f\x00\x00\x01\x7f\x00\x00\x01\x08K\x08K\x007\xd3\xf20\x10\x00'\x00\x00\n\xf7\x107m\xaeV\x14\x08\x85\x00\x04\x83\x92K\xa3\x85\x00\x04\xb7\xb2\xff\xd0\x87\x00\x0foTrnmM9erqfhqpV"]
|
|
|
|
= GTPV1UpdatePDPContextRequest(), dissect
|
|
h = "3333333333332222222222228100a38408004588006800000000fd1134820a2a00010a2a00024aa5084b005408bb32120044ed99aea9386f0000100000530514058500040a2a00018500040a2a000187000c0213921f739680fe74f2ffff94000130970001019800080112f41004d204d29900024000b6000101"
|
|
gtp = Ether(hex_bytes(h))
|
|
assert gtp.gtp_type == 18
|
|
assert gtp.next_ex == 0
|
|
|
|
= GTPV1UpdatePDPContextResponse(), dissect
|
|
h = "3333333333332222222222228100838408004588005400000000fd1182850a2a00010a2a0002084b084b00406b46321300305843da17f07300000180100000032c7f4a0f58108500040a2a00018500040a2a000187000f0213921f7396d1fe7482ffff004a00f7a71e0a"
|
|
gtp = Ether(hex_bytes(h))
|
|
gtp.gtp_type == 19
|
|
|
|
= IE_Cause(), dissect
|
|
h = "3333333333332222222222228100838408004588005400000000fd1182850a2a00010a2a0002084b084b00406b4632130030f15422be19ed0000018010000046a97f4a0f58108500040a2a00018500040a2a000187000f0213921f7396d1fe7482ffff004a00f7a71e0a"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[0]
|
|
ie.ietype == 1 and ie.CauseValue == 128
|
|
|
|
= IE_Cause(), basic instantiation
|
|
ie = IE_Cause(CauseValue='IMSI not known')
|
|
ie.ietype == 1 and ie.CauseValue == 194
|
|
|
|
= IE_IMSI(), dissect
|
|
h = "333333333333222222222222810083840800458800ba00000000fc1185060a2a00010a2a00024ace084b00a68204321000960eeec43e99ae00000202081132547600000332f42004d27b0ffc102c0787b611b2f9023914051a0400800002f1218300070661616161616184001480802110010100108106000000008306000000008500040a2a00018500040a2a00018600079111111111111187000d0213621f7396737374f2ffff0094000120970001029800080032f42004d204d299000240009a00081111111111110000d111193b"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[0]
|
|
ie.ietype == 2 and ie.imsi == b'2080112345670000'
|
|
|
|
= IE_IMSI(), basic instantiation
|
|
ie = IE_IMSI(imsi='208103397660354')
|
|
ie.ietype == 2 and ie.imsi == b'208103397660354'
|
|
|
|
= IE_Routing(), dissect
|
|
h = "33333333333322222222222281008384080045880072647100003e11dcf60a2a00010a2a0002084b084b005e78d93212004ef51a4ac3a291ff000332f42004d27b10eb3981b414058500040a2a00018500040a2a000187000f0213921f7396d1fe7482ffff004a0094000110970001019800080132f42004d204d299000240fcb60001015bf2090f"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[0]
|
|
ie.ietype == 3 and ie.MCC == b'234' and ie.MNC == b'02' and ie.LAC == 1234 and ie.RAC == 123
|
|
|
|
= IE_Routing(), basic instantiation
|
|
ie = IE_Routing(MCC='234', MNC='02', LAC=1234, RAC=123)
|
|
ie.ietype == 3 and ie.MCC == b'234' and ie.MNC == b'02' and ie.LAC == 1234 and ie.RAC == 123
|
|
|
|
= IE_Recovery(), dissect
|
|
h = "3333333333332222222222228100038408004500002ac6e60000fd11ccbc0a2a00010a2a0002084b084b001659db32020006c192a26c8cb400000e0e00000000f4b40b31"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[0]
|
|
ie.ietype == 14 and ie.restart_counter == 14
|
|
|
|
= IE_Recovery(), basic instantiation
|
|
ie = IE_Recovery(restart_counter=14)
|
|
ie.ietype == 14 and ie.restart_counter == 14
|
|
|
|
= IE_SelectionMode(), dissect
|
|
h = "333333333333222222222222810083840800458800c500000000fc1184df0a2a00010a2a00024a55084b00b1f62a321000a11c025b77dccc00000202081132547600000332f42004d27b0ffc1055080923117c347b6a14051a0a00800002f1218300070661616161616184001d8080211001000010810600000000830600000000000d00000a000005008500040a2a00018500040a2a00018600079111111111111187000f0213921f7396d3fe74f2ffff00640094000120970001019800080132f42004d204d299000240009a00081111111111110000eea69220"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[2]
|
|
ie.ietype == 15 and ie.SelectionMode == 252
|
|
|
|
= IE_SelectionMode(), basic instantiation
|
|
ie = IE_SelectionMode(SelectionMode=252)
|
|
ie.ietype == 15 and ie.SelectionMode == 252
|
|
|
|
= IE_TEIDI(), dissect
|
|
h = "3333333333332222222222228100838408004588005400000000fd1182850a2a00010a2a0002084b084b00406b46321300303f0ff4fb966f00000180109a0f08ef7f3af826978500040a2a00018500040a2a000187000f0213921f7396d1fe7482ffff004a00f7a71e0a"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[1]
|
|
ie.ietype == 16 and ie.TEIDI == 0x9a0f08ef
|
|
|
|
= IE_TEIDI(), basic instantiation
|
|
ie = IE_TEIDI(TEIDI=0x9a0f08ef)
|
|
ie.ietype == 16 and ie.TEIDI == 0x9a0f08ef
|
|
|
|
= IE_TEICP(), dissect
|
|
h = "333333333333222222222222810083840800458800c500000000fc1184df0a2a00010a2a00024a55084b00b1f62a321000a1b75eb617464800000202081132547600000332f42004d27b0ffc10db5c765711ba5d87ba14051a0a00800002f1218300070661616161616184001d8080211001000010810600000000830600000000000d00000a000005008500040a2a00018500040a2a00018600079111111111111187000f0213921f7396d3fe74f2ffff00640094000120970001019800080132f42004d204d299000240009a00081111111111110000eea69220"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[4]
|
|
ie.ietype == 17 and ie.TEICI == 0xba5d87ba
|
|
|
|
= IE_TEICP(), basic instantiation
|
|
ie = IE_TEICP(TEICI=0xba5d87ba)
|
|
ie.ietype == 17 and ie.TEICI == 0xba5d87ba
|
|
|
|
= IE_Teardown(), dissect
|
|
h = "3333333333332222222222228100838408004588002c00000000fd1184640a2a00010a2a00023d66084b00184c2232140008ba66ce5b6efe000013ff14050000c309006c"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[0]
|
|
ie.ietype == 19 and ie.indicator == 255
|
|
|
|
= IE_Teardown(), basic instantiation
|
|
ie = IE_Teardown(indicator='True')
|
|
ie.ietype == 19 and ie.indicator == 255
|
|
|
|
= IE_NSAPI(), dissect
|
|
h = "3333333333332222222222228100838408004588002c00000000fd1184640a2a00010a2a00023d66084b00184c2232140008dafc273ee7ab000013ff14050000c309006c"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[1]
|
|
ie.ietype == 20 and ie.NSAPI == 5
|
|
|
|
= IE_NSAPI(), basic instantiation
|
|
ie = IE_NSAPI(NSAPI=5)
|
|
ie.ietype == 20 and ie.NSAPI == 5
|
|
|
|
= IE_ChargingCharacteristics(), dissect
|
|
h = "333333333333222222222222810083840800458800bc00000000fc1184c90a2a00010a2a00024acf084b00a87bbb32100098a3e2565004a400000202081132547600000332f42004d27b0ffc10b87f17ad11c53c5e1b14051a0400800002f1218300070661616161616184001480802110010000108106000000008306000000008500040a2a00018500040a2a00018600079111111111111187000f0213921f7396d3fe74f2ffff004a0094000120970001019800080132f42004d204d299000240009a00081111111111110000951c5bbe"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[6]
|
|
ie.ietype == 26 and ie.normal_charging == 0 and ie.prepaid_charging == 1 and ie.flat_rate_charging == 0
|
|
|
|
= IE_ChargingCharacteristics(), basic instantiation
|
|
ie = IE_ChargingCharacteristics(
|
|
normal_charging=0, prepaid_charging=1, flat_rate_charging=0)
|
|
ie.ietype == 26 and ie.normal_charging == 0 and ie.prepaid_charging == 1 and ie.flat_rate_charging == 0
|
|
|
|
= IE_TraceReference(), basic instantiation
|
|
ie = IE_TraceReference(Trace_reference=0x1212)
|
|
ie.ietype == 27 and ie.Trace_reference == 0x1212
|
|
|
|
= IE_TraceType(), basic instantiation
|
|
ie = IE_TraceType(Trace_type=0x1212)
|
|
ie.ietype == 28 and ie.Trace_type == 0x1212
|
|
|
|
= IE_ChargingId(), dissect
|
|
h = "3333333333332222222222228100838408004588005400000000fd1182850a2a00010a2a0002084b084b00406b4632130030e77ffb7e30410000018010ed654ff37fff1bc3f28500040a2a00018500040a2a000187000f0213921f7396d1fe7482ffff004a00f7a71e0a"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[2]
|
|
ie.ietype == 127 and ie.Charging_id == 0xff1bc3f2
|
|
|
|
= IE_ChargingId(), basic instantiation
|
|
ie = IE_ChargingId(Charging_id=0xff1bc3f2)
|
|
ie.ietype == 127 and ie.Charging_id == 0xff1bc3f2
|
|
|
|
= IE_EndUserAddress(), dissect
|
|
h = "3333333333332222222222228100838408004588008500000000fd11840b0a2a00010a2a0002084b4a6c00717c8a32110061c1b9728f356a0000018008fe10af709e9011e3cb6a4b7fb60e1b28800006f1210a2a00038400218080210a0301000a03060ab0aa93802110030100108106ac14020a8306ac1402278500040a2a00018500040a2a000187000c0213621f7396486874f2ffff44ded108"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[5]
|
|
ie.ietype == 128 and ie.length == 6 and ie.PDPTypeOrganization == 1 and ie.PDPTypeNumber == 0x21 and ie.PDPAddress == '10.42.0.3'
|
|
|
|
= IE_EndUserAddress(), IPv4/IPv6 dissect
|
|
h = "00e0fc065f3800e1fc452bf30800450000cf00004000ff11a8afbd28ac11bd28ac0b084b084b00bb0000321100ab645b29420f990000018008fe0e12100270582511027258257f030b15a6800016f18d0a2a00032805021582842522000000000000000084004f80c0230e0200000e0957656c636f6d65210a802110030000108106bd28c6508306bd28c651000310280402148000ffff0000000000000080000310280402148000ffff000000000000008100050101850004bd28ac12850004bd28ac1287000f0223921f9196fefe74f8fefe004a00fb00040acf6976"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[6]
|
|
ie.ietype == 128 and ie.length == 22 and ie.PDPTypeOrganization == 1 and ie.PDPTypeNumber == 0x8d and ie.PDPAddress == '10.42.0.3' and ie.IPv6_PDPAddress == '2805:215:8284:2522::'
|
|
|
|
= IE_EndUserAddress(), basic instantiation IPv4
|
|
ie = IE_EndUserAddress(
|
|
length=6, PDPTypeOrganization=1, PDPTypeNumber=0x21, PDPAddress='10.42.0.3')
|
|
ie.ietype == 128 and ie.length == 6 and ie.PDPTypeOrganization == 1 and ie.PDPTypeNumber == 0x21 and ie.PDPAddress == '10.42.0.3'
|
|
|
|
= IE_EndUserAddress(), basic instantiation IPv6
|
|
ie = IE_EndUserAddress(
|
|
length=18, PDPTypeOrganization=1, PDPTypeNumber=0x57, IPv6_PDPAddress='2804::')
|
|
ie.ietype == 128 and ie.length == 18 and ie.PDPTypeOrganization == 1 and ie.PDPTypeNumber == 0x57 and ie.IPv6_PDPAddress == '2804::'
|
|
|
|
= IE_EndUserAddress(), basic instantiation IPv4/IPv6
|
|
ie = IE_EndUserAddress(
|
|
length=22, PDPTypeOrganization=1, PDPTypeNumber=0x8d, PDPAddress='10.42.0.3', IPv6_PDPAddress ='2804::')
|
|
ie.ietype == 128 and ie.length == 22 and ie.PDPTypeOrganization == 1 and ie.PDPTypeNumber == 0x8d and ie.IPv6_PDPAddress == '2804::' and ie.PDPAddress == '10.42.0.3'
|
|
|
|
|
|
= IE_AccessPointName(), dissect
|
|
h = "333333333333222222222222810083840800458800bc00000000fc1184c90a2a00010a2a00024acf084b00a87bbb3210009867fe972185e800000202081132547600000332f42004d27b0ffc1093b20c3f11940eb2bf14051a0400800002f1218300070661616161616184001480802110010000108106000000008306000000008500040a2a00018500040a2a00018600079111111111111187000f0213921f7396d3fe74f2ffff004a0094000120970001019800080132f42004d204d299000240009a000811111111111100001b1212951c5bbe"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[8]
|
|
ie.ietype == 131 and ie.APN == b'aaaaaa'
|
|
|
|
= IE_AccessPointName(), basic instantiation
|
|
ie = IE_AccessPointName(APN='aaaaaa')
|
|
ie.ietype == 131 and ie.APN == b'aaaaaa'
|
|
|
|
= IE_ProtocolConfigurationOptions(), dissect
|
|
h = "333333333333222222222222810083840800458800c300000000fc1184e50a2a00010a2a00024a4d084b00af41993210009fdef90e15440900000202081132547600000332f42004d27b0ffc10c29998b81145c6c9ee14051a0a00800002f1218300070661616161616184001d80c02306010100060000802110010100108106000000008306000000008500040a2a00018500040a2a00018600079111111111111187000d0213621f73967373741affff0094000120970001029800080032f42004d204d299000240009a0008111111111111000081182fb2"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[9]
|
|
ie.ietype == 132 and ie.Protocol_Configuration == b'\x80\xc0#\x06\x01\x01\x00\x06\x00\x00\x80!\x10\x01\x01\x00\x10\x81\x06\x00\x00\x00\x00\x83\x06\x00\x00\x00\x00'
|
|
|
|
= IE_ProtocolConfigurationOptions(), basic instantiation
|
|
ie = IE_ProtocolConfigurationOptions(
|
|
length=29, Protocol_Configuration=b'\x80\xc0#\x06\x01\x01\x00\x06\x00\x00\x80!\x10\x01\x01\x00\x10\x81\x06\x00\x00\x00\x00\x83\x06\x00\x00\x00\x00')
|
|
ie.ietype == 132 and ie.Protocol_Configuration == b'\x80\xc0#\x06\x01\x01\x00\x06\x00\x00\x80!\x10\x01\x01\x00\x10\x81\x06\x00\x00\x00\x00\x83\x06\x00\x00\x00\x00'
|
|
|
|
= IE_GSNAddress(), dissect
|
|
h = "3333333333332222222222228100838408004588005400000000fd1182850a2a00010a2a0002084b084b00406b463213003031146413c18000000180109181ba027fcf701a8c8500040a2a00018500040a2a000187000f0213921f7396d1fe7482ffff004a00f7a71e0a"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[3]
|
|
ie.ietype == 133 and ie.address == '10.42.0.1'
|
|
|
|
= IE_GSNAddress(), basic instantiation
|
|
ie = IE_GSNAddress(address='10.42.0.1')
|
|
ie.ietype == 133 and ie.address == '10.42.0.1'
|
|
|
|
= IE_MSInternationalNumber(), dissect
|
|
h = "333333333333222222222222810083840800458800c300000000fc1184e50a2a00010a2a00024a4d084b00af41993210009f79504a3e048e00000202081132547600000332f42004d27b0ffc10a692773d1158da9e2214051a0a00800002f1218300070661616161616184001d80c02306010100060000802110010100108106000000008306000000008500040a2a00018500040a2a00018600079111111111111187000d0213621f73967373741affff0094000120970001029800080032f42004d204d299000240009a0008111111111111000081182fb2"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[12]
|
|
ie.ietype == 134 and ie.flags == 145 and ie.digits == b'111111111111'
|
|
|
|
= IE_MSInternationalNumber(), basic instantiation
|
|
ie = IE_MSInternationalNumber(flags=145, digits='111111111111')
|
|
ie.ietype == 134 and ie.flags == 145 and ie.digits == b'111111111111'
|
|
|
|
= IE_QoS(), dissect
|
|
h = "3333333333332222222222228100838408004588005400000000fd1182850a2a00010a2a0002084b084b00406b4632130030afe9d3a3317e0000018010bd82f3997f9febcaf58500040a2a00018500040a2a000187000f0213921f7396d1fe7482ffff004a00f7a71e0a"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[5]
|
|
ie.ietype == 135 and ie.allocation_retention_prioiry == 2 and ie.delay_class == 2 and ie.traffic_class == 3
|
|
|
|
= IE_QoS(), basic instantiation
|
|
ie = IE_QoS(
|
|
allocation_retention_prioiry=2, delay_class=2, traffic_class=3)
|
|
ie.ietype == 135 and ie.allocation_retention_prioiry == 2 and ie.delay_class == 2 and ie.traffic_class == 3
|
|
|
|
= IE_CommonFlags(), dissect
|
|
h = "3333333333332222222222228100a38408004588006800000000fd1134820a2a00010a2a00024aa5084b005408bb32120044623f97e3ac610000104d82c69214058500040a2a00018500040a2a000187000c0213921f739680fe74f2ffff94000130970001019800080132f42004d204d29900024000b6000101"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[5]
|
|
ie.ietype == 148 and ie.nrsn == 1 and ie.no_qos_nego == 1 and ie.prohibit_payload_compression == 0
|
|
|
|
= IE_CommonFlags(), basic instantiation
|
|
ie = IE_CommonFlags(nrsn=1, no_qos_nego=1)
|
|
ie.ietype == 148 and ie.nrsn == 1 and ie.no_qos_nego == 1 and ie.prohibit_payload_compression == 0
|
|
|
|
= IE_APNRestriction(), basic instantiation
|
|
ie = IE_APNRestriction(restriction_type_value=12)
|
|
ie.ietype == 149 and ie.restriction_type_value == 12
|
|
|
|
= IE_RATType(), dissect
|
|
h = "3333333333332222222222228100a38408004588006800000000fd1134820a2a00010a2a00024aa5084b005408bb321200442f686a89d33c000010530ec20a14058500040a2a00018500040a2a000187000c0213921f739680fe74f2ffff94000130970001019800080132f42004d204d29900024000b6000101"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[6]
|
|
ie.ietype == 151 and ie.RAT_Type == 1
|
|
|
|
= IE_RATType(), basic instantiation
|
|
ie = IE_RATType(RAT_Type=1)
|
|
ie.ietype == 151 and ie.RAT_Type == 1
|
|
|
|
= IE_UserLocationInformation(), dissect
|
|
h = "3333333333332222222222228100a38408004588006800000000fd1134820a2a00010a2a00024aa5084b005408bb32120044981eb5dcb29400001016e85d9f14058500040a2a00018500040a2a000187000c0213921f739680fe74f2ffff94000130970001019800080132f42004d204d29900024000b6000101"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[7]
|
|
ie.MCC == b'234' and ie.MNC == b'02' and ie.LAC == 1234 and ie.SAC == 1234
|
|
|
|
= IE_UserLocationInformation(), basic instantiation
|
|
ie = IE_UserLocationInformation(MCC='234', MNC='02', LAC=1234, SAC=1234)
|
|
ie.ietype == 152 and ie.MCC == b'234' and ie.MNC == b'02' and ie.LAC == 1234 and ie.SAC == 1234
|
|
|
|
= IE_MSTimeZone(), dissect
|
|
h = "3333333333332222222222228100a38408004588006800000000fd1134820a2a00010a2a00024aa5084b005408bb32120044f24a4d5825290000102ca9c8c314058500040a2a00018500040a2a000187000c0213921f739680fe74f2ffff94000130970001019800080132f42004d204d29900024000b6000101"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[8]
|
|
ie.ietype == 153 and ie.timezone == 64 and ie.daylight_saving_time == 0
|
|
|
|
= IE_MSTimeZone(), basic instantiation
|
|
ie = IE_MSTimeZone(timezone=64)
|
|
ie.ietype == 153 and ie.timezone == 64 and ie.daylight_saving_time == 0
|
|
|
|
= IE_IMEI(), dissect
|
|
h = "333333333333222222222222810083840800458800c300000000fc1184e50a2a00010a2a00024a4d084b00af41993210009f2f3ae0eb7b9c00000202081132547600000332f42004d27b0ffc10424a10c8117ca21aba14051a0a00800002f1218300070661616161616184001d80c02306010100060000802110010100108106000000008306000000008500040a2a00018500040a2a00018600079111111111111187000d0213621f73967373741affff0094000120970001029800080032f42004d204d299000240009a0008111111111111000081182fb2"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[18] and ie.ietype == 154 and ie.IMEI == b'0132750094080322'
|
|
|
|
= IE_IMEI(), basic instantiation
|
|
ie = IE_IMEI(IMEI='0132750094080322')
|
|
ie.ietype == 154 and ie.IMEI == b'0132750094080322'
|
|
|
|
= IE_MSInfoChangeReportingAction(), basic instantiation
|
|
ie = IE_MSInfoChangeReportingAction(Action=12)
|
|
ie.ietype == 181 and ie.Action == 12
|
|
|
|
= IE_DirectTunnelFlags(), dissect
|
|
h = "3333333333332222222222228100a38408004588006800000000fd1134820a2a00010a2a00024aa5084b005408bb32120044d2a7dffabfb70000108caa6b0b14058500040a2a00018500040a2a000187000c0213921f739680fe74f2ffff94000130970001019800080132f42004d204d29900024000b6000101"
|
|
gtp = Ether(hex_bytes(h))
|
|
ie = gtp.IE_list[9]
|
|
ie.ietype == 182 and ie.EI == 0 and ie.GCSI == 0 and ie.DTI == 1
|
|
|
|
= IE_DirectTunnelFlags(), basic instantiation
|
|
ie = IE_DirectTunnelFlags(DTI=1)
|
|
ie.ietype == 182 and ie.EI == 0 and ie.GCSI == 0 and ie.DTI == 1
|
|
|
|
= IE_BearerControlMode(), basic instantiation
|
|
ie = IE_BearerControlMode(bearer_control_mode=1)
|
|
ie.ietype == 184 and ie.bearer_control_mode == 1
|
|
|
|
= IE_EvolvedAllocationRetentionPriority(), basic instantiation
|
|
ie = IE_EvolvedAllocationRetentionPriority(PCI=1)
|
|
ie.ietype == 191 and ie.PCI == 1
|
|
|
|
= IE_CharginGatewayAddress(), basic instantiation
|
|
ie = IE_CharginGatewayAddress()
|
|
ie.ietype == 251 and ie.ipv4_address == '127.0.0.1' and ie.ipv6_address == '::1'
|
|
|
|
= IE_PrivateExtension(), basic instantiation
|
|
ie = IE_PrivateExtension(extention_value='hello')
|
|
ie.ietype == 255 and ie.extention_value == b'hello'
|