2014-07-07 2 views
-2

저는 페이스 북 서버 (whois.radb.net에 쿼리 "-i origin AS32934"로 쿼리, developer page)에 사용 된 모든 IP를 검색하는 Autoit의 스크립트를 구현하려고합니다. WhoIs 서버가 내 쿼리에 응답하지 않는 이유를 이해하지 못합니다. 이것은 스크립트입니다WhoIs 서버가 응답하지 않습니다

Local $host = "whois.radb.net", $query = "-i origin AS32934" 
If Ping($host) Then 
$ws = DllOpen("ws2_32.dll") 
TCPStartup() 
$ip = TCPNameToIP($host) 
If @error Then _err("TCPNameToIP", @error) 
Global $socket = TCPConnect($ip, 43) 
If @error Then _err("TCPConnect", @error) 
TCPSend($socket, $query) 
If @error Then _err("TCPSend", @error, 1) 
Local $text = "", $t = TimerInit(), $counter = 0 

While 1 
    $recv = TCPRecv($socket, 2048) 
    If @error And @error <> -1 Then 
     $aRet = DllCall($ws, "int", "WSAGetLastError") 
     MsgBox(16,"ERROR", "Function: TCPRecv" & @CRLF & "Last data received: " & $recv & @CRLF & "Winsock error: " & $aRet[0] & @CRLF & "Loop executed " & $counter & " times") 
     ExitLoop 
    EndIf 
    $text &= $recv 
    $counter += 1 
    If TimerDiff($t) > 4999 Then ExitLoop 
WEnd 

If $text = "" Then 
    MsgBox(48, "RESULT", "EMPTY" & @CRLF & "Loop executed " & $counter & " times") 
Else 
    MsgBox(0, "RESULT", $text) 
EndIf 

TCPCloseSocket($socket) 
TCPShutdown() 
Else 
_err("Ping", @error, 0) 
EndIf 

Func _err($func, $err, $opt = 2) 
    MsgBox(16, "ERROR", "Function: " & $func & @CRLF & "Error: " & $err) 
    If $opt = 1 Then TCPCloseSocket($socket) 
    If $opt > 0 Then TCPShutdown() 
    Exit 
EndFunc 

출력은 항상 "빈 결과"입니다. 다양한 검색어 (예 : whois.verisign-grs.com = "facebook.com")로 다른 WhoIs 서비스를 쿼리하려했지만 응답이 없습니다. Nirsoft WhoIs 도구 광고를 사용했기 때문에 네트워크에 문제가 없습니다. 내가 스니퍼를 다운로드 한 내가 내 스크립트를 시작할 때이 출력입니다 :

================================================== 
Protocol   : TCP 
Local Address  : 192.168.1.101 
Remote Address : 198.108.0.18 
Local Port  : 23509 
Remote Port  : 43 
Remote Host  : whois.radb.net 
Service Name  : nicname 
Packets   : 5 {5 ; 0} 
Data Size   : 17 Bytes {17 ; 0} 
Total Size  : 274 Bytes {217 ; 57} 
Data Speed  : 0.0 KB/Sec 
Capture Time  : 07/07/2014 15:18:37:313 
Last Packet Time : 07/07/2014 15:18:45:837 
Duration   : 00:00:08.523 
================================================== 
Content: 
-i origin AS32934 

그것은 전송되는 패킷이 보인다하지만 패킷이 수신되지합니다.

답변

0

I는 솔루션을 발견 TCPSend의 단부() 요청 당 RFC3912

$query = "-i origin AS32934" & @crlf 
+0

모든 WHOIS 질의는 LF 뒤에 CR로 끝나야 @crlf에 추가. –

관련 문제