まず最初に、もちろん、検索を始めました。 私はこの問題の議論で数十のトピックを見つけ、人々がさまざまな成功を収めてこのソフトウェアをブロックする方法を見ました。 問題は、接続先のサーバーが非常に多く、見逃しやすいことです。また、見つかった範囲のリストに対するコメントで、このソリューションがうまくいかないとしばしば不満を述べました。
![](http://img259.imageshack.us/img259/55/powershellandteamviewer.png)
さて、2台のコンピューターを隣り合わせに配置し、それらにTeamviewerプログラムをインストールします。これにより、すぐにライブを見ることができます。
コメントから判断すると、tcp 5938ポートブロッキングは、以前のバージョンのリリース以来長い間機能していませんでした。 念のために、もちろん、このポートでの着信コールと発信コールをブロックするルールを作成しました。どこかで見つかったtcp 9997でも同様です。 まあ、それをさせてください。
それから私は仲間が見つけたすべての範囲を羊毛にし始めました。 5回目のトピックの読み取りと4ダースの範囲のどこかで、信頼性の高いロックが追加されました。数回の試行の後、ソフトウェアは接続できないことを報告します。 やった! 主な目標は達成されましたが、もっと欲しいです。 80%、90%、または95%でも、信頼性は不十分です。
私はこの問題にもう少し深く取り組むことにしました。 まず、Teamviewerのホストのより完全なリストを作成する方法を理解したかったのです。 原則として、フォーラムの仲間は、serverN.teamviewer.comの形式のサーバーをブロックする必要があるという考えを表明しました(Nは数字)。 しかし、第一に、tsiskaを使用してホスト名で無効にする方法を理解していませんでした。第二に、追加の保護として裸のIPをブロックすることは非常に便利です。
すべての名前をループしてIPに解決するという簡単なアイデアがありました。 私はコマンドラインの大ファンなので、最初にバッチファイルを使用して問題を解決する方法を探しました。 私はそれを理解しました-はい、原則として、nslookupの出力を解析できますが、どういうわけか不器用です。 Powershellを使用した場合はどうなりますか?
グーグルは、すぐに適切な.Netクラスを見つけました。 少し実験して、このスキームがうまく機能することを実感しました。名前が複数のIPに解決される場合、それらはすべて配列にきちんと配置されることが特に好きでした。 各IPは結果配列に追加され、単一のSortコマンドでソートされて重複が取り除かれ、テキストファイルにスローされます。 最後に、利便性のための小さなタッチ-テキストファイルがディスク上で検索されないようにメモ帳で開かれます。 はい、Powershellは非常に便利で強力なツールです。
スクリプトテキスト(Powershell v2):
### -- Teamviewer. , , . ## $result_ips = "C:\!scripts\teamviewer\result_tv_IPs.txt" $result_addresses = "C:\!scripts\teamviewer\result_tv_addresses.txt" del $result_ips del $result_addresses $servers=@() ## serverN.teamviewer.com - 101-11500, 646 [2011-11] for ($i=1; $i -le 11500; $i++) { echo $i; $cur_server="server" + $i + ".teamviewer.com" echo $cur_server [System.Net.Dns]::GetHostAddresses($cur_server)|% { if ($? -eq $true) {echo $cur_server |out-file -append $result_addresses}; $servers+=$_.IPAddressToString } } # masterN.teamviewer.com - 1-16 [2011-11] for ($i=0; $i -le 20; $i++) { echo $i; $cur_server="master" + $i + ".teamviewer.com" echo $cur_server [System.Net.Dns]::GetHostAddresses($cur_server)|% { if ($? -eq $true) {echo $cur_server |out-file -append $result_addresses}; $servers+=$_.IPAddressToString } } # pingN.dyngate.com - 2-3 for ($i=0; $i -le 10; $i++) { echo $i; $cur_server="ping" + $i + ".dyngate.com" echo $cur_server [System.Net.Dns]::GetHostAddresses($cur_server)|% { if ($? -eq $true) {echo $cur_server |out-file -append $result_addresses}; $servers+=$_.IPAddressToString } } # $servers | sort-object -unique | out-file $result_ips notepad.exe $result_ips start-sleep -milliseconds 800 # , notepad.exe $result_addresses
このスクリプトに関するいくつかのポイント:
-文字列$ servers = @()は配列を開始しますが、このPowershellはタイプを混同しません。
-[System.Net.Dns] :: GetHostAddresses()-名前でIPアドレスを取得する.NETクラス。
-IPAddressToString-結果を通常の文字列に変換するメソッド。
中間結果として、Powershellはそのような特定の管理タスクに非常に便利です
(約200の番号が付けられたサブネットは、どのようにしてtsiskaに分類されましたか-別のトピックのアイテム、または複数文字であることが判明しました。このプロセスを完了する予定です)
結果は、650件の受信アドレス、問題に対する信頼できる解決策、および「管理」スキルに対する+5です:-)
最初に、これらの範囲を大きなマージンでブロックすることができます。 しかし、moskva.fmサーバーの1つである85.17.138.68がこの方法で閉じられた85.17の範囲に落ちたという事実にすぐにつまずきました*。*-/ 24サブネット(85.17.136。*および85.17.87。*)。 あるいは、一般的にリスト上の個々のIPをブロックできますが、これはTeamviewerをブロックする最初のタスクの観点からはすでに信頼性が低くなっています-既存のサーバーの「隣」にある新しいサーバーの外観は、新しい範囲よりもはるかに高いと思います。