gpt4 book ai didi

c - 我只想在我的 C 程序中使用 iptables 命令

转载 作者:太空宇宙 更新时间:2023-11-04 07:42:23 26 4
gpt4 key购买 nike

我正在设计一个简单的c代码来根据需要调用iptables命令。我只想使用我的 C 代码丢弃来自特定 IP 地址的数据包。这就是为什么我必须根据给定的输入使用 iptables 命令。是否可以使用 C 代码调用命令?如果是那么怎么办???提前致谢..

最佳答案

假设您的程序以 root 身份运行,只需使用 fork() 和 exec(),并将 iptables 命令传递给 exec()。有点像

if (0 == fork()) {
execl("/sbin/iptables", ...); // supply the proper arguments to iptables.
}

编辑:我从其他人那里看到 system() 是比 fork/exec 更好的方法。

听起来 Neha 不确定如何使用 sprintf 格式化命令,以便它包含存储在其他变量中的 IP 地址。我认为它应该是这样的:

char *host_to_block = ....
char comm[1000];
snprintf(comm, sizeof(comm), "iptables -A INPUT -s %s -j DROP", host_to_block);
system(comm);

请注意,这将是一个安全漏洞,除非您有代码来验证 host_to_block 包含 IP 地址而不是其他一些 shell 命令。如果不知道字符串的来源是否有效,您可能需要使用以下问题作为引用:

how to validate an ip address

关于c - 我只想在我的 C 程序中使用 iptables 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2481903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com