我正在尝试构建一个Linux内核级防火墙,我需要在其中创建一个DLP(数据丢失防护)层。
我需要确定给定电子邮件(通过SMTP发送)是C代码还是纯文本。 代码不必是完整的程序,因此我将无法使用编译器完成此任务。
例如,应捕获以下代码:
if (variable == true) { printf("The statement is true\n"); }
有什么建议吗?
答案 0 :(得分:3)
如果是'声明',我会建议获得(Lex / Yacc)C解析器。将解析器置于'expecting-statement state'并运行它。如果您没有收到错误,您就知道它是有效的。
根据您获得的解析器,您可能需要删除大量代码;遇到变量时符号表查找/检查之类的事情......但是如果有(几乎)准备好使用的简单实现,我就不会感到惊讶。
您还可以下载纯C Lex和Yacc规范并在其周围编写一些代码以使其正常工作;这并不困难。但它确实需要付出很大的努力来解决它。
答案 1 :(得分:0)
对于更通用的代码与文字分类,您还可以尝试以下任何一项: