2014-01-15 6 views
0

Ну, я сделал простой скрипт для отправки пакета, где мне нужно прочитать ответ, если ответ - это то, что им нужно, тогда распечатка была хорошей, если бы не распечатка была плохая. Теперь, если ip IS vuln, тогда скрипт работает и печатает, что его вульгарно. Теперь, если его не вуль, тогда скрипт просто зависает и застревает при отправке полезной информации из HEX-данных.Розетки, не закрывающиеся в Perl

use IO::Socket; 
use strict; 

print "Connecting..\n"; 
my $socket = IO::Socket::INET->new(
    PeerAddr => '23.113.161.164', # 38.124.108.67 <-- NON vuln ip for testing 
    PeerPort => 123,    # 23.113.161.164 <-- This IS a vuln ip! 
    Proto => 'udp', 
    Timeout => 1); 
die "Error With Sockets!: $!\n" unless $socket; 

print "Connected!\n"; 

my $payload = "\x97\x00\x00\x00\xAA\x00\x00\x00"; 
my $good = "\x97\x00\x00\x00"; 

$socket->send($payload) or die "Nothing got sent."; 

my $data; 
$socket->recv($data,4); 
my $response = substr($data,0,8); 
$response = reverse($response); 
print $response; 

if ($response == "\x97\x00\x00\x00") { 
print "IP IS VULN\n"; 
} else { 
print "IP IS NOT VULN\n"; 
exit; 
} 

Пример ошибки:

Использование NON vuln ф:

[email protected]:~# perl 2.pl 
Connecting.. 
Connected! 

(Вот где он застревает)

Использование vuln ф:

[email protected]:~# perl 2.pl 
Connecting.. 
Connected! 
▒IP IS VULN 

(Как вы можете видеть, что все в порядке)

Это где сценарий застревает:

$socket->send($payload) or die "Nothing got sent."; 

Любая помощь будет принята с благодарностью.

+4

Всегда используйте 'предупреждения использования'. У вашего кода есть большая ошибка, которая найдет. – ikegami

ответ

0

Если вы действительно проверили, где он висит, я уверен, что вы найдете, что он висит, пытаясь получить данных.

2
  • use warnings;
  • использование eq для сравнения строк, == для цифровых сравнений
  • Вашего кода висит получить
  • recv() не по умолчанию, есть тайм-аут. звоните setsockopt и см. this thread для получения более подробной информации.
  • Наконец, никогда не публикуйте чужие актуальные IP-адреса с вашими вопросами.
+0

Re "lastly, никогда не публикуйте актуальные IP-адреса с вашими вопросами". Почему нет? Если ОП не считает их чувствительными, лучше всего, если он включит их, чтобы мы могли запускать его код как есть! – ikegami

+0

Предположим, что они не являются его IP-адресами. Предположим, что все и мой дядя используют этот код. Предположим, что машина не работает в этих условиях и/или получает базиллионные пакеты от выродков, которые тестируют этот код. Можете ли вы написать D-O-S? –

+0

Узел имел 16 просмотров в час. Сколько из них, по вашему мнению, привело к выполнению кода? – ikegami

Смежные вопросы