From 1e00348e84549a52a1d88f4893f8ee6ace196cba Mon Sep 17 00:00:00 2001 From: aixiao Date: Fri, 7 Mar 2025 09:38:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- a.out | Bin 19336 -> 0 bytes cache.c | 2 ++ cap.c | 10 ++++++++-- 3 files changed, 10 insertions(+), 2 deletions(-) delete mode 100644 a.out diff --git a/a.out b/a.out deleted file mode 100644 index f6d47559104bd88ac226be39f2874e12fbb60b7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19336 zcmeHP4UkmDo$py#B?Q<-#Y6mH^cDdLvn(n>BVk}!cx$n+$AZzQ_n4h|yNvA4OlIC7 z7$`9d#&K&SF@EF}OU`&|?qY%;XMs^%l@m6xa*N~9>ywas(l}4keRxm zPG>)jT3;y7PtHhwc`V?eCu`XyT|Py4mJWk)FQuAi3O ze!8B`?6>_)71)gzQAZ(Z)aCsh{HQ(u+@y!c3NFv9|C+h|HFEK?O(+J9wI$0|iHgml zm+Iowp9GnjoAg_6zPmOyQ1hGlzZg9D$fOT$Sv2oJWo<{ab)9E1mZW8jhJoraF;@=LQt`m2< z0sMF|Nr(kXqvsuAHm+hFUu;VVdoo@tB#iLrL2-mFcjC z;dHXYv_h#3X1K!&#nK5;WKwq0N+#n;MYVUtTSFbgm_=hz+v#Q5@r08|Sjo0{vQwF) zI#5|Nlt@^yNJ(53<>Hp*%giN~-9Y6w+bCKx&7ow<;(TLjdFxeH7$r#6BCEr)i@Fv& z8I85G4uO`RQ$#_AA9<<{p*uNZ~^;ijkfa{RY)-30vqBwy{|`B6vm6CJ#MW*~*%!OQ1HB9W#AB?u~)+CryUL6sw({&bofR5{{w zTN4uu(oxx>!wSg=sw~-mv%unc$-$3t@RvGxeuS0U)ee4~!+wo}uX6AS2d|%jNWI>{ zk0*lD=Ag<@Jx^ec;D(?Qh(A$f<#Ah33B=R$k4`@isvPkXGzr`hR08oQtE@ae5L5#3 zf1|SUxHG5(;wP%CJnjlAf%sEYRvvqUN+5oc%F5&Zpc05bRb}O|FQ^3Koex+24&JX! zjvbG+z+X%Y7+vpT z4k1l>hGd$8^Lc%OjBlFNO=XxRU{7_0Wsxbl4**}XQjN5WSScDeNw)VWSSE5y;7b{GEIf~ol-uB zWSRo=JEVLT$u#xlw@G;t$u#BVH%s{hl4+{TC!{=@WSZjgtEF5)GEHsyW+{IjfJ{?b zJ}BjnNT#VQKTFEL!<&V+ZIETEd#^Eb;O~vhn?~26f##JBb-i`Z8$I(LK!XlVxF4n; zw*{&uZ;`gt|IqD5K%=MfVS)<=?Fkq@*Tay8&o_p$Rg*W9@w1Gu&q(|8e?&0-h>;mE zo_>G6@$}#b!}pwV;D~(^0<7WyqlU6=Rg)JL{r^;T#^;;oT?t>2p0Ud4nl~Dj!pOX3 zk1@LEoee%W9ler^;P71K`H+2AqU=KX`X4QTp z)6{EpH}n}*ziEKbFbJU+H~_?7Gp=TEzCNR;*{3M9)+Wd4x5_De)8DfSsDW@If; zo1(L??>Ur(sy#3Jz_{++)tEDk%##mbP#XKT_5!E|$nGy@`-<8AVm4dM=8D;YVs@~Y zrE8eujw)v9N@sRrF-!9Sv(t)Mnl+f6Tg(QFS)-V3E@m$+W>*)pYl_)KF}uEyZP=`e zYPf+>UZ}>thM%*%gYf~zos6>kjP6@ybN0yQG%^Q_o(V0O3ir?>GCEos<(~h7TD)P9 zJfEV8JNIp3GFx||+0g#Gxb>c*Njo>=b6j1AagbwdUqg=E3@)K(LJh+6`1 zC5reE*>>al=xH7S9OTpbZ*^LO`x;)JIu&K(66kJv83qH=O||K*FxuD9cY-qL?{4aI z8Q3s*r)FQnA!*WcE0x{dbjW43Oon-3#xfzgn_eI#dhjrM$5GTd(q{j7DyrvJ>a*^q z{jNC2Nt?ZA!KS-uFURS|P16zQ%|Us(19a+V!#>l{+qJ1z*fY8tdO@W?85y)@?ju2%V4?~7>85fn1e(sMG?0cLsQc{2Ph};vx*sD7^UOOm3HBqiZCjxx z{z6T;P=Rgs@hk>=VbuIsMMWj|ubzo2|H%3Rful^0E=uw%zc0~*GvbN)%4fo#*vVO^mUa8QpKtwseYgW{wa)W|LQn zCRvwB2b(-nH1Vqn6)LivO|}(H{k=_Z7?sLxU11IaFCt)=*N7^ zF5FM)(?jOTF%&%WuY#bb@_SrlMh{~4zV8!K-&(C|f`D>p{X0Z-{MJ6|ik_`fiyM7U z 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 I99*LKAAmcK@c;k- diff --git a/cache.c b/cache.c index 77ea9dd..06263b9 100644 --- a/cache.c +++ b/cache.c @@ -48,6 +48,8 @@ int is_ip_in_cache(const char *ip) struct ip_cache_node *current = ip_cache_head; struct ip_cache_node *prev = NULL; + if (ip_cache_head == NULL) return 0; // 如果 ip_cache_head == NULL,current->next 可能导致段错误 (Segmentation Fault)。 + while (current != NULL) { // 如果 IP 匹配并且未过期 if (strcmp(current->ip, ip) == 0) { diff --git a/cap.c b/cap.c index 35c5988..638421e 100644 --- a/cap.c +++ b/cap.c @@ -23,6 +23,7 @@ char *command_result = NULL; // 执行命令的结果 void Processing_IP_addresses(char *src_ip) { + // 地域白名单 char _region_list[WHITELIST_IP_NUM][WHITELIST_IP_NUM] = { { 0 }, { 0 } }; char _REGION_LIST[BUFFER] = { 0 }; @@ -108,11 +109,11 @@ void Processing_IP_addresses(char *src_ip) fprintf(stderr, "Failed to parse JSON.\n"); } - if (p != NULL) + if (p != NULL) { free(p); + } } - if (ip2region_area != NULL) { free(ip2region_area); ip2region_area = NULL; @@ -125,9 +126,14 @@ void Processing_IP_addresses(char *src_ip) void packet_handler(u_char *args, const struct pcap_pkthdr *header, const u_char *packet) { int ethernet_header_len = 14; + //struct ip *ip_header = (struct ip *)(packet + ethernet_header_len); struct ip *ip_header = (struct ip *)(packet + ethernet_header_len); + if (ip_header->ip_v != 4) return; // 只处理 IPv4 + char src_ip[INET_ADDRSTRLEN] = { 0 }; + + inet_ntop(AF_INET, &(ip_header->ip_src), src_ip, INET_ADDRSTRLEN); Processing_IP_addresses(src_ip);