在DNS劫持里,不劫持常见的应用APP和邮箱APP。该怎么处理?
先对比APP和网页请求的区别,上两张图:
打开百度页面的抓包:
打开金山卫士的抓包:
都是GET请求,在金山卫士里的User-Agent里也出现了Mozilla/4.0 MSIE,当然打开金山卫士并没有用浏览器,直接打开桌面的APP。
而在百度抓包里的User-Agent有Mozilla/5.0,Chrome,Safari,而我打开百度用的是Chrome。
从抓包上无法区分APP还是浏览器。那么过滤采用的方法就是网页和APP一起过滤了。
关于邮件APP的过滤:邮件的请求不同于普通的APP,主要存在以下三种访问方式:
HTTP 访问类型,不需要客户端程序,通过网页访问邮箱
SMTP全称 “Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。
IMAP全称是Internet Mail Access Protocol,即交互式邮件存取协议,它是跟POP3类似邮件访问标准协议之一。不同的是,开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的
POP3 Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的
那么过滤现在就好弄了,比如要过滤金山卫士和邮箱APP,构造数组如下:
char_t filter_dn[][20]=
{
"jinshan"
"mail",
"imap",
"smtp",
"pop",
};
过滤函数如下:for(i=0; i<sizeof(filter_dn)/sizeof(filter_dn[0]); i++)
{
str_dn_tmp = strstr(dns_domain, filter_dn[i]);
if( str_dn_tmp != NULL )
{
dns__app = 1;
printf("filter_dn : filter dn{%s}\n", filter_dn[i]);
memset(app_domain,0,strlen(app_domain));
strncpy(app_domain,dns_domain,strlen(dns_domain));
printf("\napp_domain=%s\n",app_domain);
}
}
如果没有意外这样应该就可以过滤某些APP了。