Perl 포트 검색 스크립트(SYN)
프로젝트는 곧 끝날 것 같다.이거 MYSQL 입고된 거예요.먼저 Ping을 수행하고 연결이 되면 큐에 추가합니다.
SYN 탐색은 대기열을 통해 다시 수행됩니다.
#!/usr/bin/perl
use threads;
use DBI;
use Thread::Queue;
use Thread::Semaphore;
use Net::Ping;
use Term::ProgressBar;
# create queue
my $q=new Thread::Queue;
# read for check list
my @target=<>;
my $se_max = Thread::Semaphore->new( 100 );
my $se_ping= Thread::Semaphore->new( 1000 );
foreach (@target){
chomp($_);
if(${$se_ping} <=0){
for my $t(threads->list(threads::joinable)){
$t->join();
$se_ping->up();
}
redo;
}
$se_ping->down();
threads->create(\&alive,$_);
}
for my $t(threads->list()){
$t->join();
}
sub alive{
my $ip =shift;
$ping=Net::Ping->new();
if($ping->ping($ip)){
foreach my $port(1..65535){
$q->enqueue("$ip|$port");
}
}
}
$all_sum=$q->pending();
print $all_sum;
my $progress = Term::ProgressBar->new({name => ' ',count => $all_sum});
$progress->max_update_rate(1);
while(1){
foreach(threads->list(threads::joinable))
{
$_->join();
}
my $item = $q->pending();
if( $item == 0 )
{
my $active = threads->list(threads::running);
if($active == 0)
{
print "
";
last;
}
else
{
next;
}
}
$se_max->down;
threads->create(\&nex,$q->dequeue());
$progress->update()
}
foreach(threads->list()){
$_->join();
}
print "
";
sub nex{
local($tmp)=shift;
@list=split(/\|/,$tmp);
my $scan = Net::Ping->new("syn");
$scan->port_number($list[1]);
$scan->ping($list[0]);
if($scan->ack){
db_insert($list[0],$list[1]);
}
$scan->close();
$se_max->up;
}
sub db_insert{
my $host=shift;
my $port=shift;
my $in=DBI->connect("DBI:mysql:database=port_scan;host=localhost","root","") or die "NO :$!";
my $insert=$in->do("insert into result(ip,port)values('$host',$port)");
$in->disconnect();
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.