国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關(guān)注微信公眾號

基于Linux環(huán)境下的Sniffer設(shè)計與實現(xiàn)
2005-12-05   

一、Sniffer原理分析
在實現(xiàn)嗅探器之前,我們先需要掌握TCP/IP協(xié)議。TCP協(xié)議和IP協(xié)議指兩個用在Internet上的網(wǎng)絡(luò)協(xié)議(或數(shù)據(jù)傳輸?shù)姆椒ǎK鼈兎謩e是傳輸控制協(xié)議和互連網(wǎng)協(xié)議。這兩個協(xié)議屬于眾多的TCP/IP 協(xié)議組中的一部分。
TCP/IP協(xié)議組中的協(xié)議保證Internet上數(shù)據(jù)的傳輸,提供了幾乎現(xiàn)在上網(wǎng)所用到的所有服務(wù)。這些服務(wù)包括:電子郵件的傳輸、文件傳輸、新聞組的發(fā)布和訪問萬維網(wǎng)。
TCP協(xié)議在IP協(xié)議之上。與IP協(xié)議提供不可靠傳輸服務(wù)不同的是,TCP協(xié)議為其上的應(yīng)用層提供了一種可靠傳輸服務(wù)。這種服務(wù)的特點是:可靠、全雙工、流式和無結(jié)構(gòu)傳輸。TCP傳輸原理:
TCP協(xié)議使用了一個叫積極確認(rèn)和重發(fā)送(positive acknowledgement with retransmission)的技術(shù)來實現(xiàn)可靠傳輸。接收者在收到發(fā)送者發(fā)送的數(shù)據(jù)后,必須發(fā)送一個相應(yīng)的確認(rèn)(ACK)消息,表示它已經(jīng)收到了數(shù)據(jù)。發(fā)送者保存發(fā)送的數(shù)據(jù)的記錄,在發(fā)送下一個數(shù)據(jù)之前,等待這個數(shù)據(jù)的確認(rèn)消息。在它發(fā)送這個數(shù)據(jù)的同時,還啟動了一個記時器。如果在一定時間之內(nèi),沒有接收到確認(rèn)消息,就認(rèn)為是這個數(shù)據(jù)在傳送時丟失了,接著,就會重新發(fā)送這個數(shù)據(jù)。
這種方法還產(chǎn)生了一個問題,就是包的重復(fù)。如果網(wǎng)絡(luò)傳輸速度比較低,等到等待時間結(jié)束后,確認(rèn)消息才返回到發(fā)送者,那么,由于發(fā)送者采用的發(fā)送方法,就會出現(xiàn)重復(fù)的數(shù)據(jù)了。解決的一個辦法是給每個數(shù)據(jù)一個序列號,并需要發(fā)送者記住哪個序列號的數(shù)據(jù)已經(jīng)確認(rèn)了。為了防止由于延時或重復(fù)確認(rèn),規(guī)定確認(rèn)消息里也要包含確認(rèn)序列號。從而發(fā)送者就能知道哪個包已經(jīng)確認(rèn)了。TCP協(xié)議中還有一鮒匾?母拍睿夯??翱凇U庖環(huán)椒ǖ氖褂茫?溝么?涓?癰咝А?
有前面的描述可見,發(fā)送者在發(fā)送完一個數(shù)據(jù)包之后,要等待確認(rèn)。在它收到確認(rèn)消息之前的這段時間是空閑的。如果網(wǎng)絡(luò)延時比較長,這個問題會相當(dāng)明顯。滑動窗口方法是在它收到確認(rèn)消息以前,發(fā)送多個數(shù)據(jù)包。可以想象成有一個窗口在一個序列上移動。如果一個包發(fā)送出去之后還沒有確認(rèn),叫做未確認(rèn)包。通常未確認(rèn)的包的個數(shù)就是窗口的大小。在接收端,也有一個滑動窗口接收和確認(rèn)一個包。
使用TCP傳輸就是建立一個連接。在TCP傳輸中一個連接有兩個端點組成。其實,一個連接代表的是發(fā)送和接收兩端應(yīng)用程序的之間的一個通信。可以把他們想象成建立了一個電路。通常一個連接用下面的公式表示:(host,port),host是主機,port是端口。TCP端口能被幾個應(yīng)用程序共享。對于程序員來講,可以這樣理解:一個應(yīng)用程序可以為不同的連接提供服務(wù)。TCP傳輸?shù)膯挝皇嵌危诮⑦B接,傳送數(shù)據(jù),確認(rèn)消息和告之窗口大小時均要進行段的交換。
TCP協(xié)議使用一個三次握手來建立一個TCP連接的。握手過程的第一個段的代碼位設(shè)置為SYN,序列號為x,表示開始一次握手。接收方收到這個段后,向發(fā)送者回發(fā)一個段。代碼位設(shè)置為SYN和ACK,序列號設(shè)置為y,確認(rèn)序列號設(shè)置為x+1。發(fā)送者在受到這個段后,知道就可以進行TCP數(shù)據(jù)發(fā)送了,于是,它又向接收者發(fā)送一個ACK段,表示,雙方的連接已經(jīng)建立。在完成握手之后,就開始正式的數(shù)據(jù)傳輸了。上面握手段中的序列號都是隨機產(chǎn)生的。
了解了TCP/IP協(xié)議后,還要掌握網(wǎng)絡(luò)編程。在LINUX網(wǎng)絡(luò)編程中,我們可以認(rèn)為套接字是將Unix系統(tǒng)的文件操作推廣到提供點對點的通信。如果要操作文件,應(yīng)用程序會根據(jù)應(yīng)用程序的需要為之創(chuàng)建一個套接字。操作系統(tǒng)返回一個整數(shù)。應(yīng)用程序通過引用這個正數(shù)來使用這個套接字。文件描述符和套接字描述符的不同點在于,在程序調(diào)用open()時,操作系統(tǒng)將一個文件描述符綁定到一個文件或設(shè)備,但在創(chuàng)建一個套接字時,可以不將它綁定到一個目標(biāo)地址。程序可以在任何想要用這個套接字的時候指定目標(biāo)地址。在點對點的通信程序中,我們將請求服務(wù)或數(shù)據(jù)的程序叫做客戶端程序,提供數(shù)據(jù)或服務(wù)的軟件叫做服務(wù)器程序。下面解釋一下一個基本的套接字系統(tǒng)調(diào)用函數(shù),也是該嗅探器中要用到的函數(shù):
socket()
#include < sys/types.h>
#include < sys/socket.h>
int socket(int family, int type, int protocol);
int family參數(shù)指定所要使用的通信協(xié)議,取以下幾個值:
AF_UNIX Unix內(nèi)部協(xié)議
AF_INET Internet協(xié)議
AF_NS Xerox NS協(xié)議
AF_IMPLINK IMP 連接層
int type 指定套接字的類型,取以下幾個值 :
SOCK_STREAM 流套接字
SOCK_DGRAM 數(shù)據(jù)報套接字
SOCK_RAW 未加工套接字
SOCK_SEQPACKET 順序包套接字
int protocol 參數(shù)通常設(shè)置為0。
socket()系統(tǒng)調(diào)用返回一個整數(shù)值,叫做套接字描述字sockfd,它的原理與文件描述符一樣。網(wǎng)絡(luò)I/O的第一步通常就是調(diào)用這個函數(shù)。
二、Sniffer具體實現(xiàn)
現(xiàn)在具體介紹一下該嗅探器的實現(xiàn)。該嗅探器是在Red Hat LINUX6.2版本中,用C語言編寫的,以調(diào)試并編譯通過。
Sniffer是一種常用的收集有用數(shù)據(jù)方法,這些數(shù)據(jù)可以是用戶的帳號和密碼,可以是一些商用機密數(shù)據(jù)等等。Sniffer是一種常用的收集有用數(shù)據(jù)的方法,這些數(shù)據(jù)可以是用戶的帳號和密碼,可以是一些商用機密數(shù)據(jù)等等。
以太網(wǎng)sniffing 是指對以太網(wǎng)設(shè)備上傳送的數(shù)據(jù)包進行偵聽,發(fā)現(xiàn)感興趣的包。如果發(fā)現(xiàn)符合條件的包,就把它存到一個log文件中去。通常設(shè)置的這些條件是包含字"username"或"password"的包。它的目的是將網(wǎng)絡(luò)層放到promiscuous模式,從而能干些事情。Promiscuous模式是指網(wǎng)絡(luò)上的所有設(shè)備都對總線上傳送的數(shù)據(jù)進行偵聽,并不僅僅是它們自己的數(shù)據(jù)。根據(jù)以太網(wǎng)的工作原理,可以知道:一個設(shè)備要向某一目標(biāo)發(fā)送數(shù)據(jù)時,它是對以太網(wǎng)進行廣播的。一個連到以太網(wǎng)總線上的設(shè)備在任何時間里都在接受數(shù)據(jù)。不過只是將屬于自己的數(shù)據(jù)傳給該計算機上的應(yīng)用程序。利用這一點,可以將一臺計算機的網(wǎng)絡(luò)連接設(shè)置為接受所有以太網(wǎng)總線上的數(shù)據(jù),從而實現(xiàn)sniffer。
sniffer通常運行在路由器,或有路由器功能的主機上。這樣就能對大量的數(shù)據(jù)進行監(jiān)控。sniffer屬第二層次的攻擊。通常是攻擊者已經(jīng)進入了目標(biāo)系統(tǒng),然后使用sniffer這種攻擊手段,以便得到更多的信息。sniffer除了能得到口令或用戶名外,還能得到更多的其他信息,比如一個其他重要的信息,在網(wǎng)上傳送的金融信息等等。sniffer幾乎能得到任何以太網(wǎng)上的傳送的數(shù)據(jù)包。通常sniffer程序只看一個數(shù)據(jù)包的前200-300個字節(jié)的數(shù)據(jù),就能發(fā)現(xiàn)想口令和用戶名這樣的信息。
下面對該程序的實現(xiàn)作一個介紹。結(jié)構(gòu)etherpacket定義了一個數(shù)據(jù)包。其中的ethhdr,iphdr,和tcphdr分別是三個結(jié)構(gòu),用來定義以太網(wǎng)幀,IP數(shù)據(jù)包頭和TCP數(shù)據(jù)包頭的格式。
它們在頭文件中的定義如下:
struct ethhdr
{
unsigned char h_dest[ETH_ALEN]; /* destination eth addr */
unsigned char h_source[ETH_ALEN]; /* source ether addr */
unsigned short h_proto; /* packet type ID field */
};
struct iphdr
{
#if __BYTE_ORDER == __LITTLE_ENDIAN
u_int8_t ihl:4;
u_int8_t version:4;
#elif __BYTE_ORDER == __BIG_ENDIAN
u_int8_t version:4;
u_int8_t ihl:4;
#else
#error "Please fix < bytesex.h>"
#endif
u_int8_t tos;
u_int16_t tot_len;
u_int16_t id;
u_int16_t frag_off;
u_int8_t ttl;
u_int8_t protocol;
u_int16_t check;
u_int32_t saddr;
u_int32_t daddr;
/*The options start here. */
};
struct tcphdr
{
u_int16_t source;
u_int16_t dest;
u_int32_t seq;
u_int32_t ack_seq;
#if __BYTE_ORDER == __LITTLE_ENDIAN
u_int16_t res1:4;
u_int16_t doff:4;
u_int16_t fin:1;
u_int16_t syn:1;
u_int16_t rst:1;
u_int16_t psh:1;
u_int16_t ack:1;
u_int16_t urg:1;
u_int16_t res2:2;
#elif __BYTE_ORDER == __BIG_ENDIAN
u_int16_t doff:4;
u_int16_t res1:4;
u_int16_t res2:2;
u_int16_t urg:1;
u_int16_t ack:1;
u_int16_t psh:1;
u_int16_t rst:1;
u_int16_t syn:1;
u_int16_t fin:1;
#else
#error "Adjust your < bits/endian.h > defines"
#endif
u_int16_t window;
u_int16_t check;
u_int16_t urg_ptr;
};
接下來,定義了一個結(jié)構(gòu)變量victim。隨后,看一下函數(shù)int openintf(char *d),它的作用是打開一個網(wǎng)絡(luò)接口。在main中是將eth0作為參數(shù)來調(diào)用這個函數(shù)。在這個函數(shù)中,用到了下面的結(jié)構(gòu):
struct ifreq
{
#define IFHWADDRLEN 6
#define IFNAMSIZ 16
union
{
char ifrn_name[IFNAMSIZ]; /* Interface name, e.g. "en0". */
} ifr_ifrn;
union
{
struct sockaddr ifru_addr;
struct sockaddr ifru_dstaddr;
struct sockaddr ifru_broadaddr;
struct sockaddr ifru_netmask;
struct sockaddr ifru_hwaddr;
short int ifru_flags;
int ifru_ivalue;
int ifru_mtu;
struct ifmap ifru_map;
char ifru_slave[IFNAMSIZ]; /* Just fits the size */
__caddr_t ifru_data;
} ifr_ifru;
};
這個結(jié)構(gòu)叫接口請求結(jié)構(gòu),用來調(diào)用在I/O輸入輸出時使用。所有的接口I/O輸出必須有一個參數(shù),這個參數(shù)以ifr_name開頭,后面的參數(shù)根據(jù)使用不同的網(wǎng)絡(luò)接口而不同。
如果你要看看你的計算機有哪些網(wǎng)絡(luò)接口,使用命令ifconfig即可。一般會看到兩個接口lo0和eth0。在ifreq結(jié)構(gòu)中的各個域的含義與ifconfig的輸出是一一對應(yīng)的。在這里,程序?qū)th0作為ifr_name來使用的。接著,該函數(shù)將這個網(wǎng)絡(luò)接口設(shè)置成promiscuous模式。請記住,sniffer是工作在這種模式下的。
再看一下函數(shù)read_tcp,它的作用是讀取TCP數(shù)據(jù)包,傳給filter處理。Filter函數(shù)是對上述讀取的數(shù)據(jù)包進行處理。接下來的程序是將數(shù)據(jù)輸出到文件中去。函數(shù)clearup是在程序退出等事件時,在文件中作個記錄,并關(guān)閉文件。否則,你剛才做的記錄都沒了。
三、運行結(jié)果及結(jié)論
運行這個程序的結(jié)果,本人的計算機是處于一個由三十臺以上主機組成的局域網(wǎng)環(huán)境中,這個局域網(wǎng)中的所有主機通過代理網(wǎng)關(guān)可以上Internet。經(jīng)測試,在晚上上網(wǎng)高峰期,可以在幾分鐘之內(nèi)探測到5以上個不同IP地址的郵箱用戶名及密碼,當(dāng)然,還可以探測到別的信息,如用戶用Web瀏覽器瀏覽的網(wǎng)頁內(nèi)容、telnet登錄名及密碼等有用信息。預(yù)計如果該程序運行于網(wǎng)關(guān),會截取更多的信息。

熱詞搜索:

上一篇:Sniffer常見問題集
下一篇:Sniffer使用簡介

分享到: 收藏
国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区
欧美日本不卡| 久久精品视频免费| 亚洲欧洲三级| 久久久久久久久一区二区| 国产美女诱惑一区二区| 欧美一区二区性| 91久久精品一区| 国产伪娘ts一区| 欧美剧在线免费观看网站| 亚洲欧美日韩国产一区| 国产一区二区三区高清播放| 久久在线91| 欧美一区二视频在线免费观看| 国产一区二区中文| 亚洲精品免费电影| 亚洲欧美日韩成人| 在线免费观看日本一区| 国内成+人亚洲| 激情欧美日韩| 国模私拍一区二区三区| 欧美国产日韩精品| 香蕉国产精品偷在线观看不卡| 国产午夜精品全部视频在线播放| 欧美一区深夜视频| 91久久国产综合久久| 欧美日韩国产一区| 欧美在线网站| 亚洲人成绝费网站色www| 国产精品www网站| 欧美在线观看网址综合| 日韩视频亚洲视频| 免费成人你懂的| 久久se精品一区二区| 国产日韩欧美不卡| 国产精品福利网站| 久久综合伊人77777麻豆| 亚洲黄色一区二区三区| 国产伦精品一区二区三区免费| 久久免费国产精品| 日韩视频免费| 国产亚洲综合在线| 欧美久色视频| 久热综合在线亚洲精品| 久久成人18免费观看| 亚洲欧美国产77777| 日韩亚洲成人av在线| 国产欧美日韩91| 欧美成人高清视频| 久久精品伊人| 欧美在线在线| 久久一本综合频道| 久久综合久色欧美综合狠狠| 久久精品国产2020观看福利| 午夜亚洲激情| 亚洲美女啪啪| 国产伊人精品| 亚洲高清不卡在线观看| 狠狠色狠狠色综合人人| 国产在线精品一区二区夜色| 91久久视频| 亚洲欧美电影在线观看| 久久久之久亚州精品露出| 男人的天堂亚洲在线| 久久激情五月丁香伊人| 久久国产精品一区二区| 欧美丰满高潮xxxx喷水动漫| 欧美日韩高清在线| 在线精品视频一区二区| 亚洲一区免费视频| 欧美肥婆在线| 国产亚洲欧美激情| 亚洲美女av电影| 久久男女视频| 国产精品人成在线观看免费| 国产欧美一区二区三区在线老狼| 欧美日韩一区二区三区高清| 国产一区在线视频| 亚洲精品免费网站| 正在播放欧美一区| 欧美激情一区二区三区全黄| 国产综合欧美在线看| 日韩一级精品视频在线观看| 亚洲小视频在线观看| 欧美精品性视频| 在线免费观看欧美| 另类图片综合电影| 在线观看精品一区| 久久婷婷丁香| 在线观看精品| 老司机免费视频一区二区三区| 亚洲成色www久久网站| 久久深夜福利免费观看| 亚洲第一页中文字幕| 男男成人高潮片免费网站| 欧美成人免费网| 99国产精品99久久久久久| 国产精品豆花视频| 午夜激情综合网| 国产视频在线观看一区| 久久精品人人做人人综合| 影音先锋中文字幕一区二区| 欧美高清一区| 亚洲综合色在线| 激情校园亚洲| 欧美日韩三级视频| 久久精品国产亚洲aⅴ| 亚洲第一色中文字幕| 欧美性感一类影片在线播放| 欧美激情一区二区三区| 国产日韩精品入口| 免费亚洲视频| 亚洲调教视频在线观看| 欧美母乳在线| 亚洲综合日本| 亚洲国产欧美一区二区三区同亚洲| 欧美精品一区二区精品网| 亚洲欧美视频一区二区三区| 国语自产精品视频在线看一大j8| 欧美精品福利| 蜜桃精品久久久久久久免费影院| aⅴ色国产欧美| 黄色亚洲免费| 国产欧美精品在线观看| 国产精品美女久久久久av超清| 久久九九99| 亚洲一区精品电影| 亚洲国产精品一区制服丝袜| 国产精品成人aaaaa网站 | 午夜伦欧美伦电影理论片| 极品中文字幕一区| 国产精品欧美一区二区三区奶水| 性久久久久久| 1024亚洲| 亚洲国产福利在线| 国产精品一区二区三区四区| 久久国产精彩视频| 欧美亚洲系列| 久久久成人网| 亚洲精品综合精品自拍| 亚洲第一区在线观看| 1024亚洲| 国模一区二区三区| 国外视频精品毛片| 国产精品夜夜嗨| 国产精品亚洲第一区在线暖暖韩国| 欧美日韩 国产精品| 欧美wwwwww| 欧美一区二区| 亚洲欧美激情视频| 亚洲欧美激情一区| 中文精品视频| 欧美成人69av| 欧美—级a级欧美特级ar全黄| 久久精品官网| 欧美一级视频精品观看| 久久国产精品亚洲va麻豆| 性一交一乱一区二区洋洋av| 亚洲一级在线| 欧美在线三级| 你懂的成人av| 国产精品h在线观看| 国内在线观看一区二区三区| 国产亚洲欧美中文| 亚洲国内欧美| 亚洲天堂第二页| 久久久国产精品亚洲一区| 欧美www视频在线观看| 欧美视频亚洲视频| 国产精品视频1区| 在线免费观看视频一区| 一本色道久久综合亚洲精品小说| 亚洲私拍自拍| 欧美激情中文字幕乱码免费| 国产精品人成在线观看免费| 亚洲国产精品精华液2区45| 亚洲欧美国产日韩天堂区| 欧美国产日韩a欧美在线观看| 国产精品chinese| 欧美国产精品一区| 国产一区二区三区最好精华液 | 国内成+人亚洲+欧美+综合在线| 99视频超级精品| 欧美激情精品久久久六区热门 | 亚洲日本va午夜在线影院| 久久国产精品第一页| 国产欧美日韩麻豆91| 亚洲毛片在线观看.| 久久综合给合久久狠狠狠97色69| 欧美午夜在线一二页| 亚洲精品美女| 美女诱惑一区| 国产日韩一级二级三级| 正在播放欧美视频| 国产精品久久久| 亚洲精品久久久久中文字幕欢迎你| 亚洲国产一区二区精品专区| 久久久综合视频| 在线播放一区| 欧美大香线蕉线伊人久久国产精品| 狠狠色狠狠色综合日日91app|