2015-06-09 3 views
2

Я пытаюсь использовать telnet для запроса нового идентификатора для tor. В моем понимании, вы должны отправитьJava telnet-подключение для запроса нового идентификатора тора

authenticate "" 

, а затем, если ответ «250 OK» отправить

signal newnym 

Используя этот код, я получаю ответ «нуль». Я также использовал несколько клиентских библиотек telnet и получал такие же результаты.

try { 
     Socket socket = new Socket("localhost", 9050); 
     PrintWriter out = new PrintWriter(socket.getOutputStream(), true); 
     BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
     out.println("authenticate \"\""); 
     System.out.println(in.readLine()); //should be 250 but is null 

     out.close(); 
     in.close(); 
     socket.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
+0

У вас нет серверного сокета. Для получения telnet у вас должен быть серверный сокет. – Iman

+0

@Iman Я попробовал добавить ServerSocket serverSocket = new ServerSocket (portNumber); но не уверен, что я должен сделать порт. если я сделаю это 9050, порт уже привязан к tor. Если я попытаюсь сделать его 9051, он застрянет на Socket socket = serverSocket.accept(); – 0x2B

ответ

0

В документации указано, что все команды чувствительны к регистру. Поэтому вы должны отправить их в случае UPPER (согласно документации).

Я также обнаружил, что действует новый запрос идентичности выглядит

AUTHENTICATE 
250 OK 
SIGNAL NEWNYM 
250 OK 

Надежда, что помогает!