spin6lock/pydnsproxy

【个人分析】这个项目的工作原理

Opened this issue · 6 comments

目前DNS协议是基于UDP的不可靠无连接传输,入侵者无法截获��
�一个DNS的response包,原因可能是计算量太大了,所以采用了��
�种污染的方式,抢先在真正的DNS 
response包返回之前先伪造一个response发送给请求者,而请求者�
��收到这个包之后以为就是真的结果了(因为无连接,先到原
则),就忽略掉之后的response了。DNSProxy这个软件的做法很简�
��,先缓存第一个收到的response,如果在一段时间内又收到了�
��外一个response,那就丢弃之前那个,如果没有收到,那说明�
��个response是真的,直接返回给请求的应用程序,这样就可以�
��滤出真假response了,参见SVN上的Python源码

Original issue reported on code.google.com by dittohu...@gmail.com on 28 Jul 2010 at 2:28

见dns.py中这一段代码:
        try:
            rspdata = sock.recv(65535)
        except Exception, e:
            print e, 'ignored.'
            return 1
        # "delicious food" for GFW:
        while 1:
            sock.settimeout(DEF_TIMEOUT)
            try:
                rspdata = sock.recv(65535)
            except timeout:
                break
是的,就是在收到第一个回复后,取DEF_TIMEOUT时间内继续收到
的最后一个回复作为真正的DNS :)

Original comment by everwa...@gmail.com on 3 Aug 2010 at 2:09

如果GFW连续多次发回结果,导致第一个结果和最后一个结果��
�是污染后的呢

Original comment by snail...@gmail.com on 10 Jan 2011 at 4:27

@ snail...@gmail.com
那就先把GFW的IP地址给屏蔽了.

Original comment by liuxingm...@gmail.com on 24 Jan 2011 at 5:55

GFW不敢随便乱给IP的,否则就混乱了,所以它的伪IP池有限,�
��个过滤列表就好了

Original comment by dittohu...@gmail.com on 24 Jan 2011 at 6:00

现在已经乱给IP了。

Original comment by shell909...@gmail.com on 30 May 2011 at 4:00

用tcp_dns吧,很好用,不过需要自己安装python

Original comment by dittohu...@gmail.com on 30 May 2011 at 4:04

Attachments: