From 22f7ddb3615b786f129c5efe91db668f87d8395f Mon Sep 17 00:00:00 2001 From: luwenpeng Date: Wed, 22 May 2024 14:05:36 +0800 Subject: [PATCH] Add test case: inject IPv4 based TCP payload packet after recv S2C first payload --- test/CMakeLists.txt | 4 ++ test/README.md | 3 +- ...p_payload_after_recv_s2c_first_payload.cpp | 62 ++++++++++++++++++ .../raw/fw.pcap | Bin 0 -> 9800 bytes .../raw/virtio_dign_c.pcap | Bin 0 -> 978 bytes .../raw/virtio_dign_s.pcap | Bin 0 -> 1508 bytes ...ct-192.0.2.110:80-192.0.2.213:48322-1.pcap | Bin 0 -> 138 bytes ...ct-192.0.2.110:80-192.0.2.213:48322-2.pcap | Bin 0 -> 101 bytes ...ct-192.0.2.110:80-192.0.2.213:48322-3.pcap | Bin 0 -> 94 bytes ...ct-192.0.2.213:48322-192.0.2.110:80-4.pcap | Bin 0 -> 94 bytes .../test/input.pcap | Bin 0 -> 4240 bytes 11 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 test/gtest_inject_tcp_payload_after_recv_s2c_first_payload.cpp create mode 100644 test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/raw/fw.pcap create mode 100644 test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/raw/virtio_dign_c.pcap create mode 100644 test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/raw/virtio_dign_s.pcap create mode 100644 test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/expect-192.0.2.110:80-192.0.2.213:48322-1.pcap create mode 100644 test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/expect-192.0.2.110:80-192.0.2.213:48322-2.pcap create mode 100644 test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/expect-192.0.2.110:80-192.0.2.213:48322-3.pcap create mode 100644 test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/expect-192.0.2.213:48322-192.0.2.110:80-4.pcap create mode 100644 test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/input.pcap diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 11bbc2b..ab62983 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -17,12 +17,16 @@ target_link_libraries(gtest_inject_tcp_rst_after_recv_s2c_first_payload libpacke add_executable(gtest_inject_tcp_payload_after_recv_c2s_first_payload gtest_inject_tcp_payload_after_recv_c2s_first_payload.cpp) target_link_libraries(gtest_inject_tcp_payload_after_recv_c2s_first_payload libpacket_injector) +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) + include(GoogleTest) gtest_discover_tests(gtest_inject_tcp_rst_after_recv_syn_ack) gtest_discover_tests(gtest_inject_tcp_rst_after_recv_sub_ack) 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) add_executable(packet_injector packet_injector.cpp) target_link_libraries(packet_injector core gtest) diff --git a/test/README.md b/test/README.md index c12fbb9..2e2080d 100644 --- a/test/README.md +++ b/test/README.md @@ -40,4 +40,5 @@ curl -v http://http.badssl.selftest.gdnt-cloud.website --resolve "http.badssl.se | tcp-rst | c2s-packet | 2 | After recv Sub-ACK | Success | | tcp-rst | c2s-packet | 3 | After recv C2S First-Payload | Success | | tcp-rst | s2c-packet | 3 | After recv S2C First-payload | Success | -| tcp-payload | c2s-packet | 3 | After recv C2S First-Payload | Success | \ No newline at end of file +| tcp-payload | c2s-packet | 3 | After recv C2S First-Payload | Success | +| tcp-payload | s2c-packet | 3 | After recv S2C First-payload | Success | \ No newline at end of file diff --git a/test/gtest_inject_tcp_payload_after_recv_s2c_first_payload.cpp b/test/gtest_inject_tcp_payload_after_recv_s2c_first_payload.cpp new file mode 100644 index 0000000..b35a9c0 --- /dev/null +++ b/test/gtest_inject_tcp_payload_after_recv_s2c_first_payload.cpp @@ -0,0 +1,62 @@ +#include + +#include "packet_injector_test_frame.h" + +TEST(INJECT_IPV4_BASED_TCP_PAYLOAD, AFTER_RECV_S2C_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_after_recv_s2c_first_payload"); + snprintf(input_dir, sizeof(input_dir), "%s/%s", current_dir, "pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/"); + + struct packet_injector_case test = { + // descriptor + .finish_clean_work_dir = 0, + .descriptor = "Inject IPv4 based TCP Payload after receiving S2C 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:48322-1.pcap", + .inject_pcap = "inject-192.0.2.110:80-192.0.2.213:48322-1.pcap", + }, + { + .expect_pcap = "expect-192.0.2.110:80-192.0.2.213:48322-2.pcap", + .inject_pcap = "inject-192.0.2.110:80-192.0.2.213:48322-2.pcap", + }, + { + .expect_pcap = "expect-192.0.2.110:80-192.0.2.213:48322-3.pcap", + .inject_pcap = "inject-192.0.2.110:80-192.0.2.213:48322-3.pcap", + }, + { + .expect_pcap = "expect-192.0.2.213:48322-192.0.2.110:80-4.pcap", + .inject_pcap = "inject-192.0.2.213:48322-192.0.2.110:80-4.pcap", + }, + { + .expect_pcap = NULL, + .inject_pcap = NULL, + }, + }, + + // packet injector command + .packet_injector_cmd = {"./packet_injector", "-t", "tcp-payload", "-c", "s2c-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/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/raw/fw.pcap b/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/raw/fw.pcap new file mode 100644 index 0000000000000000000000000000000000000000..940faa505ed942c829c2df3db01576c302dedd77 GIT binary patch literal 9800 zcmeHNZD<_F86JIIolDP=UB?Ngf$9CJBWv$=?^9mi$%|tMclSQl zx=rjBOO+d)7 zp1lasZ0(4g^4oU*lea4Fb1Q7^9>cbIw%Rs&`ucrB`k`;0t+a2;Il4J|-zl`Ug)}wR z6q>rjb*tQPnIl4Z{I%`0ubAhxEocwM9mnm|^FMj;Z_t4-d(sMfV_@g1zQS`q`3fN2)(danG4jL3e}4<^F}?dNdtt|Ok;T~d>8Cc4 z{e%=IU!Nco5$BKRNdHAh=9wijGjt%k2MUuD{U2SqBtwmZLoW^XZ;HOOXX*^*_YDk0 zu^oeuu)aYu0M{q+4f#3Y^P|+Z9A4JVn!{XIPPd*}>oGM-b+-&%P#valCX1tVmMLz- zVYAHSWxilDdCV)La>uANs#wBS77R<#%2u`NGLAXk_~VTWmFSjP)-`;pD{dXIabzi% z-pLn4c$D_vd$f)TGiD~RxX=O zXT3r;V~$s-k38np^D#b2oc|%lsokl3I-kji*<320&xjI?YZ&PN zPnaXtD|!9X=Wpv^?lanFx6f-rkk>EIBc~xvaLR{qzrp$==!stag3gTD^$829^ibY2-79w6RXh;%cwch$;H) z_X5}+OKiE}*ams*W4p0FueByaj1lX7{axMtzO!ZdcaVpvhsVE~T=aPSNGOl*BzyD6 zuIBN*`%5%Q50pwXNhu-4q6aKcvb4^*ov0|9>lz7{8CA|)o~UUi7gWP)Xo)#iadpmO z(T8BOBHU90eJ!K#G?Mv5E|(Bv(R);t*^oJs9En9^AnSYl#bwCb@E5D^FL3VQ94ZCo z&_{>2-n4Tl=$HICwBeW5+ArZ;!Z{Vx7r(x+wX+8G>>D!YccEYUR|&NR`li;t;c3`6 zoCJL_QC;%=Qftq!*y}GoS6{55mb}q%fc2;y!}P`Xp7`1g$2Q30&(#-ei0zkgpU~D9 z7}RUW^)6iAw#*>#hG`{_2M(PdMIOH=hVuAMGVxCHY96(74$vU4kx-Skgv&QQ(&89)p98_E`Ok0{>)tM&KQiFkQscTyT+q=Ph$F|8- z2*jE)J;InRD2CnyrL(`J)MOgZmT9U zidkc>Oe+f@p->1FzOnCtsnU05_JhWnHO8Zb_5~t(<55Zrvy3ZLtt$?MBa86{uL@)F z?h8|yWyN??XLA?|jZ@VhiDGCRg3W?KDf!M0){M8aF~{Wn|RV|Libz6whbn5tD)9~kk32c+Gefw zE!Vlh#;;RY7LtB(9FT6ME?+R1TW1V9-fFFvl~7&R@0|BIUa_1I#ciU*`nZ!e2nWeI!KFUJH8= z6F2I-V|}iL4_|%$0sZyPKVYJUoqu!=KRPEIp~oO_2IAw7^B{P>_2%W_7YL5yv%xq)%m8Q1Dz+&a`BA76p-Sr6lFgXgdO9X|8o8bNI9khg*D+G5+@vjnl-{LL=5J#n&~ z|9E+V$dOBb1#E-y?vt;MJauYj+t7>e!;0`9V0*2z=$ptlgWvow&Zbw7w_(_xxPN%JDvyAF9z|f7ejCJro2VvNre&h?W{ga37Ya!U4^|1Zf2DZT9 Hb%O0@+_dXO literal 0 HcmV?d00001 diff --git a/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/raw/virtio_dign_c.pcap b/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/raw/virtio_dign_c.pcap new file mode 100644 index 0000000000000000000000000000000000000000..6a73152746d06fa9eca1e044361f8bd967b7f58f GIT binary patch literal 978 zcmaKpL1@!p6vtn)ER;xKhz!{&2NCIL(vI3e*U>CxSkz$;5j_dE{n{y^8BNB#2nrt5 zUA#^3GTCW}moYcRE^9j6O%b%A8bA6fQSCW zLj*r+w->7E%_v;Ncgl~aY-{4B;7Q{P527#+kk$7!(1gaD7H}O*z1fE1XyN<}k=D82 z-7gscjvw9Txv023lW)>_WMo7n^3GnL954fZKn5W4t2;y`Iux7jx3T+=k)B;Y`R8F~ zyiZ>1zUvVEi2M=BI!>a5oKt$scWx1t=so8w(pT?|L9P}<$B6Ii5t&?nB5@OGlo0Wm z?)k*)Ly4y$H+}aw@xr_zt8&3GifU3xN@BsXos7KbI7>?DX2rHm#b##JVYZ{xDs?Ab zHm&7~vcgLCEr&_sRhu>9b2V1SpUTS(Q=L}QX(b_vbLBEy!o!#vlSIic`H|bNB2;qf zaFWD-8B_zw_ex&Hk~gplt=bO6dj)$`#l(ITN>~FWL^Qq|8svmeCx#J=WBiN!SAe6% z<*7tMzH&(t^H$x#ZQ_?%z2+=t6yc>%RcktcF<$DxUnm-hr>TH$>0%^`3VF65IPLo7QV@xA~z)&{bEkRe_t=eruaJ_R2Hf zWQ!_+)B~b_07zVldg1_w(jHI)O@io!D@8riTLq%x$N}-j-gIe`LoGeoGk)(g-}%mu zUw^v&Re{Wr=`%-Wu;G2!8GP_Vk-UZ9BA$E!w_pEeVP8Jcxn3megqSP$+oZjae7{Eu z4>6+M1Ja$}SZWH=&B8xV9~p!c=H~Cr6^hcG=IXBKpP8MN1eyPjoHKKNP9{W<@9qey zpp)+I!M)NapCR46`Rc!)8YiaY&!7JMP|y#_e@4XeS&}o8J1G3niX$f1AG|4q|J4&V2=Nn>Z=lJy(2DlpAQwI{cwboY3ld?L zWbq<#_R51rLHwh9Eb%01KOQ|#JT!q;%Vm1$ZCQF3k`W{Zjl3Y*5%!d|8a;KnpGG`A zElX=Q2ZLS#cac`Bv}2F4uv(|(no(ae>NR?y)03suIO6Dz+8YlsnZpj(eZCb=e_Vvf zQ zH0qAsSU#&(D>VfNv>hK*p(lw$oK&nb9w(TdFO~X^9eKbE+8^U;i#0RfSi7{^d%wGm z+hHqgN#@}TY_}y*YHk6yspH!T18ylPAE;-P>5s_X0!tYMusw_uu23g;!cw*am;06r zqrd?*Yb??r3V2|LDs$`*tV)gvgJ_c`5LycJ5#gkq21rq;pTNLUbkSh?z(!CUsR_6m zekgh-VOnbshaspuP90x8rudY&!}nGVYMI0WVc;KV0tvo6hH zET3G~Z1rPzOh2N1+u8JzIE`@8aUM;2&D8S*$<+PKZ&Re=BDleb2Ck({?95?)g=XoN zGC-GA7F@;6c4oBQ%zo3CJc;3k_O&AB97cYr+&ZN aCdR^}-(I+XZrv+g|F-+u{C9sA2>B1j!_r*< literal 0 HcmV?d00001 diff --git a/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/expect-192.0.2.110:80-192.0.2.213:48322-1.pcap b/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/expect-192.0.2.110:80-192.0.2.213:48322-1.pcap new file mode 100644 index 0000000000000000000000000000000000000000..21c89e37b55debe625706f02a545d5e92d03d3bb GIT binary patch literal 138 zcmca|c+)~A1{MYcU}0bca?-PW)1>xuFeCxlAk21cKES|~2gFwy0`?r*t<~7g>S4M#K!9bn^Bo2TkC2c6eM3D%1tS9k1%Gc|F6aEb clGMBsU7ysv^pXrK1w$iVE?zE=)SR4r00u`S82|tP literal 0 HcmV?d00001 diff --git a/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/expect-192.0.2.110:80-192.0.2.213:48322-2.pcap b/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/expect-192.0.2.110:80-192.0.2.213:48322-2.pcap new file mode 100644 index 0000000000000000000000000000000000000000..545646dbc8fdeb58392e8d9ff01dae69d615a979 GIT binary patch literal 101 zcmca|c+)~A1{MYcU}0bca?-PW)718JFxUdwAk21;?EnK)9uQw;2-tIIw^rkJRu9v~0Rk)scl>8y2+uFdN#W%J0IaVZ2mk;8 literal 0 HcmV?d00001 diff --git a/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/expect-192.0.2.110:80-192.0.2.213:48322-3.pcap b/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/expect-192.0.2.110:80-192.0.2.213:48322-3.pcap new file mode 100644 index 0000000000000000000000000000000000000000..98a214d803d645f085a2867f60f5c39d33dc4299 GIT binary patch literal 94 zcmca|c+)~A1{MYcU}0bca?-PW)AaXqFqi?^Ak21L#hRYzKM8d|NmeTp1WN9&L4C luwuJ$?EnMQRUppWbBG~;)x&i0ZmpJe0V1rM-!d^U008y`85sZo literal 0 HcmV?d00001 diff --git a/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/input.pcap b/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/input.pcap new file mode 100644 index 0000000000000000000000000000000000000000..b112e15524fc11ce7e2a9593c4d8c9007ab297da GIT binary patch literal 4240 zcmeHKO^6&t6t4ZrnlujiL1M_MoRe;*d%EXuC%rS9&1RPb&5}hYM2Rx=bXQLo+tb~2 z)y(cH0R=%Z;K7T69s-^`cre6+7%&?!XC(wY^}U{%olSNkdx)s84K=Up z^?R>g)mQb^8zq%emIxt>m19RoK>pc##>i1}mIv)sTGWgw%_ypd#{9CjS}xT~1wzKj z)=@h= zmOQMt1&fn~0RMjeeF>`VIlwv&i;*O;B}N9`x6k7-61a7}?yg{Hf;JP-egMNgAiuf# z?UR#lt^fKgykqN`_2T^#`jzsAKj~5n?7|N^&?|r3Sv194aXZNW2hzX5xJV7Q5efQ51KI(!p!&j ztk=zDC>M1|*^ZednW<-Ji&>%_vla_vU9LsUEGIU$jQvL2MT^K<^Fzz2hpsD_L`|~B z_#$8s9tL&pV9&FJ2kRf3MrrDJDW5ZPWz6ds5!|6Z7t*|#*Y#KE#lLA_UnUNZF&=a4 zJ`a|A(PeD8F1I&TrD8E(OpGGN;>2i#yqt^`TPxIKmSaw3sI<6mmNL|~BFpA-4Rv-q zu0u|y0s9^%!5v`^%?ZClx|>Pk>La!fV*KuB`#1U+chT)4-Nl#?#Q5`7#24BfvUL6C zmy>V212|W%9QxyJ^Y8%U_wRju2XWqxF^)YHBjXA&o+qQFD zn7e@($2SmP#JP8lD}eLm*AI{r%}GFSBss(Dh%q3(<@`Pr+uif~$j>igisyHJbimO+ z#|Jk)0Ufq&*nT*-o?!dpP;8Ho6H}M&$M*C>jb`bYT5Tz7Xhupo69V&5Ps&JZSdI|B zCYbL^CZyJM0;$@5*mkrP)(~8>lyV*}F!f{;_}E0E^0QM~sif&C<)m%12$YlA$&`|U zD`0mI{Y!TM?j77iTlwLm+lMy!VcQ*0xOEKo&@VOQ2HZ!zJK!?h0UrZD%(^$bd#K0% z>pR4Dm;3)Qe!v2*U&GzL`@{x=A`9Dt*p6Mel|gKO(uZPugv@^5xgXm;Gtiu_({sjb30*hURi~(OLt?T!HF&vrse(d3t)W zmQqfIfdtA>Ygocj$yR07lP!Pn;VcW9(lco>50rG)5>j0Z9qw}Gn6%br5Zf5UHX!zK z2)`LSU^W!jfk~Gci&V?!9bl@3n$PFI7F2v{&d8@>K+E=+iuuH$50eU2A;TEV zyZog-Zv{;zOxjoj3Pd8SJT-srRPCju1>ne*KciIo0xGx}h0;okNsHQ^6+`)1O}C}1 zmeYd|fz@KwbceGQEPd0|?yf{Ny}}*oRpGAzx0#xBpt23PYw*{(S*$Y4+**L)^C#$e*TY!j7c3(=ii(w%99&KiAF2J;M>m{-#-tg