From 570c93e6163cac6d91ca1a54b852404c87edb9b4 Mon Sep 17 00:00:00 2001 From: luwenpeng Date: Wed, 22 May 2024 18:15:08 +0800 Subject: [PATCH] Add test case: inject IPv4 based (TCP payload & TCP FIN & TCP RST) packet after recv C2S first payload --- src/stellar/inject.cpp | 8 +- test/CMakeLists.txt | 4 + ...d_fin_rst_after_recv_c2s_first_payload.cpp | 70 ++++++++++++++++++ test/packet_injector.cpp | 21 +++++- .../raw/fw.pcap | Bin 0 -> 7908 bytes .../raw/virtio_dign_c.pcap | Bin 0 -> 966 bytes .../raw/virtio_dign_s.pcap | Bin 0 -> 426 bytes ...ct-192.0.2.110:80-192.0.2.213:37296-1.pcap | Bin 0 -> 138 bytes ...ct-192.0.2.110:80-192.0.2.213:37296-2.pcap | Bin 0 -> 101 bytes ...ct-192.0.2.110:80-192.0.2.213:37296-3.pcap | Bin 0 -> 94 bytes ...ct-192.0.2.110:80-192.0.2.213:37296-4.pcap | Bin 0 -> 94 bytes ...ct-192.0.2.213:37296-192.0.2.110:80-5.pcap | Bin 0 -> 94 bytes ...ct-192.0.2.213:37296-192.0.2.110:80-6.pcap | Bin 0 -> 94 bytes .../test/input.pcap | Bin 0 -> 2484 bytes 14 files changed, 98 insertions(+), 5 deletions(-) create mode 100644 test/gtest_inject_tcp_payload_fin_rst_after_recv_c2s_first_payload.cpp create mode 100644 test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/raw/fw.pcap create mode 100644 test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/raw/virtio_dign_c.pcap create mode 100644 test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/raw/virtio_dign_s.pcap create mode 100644 test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/test/expect-192.0.2.110:80-192.0.2.213:37296-1.pcap create mode 100644 test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/test/expect-192.0.2.110:80-192.0.2.213:37296-2.pcap create mode 100644 test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/test/expect-192.0.2.110:80-192.0.2.213:37296-3.pcap create mode 100644 test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/test/expect-192.0.2.110:80-192.0.2.213:37296-4.pcap create mode 100644 test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/test/expect-192.0.2.213:37296-192.0.2.110:80-5.pcap create mode 100644 test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/test/expect-192.0.2.213:37296-192.0.2.110:80-6.pcap create mode 100644 test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/test/input.pcap diff --git a/src/stellar/inject.cpp b/src/stellar/inject.cpp index a163ceb..b04edd9 100644 --- a/src/stellar/inject.cpp +++ b/src/stellar/inject.cpp @@ -165,7 +165,7 @@ static void update_ip6_hdr(struct ip6_hdr *ip6hdr, int trim) ipv6_hdr_set_payload_len(ip6hdr, len - trim); } -static inline void calc_tcp_seq_ack(const struct session *sess, enum flow_direction inject_dir, uint32_t *seq, uint32_t *ack, uint16_t len) +static inline void calc_tcp_seq_ack(const struct session *sess, enum flow_direction inject_dir, uint32_t *seq, uint32_t *ack, uint8_t flags, uint16_t len) { /* * +--------+ current packet +---------+ C2S RST +--------+ @@ -196,6 +196,8 @@ static inline void calc_tcp_seq_ack(const struct session *sess, enum flow_direct *ack = tcp_curr_half->ack; tcp_curr_half->inject_inc_seq_offset += len; + // inject RST packer after FIN packer, seq should be increased by 1 + tcp_curr_half->inject_inc_seq_offset += (flags & TH_FIN) ? 1 : 0; } else { @@ -203,6 +205,8 @@ static inline void calc_tcp_seq_ack(const struct session *sess, enum flow_direct *ack = uint32_add(tcp_curr_half->seq, tcp_curr_half->len + (tcp_curr_half->flags & TH_SYN ? 1 : 0)); tcp_curr_half->inject_inc_ack_offset += len; + // inject RST packer after FIN packer, ack should be increased by 1 + tcp_curr_half->inject_inc_ack_offset += (flags & TH_FIN) ? 1 : 0; } } @@ -416,7 +420,7 @@ int inject_tcp_packet(const struct session *sess, enum flow_direction inject_dir uint32_t tcp_seq = 0; uint32_t tcp_ack = 0; char buff[4096] = {0}; - calc_tcp_seq_ack(sess, inject_dir, &tcp_seq, &tcp_ack, len); + calc_tcp_seq_ack(sess, inject_dir, &tcp_seq, &tcp_ack, tcp_flags, len); calc_tcp_fingerprint(&finger); int pkt_len = build_tcp_packet(pkt, finger.ipid, finger.ttl, tcp_seq, tcp_ack, tcp_flags, finger.win, payload, len, buff, sizeof(buff)); diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index ab62983..73afe23 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -20,6 +20,9 @@ target_link_libraries(gtest_inject_tcp_payload_after_recv_c2s_first_payload libp add_executable(gtest_inject_tcp_payload_after_recv_s2c_first_payload gtest_inject_tcp_payload_after_recv_s2c_first_payload.cpp) target_link_libraries(gtest_inject_tcp_payload_after_recv_s2c_first_payload libpacket_injector) +add_executable(gtest_inject_tcp_payload_fin_rst_after_recv_c2s_first_payload gtest_inject_tcp_payload_fin_rst_after_recv_c2s_first_payload.cpp) +target_link_libraries(gtest_inject_tcp_payload_fin_rst_after_recv_c2s_first_payload libpacket_injector) + include(GoogleTest) gtest_discover_tests(gtest_inject_tcp_rst_after_recv_syn_ack) gtest_discover_tests(gtest_inject_tcp_rst_after_recv_sub_ack) @@ -27,6 +30,7 @@ gtest_discover_tests(gtest_inject_tcp_rst_after_recv_c2s_first_payload) gtest_discover_tests(gtest_inject_tcp_rst_after_recv_s2c_first_payload) gtest_discover_tests(gtest_inject_tcp_payload_after_recv_c2s_first_payload) gtest_discover_tests(gtest_inject_tcp_payload_after_recv_s2c_first_payload) +gtest_discover_tests(gtest_inject_tcp_payload_fin_rst_after_recv_c2s_first_payload) add_executable(packet_injector packet_injector.cpp) target_link_libraries(packet_injector core gtest) diff --git a/test/gtest_inject_tcp_payload_fin_rst_after_recv_c2s_first_payload.cpp b/test/gtest_inject_tcp_payload_fin_rst_after_recv_c2s_first_payload.cpp new file mode 100644 index 0000000..351d1cc --- /dev/null +++ b/test/gtest_inject_tcp_payload_fin_rst_after_recv_c2s_first_payload.cpp @@ -0,0 +1,70 @@ +#include + +#include "packet_injector_test_frame.h" + +TEST(INJECT_IPV4_BASED_TCP_PAYLOAD_FIN_RST, AFTER_RECV_C2S_FIRST_PAYLOAD) +{ + char current_dir[1024] = {0}; + char work_dir[2048] = {0}; + char input_dir[2048] = {0}; + getcwd(current_dir, sizeof(current_dir)); + snprintf(work_dir, sizeof(work_dir), "%s/%s", current_dir, "inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload"); + snprintf(input_dir, sizeof(input_dir), "%s/%s", current_dir, "pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/test/"); + + struct packet_injector_case test = { + // descriptor + .finish_clean_work_dir = 0, + .descriptor = "Inject IPv4 based TCP Payload & FIN & RST after receiving C2S first payload packet.", + .work_dir = work_dir, + + // prefix + .input_prefix = input_dir, + + // input pcap + .input_pcap = "input.pcap", + + // compare + .compares = { + { + .expect_pcap = "expect-192.0.2.110:80-192.0.2.213:37296-1.pcap", + .inject_pcap = "inject-192.0.2.110:80-192.0.2.213:37296-1.pcap", + }, + { + .expect_pcap = "expect-192.0.2.110:80-192.0.2.213:37296-2.pcap", + .inject_pcap = "inject-192.0.2.110:80-192.0.2.213:37296-2.pcap", + }, + { + .expect_pcap = "expect-192.0.2.110:80-192.0.2.213:37296-3.pcap", + .inject_pcap = "inject-192.0.2.110:80-192.0.2.213:37296-3.pcap", + }, + { + .expect_pcap = "expect-192.0.2.110:80-192.0.2.213:37296-4.pcap", + .inject_pcap = "inject-192.0.2.110:80-192.0.2.213:37296-4.pcap", + }, + { + .expect_pcap = "expect-192.0.2.213:37296-192.0.2.110:80-5.pcap", + .inject_pcap = "inject-192.0.2.213:37296-192.0.2.110:80-5.pcap", + }, + { + .expect_pcap = "expect-192.0.2.213:37296-192.0.2.110:80-6.pcap", + .inject_pcap = "inject-192.0.2.213:37296-192.0.2.110:80-6.pcap", + }, + { + .expect_pcap = NULL, + .inject_pcap = NULL, + }, + }, + + // packet injector command + .packet_injector_cmd = {"./packet_injector", "-t", "tcp-payload-fin-rst", "-c", "c2s-packet", "-n", "3"}, + .diff_skip_pattern = "-I frame.time -I frame.time_epoch -I ip.id -I ip.ttl -I ip.checksum -I tcp.checksum -I tcp.window_size", + }; + + packet_injector_test_frame_run(&test); +} + +int main(int argc, char **argv) +{ + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/test/packet_injector.cpp b/test/packet_injector.cpp index c2b5383..46c7eb9 100644 --- a/test/packet_injector.cpp +++ b/test/packet_injector.cpp @@ -32,8 +32,9 @@ enum inject_type INJECT_TYPE_TCP_RST = 1, INJECT_TYPE_TCP_FIN = 2, INJECT_TYPE_TCP_PAYLOAD = 3, - INJECT_TYPE_UDP_PAYLOAD = 4, - INJECT_TYPE_CTRL_MSG = 5, + INJECT_TYPE_TCP_PAYLOAD_FIN_RST = 4, + INJECT_TYPE_UDP_PAYLOAD = 5, + INJECT_TYPE_CTRL_MSG = 6, }; struct inject_rule @@ -57,7 +58,7 @@ static void usage(char *cmd) printf(" -h Host IP address\n"); printf(" -p Port number\n"); printf(" -t Type of manipulation\n"); - printf(" Options: tcp-rst, tcp-fin, tcp-payload, udp-payload, ctrl-msg\n"); + printf(" Options: tcp-rst, tcp-fin, tcp-payload, tcp-payload-fin-rst, udp-payload, ctrl-msg\n"); printf(" -c Condition for manipulation\n"); printf(" Options: c2s-packet, s2c-packet\n"); printf(" -n Number of packets received before injecting action\n\n"); @@ -138,6 +139,10 @@ static int packet_injector_on_init(int argc, char **argv, struct inject_rule *ru { rule->inject_type = INJECT_TYPE_TCP_PAYLOAD; } + else if (strcmp(type, "tcp-payload-fin-rst") == 0) + { + rule->inject_type = INJECT_TYPE_TCP_PAYLOAD_FIN_RST; + } else if (strcmp(type, "udp-payload") == 0) { rule->inject_type = INJECT_TYPE_UDP_PAYLOAD; @@ -245,6 +250,16 @@ static void packet_injector_on_msg(struct session *sess, int topic_id, const voi EXPECT_TRUE(stellar_inject_tcp_rst(sess, FLOW_DIRECTION_C2S) > 0); // inject RST to server session_set_discard(sess); break; + case INJECT_TYPE_TCP_PAYLOAD_FIN_RST: + snprintf(buffer, sizeof(buffer), "HTTP/1.1 200 OK\r\nContent-Length: %d\r\n\r\n%s", 5 + 5 + 2, "Hello"); + EXPECT_TRUE(stellar_inject_payload(sess, FLOW_DIRECTION_S2C, buffer, strlen(buffer)) > 0); // inject payload to client + EXPECT_TRUE(stellar_inject_payload(sess, FLOW_DIRECTION_S2C, "World\r\n", 7) > 0); // inject payload to client + EXPECT_TRUE(stellar_inject_tcp_fin(sess, FLOW_DIRECTION_S2C) > 0); // inject FIN to client + EXPECT_TRUE(stellar_inject_tcp_rst(sess, FLOW_DIRECTION_S2C) > 0); // inject RST to client + EXPECT_TRUE(stellar_inject_tcp_fin(sess, FLOW_DIRECTION_C2S) > 0); // inject FIN to server + EXPECT_TRUE(stellar_inject_tcp_rst(sess, FLOW_DIRECTION_C2S) > 0); // inject RST to server + session_set_discard(sess); + break; case INJECT_TYPE_UDP_PAYLOAD: EXPECT_TRUE(stellar_inject_payload(sess, FLOW_DIRECTION_C2S, "Hello Server", 12) > 0); EXPECT_TRUE(stellar_inject_payload(sess, FLOW_DIRECTION_S2C, "Hello Client", 12) > 0); diff --git a/test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/raw/fw.pcap b/test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/raw/fw.pcap new file mode 100644 index 0000000000000000000000000000000000000000..fa2d84d679a49367cf0e885e730f4861b7e24e96 GIT binary patch literal 7908 zcmeI1e{2(F7{}jj-8rgdOo_-6lS}-Eu=RG=_17*Kib^Cfw8l9SQJP!t?Rs##Uhb~@ z5eQKrI>2CtfTD>ZsEPgoL12l0kf?u{xIc(l2qY@e0RAI_5#5r-O!RrKy;9oC07K_6 zZT9T$-rk-**U$TXpXYh!_4&MULde=>EzLD>{5$`uBh92!(XxYVh!Y~55b_HgRioTs zG@J+r3Gt8zNS~q0**=}^7dRgNl%OB<;T&;n9*oR`V=erqni)>dh1u*otabx%CM>o6r6EGGhu1+||IPrBOK8DD;yh#k? zd_A+}e#t!2efp-@I-(ex?aT4u_;mHv-s!`*jLq}CYmQ=EO{8C@{r-N%u#`+9Yf^)^ zqqq^_S_POXM>w9D_%6_zoE%)?h2EXACQ$ zXuSqCO|diJhS<>&2n8a6P{fX_g_w%Ws)}ie>)Uz$ zWp@1x2G0>CvSOe=no6jOwkhx3GNe>WNfw5}p-_9szDcLluy3j%FWH}ENCRw|O0pPf zWi3fj#c(T|lyoVnSVK6L%o+)ZNfbag@DPe@imox?`w(s+Xk?3wCyE&BBd=AAF-|RH zjK>_~!^HRx83#H7k@iS1C?h_3r< zhbzYTwsbv!+X~c68jlVdvB*Foss91%&CR-?`{o`Gp4aa2pp$d!@d^!Ip^I~E^`Oto z@h`3QxzSxyj{^&|vU$+<@#YwLk@;g@$vl|M%>z$(^>#wmWeim==)0J)US%wcu6=yv z7&|?Daou;~;;yMMus|zgyyVQe7@^Fm(GtefHsdBw`!)^!%wD^T*`{Hvs$aJ~n#!?t z>b_#O%dX7C_J@fWk(uLfm$3cIX1ma{eOq&t?Vaqu%`V$(jk^oFEvxgET>d>q(#+w5 zz_zSki#OGucy;)W*xqU{^&ZN*|88$}cG+%PJQLfIh8TH{d1yxo+XL8(#}|5-?e=y) z_TRU)CRf>3tfq2XlUuCaGxg$E?EdVn61LO8b`tkl=1)Urt?skTf&YiNv0b!vMz&XN UwtHRJPTOoJt88I)o+E7k0enBvJ^%m! literal 0 HcmV?d00001 diff --git a/test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/raw/virtio_dign_c.pcap b/test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/raw/virtio_dign_c.pcap new file mode 100644 index 0000000000000000000000000000000000000000..fca4cd41dc70428ac741b4ca21068f3fdbdbc065 GIT binary patch literal 966 zcmca|c+)~A1{MYcU}0bcay)nYrn$`GWbgvALHN~-)J;-r*$(oG`L=K{xH2%A;*8A9Tp*K= zu1A;*F%x1w#AF5rkjYysK&FCBX9$?Mp+oZD383jy7YP09cvOurd8W>e#~{;TCf^5| z>;$w4gfZM~a`6?|%~L_9f=q|Hc`DHKlMMn4_Wb=oH!_0Vdmdym$gO{YCawgU2ErI7 z&c65>Y@#k!6D1hz?>|H}(cLvfL0`cmBqTuJP|uK;%Ok(I#7ZHfq@+MEDKVwEI7hEI zH7BhkwYWqtJteP1H#sN2G)1pGHK{nWB$bydv^cd$*D*ac52z`*v?xd4T+hr*&w!W9 zF*!N404S)Xuf@y73l8M$4V(-~Ku3cxMj(eg+~dID#ddNrC>TJFhX(RVU?Beq5MW($ z`8ERs%$W*C1_lcL-n?AS`FSNkyLEk1^U_N)tP~85K$dx==H%pqf+`b2+uFdNr5=O7HAlrn0x~c_sMAC{s$P7UqLa+_XjoH zLC&kkZ{l09iIcFH_y=s_S4LT5B~vsSdhiIDG!p* dTJV~3?~4ON3frdXXr}xHnA;*8A9Tp*J> zkxYh|2{9jHG6Mt1MJ%2yYjf`OTo(Gu>a%(%#L^GgiAdF$6 y#;Z>b3>j>TW@0ljK#+BFV+SNGJMo$_k;8!@kWIJ+&6H^%cLj*Bur(VpFaQ7}f`woJ literal 0 HcmV?d00001 diff --git a/test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/test/expect-192.0.2.110:80-192.0.2.213:37296-1.pcap b/test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/test/expect-192.0.2.110:80-192.0.2.213:37296-1.pcap new file mode 100644 index 0000000000000000000000000000000000000000..d6f1aa0ef25f11a0032e2ce7663e484408f59484 GIT binary patch literal 138 zcmca|c+)~A1{MYcU}0bcay)nYre$y7WJm(CL743zub6Mks~M@Aq}FmUxH2$=Jlx~J z;Kg=w@c{;=JRrWx5HN8=hvdJLQ*M3z6Cl9429J=C0DVI}Lj@xP0|kF?UM}bS dypq(s5?!Cvy!4U`D+NO%UM^lPkJOx;d;lYkD2o69 literal 0 HcmV?d00001 diff --git a/test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/test/expect-192.0.2.110:80-192.0.2.213:37296-2.pcap b/test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/test/expect-192.0.2.110:80-192.0.2.213:37296-2.pcap new file mode 100644 index 0000000000000000000000000000000000000000..58a87f60dd3de413ca78ba409a600685408e5049 GIT binary patch literal 101 zcmca|c+)~A1{MYcU}0bcay)nYrsZ$oWUvLYL743zub6Mks~M@Aq}FmUxH2&4uc&rl sh+_N9d4Pc_4~VZa1Weq}A^Gp?lv`i_1PHL0c{MXIgy$FKr0{Y90Kgg?b^rhX literal 0 HcmV?d00001 diff --git a/test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/test/expect-192.0.2.110:80-192.0.2.213:37296-3.pcap b/test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/test/expect-192.0.2.110:80-192.0.2.213:37296-3.pcap new file mode 100644 index 0000000000000000000000000000000000000000..c02095a0fb202761244956257046cc74b8b2a483 GIT binary patch literal 94 zcmca|c+)~A1{MYcU}0bcay)nYrZsKgWH1A=L743zub6Mks~M@Aq}FmUxH2$kT)yVO lkjl1a>j4I)JRrWx5HN8=hvdIMQ*M3z6ClW9+?2<_001BQ8-oA< literal 0 HcmV?d00001 diff --git a/test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/test/expect-192.0.2.110:80-192.0.2.213:37296-4.pcap b/test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/test/expect-192.0.2.110:80-192.0.2.213:37296-4.pcap new file mode 100644 index 0000000000000000000000000000000000000000..e4056ffb69fdb5c4e2788c5976e09074770a14bf GIT binary patch literal 94 zcmca|c+)~A1{MYcU}0bcay)nYrnPL~WH1A=L743zub6Mks~M@Aq}FmUxH2$k-239d lkixcU`T+)}JRrWx5HN8=hvdJ%Q*M3z6ClFU+$6=o001H=8-)M> literal 0 HcmV?d00001 diff --git a/test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/test/expect-192.0.2.213:37296-192.0.2.110:80-5.pcap b/test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/test/expect-192.0.2.213:37296-192.0.2.110:80-5.pcap new file mode 100644 index 0000000000000000000000000000000000000000..6eb7f4e58c1894a8590d9a7130798961604dc086 GIT binary patch literal 94 zcmca|c+)~A1{MYcU}0bcay)nYrnPV2WH1A=LHN~-)J;-r*$(oG`L=K{xH2$ky!zz8 lkioWS<^cw#t3aGLaRWoZlv`h?c1Zp^86e2Ixv_(R0RS$t8;Ae^ literal 0 HcmV?d00001 diff --git a/test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/test/expect-192.0.2.213:37296-192.0.2.110:80-6.pcap b/test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/test/expect-192.0.2.213:37296-192.0.2.110:80-6.pcap new file mode 100644 index 0000000000000000000000000000000000000000..76b619dba6f5f430c6546f99f4a4edb34600e861 GIT binary patch literal 94 zcmca|c+)~A1{MYcU}0bcay)nYrgd)MWH1A=LHN~-)J;-r*$(oG`L=K{xH2$kOyqE2 k2xJp(Il#bl6^QdDZeR$Qa_j4~4#|Hf14LNZnhhBk0O(*CjQ{`u literal 0 HcmV?d00001 diff --git a/test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/test/input.pcap b/test/pcap/inject_ipv4_based_tcp_payload_fin_rst_after_recv_c2s_first_payload/test/input.pcap new file mode 100644 index 0000000000000000000000000000000000000000..4d26eddddabca7698179008b6a281c3cd32a5d39 GIT binary patch literal 2484 zcmeH|J!lj`6oB6)F`C1}XyH$)1v_)M*}dFfmOv6oP(&d`to&IvyR*sQW^dV<%MUgd zg0WEo3HZ~bv9J(=Bw(i&f>x433lT(PV?@wG2o~yldv{69omPShF1&j)@7}z5GvB&dg;1nqVi4g@IEV3zTtP z)o>_K9E#Cj(WsyWEiI@U@R#`_=W2dH&by!$0-L8a{EW=7p=sq9)v;AwH-_#9di@w= zUZ1}g+msJ|8+kN?6FBFL^p+gD3Y0@Mz8C#}zK+WHP8z=(#vL}E8t0+pMYAMW7;OZO zujXIXXsXQt_px4#D2YumlGv_Y$9C{tQ#0KO3Jv7bjPe#8x1qlEXnEhK51F-N*d|%M z#_qP=X?~d4d*b2_7y#&Ae%A}V%_~e`Wy&XJ34tMQ50A`10}oKBU&PZLz6g zM|^1__k`@R#>P0YY(k;=$~p!!ASaVbPz zF=mNU$i|p2O*s`XqY(MnGW3Q^E_npjlvlJIv*@~lNwP$HObvmP@S<;WhkB!y7{&b$ zjjpbAHl0sr^OP;LgW!(haUqRUotkz=IrR%c{{lEXqxIpRy4D|I}FoS$51g`Qnk zkzOpS;itqHiEpakpR)a5zrVeHi7C}@KVF{IJG$-c<+a;rBdK9~bNPM5HdUAHe&~7i z`bV}$28NUl<>=7RV27^iiTKeX-h9falz}>IIYM}