国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
使用PERL打造connect掃描器


writer:demonalex
email:demonalex@hackermail.com


    想不到現(xiàn)在的‘沖擊波’系列蠕蟲蔓延得比‘SARS’(非典型肺炎)還要快,導致許多網(wǎng)絡的網(wǎng)管都把ICMP給禁止掉了。
在論壇里的網(wǎng)友們都在為找個‘小肉機’而弄得‘沸騰’起來。
“PING不到,怎么知道那臺機器在線哪臺機器不在線啊....?”
經(jīng)驗老到的網(wǎng)友就會‘祭’出X-SCAN,使用“無條件掃描’,噢,有‘東西’看了......
“為什么可以掃到呢?”筆者小神QQ里又有‘好友’的信息跳出來了......
    如果您是玩過SOCKET的人您當然不會問我了。其實樓上問的只是簡單的SOCKET CONNECT掃描而已。
    說說SOCKET掃描吧,其實SOCKET掃描有很多種,主要有針對低層的IP掃描(PING就是其中一種,用的是ICMP包),和針對
高層的(TCP,UDP)。而我們通常掃TCP端口的就是connect掃描、SYN掃描、FIN掃描這三種了(connect掃描與SYN掃
描可以使用X-SCAN,F(xiàn)IN掃描可以使用NMAP)。
    說說最常用的connect掃描吧,它的原理就是調用SOCKET API(套接字應用程序接口)中的connect()直接向遠程
機器發(fā)送連接請求,并通過套接字是否能建立連接來辨別其端口的狀態(tài)。它的特點是:速度慢,容易被對方發(fā)現(xiàn),但準
確性高。
    “不用掃描器能使用connect掃描嗎?”
    可以,不過不能光依賴系統(tǒng),系統(tǒng)并沒有提供調用SOCKET API的程序,能操作SOCKET API就只能依賴有SOCKET API接口
的編程語言了。在筆者眼里玩SOCKET最方便的就莫過于PERL了?,F(xiàn)在示范一下如何使用Perl中的IO::Socket包寫單端口CON-
NECT掃描器吧(樓下‘#‘符號后為注釋部分):

#!usr/bin/perl -w                                  #PERL程序開頭標式
use IO::Socket;                                    #載入IO::Socket包
$remote_host=$ARGV[0];                             #程序后緊跟的第一個參數(shù)為遠程主機地址
$remote_port=$ARGV[1];                             #第二個參數(shù)為所要探測遠程主機的端口
$sock=IO::Socket::INET->new(PeerAddr=>$remote_host,PeerPort=>$remote_port,Timeout=>60);
#樓上一行為新建一個IO::Socket::INET對象$sock,其參數(shù)PeerAddr為遠程主機地址,參數(shù)PeerPort
#為需要探測的遠程主機端口,參數(shù)‘超時值’Timeout為60秒
if(defined $sock){                                 #進入條件語句,辨別$sock對象是否已被定義
print("The $remote_host -> $remote_port is opened!\n");  #被定義了,屏幕提示此主機的此端口打開
$sock->close;                                      #關閉SOCKET對象
}else{                                             #條件語句的值為‘非’時
print("The $remote_host -> $remote_port is closed!\n");  #提示此主機的此端口沒有打開
}
exit 1;                                            #退出程序

講解:樓上程序的第一行與倒數(shù)最后兩行其實可以不寫,只是筆者為了程序的可移植性與寫C程序的作風而‘硬’加上去的,
大家可以不寫。第二行載入IO::Socket包是必要的,不加載此包的話就無法定義IO::Socket::INET對象了。數(shù)組@ARGV為
PERL的保留數(shù)組,用于表示使用程序時后面緊跟的參數(shù)的。條件語句中使用‘是否定義了SOCKET對象’作為辨別條件是因
為建立SOCKET對象時其實已經(jīng)調用了connect()了,所以只要辨別樓上已建立的SOCKET對象變量$sock是否被定義了就可以
知道連接是否成功了。
    完成了。那如何做一個可以掃描一個IP段的端口或掃描同一IP的一個端口段的connect()掃描程序呢?聰明的您應該會
想到循環(huán)語句了吧?!由于本文的篇幅有限,小神就不再對此多說了,如果您想知道更多的資料或了解更多關于PERL與PERL
SOCKET API的知識的話,可以到小神的主頁http://demonalex.cnhacker.cn去看看哦:)
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
20 行代碼編寫一個簡單的端口掃描器
Perl IO::Socket簡介
編寫端口掃描器(C++)
用Python指定HTTPConnection的出口IP(specify outgoing ip)
用python實現(xiàn)網(wǎng)絡及端口掃描工具
python自動化:使用socket做一個多進程的端口掃描器!
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服