forked from dreadl0ck/tlsx
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathserverHello_test.go
168 lines (135 loc) · 20.7 KB
/
serverHello_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
package tlsx
import (
"encoding/hex"
"testing"
"github.com/kubeshark/gopacket"
"github.com/kubeshark/gopacket/layers"
)
func TestServerHello(t *testing.T) {
packet := "f018982a38be48d343aac4b80800450005b4447b00007906ea20225f7893c0a8b20d01bbefca6011d3eb8013192d801000f087ae00000101080a79facb3a56d9798616030300640200006003035e5bea4420be035069306e15e36eca187d56a201e8e96f0a1afeeb529413fba020746572b9b8832a5b8f236ba51743281c20e923a880067e4c38a754f53f3a8743c02f00001800170000ff01000100000b0002010000100005000302683216030309980b0009940009910004fc308204f8308203e0a00302010202100a86b904765831e240cc6211101f5736300d06092a864886f70d01010b0500305e310b300906035504061302555331153013060355040a130c446967694365727420496e6331193017060355040b13107777772e64696769636572742e636f6d311d301b0603550403131447656f5472757374205253412043412032303138301e170d3138303130343030303030305a170d3230303730393132303030305a3068310b3009060355040613025553311330110603550408130a43616c69666f726e69613111300f060355040713085061736164656e61311b3019060355040a13124f70656e5820546563686e6f6c6f676965733114301206035504030c0b2a2e6f70656e782e6e657430820122300d06092a864886f70d01010105000382010f003082010a0282010100bf0efabfe55538e687d4db8f8d615ab1d5dce14702307ca21c0547cd2cc43e455627b4d8decd8015296c19127d29025fbac71f2fc1af1bfe525ed0c2778028a3e7dd643b60842801d9d196651924057827c4d3ce6ae62253b869f384d56a72060055e3537a67a9904e61a4628067f07c680a8bf30c14444d090910c182ea3c5e473b1ab1233838645b0bdfb24265ee32e3521b4bdbae6d79acdbdd7a00c0f00479537079fd352aade5e8394be2f2b397366cfd64bb94b1b96515b4e78d3a2fac04e9d5787792fcf411b6b66cb5dfbc4cb023d93fa99cee630d8ed3558b33e0f2a019ecc5eac16919c48a844f693b5e7ccb4eb84724ab963979c570eb7a3b58ad0203010001a38201a6308201a2301f0603551d230418301680149058ffb09c75a8515477b1edf2a34316389e6cc5301d0603551d0e04160414e03952aaaeb23c67e939ec6022188686bcb314c430210603551d11041a3018820b2a2e6f70656e782e6e657482096f70656e782e6e6574300e0603551d0f0101ff0404030205a0301d0603551d250416301406082b0601050507030106082b06010505070302303e0603551d1f043730353033a031a02f862d687474703a2f2f6364702e67656f74727573742e636f6d2f47656f54727573745253414341323031382e63726c304c0603551d2004453043303706096086480186fd6c0101302a302806082b06010505070201161c68747470733a2f2f7777772e64696769636572742e636f6d2f4350533008060667810c010202307506082b0601050507010104693067302606082b06010505073001861a687474703a2f2f7374617475732e67656f74727573742e636f6d303d06082b060105050730028631687474703a2f2f636163657274732e67656f74727573742e636f6d2f47656f54727573745253414341323031382e63727430090603551d1304023000300d06092a864886f70d01010b0500038201010045a0d33fa95d251c861518096f2ffe89bae2e062cfc4505859b42adeaa775fcf34c2eebde155cfb6449a806abffbaad2e88d77b1397e76ea08265dbc2aa98cb04e3d141c27ed629961d9cd90bb7f6db672408bb15126dd4df4cdf831465c1ee9f321505ace6e7c09d864683fbbaa8ee9fc73e74feefaa5a027067856000f56c9ae39bcb3cc586928429bd8abe5d2a3d8df5c63b4db45fa2cc3ffa6f75b946188019e162fb8dfacf2be3064bf52788378e61c8397ec13e72649fbe15e5c5b6d8bae43ca7b188eda5a41e512f508206fefe96a832ce4676a425ddd06e3cfe93046140818a7359723f2477315f38ab51f83c9dced627efaf6541ed3e9c0767376b200048f3082048b30820373a0"
data, err := hex.DecodeString(packet)
if err != nil {
t.Fatal(err)
}
p := gopacket.NewPacket(data, layers.LayerTypeEthernet, gopacket.Default)
hello := GetServerHello(p)
if hello == nil {
t.Fatal("hello should not be nil")
return
}
if hello.Vers != 771 {
t.Fatal("version should be 771, got", hello.Vers)
}
if hello.CipherSuite != 49199 {
t.Fatal("incorrect cipher, got", hello.CipherSuite, "expected", 1)
}
for i, e := range []uint16{23, 65281, 11, 16} {
if hello.Extensions[i] != e {
t.Fatal("incorrect extension, got", hello.Extensions[i], "expected", e)
}
}
// TLS v1.3 packet
packetTLSv13 := "f018982a38be48d343aac4b80800450005b4ede8000077063622d83acf48c0a8b20d01bbfa29677a28c05053c22d801000f07db800000101080aabd1461b571d02e7160303007a020000760303bd3e8c98cf963c3267502625c4768618666dc2842ff68d9dc34dd1ea79bfb3ea2004bf66dbf30ebb5c355580d1900b55a4d8ce1781959e5de9814a8523e8ecbc52130100002e00330024001d0020f1ed873961a65cbb9e7b4b60b4c36d96f65b7d3dc98f1f1015366b79dc44e151002b000203041403030001011703030c40427ef62d02bbd139c54ef120e67f4bd13a1fdccdcf38145ed9cf648eeca8b6b1b52944a446f3f1de81a1226293888b510cb2af3a2f1ecbc677d416f615d27e6d99da0158f3fc67637f9e179405ae92c45854e07d5dc10b729f915191a3dbd43833762e30eaa489208627bd68721365f444e0fafdd55bb772c6751a025eedd5fa8807807a68c22cb401e7abc8c9047d76de6b14a4d02c5e1582bb0aa131085c2d23122796c89d54c7dbfd79e4539cc2990ec1c70dcff3a422529b9ddfe94795d82a5ec63202088ee4cbea72d224ae12eaec46b977b5e04c111c7c30b8348242fb76251f592bb4581d4983ead70eca9d6b9975cafb443ee4233637b6df86b695e9a9e65181184bf6c6c0df4450503d84c9b48e31c8114e32263abfd8b0b2c268392b0227fdce21395e0a58cdcf6e80cd24ced5530b72e90aa5d3f73f1c43ba34fbff506024116cd0c8fc11067670d7243e070d6726cf3896176b9706c36c74608164535793f59751d8ec629e50b2b03e7daae93e514183faa2558f0ca6c12ec9a73954b8a893655ace85b0b54a8cf8bd9dce6ad9613485daa1a81ff8c18c233f52ce61c16a80b5e3b9ad4f30cce22fe34da1234d85bcb5c34b6e7613b585e2da6f281f9a02b2ecd9fac46024d4148c359033de9c424fd3c450cd5e79bfe02b096f71203c13445d247d5151c7333b30d71194082c2fc9f87ea75677f134c782affb749a0985b3119a4422e2c8a04847eff6fcc6bbeb36d8a7acde31af4195ec678484c1c781fa53d4730b0d6e58da516627c946651cdb76cd2f94ca6cc0a8f72c5839791b8da0bb1fd3ce5d4c59b30658490022f7ccabe8612894608376de20079be8f5e8bd8e2b62ea9e70d1ede95af51e6281d49f3f9493f7a3774ef3c74a76931ad9304b1952331efc173b36aca66645d46284707302aa6db8dedf2efb647ea9515cdce0b64711c34fc5966be725bce1e0cc3ab3f9c3352ab1ce1d6015700141ff7eee2c76e3d8249283e2afe9d57db492aed486baab42a5a8a7fd2147fdb10ac445530240f8e3c228209d2a665f45ba67f313528cc23099155277652e699675c39738ea88f989187e60cd796e751acecf96657b0d5e97e0f2d434d92b1f1bd82bb32e1b70b8962467df63dcad07425dfc54aff90abd5c1b3906a045a7a0981b530e77915527d309c65224b7848dd124a330b3fefec6e92bbb1778d0d4c6dc5e6bdae5bfa4036a9882b881fad1914ccada1e9d60ea641f9ffd5e305d6b5c6b6706310dd6b6bed4b0c6faaae960116c3848d88e15f3560aa68e68e93613a02f23c93c5cbfd8e4f28b8a9bd98cd33ccffea03f25c1a795824247db8d25663c103138e5b30c17631d7c831848be09645761889c7186453325ba5573810d5cf9859ac0b7ebb1a67d436053568bbb3e1ac982bcc45cf832a2002b345a63d2b0dfe684c6f1805d64dc7330f229659cd48a173289ef4bbd752d45c82b2663a54b1dad487d3c700bfbe19d1f6d69d79e816c684bbdddee9d4c9b524bf38b0b2e8300d4d4ac5771abe79834a2ba1ec49e90a4249450b770017612dd6d6751e36d0422499e9adcbe697d135be73ae2140b085ec201739070df2790646f21e6e5e4f45d0f7c53ddae3b0ee9f72dcda479cd5eb6b7bd01b613962f28bd2132a7dfb2eb49c96f8a9a8a7bb4457d2ee4073f99b1ac9fff3120f22a76042d2460ea1009a6ce2c890badd112d503a777df6f7b88f2768ea12481c2633c72bc3e51bfd2af4735e39bcb16e6882c9e53307462804cac7b969de4c13223e25c"
data, err = hex.DecodeString(packetTLSv13)
if err != nil {
t.Fatal(err)
}
p = gopacket.NewPacket(data, layers.LayerTypeEthernet, gopacket.Default)
hello = GetServerHello(p)
if hello == nil {
t.Fatal("hello should not be nil")
return
}
if hello.Vers != 771 {
t.Fatal("version should be 771, got", hello.Vers)
}
if hello.CipherSuite != 4865 {
t.Fatal("incorrect cipher, got", hello.CipherSuite, "expected", 1)
}
for i, e := range []uint16{51, 43} {
if hello.Extensions[i] != e {
t.Fatal("incorrect extension, got", hello.Extensions[i], "expected", e)
}
}
}
func TestGetServerHelloBasic(t *testing.T) {
packet := "f018982a38be48d343aac4b80800450005b4447b00007906ea20225f7893c0a8b20d01bbefca6011d3eb8013192d801000f087ae00000101080a79facb3a56d9798616030300640200006003035e5bea4420be035069306e15e36eca187d56a201e8e96f0a1afeeb529413fba020746572b9b8832a5b8f236ba51743281c20e923a880067e4c38a754f53f3a8743c02f00001800170000ff01000100000b0002010000100005000302683216030309980b0009940009910004fc308204f8308203e0a00302010202100a86b904765831e240cc6211101f5736300d06092a864886f70d01010b0500305e310b300906035504061302555331153013060355040a130c446967694365727420496e6331193017060355040b13107777772e64696769636572742e636f6d311d301b0603550403131447656f5472757374205253412043412032303138301e170d3138303130343030303030305a170d3230303730393132303030305a3068310b3009060355040613025553311330110603550408130a43616c69666f726e69613111300f060355040713085061736164656e61311b3019060355040a13124f70656e5820546563686e6f6c6f676965733114301206035504030c0b2a2e6f70656e782e6e657430820122300d06092a864886f70d01010105000382010f003082010a0282010100bf0efabfe55538e687d4db8f8d615ab1d5dce14702307ca21c0547cd2cc43e455627b4d8decd8015296c19127d29025fbac71f2fc1af1bfe525ed0c2778028a3e7dd643b60842801d9d196651924057827c4d3ce6ae62253b869f384d56a72060055e3537a67a9904e61a4628067f07c680a8bf30c14444d090910c182ea3c5e473b1ab1233838645b0bdfb24265ee32e3521b4bdbae6d79acdbdd7a00c0f00479537079fd352aade5e8394be2f2b397366cfd64bb94b1b96515b4e78d3a2fac04e9d5787792fcf411b6b66cb5dfbc4cb023d93fa99cee630d8ed3558b33e0f2a019ecc5eac16919c48a844f693b5e7ccb4eb84724ab963979c570eb7a3b58ad0203010001a38201a6308201a2301f0603551d230418301680149058ffb09c75a8515477b1edf2a34316389e6cc5301d0603551d0e04160414e03952aaaeb23c67e939ec6022188686bcb314c430210603551d11041a3018820b2a2e6f70656e782e6e657482096f70656e782e6e6574300e0603551d0f0101ff0404030205a0301d0603551d250416301406082b0601050507030106082b06010505070302303e0603551d1f043730353033a031a02f862d687474703a2f2f6364702e67656f74727573742e636f6d2f47656f54727573745253414341323031382e63726c304c0603551d2004453043303706096086480186fd6c0101302a302806082b06010505070201161c68747470733a2f2f7777772e64696769636572742e636f6d2f4350533008060667810c010202307506082b0601050507010104693067302606082b06010505073001861a687474703a2f2f7374617475732e67656f74727573742e636f6d303d06082b060105050730028631687474703a2f2f636163657274732e67656f74727573742e636f6d2f47656f54727573745253414341323031382e63727430090603551d1304023000300d06092a864886f70d01010b0500038201010045a0d33fa95d251c861518096f2ffe89bae2e062cfc4505859b42adeaa775fcf34c2eebde155cfb6449a806abffbaad2e88d77b1397e76ea08265dbc2aa98cb04e3d141c27ed629961d9cd90bb7f6db672408bb15126dd4df4cdf831465c1ee9f321505ace6e7c09d864683fbbaa8ee9fc73e74feefaa5a027067856000f56c9ae39bcb3cc586928429bd8abe5d2a3d8df5c63b4db45fa2cc3ffa6f75b946188019e162fb8dfacf2be3064bf52788378e61c8397ec13e72649fbe15e5c5b6d8bae43ca7b188eda5a41e512f508206fefe96a832ce4676a425ddd06e3cfe93046140818a7359723f2477315f38ab51f83c9dced627efaf6541ed3e9c0767376b200048f3082048b30820373a0"
data, err := hex.DecodeString(packet)
if err != nil {
t.Fatal(err)
}
p := gopacket.NewPacket(data, layers.LayerTypeEthernet, gopacket.Default)
hello := GetServerHelloBasic(p)
if hello == nil {
t.Fatal("hello should not be nil")
return
}
if hello.Vers != 771 {
t.Fatal("version should be 771, got", hello.Vers)
}
if hello.CipherSuite != 49199 {
t.Fatal("incorrect cipher, got", hello.CipherSuite, "expected", 1)
}
for i, e := range []uint16{23, 65281, 11, 16} {
if hello.Extensions[i] != e {
t.Fatal("incorrect extension, got", hello.Extensions[i], "expected", e)
}
}
// TLS v1.3 packet
packetTLSv13 := "f018982a38be48d343aac4b80800450005b4ede8000077063622d83acf48c0a8b20d01bbfa29677a28c05053c22d801000f07db800000101080aabd1461b571d02e7160303007a020000760303bd3e8c98cf963c3267502625c4768618666dc2842ff68d9dc34dd1ea79bfb3ea2004bf66dbf30ebb5c355580d1900b55a4d8ce1781959e5de9814a8523e8ecbc52130100002e00330024001d0020f1ed873961a65cbb9e7b4b60b4c36d96f65b7d3dc98f1f1015366b79dc44e151002b000203041403030001011703030c40427ef62d02bbd139c54ef120e67f4bd13a1fdccdcf38145ed9cf648eeca8b6b1b52944a446f3f1de81a1226293888b510cb2af3a2f1ecbc677d416f615d27e6d99da0158f3fc67637f9e179405ae92c45854e07d5dc10b729f915191a3dbd43833762e30eaa489208627bd68721365f444e0fafdd55bb772c6751a025eedd5fa8807807a68c22cb401e7abc8c9047d76de6b14a4d02c5e1582bb0aa131085c2d23122796c89d54c7dbfd79e4539cc2990ec1c70dcff3a422529b9ddfe94795d82a5ec63202088ee4cbea72d224ae12eaec46b977b5e04c111c7c30b8348242fb76251f592bb4581d4983ead70eca9d6b9975cafb443ee4233637b6df86b695e9a9e65181184bf6c6c0df4450503d84c9b48e31c8114e32263abfd8b0b2c268392b0227fdce21395e0a58cdcf6e80cd24ced5530b72e90aa5d3f73f1c43ba34fbff506024116cd0c8fc11067670d7243e070d6726cf3896176b9706c36c74608164535793f59751d8ec629e50b2b03e7daae93e514183faa2558f0ca6c12ec9a73954b8a893655ace85b0b54a8cf8bd9dce6ad9613485daa1a81ff8c18c233f52ce61c16a80b5e3b9ad4f30cce22fe34da1234d85bcb5c34b6e7613b585e2da6f281f9a02b2ecd9fac46024d4148c359033de9c424fd3c450cd5e79bfe02b096f71203c13445d247d5151c7333b30d71194082c2fc9f87ea75677f134c782affb749a0985b3119a4422e2c8a04847eff6fcc6bbeb36d8a7acde31af4195ec678484c1c781fa53d4730b0d6e58da516627c946651cdb76cd2f94ca6cc0a8f72c5839791b8da0bb1fd3ce5d4c59b30658490022f7ccabe8612894608376de20079be8f5e8bd8e2b62ea9e70d1ede95af51e6281d49f3f9493f7a3774ef3c74a76931ad9304b1952331efc173b36aca66645d46284707302aa6db8dedf2efb647ea9515cdce0b64711c34fc5966be725bce1e0cc3ab3f9c3352ab1ce1d6015700141ff7eee2c76e3d8249283e2afe9d57db492aed486baab42a5a8a7fd2147fdb10ac445530240f8e3c228209d2a665f45ba67f313528cc23099155277652e699675c39738ea88f989187e60cd796e751acecf96657b0d5e97e0f2d434d92b1f1bd82bb32e1b70b8962467df63dcad07425dfc54aff90abd5c1b3906a045a7a0981b530e77915527d309c65224b7848dd124a330b3fefec6e92bbb1778d0d4c6dc5e6bdae5bfa4036a9882b881fad1914ccada1e9d60ea641f9ffd5e305d6b5c6b6706310dd6b6bed4b0c6faaae960116c3848d88e15f3560aa68e68e93613a02f23c93c5cbfd8e4f28b8a9bd98cd33ccffea03f25c1a795824247db8d25663c103138e5b30c17631d7c831848be09645761889c7186453325ba5573810d5cf9859ac0b7ebb1a67d436053568bbb3e1ac982bcc45cf832a2002b345a63d2b0dfe684c6f1805d64dc7330f229659cd48a173289ef4bbd752d45c82b2663a54b1dad487d3c700bfbe19d1f6d69d79e816c684bbdddee9d4c9b524bf38b0b2e8300d4d4ac5771abe79834a2ba1ec49e90a4249450b770017612dd6d6751e36d0422499e9adcbe697d135be73ae2140b085ec201739070df2790646f21e6e5e4f45d0f7c53ddae3b0ee9f72dcda479cd5eb6b7bd01b613962f28bd2132a7dfb2eb49c96f8a9a8a7bb4457d2ee4073f99b1ac9fff3120f22a76042d2460ea1009a6ce2c890badd112d503a777df6f7b88f2768ea12481c2633c72bc3e51bfd2af4735e39bcb16e6882c9e53307462804cac7b969de4c13223e25c"
data, err = hex.DecodeString(packetTLSv13)
if err != nil {
t.Fatal(err)
}
p = gopacket.NewPacket(data, layers.LayerTypeEthernet, gopacket.Default)
hello = GetServerHelloBasic(p)
if hello == nil {
t.Fatal("hello should not be nil")
return
}
//fmt.Println( hello.Extensions)
//fmt.Println(hello.CipherSuite)
if hello.Vers != 771 {
t.Fatal("version should be 771, got", hello.Vers)
}
if hello.CipherSuite != 4865 {
t.Fatal("incorrect cipher, got", hello.CipherSuite, "expected", 1)
}
for i, e := range []uint16{51, 43} {
if hello.Extensions[i] != e {
t.Fatal("incorrect extension, got", hello.Extensions[i], "expected", e)
}
}
}
func BenchmarkGetServerHello(b *testing.B) {
packet := "f018982a38be48d343aac4b80800450005b4447b00007906ea20225f7893c0a8b20d01bbefca6011d3eb8013192d801000f087ae00000101080a79facb3a56d9798616030300640200006003035e5bea4420be035069306e15e36eca187d56a201e8e96f0a1afeeb529413fba020746572b9b8832a5b8f236ba51743281c20e923a880067e4c38a754f53f3a8743c02f00001800170000ff01000100000b0002010000100005000302683216030309980b0009940009910004fc308204f8308203e0a00302010202100a86b904765831e240cc6211101f5736300d06092a864886f70d01010b0500305e310b300906035504061302555331153013060355040a130c446967694365727420496e6331193017060355040b13107777772e64696769636572742e636f6d311d301b0603550403131447656f5472757374205253412043412032303138301e170d3138303130343030303030305a170d3230303730393132303030305a3068310b3009060355040613025553311330110603550408130a43616c69666f726e69613111300f060355040713085061736164656e61311b3019060355040a13124f70656e5820546563686e6f6c6f676965733114301206035504030c0b2a2e6f70656e782e6e657430820122300d06092a864886f70d01010105000382010f003082010a0282010100bf0efabfe55538e687d4db8f8d615ab1d5dce14702307ca21c0547cd2cc43e455627b4d8decd8015296c19127d29025fbac71f2fc1af1bfe525ed0c2778028a3e7dd643b60842801d9d196651924057827c4d3ce6ae62253b869f384d56a72060055e3537a67a9904e61a4628067f07c680a8bf30c14444d090910c182ea3c5e473b1ab1233838645b0bdfb24265ee32e3521b4bdbae6d79acdbdd7a00c0f00479537079fd352aade5e8394be2f2b397366cfd64bb94b1b96515b4e78d3a2fac04e9d5787792fcf411b6b66cb5dfbc4cb023d93fa99cee630d8ed3558b33e0f2a019ecc5eac16919c48a844f693b5e7ccb4eb84724ab963979c570eb7a3b58ad0203010001a38201a6308201a2301f0603551d230418301680149058ffb09c75a8515477b1edf2a34316389e6cc5301d0603551d0e04160414e03952aaaeb23c67e939ec6022188686bcb314c430210603551d11041a3018820b2a2e6f70656e782e6e657482096f70656e782e6e6574300e0603551d0f0101ff0404030205a0301d0603551d250416301406082b0601050507030106082b06010505070302303e0603551d1f043730353033a031a02f862d687474703a2f2f6364702e67656f74727573742e636f6d2f47656f54727573745253414341323031382e63726c304c0603551d2004453043303706096086480186fd6c0101302a302806082b06010505070201161c68747470733a2f2f7777772e64696769636572742e636f6d2f4350533008060667810c010202307506082b0601050507010104693067302606082b06010505073001861a687474703a2f2f7374617475732e67656f74727573742e636f6d303d06082b060105050730028631687474703a2f2f636163657274732e67656f74727573742e636f6d2f47656f54727573745253414341323031382e63727430090603551d1304023000300d06092a864886f70d01010b0500038201010045a0d33fa95d251c861518096f2ffe89bae2e062cfc4505859b42adeaa775fcf34c2eebde155cfb6449a806abffbaad2e88d77b1397e76ea08265dbc2aa98cb04e3d141c27ed629961d9cd90bb7f6db672408bb15126dd4df4cdf831465c1ee9f321505ace6e7c09d864683fbbaa8ee9fc73e74feefaa5a027067856000f56c9ae39bcb3cc586928429bd8abe5d2a3d8df5c63b4db45fa2cc3ffa6f75b946188019e162fb8dfacf2be3064bf52788378e61c8397ec13e72649fbe15e5c5b6d8bae43ca7b188eda5a41e512f508206fefe96a832ce4676a425ddd06e3cfe93046140818a7359723f2477315f38ab51f83c9dced627efaf6541ed3e9c0767376b200048f3082048b30820373a0"
data, err := hex.DecodeString(packet)
if err != nil {
b.Fatal(err)
}
p := gopacket.NewPacket(data, layers.LayerTypeEthernet, gopacket.Default)
b.ReportAllocs()
b.ResetTimer()
for n := 0; n < b.N; n++ {
hello := GetServerHello(p)
if hello == nil {
b.Fatal("hello should not be nil")
}
}
}
func BenchmarkGetServerHelloBasic(b *testing.B) {
packet := "f018982a38be48d343aac4b80800450005b4447b00007906ea20225f7893c0a8b20d01bbefca6011d3eb8013192d801000f087ae00000101080a79facb3a56d9798616030300640200006003035e5bea4420be035069306e15e36eca187d56a201e8e96f0a1afeeb529413fba020746572b9b8832a5b8f236ba51743281c20e923a880067e4c38a754f53f3a8743c02f00001800170000ff01000100000b0002010000100005000302683216030309980b0009940009910004fc308204f8308203e0a00302010202100a86b904765831e240cc6211101f5736300d06092a864886f70d01010b0500305e310b300906035504061302555331153013060355040a130c446967694365727420496e6331193017060355040b13107777772e64696769636572742e636f6d311d301b0603550403131447656f5472757374205253412043412032303138301e170d3138303130343030303030305a170d3230303730393132303030305a3068310b3009060355040613025553311330110603550408130a43616c69666f726e69613111300f060355040713085061736164656e61311b3019060355040a13124f70656e5820546563686e6f6c6f676965733114301206035504030c0b2a2e6f70656e782e6e657430820122300d06092a864886f70d01010105000382010f003082010a0282010100bf0efabfe55538e687d4db8f8d615ab1d5dce14702307ca21c0547cd2cc43e455627b4d8decd8015296c19127d29025fbac71f2fc1af1bfe525ed0c2778028a3e7dd643b60842801d9d196651924057827c4d3ce6ae62253b869f384d56a72060055e3537a67a9904e61a4628067f07c680a8bf30c14444d090910c182ea3c5e473b1ab1233838645b0bdfb24265ee32e3521b4bdbae6d79acdbdd7a00c0f00479537079fd352aade5e8394be2f2b397366cfd64bb94b1b96515b4e78d3a2fac04e9d5787792fcf411b6b66cb5dfbc4cb023d93fa99cee630d8ed3558b33e0f2a019ecc5eac16919c48a844f693b5e7ccb4eb84724ab963979c570eb7a3b58ad0203010001a38201a6308201a2301f0603551d230418301680149058ffb09c75a8515477b1edf2a34316389e6cc5301d0603551d0e04160414e03952aaaeb23c67e939ec6022188686bcb314c430210603551d11041a3018820b2a2e6f70656e782e6e657482096f70656e782e6e6574300e0603551d0f0101ff0404030205a0301d0603551d250416301406082b0601050507030106082b06010505070302303e0603551d1f043730353033a031a02f862d687474703a2f2f6364702e67656f74727573742e636f6d2f47656f54727573745253414341323031382e63726c304c0603551d2004453043303706096086480186fd6c0101302a302806082b06010505070201161c68747470733a2f2f7777772e64696769636572742e636f6d2f4350533008060667810c010202307506082b0601050507010104693067302606082b06010505073001861a687474703a2f2f7374617475732e67656f74727573742e636f6d303d06082b060105050730028631687474703a2f2f636163657274732e67656f74727573742e636f6d2f47656f54727573745253414341323031382e63727430090603551d1304023000300d06092a864886f70d01010b0500038201010045a0d33fa95d251c861518096f2ffe89bae2e062cfc4505859b42adeaa775fcf34c2eebde155cfb6449a806abffbaad2e88d77b1397e76ea08265dbc2aa98cb04e3d141c27ed629961d9cd90bb7f6db672408bb15126dd4df4cdf831465c1ee9f321505ace6e7c09d864683fbbaa8ee9fc73e74feefaa5a027067856000f56c9ae39bcb3cc586928429bd8abe5d2a3d8df5c63b4db45fa2cc3ffa6f75b946188019e162fb8dfacf2be3064bf52788378e61c8397ec13e72649fbe15e5c5b6d8bae43ca7b188eda5a41e512f508206fefe96a832ce4676a425ddd06e3cfe93046140818a7359723f2477315f38ab51f83c9dced627efaf6541ed3e9c0767376b200048f3082048b30820373a0"
data, err := hex.DecodeString(packet)
if err != nil {
b.Fatal(err)
}
p := gopacket.NewPacket(data, layers.LayerTypeEthernet, gopacket.Default)
b.ReportAllocs()
b.ResetTimer()
for n := 0; n < b.N; n++ {
hello := GetServerHelloBasic(p)
if hello == nil {
b.Fatal("hello should not be nil")
}
}
}