0
전화 시스템에서 우리는 호출을 위해 멀티 캐스트를 사용합니다. 때때로 우연히 누군가가 버튼을 밟을 것이고 우리는 whodunit을 추적하기 위해 Wireshark를 가동시켜야합니다. 그래서 나는 새로운 멀티 캐스트 패킷을 듣고 기록하기 위해 Powershell 스크립트를 만들었다. 잘 작동하지만 한 포트에만 바인딩 할 수 있습니다.여러 멀티 캐스트 포트 수신
Start-Job
및 워크 플로를 사용해 보았는데 성공하지 못했습니다. 그것은 나에게 완전히있을 수 있었다. 그럼 ... 여러 포트에서 이걸들을 수있는 방법에 대한 아이디어?
$outfile = "c:\multicast log\multicast.txt"
function StartListener{
Param(
[Parameter(Mandatory)]
$IPAddress,
[Parameter(Mandatory)]
$Port
)
$client = New-Object System.Net.Sockets.UDPClient
$client.ExclusiveAddressUse = $false;
#$localEp = [System.Net.IPEndPoint]::New([IPAddress]::Any, $Port);
$localEp = New-Object System.Net.IPEndPoint ([System.Net.IPAddress]::Any, $port)
$remEP = New-Object System.Net.IPEndPoint([System.Net.IPAddress]::Any,0)
$client.Client.SetSocketOption([System.Net.Sockets.SocketOptionLevel]::Socket, [System.Net.Sockets.SocketOptionName]::ReuseAddress, $true);
$client.ExclusiveAddressUse = $false;
$client.Client.Bind($localEp);
$multicastaddress = [IPAddress]::Parse($IpAddress);
$client.JoinMulticastGroup($multicastaddress);
Write-Host "Listening. This will never quit so you will need to force close it"
$NewStream = $true
$last_remEP = ""
#initialize last_now to something that won't interfere
$last_now = (Get-Date).AddYears(-1)
while ($true) {
$receivedbytes = $client.Receive([ref]$remEP);
$now = Get-Date
$cur_remEP = $($remEP.ToString())
if ($last_remEP -eq $cur_remEP) {
if ($now -gt ($last_now).AddSeconds(1)) {
$NewStream = $true
} else {
$NewStream = $false
}
} else {
$NewStream = $true
}
if ($NewStream) {
$last_remEP = $cur_remEP
if ((type $outfile).Count -ge 100) {
(Get-Content $outfile | Select-Object -Skip 25) | Set-Content $outfile
}
Add-Content $outfile "$($now.ToString("yyyy-MM-dd hh:mm:ss tt")) - Received multicast from $cur_remEP"
}
$last_now = $now
}
}
Clear-Content $outfile
$now = Get-Date -Format "yyyy-MM-dd hh:mm:ss tt"
Add-Content $outfile "$now - multicast logging started"
startlistener 224.0.1.75 50008
startlistener 224.0.1.75 50009
pause
나는 시작 작업과 거의 같은 스크립트를 시도했지만 실제로 시작된 적이 없었다. 귀하의 의견을 조금이라도 조정하고 내가 더 큰 성공을 거둘 수 있는지 살펴 보겠습니다. WinDump의 경우 - 출력물은 멀티 캐스트 '세션'당 하나의 줄만 작성하여 보내진 마지막 전화를 간단하게 조회 할 수 있습니다. WinDump는 모든 패킷을 덤프합니다. – SaintFrag
* WinDump는 모든 패킷을 덤프합니다. * 특정 패킷을 필터링하면 안됩니다. –
죄송합니다, 명확히하기 : WinDump는 주어진 멀티 캐스트에 대한 모든 패킷을 덤프합니다. 특정 전화 페이지의 경우 수백 개의 패킷이있을 수 있습니다. 내 대본을 쓰는 동안 내 기록에는 한 줄의 줄이 있습니다. – SaintFrag