資源簡介
用C語言編程實現掃描器,能夠掃描局域網中存在的主機、及其開放的端口

代碼片段和文件信息
/**********************************************************************
?*??ホストスキャンプログラム?(scanhost.c)
?*????????Ver?2.0?2004鉗?7奉?10泣
?*????????????????????????????????擴侯ˇ螟侯?錄懷給瘦?(Yukio?Murayama)
?*
?*??蝗脫釣滿今
?*????塑プログラムは、TCP/IPプロトコルの池漿、第び、ネットワ〖クプロ
?*????グラミングの禱墻を羹懼させるためにのみ、そのまま、または、餞賴
?*????して蝗脫することができます。塑プログラムについて、恕圍で敦賄さ
?*????れているか、または、給進紊爐に瓤するような猖隴、第び、蝗脫を敦
?*????賄します。塑プログラムは痰瘦沮です。擴侯莢は塑プログラムによっ
?*????て券欄したいかなる祿巢についても勒扦を艱ることはできません。
?**********************************************************************/
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#define?CHKADDRESS(_saddr_)?\
????????{\
??????????unsigned?char?*p?=?(unsigned?char?*)?&(_saddr_);\
??????????if?((p[0]?==?127)\
???????????||?(p[0]?==?10)\
???????????||?(p[0]?==?172?&&?16?<=?p[1]?&&?p[1]?<=?31)\
???????????||?(p[0]?==?192?&&?p[1]?==?168))\
????????????;\
??????????else?{\
????????????fprintf(stderr?“IP?address?error.\n“);\
????????????exit(EXIT_FAILURE);\
??????????}\
????????}
#define?BUFSIZE????4096
#define?PACKET_LEN?72
enum?{CMD_NAME?START_IP?LAST_IP};
void?make_icmp8_packet(struct?icmp?*icmp?int?len?int?n);
void?tvsub(struct?timeval?*out?struct?timeval?*in);
u_int16_t?checksum(u_int16_t?*data?int?len);
int?main(int?argc?char?*argv[])
{
??struct?sockaddr_in?send_sa;??/*?流慨黎のアドレス???????????????*/
??int?s;???????????????????????/*?ソケットディスクリプタ?????????*/
??char?send_buff[PACKET_LEN];??/*?流慨バッファ???????????????????*/
??char?recv_buff[BUFSIZE];?????/*?減慨バッファ???????????????????*/
??int?start_ip;????????????????/*?スキャンするIPアドレスの倡幌猛?*/
??int?end_ip;??????????????????/*?スキャンするIPアドレスの姜位猛?*/
??int?dst_ip;??????????????????/*?スキャンするIPアドレスの猛?????*/
??int?on?=?1;??????????????????/*?ON?????????????????????????????*/
??if?(argc?!=?3)?{
????fprintf(stderr?“usage:?%s?start_ip?last_ip\n“?argv[CMD_NAME]);
????exit(EXIT_FAILURE);
??}
??/*?スキャンするIPアドレスの認跋を肋年?*/
??start_ip?=?ntohl(inet_addr(argv[START_IP]));
??end_ip???=?ntohl(inet_addr(argv[LAST_IP]));
??memset(&send_sa?0?sizeof?send_sa);
??send_sa.sin_family?=?AF_INET;
??/*?ICMP/IP流減慨脫RAWソケットのオ〖プン?*/
??if?((s?=?socket(AF_INET?SOCK_RAW?IPPROTO_ICMP))?0)?{
????perror(“socket(SOCK_RAW?IPPROTO_ICMP)“);
????exit(EXIT_FAILURE);
??}
??/*?BROADCASTパケットも流慨できるようにする?*/
??if?(setsockopt(s?SOL_SOCKET?SO_BROADCAST?&on?sizeof?on)?0)?{
????perror(“setsockopt(SOL_SOCKET?SO_BROADCAST)“);
????exit(EXIT_FAILURE);
??}
??/*
???*?スキャンホストメインル〖チン
???*/
??for?(dst_ip?=?start_ip;?dst_ip?<=?end_ip;?dst_ip++)?{
????int?i;??/*?ル〖プ恃眶?*/
????send_sa.sin_addr.s_addr?=?htonl(dst_ip);
????CHKADDRESS(send_sa.sin_addr);
????for?(i?=?0;?i?3;?i++)?{
??????struct?timeval?tv;??/*?箕癸の攫鼠?*/
??????printf(“scan?%s?(%d)\r“?inet_ntoa(
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5938??2008-10-18?22:50??scanport_udp.c
?????文件???????7377??2008-10-18?22:50??scanhost.c
?????文件???????3668??2008-10-18?22:50??scanport_tcp.c
-----------?---------??----------?-----??----
????????????????16983????????????????????3
評論
共有 條評論