《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 網(wǎng)絡(luò)安全編程:嗅探技術(shù)

網(wǎng)絡(luò)安全編程:嗅探技術(shù)

2021-07-31
來源:計(jì)算機(jī)與網(wǎng)絡(luò)安全

  嗅探器可以神不知鬼不覺地去獲得局域網(wǎng)中用戶訪問網(wǎng)絡(luò)的數(shù)據(jù),可謂是隱藏在黑暗中的偷窺者。嗅探技術(shù)可以分為主動(dòng)嗅探和被動(dòng)嗅探。主動(dòng)嗅探主要是依賴ARP欺騙或MAC欺騙誘導(dǎo)被攻擊者將數(shù)據(jù)發(fā)送給攻擊者;被動(dòng)嗅探主要是將網(wǎng)卡設(shè)置為混雜模式,然后接收通過網(wǎng)卡的所有數(shù)據(jù)。本文主要介紹被動(dòng)嗅探的工作方式。

  1. 嗅探器的編寫思路

  共享方式下的以太網(wǎng)會(huì)將數(shù)據(jù)發(fā)送給同一網(wǎng)段內(nèi)的所有計(jì)算機(jī)網(wǎng)卡,接收到數(shù)據(jù)的網(wǎng)卡會(huì)將與自己MAC地址不匹配的數(shù)據(jù)丟棄。因?yàn)楣蚕硪蕴W(wǎng)會(huì)將別人的數(shù)據(jù)也發(fā)送給自己計(jì)算機(jī)的網(wǎng)卡,所以嗅探器就是利用共享以太網(wǎng)的原理進(jìn)行嗅探的。網(wǎng)卡可以工作在多種方式下,當(dāng)網(wǎng)卡工作在混雜模式下時(shí),可接收所有的數(shù)據(jù)而不丟棄。當(dāng)接收到數(shù)據(jù)以后,就需要自己解析IP頭、TCP頭、UDP頭等信息。因此,開發(fā)一個(gè)嗅探器的簡(jiǎn)單思路就是改變網(wǎng)卡的工作方式為混雜模式,并解析收到的數(shù)據(jù)包。

  設(shè)置網(wǎng)卡的工作方式為混雜模式,該功能通過ioctlsocket()函數(shù)即可改變。代碼如下:

  // 設(shè)置 SIO_RCVALL 控制代碼,以便接收所有的 IP 包

  DWORD dwValue = 1;

  if( ioctlsocket(sRaw, SIO_RCVALL, &dwValue) != 0 )

  {

  return -1;

  }

  SIO_RCVALL定義在mstcpip.h頭文件中,因此要編譯它,必須包含該頭文件及庫文件,代碼如下:

  #include <mstcpip.h>

  #pragma comment(lib, “Advapi32.lib”)

  為了收到數(shù)據(jù)包以便自己解析數(shù)據(jù)包,就要使用原始套接字,而不能單純地使用TCP或UDP套接字。對(duì)于解析數(shù)據(jù)包,必須了解和清楚數(shù)據(jù)包的格式。這里給出TCP和UDP數(shù)據(jù)包的格式,定義如下:

  typedef struct _TCPHeader // 20 字節(jié)的 TCP 頭

  {

  USHORT sourcePort; // 16 位源端口號(hào)

  USHORT destinationPort; // 16 位目的端口號(hào)

  ULONG sequenceNumber; // 32 位序列號(hào)

  ULONG acknowledgeNumber; // 32 位確認(rèn)號(hào)

  UCHAR dataoffset; // 高 4 位表示數(shù)據(jù)偏移

  UCHAR flags; // 6 位標(biāo)志位

  USHORT windows; // 16 位窗口大小

  USHORT checksum; // 16 位校驗(yàn)和

  USHORT urgentPointer; // 16 位緊急數(shù)據(jù)偏移量

  } TCPHeader, *PTCPHeader;

  typedef struct _UDPHeader

  {

  USHORT sourcePort; // 源端口號(hào)

  USHORT destinationPort; // 目的端口號(hào)

  USHORT len; // 封包長(zhǎng)度

  USHORT checksum; // 校驗(yàn)和

  } UDPHeader, *PUDPHeader;

  2. 嗅探器的實(shí)現(xiàn)代碼

  有了上面的內(nèi)容,剩下的部分就簡(jiǎn)單了。代碼如下:

  void DecodeTCPPacket(char *pData, char *szSrcIP, char *szDestIp)

  {

  TCPHeader *pTCPHdr = (TCPHeader *)pData;

  printf(“%s:%d -> %s:%d\r\n”,szSrcIP,

  ntohs(pTCPHdr->sourcePort),szDestIp,

  ntohs(pTCPHdr->destinationPort));

  // 下面還可以根據(jù)目的端口號(hào)進(jìn)一步解析應(yīng)用層協(xié)議

  switch(::ntohs(pTCPHdr->destinationPort))

  {

  case 21:

  // 解析 FTP 的用戶名和密碼

  printf(“FTP========================================\r\n”);

  pData = pData + sizeof(TCPHeader);

  if ( strncmp(pData, “USER ”, 5) == 0 )

  {

  printf(“Ftp UserName : %s \r\n”, pData + 4);

  }

  if ( strncmp(pData, “PASS ”, 5) == 0 )

  {

  printf(“Ftp Password : %s \r\n”, pData + 4);

  }

  printf(“FTP========================================\r\n”);

  break;

  case 80:

  case 8080:

  // 直接輸出瀏覽器獲取到的內(nèi)容

  printf(“WEB========================================\r\n”);

  printf(“%s\r\n”, pData + sizeof(TCPHeader));

  printf(“WEB========================================\r\n”);

  break;

  }

  }

  void DecodeUDPPacket(char *pData, char *szSrcIP, char *szDestIp)

  {

  UDPHeader *pUDPHdr = (UDPHeader *)pData;

  printf(“%s:%d -> %s:%d\r\n”,szSrcIP,

  ntohs(pUDPHdr->sourcePort),szDestIp,

  ntohs(pUDPHdr->destinationPort));

  }

  void DecodeIPPacket(char *pData)

  {

  IPHeader *pIPHdr = (IPHeader*)pData;

  in_addr source, dest;

  char szSourceIp[32], szDestIp[32];

  printf(“-------------------------------\r\n”);

  // 從 IP 頭中取出源 IP 地址和目的 IP 地址

  source.S_un.S_addr = pIPHdr->ipSource;

  dest.S_un.S_addr = pIPHdr->ipDestination;

  strcpy(szSourceIp, inet_ntoa(source));

  strcpy(szDestIp, inet_ntoa(dest));

  // IP 頭長(zhǎng)度

  int nHeaderLen = (pIPHdr->iphVerLen & 0xf) * sizeof(ULONG);

  switch( pIPHdr->ipProtocol )

  {

  case IPPROTO_TCP: // TCP 協(xié)議

  DecodeTCPPacket(pData + nHeaderLen, szSourceIp, szDestIp);

  break;

  case IPPROTO_UDP:

  DecodeUDPPacket(pData + nHeaderLen, szSourceIp, szDestIp);

  break;

  case IPPROTO_ICMP:

  break;

  }

  }

  int main()

  {

  WSADATA wsa;

  WSAStartup(MAKEWORD(2, 2), &wsa);

  // 創(chuàng)建原始套節(jié)字

  SOCKET sRaw = socket(AF_INET, SOCK_RAW, IPPROTO_IP);

  // 獲取本地 IP 地址

  char szHostName[56];

  SOCKADDR_IN addr_in;

  struct hostent *pHost;

  gethostname(szHostName, 56);

  if( (pHost = gethostbyname((char*)szHostName)) == NULL )

  {

  return -1;

  }

  // 在調(diào)用 ioctl 之前,必須綁定套節(jié)字

  addr_in.sin_family = AF_INET;

  addr_in.sin_port = htons(0);

  memcpy(&addr_in.sin_addr.S_un.S_addr, pHost->h_addr_list[0], pHost->h_length);

  printf(“Binding to interface : %s \r\n”, ::inet_ntoa(addr_in.sin_addr));

  if( bind(sRaw, (PSOCKADDR)&addr_in, sizeof(addr_in)) == SOCKET_ERROR )

  {

  return -1;

  }

  // 設(shè)置 SIO_RCVALL 控制代碼,以便接收所有的 IP 包

  DWORD dwValue = 1;

  if( ioctlsocket(sRaw, SIO_RCVALL, &dwValue) != 0 )

  {

  return -1;

  }

  // 開始接收封包

  char buff[1024];

  int nRet;

  while(TRUE)

  {

  nRet = recv(sRaw, buff, 1024, 0);

  if( nRet > 0 )

  {

  DecodeIPPacket(buff);

  }

  }

  closesocket(sRaw);

  WSACleanup();

  return 0;

  }




電子技術(shù)圖片.png

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美激情中文字幕乱码免费| 国产毛片精品国产一区二区三区| 午夜精品免费| 日韩亚洲欧美成人| 最新中文字幕一区二区三区| 亚洲成人直播| 久久国产精品一区二区| 亚洲夜间福利| 国产精品99久久久久久白浆小说| 亚洲精品欧美一区二区三区| 亚洲国产精品久久久久秋霞蜜臀| 欧美在线免费一级片| 亚洲摸下面视频| 亚洲午夜在线观看| 日韩视频免费| 亚洲视频久久| 亚洲精选久久| 91久久精品国产91久久性色tv| 国产一区二区三区久久悠悠色av | 亚洲一区视频在线观看视频| 亚洲精品护士| 亚洲日韩视频| 91久久精品国产91久久性色| 在线播放豆国产99亚洲| 国外成人免费视频| 好吊日精品视频| 国产午夜亚洲精品不卡| 欧美日韩亚洲91| 欧美精品久久久久久久久久| 久久先锋资源| 一区二区三区久久久| 久久国产一区二区| 欧美一区二区三区在| 黄网站免费久久| 国产综合婷婷| 狠狠入ady亚洲精品经典电影| 国产欧美日韩在线播放| 国产欧美综合在线| 国产日韩亚洲欧美精品| 国产伦精品一区二区三区四区免费| 欧美性做爰毛片| 欧美午夜视频网站| 国产精品高潮呻吟久久av黑人| 欧美日韩一级视频| 国产精品国产三级国产普通话蜜臀| 欧美性猛片xxxx免费看久爱 | 伊人色综合久久天天| 黄色一区二区在线| 在线观看欧美| 亚洲国产欧美日韩另类综合| 亚洲黄色片网站| 亚洲精品乱码久久久久久日本蜜臀 | 国产日韩av一区二区| 国产一区91| 一区二区三区在线视频观看| 亚洲国产成人不卡| 亚洲精品一区在线| 亚洲天堂偷拍| 欧美在线免费视频| 亚洲人久久久| 中文欧美在线视频| 午夜日韩在线观看| 久久婷婷久久| 欧美激情va永久在线播放| 欧美日韩精品是欧美日韩精品| 欧美视频一区二区| 国产偷自视频区视频一区二区| 国产综合色在线| 亚洲国产日韩一区| 一区二区三区欧美| 欧美一区=区| 最新国产拍偷乱拍精品| 亚洲午夜精品国产| 久久久久久久高潮| 欧美国产视频一区二区| 国产精品ⅴa在线观看h| 国产亚洲电影| 亚洲激情在线| 亚洲欧美日韩精品久久亚洲区 | 在线午夜精品| 久久爱www久久做| 亚洲精品一区中文| 亚洲免费一区二区| 久久久亚洲国产天美传媒修理工 | 国产亚洲精品bt天堂精选| 亚洲国产成人在线| 亚洲综合色在线| 亚洲人成网站影音先锋播放| 亚洲一区二区综合| 久久免费偷拍视频| 欧美日韩亚洲国产精品| 国产自产精品| 亚洲日本aⅴ片在线观看香蕉| 亚洲欧美国产视频| 99国产精品国产精品毛片| 欧美在线高清视频| 欧美极品影院| 国产综合色在线| 亚洲一区二区三区免费视频| 亚洲日本成人| 久久黄金**| 欧美日韩亚洲高清| 狠狠入ady亚洲精品| 国产精品99久久久久久有的能看| 亚洲电影免费观看高清完整版在线观看| 一区二区三区 在线观看视频| 久久久精品动漫| 欧美性事免费在线观看| 亚洲成色999久久网站| 香蕉久久久久久久av网站| 夜夜精品视频| 免费看亚洲片| 国产亚洲亚洲| 亚洲自拍电影| 一区二区三区不卡视频在线观看| 久久久亚洲一区| 国产精品久久久久久久免费软件| 亚洲成人影音| 久久9热精品视频| 性欧美长视频| 欧美日韩一区三区四区| 亚洲二区在线| 久久精品国产在热久久| 欧美一区二区三区四区夜夜大片 | 99精品99久久久久久宅男| 久久精品理论片| 欧美在线视频播放| 国产精品va在线播放| 亚洲人成在线免费观看| 亚洲激情在线观看| 久久久91精品国产一区二区三区| 国产精品激情| 夜色激情一区二区| 一区二区三区精品视频在线观看| 女仆av观看一区| 在线观看欧美日韩| 久久精品道一区二区三区| 久久精品一级爱片| 国产日韩在线看片| 亚洲欧美中文字幕| 欧美在线免费观看| 国产精品视频网| 亚洲午夜电影在线观看| 亚洲一区二区三区欧美| 欧美三级电影精品| 99综合视频| 亚洲免费视频在线观看| 国产精品高潮呻吟| 亚洲在线播放| 午夜激情一区| 国产美女在线精品免费观看| 亚洲欧美精品伊人久久| 午夜亚洲性色视频| 国产精品综合不卡av| 午夜伦欧美伦电影理论片| 久久精品国产清高在天天线| 国产一区二区精品丝袜| 欧美影院视频| 另类av一区二区| 亚洲国产成人精品久久| 日韩视频在线一区二区三区| 欧美日韩高清在线一区| 一本久道综合久久精品| 亚洲欧美美女| 国产日本亚洲高清| 久久精品三级| 免费观看国产成人| 亚洲日本视频| 亚洲一区二区在| 国产精品一区在线观看| 欧美在线一二三四区| 免费看av成人| 日韩视频免费在线| 亚洲欧美制服中文字幕| 国产乱码精品一区二区三| 欧美一区二区三区电影在线观看| 亚洲精品日韩久久| 欧美日韩国产电影| 亚洲主播在线播放| 欧美大片在线观看| 亚洲国产精品一区二区三区| 亚洲精品在线视频观看| 欧美丝袜一区二区| 欧美一级播放| 欧美国产在线观看| 亚洲一区成人| 久久婷婷国产综合精品青草| 尤妮丝一区二区裸体视频| 一区二区三区福利| 国产日产亚洲精品| 亚洲裸体视频| 国产精品视频在线观看| 亚洲电影免费在线观看| 欧美日韩国产综合在线| 亚洲欧美在线一区二区| 欧美激情按摩| 亚洲在线视频一区| 欧美不卡三区| 中文精品视频| 欧美一区二区高清|