Наткнулся я на сайт http://whoer.net/ Зашел я с VPN, у меня поднят pptp на впс, все секюрно все дела. И что же я вижу в поле DNS? IP своего провайдера. Как это возможно получить? Первое что приходит на ум, это по IP выполнить обратный DNS запрос, получить домен, и его днс. Но у меня впн. Соответственно я получу совсем не своего провайдера. Начал смотреть скрипты, так как я подумал что они как-то детектят DNS по средствам JS. Что же я увидел. Code: function flash_ajax_request(c, d, f) { var g = false; var h = f ? '<img align="middle" src="' + f + '" border="0"/>' : '<img align="middle" src="' + preloader_default + '" border="0"/>'; var i = '*'; $x(c).innerHTML = h; d = encodeURI(d); if (window.XMLHttpRequest) { try { g = new XMLHttpRequest() } catch (e) { g = false } } else if (window.ActiveXObject) { try { g = new ActiveXObject("Msxml2.XMLHTTP") } catch (e) { try { g = new ActiveXObject("Microsoft.XMLHTTP") } catch (e) { g = false } } } else { g = false } if (g) { g.open("GET", d, true); g.onreadystatechange = function() { if (g.readyState == 4) { var a = d.replace(/\?.*$/, ''); if ((g.responseText.indexOf(a) >= 0 && a.indexOf('/whois') < 0) || (g.responseText.indexOf(a) >= 0 && a.indexOf('/whois') >= 0 && g.responseText.indexOf('viawhoer') < 0)) { $x(c).innerHTML = '<span class="ipa_alarm">' + iloc("Anonymizer detected") + '</span>' } else { var b = NAS; if (g.responseText == NA || g.responseText == '') { b = NAS } else { b = g.responseText } $x(c).innerHTML = b } } else { $x(c).innerHTML = h } }; g.send(null) } else { $x(c).innerHTML = i } } этот код отрисовывает наш DNS, а самое главное выполняет GET запрос <script language="javascript"> flash_ajax_request( "dns_unique_domain", "/dns?domain=spvbz1395603.br" ); </script> и правда выполнив whoer.net/dns?domain=spvbz1395603.br я увидел свой DNS. Стало понятно что JS тут не причем в определении DNS, ничего он не детектит. А DNS нам сообщает какой то непонятный запрос с параметром domain, я конечно понимал что у меня такого домена быть не может spvbz1395603.br, но все же я подставил туда google.com. В ответ я конечно получил пустую страничку. посмотрев на код страницы я увидел ещё такой код <link rel="stylesheet" type="text/css" media="all" href="HTTP://spvbz1395603.br.whoer.net/css/null.css"> Резолв какой то херни http://spvbz1395603.br.whoer.net/, которая даже не пингуется И заметил закономерность, если выполнять запросы к http://whoer.net/ но каждый раз меняется spvbz1395603.br этот странный домен. И тут меня осенило как это работает. И так по порядку. whoer.net имеет свой DNS, на который собственно и запаркован домен. И логирует запросы поддоменов, вида spvbz1395603.br.whoer.net при заходе на сайт whoer.net, вам присваивается id в данном случае spvbz1395603.br происходит попытка загрузить со страницы link по ссылке spvbz1395603.br.whoer.net/css/null.css, т.е. происходит резолв, и DNS сервер логирует этот резолв и соответственно ip адрес dnsа вашего провайдера выполняется запрос whoer.net/dns?domain=spvbz1395603.br, который собственно сопоставляет ваш id(spvbz1395603.br) c данными из лога DNS сервера и отдает вам IP В принципе об этой схеме я знал и раньше, но не видел реализаций. Кроме того можно заюзать сервис, не морочась со своим DNS. Для этого нужно: получить страницу, без исполнения JS скриптов, например wget http://whoer.net/ извлечь из неё сгенерированный id spvbz1395603.br дать ссылку spvbz1395603.br.whoer.net у кого вы хотите узнать DNS, он должен перейти в браузере или просто пингануть её выполнить http://whoer.net/dns?domain=spvbz1395603.br который покажет DNS Для того что бы не палить свои DNS используйте сторонние, их просто можно указать вручную. Например гугловые: 8.8.8.8 8.8.4.4 Скриптец с сайта, много разных полезных детектов, например времени (можно определить часовой пояс) и т.д. https://www.dropbox.com/s/0dg5zh0gcm4q01g/whoer.packed.js.txt http://cxx.cx:81/qodiyaxofo.coffee