我正在开发一个使用NFQUEUE来过滤其他应用程序流量的C程序。我需要做的一件事就是用另一个字符串替换包中包含的字符串。
问题是,数据包似乎随机包含空终止符字节(在字符串的中间)。这意味着我使用strstr()看到的大多数解决方案都不起作用。我需要找到类似的东西,在达到空终止符字节时不会停止,而是允许指定长度并使用它。 (nfq_get_payload()返回一个长度。)
我已经看过在执行替换之前用另一个字节替换空字节,然后在发送数据包之前恢复空字节。这种方法的问题是数据包有可能包含该字符,因此这不是最好的方法。我想我也可以找到一个未包含在数据包中的随机字节,但我宁愿避免这样做。
编辑:原始字符串和替换字符串都是相同的长度,即13个字符。