2017-10-12 199 views
0

好吧,讓我們精確一點。多年來,我一直在問自己一個問題:是否有可能在計算機上偵聽DNS請求(在我的情況下是windows計算機)並要求程序在檢測到特殊DNS時執行shell命令?用Java持續監聽DNS請求並執行cmd命令

我一直在玩這個命令:

IPCONFIG/displaydns |找到「my.dns.com」

和預期的一樣,我可以在我的DNS緩存中找到「my.dns.com」。

我不能問到CMD:

嘿,聽着在連續的所有請求,當你發現 「my.dns.com」請執行「的音樂。可執行程序」。

所以我想到一個程序(在Java中),這樣做是爲了我。爲什麼是java?因爲我不能使用唯一的編程語言,所以我開始使用它,所以我更容易理解它。但是如果我正在尋找的東西在Java中是不可能的,請讓我知道!

但是(再次)我不知道如何管理DNS請求,也沒有要求Java程序連續運行。對於這裏的那一刻就是一切,我可以添加到我的程序:

if ("my.dns.com" is detected) { 
try { 
String command = "cmd /c start music.exe"; 
Process child = Runtime.getRuntime().exec(command); 
OutputStream out = child.getOutputStream(); 
} catch (IOException e) { 
} 

也許在連續運行:

boolean running = true; 
while(running) 
{ 
    //main loop... 
} 

我知道,那是極少數,但我甚至不知道在哪裏看看回答我的問題。

如果你能夠理解我(是的,你在屏幕後面吃着多力多滋),你能至少幫我找到我的路嗎?

精確的,如果你要我編輯:)

回答

0

也許PowerShell中的這種(未經測試)的片段將讓你去。我不知道清除DNS緩存是個好主意,但這取決於您。如果你不這樣做,它仍然會在那裏。

while ($true) { 
    $a = Get-DnsClientCache | ForEach-Object { $_.Name } 
    if ($a -contains 'the.dns.com') { 
     Start-Process C:\path\to\music.exe -Wait 
     Clear-DnsClientCache 
    } 
} 
+0

所以,我一定嘗試這個劇本,並遺憾地說,但,它不工作:(腳本執行很好,但什麼都沒有發生,當我旅行到特定的DNS。至少,您的幫助感謝:) @lit –

+0

請嘗試運行'Get-DnsClientCache | ForEach-Object {$ _。Name}'在PowerShell提示符下單獨運行。您在輸出中查找的域名是?另外,您必須在瀏覽到相關域時保持此腳本運行。 – lit

+0

所以我嘗試了一下,它的確顯示了我很少的DNS,但並不是我想要的那個:(但是,當我把一個DNS放在列表中時,它就起作用了。順便說一句,謝謝@lit) –