From a79a59bd97bed6046f0bccae83a65462dc932f2d Mon Sep 17 00:00:00 2001 From: aixiao Date: Wed, 15 Jan 2025 15:30:12 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A8=8D=E5=BE=AE=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cap.c | 17 +++++++++-------- ip2region/a.out | Bin 0 -> 17744 bytes ip2region/a.out.valgrind | 17 +++++++++++++++++ 3 files changed, 26 insertions(+), 8 deletions(-) create mode 100644 ip2region/a.out create mode 100644 ip2region/a.out.valgrind diff --git a/cap.c b/cap.c index cc5f25e..e1dd178 100644 --- a/cap.c +++ b/cap.c @@ -20,8 +20,8 @@ char *command_result = NULL; // 执行命令的结果 #define CACHE_TTL 180 // 设定缓存的存活时间为 600 秒 (10 分钟) #define MAX_CACHE_SIZE 100 // 缓存最多存储 100 个 IP 地址 -struct ip_cache_node *ip_cache_head = NULL; // 缓存链表的头节点 -int cache_size = 0; // 当前缓存中的 IP 数量 +struct ip_cache_node *ip_cache_head = NULL; // 缓存链表的头节点 +int cache_size = 0; // 当前缓存中的 IP 数量 // 定义链表结构,用于缓存 IP 地址 struct ip_cache_node { @@ -127,7 +127,7 @@ void packet_handler(u_char *args, const struct pcap_pkthdr *header, const u_char const char *REGION_ENV = NULL; char ipset_query_command[256] = { 0 }; - char ip_query_command[256] = { 0 }; + //char ip_query_command[256] = { 0 }; // 定义 Response 结构体 Response response; @@ -181,22 +181,23 @@ void packet_handler(u_char *args, const struct pcap_pkthdr *header, const u_char char *p = curl_get_area(src_ip); - puts(p); + //puts(p); if (parse_json_to_struct(p, &response) == 0) { // 解析 JSON 到结构体 // 输出解析结果 + /* printf("Code: %s\n", response.code); printf("IP: %s\n", response.ip); printf("Continent: %s\n", response.data.continent); printf("Country: %s\n", response.data.country); printf("ISP: %s\n", response.data.isp); printf("Region: %s\n", response.data.region); - + */ char *p1 = strstr(response.continent_country, "中国"); if (p1 == NULL) { _printf(RED "%s %s\n" REDEND, src_ip, response.continent_country); r = add_ip_to_ipset(RULE_NAME, src_ip); - _printf("add_ip_to_ipset() return %d\n", r); + //_printf("add_ip_to_ipset() return %d\n", r); } } else { @@ -405,11 +406,11 @@ int main(int argc, char **argv) while (1) { - _printf("子进程当前 Ipset Rule 名 %s\n", RULE_NAME); + //_printf("子进程当前 Ipset Rule 名 %s\n", RULE_NAME); count = get_ip_count_in_ipset(RULE_NAME); if (count >= 0) { - _printf("IPSet %s 中的 IP 数量: %d\n", RULE_NAME, count); + _printf("子进程当前 Ipset Rule 名 %s, 数量: %d\n", RULE_NAME, count); if (count >= MAXIPSET && RULE_NAME_NUMBER <= MAXIPSET_RULT_NAME_NUM) // RULE_中的IP数量不超过MAXIPSET,并且集合不能超过 MAXIPSET_RULT_NAME_NUM 个 { RULE_NAME_NUMBER++; diff --git a/ip2region/a.out b/ip2region/a.out new file mode 100644 index 0000000000000000000000000000000000000000..8afbd08e3a3c0349c6dc3148037f255ca4a17fcc GIT binary patch literal 17744 zcmeHPe{@vUoxd~TM^H?n1w}v^UDCx`M!+8xfn@?2c=Uhw{ zzIijwbbI#f?jL({G4Ff7KkxT`@6UJNT=)7nu5-Iwf>VX~6G52gVny+3M*k|E0q}{N zMHQY4#Fb(i@F|j}_&x=|RjH<;5LRkBkxB0xnqLg(YdMDOAwkkBmpn5RhoPuZIO$EL ztj3GsL)A)-A@l9>Jc=)h-~nk=2!>8QicMy*(#z=hF-*G^{kVp#M=0qHX}uw>XG3y` z_!@FNDJJySpyOE#J>XID$fpp+dL3G?7%tTE45>uOBdhBO|);ppFis7g(k0F=08G01YKQwXo*rLlT*M3WMyD`+wA!9-|s9UVRwNbcx zM4EhY@@E03a1+0Eef*`LSKs~GQ@PYFXZ|r=-|uRyyskCcbkhyjwT2hBM%$B}i#u<= zY4J@rcoQ-2GC{?DM%z>M+6PS02%d_ZY$I4MklXCXE4wlZ4b6a_e4aZBOYxxn?AqFq1IR;BHAKtiHJ!c)B%HuNaP+t zcBnVrB-U@-ux4#wnRn?8cJ}&wcA57^5!kSGQy?6PM|MOLW+c9K)7sWpdt_^{sWpP~ zceKUYwMPLZT2c_zbz{W1@O1ujVYD%>cr?x`L>J_F9Dn1XN73b{i2F3{hZ3(44{1C( zH;NU*Ee-&u#Pc)HJKQLz^*qe|IR&*L~da96w;|{u>awR?Epwk%Q zblO4JMM~C?gHH2-oqQ@c9e~Ctr%Ip75uN8oqSW~4DFo5=QYP^^J_#h9>cGk4Q#q2S zKTeB$Dn~Sq5mA=-=&5A&(k$_teG*6;7pSa!`W*C`4!Yr>U*w=SIOtUl`j;GZy|hd2 zb_bpN2r*h5^it!HWG2&O1STUe8G*?NOh(}UO9YJGbCpJF>QAl{!nikWx+gM5@3G34 z?CMS2_zGAPwXfn?y}*YY;j{}ExuFT9+M|TiRwI{@_;ZBQmM52%_|t^bRws8z;!hDy zTaesAiGPc5+Ir;rCH^?!wB^Y4Nc`)B)3zelA@K(Yr!7WqyTrdnIBhL*4HDl&IBh9% zK8eQ(r!7@(iNxvF4NL?H&~~>VpzX4dfysp*y>-J zUV6glTXho5iP?K0I@;{5UhwBqmf{26au_uFrY<9}e9WAU@O}k?6y6yVL)8mZA%_oL6Vhp^u+87wCFkCMir#>-f!N6i|pmJiUxq1O!3RwR))mMJhv+5^c zi{!P9M(?T%C~H{1GG`j8RgVJ6UW007!+5+r^_#$5cR{y6Ker3aM(Ch3)WGv|h=yUk zjNDn78_X`1HvMBpZ}*r;PCr6{8ot6vfnp72$3C8z;QSfnk3d?Scu88^cdh|_!?6D0 z$R`l8o;gGyb+5vpu1)+U8q~1-BPd`*Bx@C!Jm^v$NR!zY*?8_p=1jdBWBo~11_+4-@<&Z1P~Ie07` zm-aS0?S0<1_s7bQ!E7BFNue$R zI?Z{L{Zmv|B_}-i(-QT{>hLyLnJSHhMi8?!mGCUhyws|HCx^)C-tN=FyfEcIji}}R zg3MtY*=_j|=5ZR;M58I66yKJ#bAx_)R5$3)f-VOA;{-5duZ4IhV?=-U@WKsWHwMmn zTt}@_10PmAW*xsKgHDheAi2hIG`K5sYRvM#p7OtbPr8Z%JK};wCY8*<+oz?sRS>2^ zRU0_Hot4WGuh0Lq?d?YC*{f)_75-NfsMPDdSr>{N-Ymtq0<}`?IK-Cwk1Me>#Kwm| zC&f5GT~cgR(r7s%H_l?6v;5iNndoLK{A1M*UXQWS+dV3hRd9Fz%R;E(ygB6`HTD}T z{QdFiM-WsoyqYMX8f?Q;ozoIcNy^Y&YH8^`M|H_k z*MWf-XW@~3mn_)p$OTeAR|5`IvxW1_&mc-(UJBL-m3|cnO5qnM94!R@5P&^ce=)0B zrwr?;^fWt17J~jZZY)1)+WPH9o2uGkT}#ih`&koul68~>n&m94xKv|u zqu#-7K=9!lDRb}pF1AwSn6-xH1I6Pmm$G@P@koz$I%GCx^RO}Sj}-I=^eHrN-|YS9 zvU*ZHhRQfs4_Fby9>`(B9?W*h#T=z;{8ExGZB@_PXn*vt%Sb^_ldSvHZzm@5bGF^2 zI7Na4w;8n{%DochsGcSLX?}4E#Ij?skZ<(qY6yLi{GkS@$+sjTR@joaN=sakq<=ZQ5VXXcLLtJ{NV|8})zl@bYsHj_w4U#E}gN%9)G>aky zR`xmSId=G9i)>p9Ua_^l6F|T0`9i0tvp%e|j$5a! zUmJZl?p0Hew3a>mK|uqnt+L!yj-Y*wQ`vlZSpP@tfmQ`QvTQ^%zBSdVzqm3dUP6`V zJ-pz}n=1OhpXj^EQm_0cq8-cV^GmGV+Zk@sMK=edt&yBHkow!(RSRxaL)?pbg{|_-lE8V#0^!`O?V51ib;a0MeSj8PV@Cr;J+W~h2_5d!!dVdg*HWz8YPXLDi*L(6QJi=`}>B-%2zf7FUyiPNn6ASO`AJd)}Lv z7$MoJnsrrkzF2+XuF4*d|J@&sdufG!fXTaa)wD0~?+rMq#e*pfo=nJ<06+d*7 zz6hi&}>;MZdBAiwKz`5W`)KM($;;MW7@?XR}ucLwxZup_#o!2V|2 z{y6v@;4gRb&Ak2j@Y@3an@+xazpcL#{AuXxzz z?>=GcuLS=D_*)D3x7qw{;C~E0wYBY^>K>~7!T%8a#ZG>UDxXL+q-mQ);i2DxP=bnp z+mmTB0+SJ#jKE|BCL=HzfyoH`;Stb3UgF=U(cXemmjZ&017(t*DulqdESc_Kpy1^i z=ikB2(>U+_=W3jP4=49NpfUfqpG?F^HJ?t#DZQ(J;NQN@ z(fDi)8E7?;U9Bj*SE8?sl=yuIpD<*)Ov8*OFug`+*zdHKmMfH)UXt3S0^ak%T?~=t!mtCW? zN~hG5;y*=vKxak;iQ3bJUrh7w)IFL@znLs0eH#F*VL|&>{JF&CqQ{2}l5Sr4oAgrl--e6}mFmQyWpOGcKPu%f z6~+DaW2t0j3CkbGwbZ>6TM(sW*L>NVZc3z9s;fc&3n`YlEFP0%U+#qGFH%g@vP%d-I3 zc~H`|a}ID2bdLk)?Ds*x*nPP@uQ8p@FiOSwB+1k0(Z=-gp7^pOjGfi= zAMk>V_MmjWjQuLvzL>{!eB>DrJ1fuZz}}4){WkY{Y5zp3e6+KxQi0{uNncND0zZZsUVdvSfMK=*uFTr2`z zSG9n<0(6e8lW_;hyRj?ciB>bWNjp{IBfVkc`tH>9f6{T@#>Q?B#m%MO7%p7|o1y_T zxI=)DFq6&A-jK*&&w3~6<8i@znB7tzSt!+0{99RI7W`QW(OMyT6FA*VuZxI3hZ~zve z?U7x9rXX&osGBb>(Pnc4eUX6mbzAB-`2+r2>jSt@Qvc;!>o#pz3o?$^0)9htjruJj zuzurhYw9)zZdbahNY8G(NflxtpzekGU+fV48 z04&KXMg`>;-vtVU6R|)`usw`>LhAC7Eso1Zfep98Y&hDEYDdD-wu}MpFXg=q#oA4D zKz;woR;R`wpJhA)Ex0>{s-mZc^Sw^pb1KjX1ey{FM^)@tHRJnOAlBZx8|C0ml^r8p zI=XwT4MPIekhif4jM~D^usJmHZgO304efVc!fAr9aupO72yET7mPZEN$|`x)N?ju> zQgmJuD`e3C&evHvRa5~rb^}ej5j|Wm+aZKEvAfL-HUXM(1zR}R9y24}9qmbPM;v$8 z;^uDQwMk9MD6T|C!@`SZj>J2J6l@75T7);eyB$UqG~)jDU#*B30DTkgn9+Sh=8)?x~S4$X17}NgMt=X`c=2U4&&1g!W^C&Oa z77f9fm`UZpRT}(W^eW-SoZ3b`^?xAIvPG}9Shi*2d$kNbn$CdVyBPN(-qYV;B|m-h@w5G1fn%%V)^t^SMH?|Fpi-83OC`IRnEX zT_C-lQGQsqVRIF0D#+zC z^~oZAeotdKg9SA#uK)M6KDVFnXh98+Xp{l_&G=ztD1NNZ@5>BFSy02`@{bkiAG%5j zGJI8!M>bPj{z)*L^9P^1F!ZpZhQ;Nd0i8n3#qc>K-@`91k8y@s=vF)Q`JCmnexYPJ zh{(h^Ly8aeT`r%`A?*Jj0|gg}`#0-xKcM$e5@CJ52b|U~x{FBJkyxMM$KW~j`J6MW z_3wA+QkL}?PJ^;jzr&{#I+iHtQNVt(-%OYZWwOQo^LtId*5`6qp2~8ji*@;0+-9-9 zevP;3tnY-}cWohL4rzloQ|CgW*EyO?*dLz1X?(Ho$l58ZU*u9n9gfRoL7FZ~=_ghy LiMd4zMX2~so)G3L literal 0 HcmV?d00001 diff --git a/ip2region/a.out.valgrind b/ip2region/a.out.valgrind new file mode 100644 index 0000000..b96029a --- /dev/null +++ b/ip2region/a.out.valgrind @@ -0,0 +1,17 @@ +root@NIUYULING:/mnt/c/Users/root/Desktop/git.aixiao.me/DenyIP/ip2region# /usr/bin/valgrind --tool=memcheck --leak-check=full --show-reachable=yes --main-stacksize=8388608 --track-origins=yes ./a.out +==239839== Memcheck, a memory error detector +==239839== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al. +==239839== Using Valgrind-3.20.0 and LibVEX; rerun with -h for copyright info +==239839== Command: ./a.out +==239839== +澳大利亚|0|0|0|0 +==239839== +==239839== HEAP SUMMARY: +==239839== in use at exit: 0 bytes in 0 blocks +==239839== total heap usage: 7 allocs, 7 frees, 534,473 bytes allocated +==239839== +==239839== All heap blocks were freed -- no leaks are possible +==239839== +==239839== For lists of detected and suppressed errors, rerun with: -s +==239839== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) +root@NIUYULING:/mnt/c/Users/root/Desktop/git.aixiao.me/DenyIP/ip2region# \ No newline at end of file