午夜精品福利视频,亚洲激情专区,免费看a网站,aa毛片,亚洲色图激情小说,亚洲一级毛片,免费一级毛片一级毛片aa

原始套接字透析的構建sniffer -電腦資料

電腦資料 時間:2019-01-01 我要投稿
【m.stanzs.com - 電腦資料】

  大家知道,以太網(wǎng)采用廣播機制,所有與網(wǎng)絡連接的工作站都可以看到網(wǎng)絡上傳遞的數(shù)據(jù),

原始套接字透析的構建sniffer

。通過查看包含在幀中的目標地址,確定是否進行接收或放棄。如果證明 數(shù)據(jù)確實是發(fā)給自己的,工作站將會接收數(shù)據(jù)并傳遞給高層協(xié)議進行處理。但是,如果讓網(wǎng)卡置于混雜模式(Promiscuous mode),則網(wǎng)卡不會鑒別幀的MAC地址,而是一律接收。

  上圖給出了以太網(wǎng)的幀格式,網(wǎng)卡是通過圖中的MAC地址進行ID標識的。傳說中的網(wǎng)絡嗅探(sniffer)就是指讓網(wǎng)卡進入混雜模式從而接收正在局域 網(wǎng)總線上發(fā)送的所有報文。為什么能夠嗅探到局域網(wǎng)上的所有報文,是因為基于IEEE 802.3的以太網(wǎng)在MAC層采用廣播方式發(fā)送幀。因此,從理論上來講,我們可以編寫 程序監(jiān)聽局域網(wǎng)上的所有信息。QQ、MSN監(jiān)聽軟件就是基于這一 機理的,它可以監(jiān)聽局域網(wǎng)上所有用戶的QQ、MSN聊天記錄。

  為了實現(xiàn)sniffer,我們應首先讓網(wǎng)卡進入混雜模式并建立和設置原始套接字為親自處理報頭:

  //初始化SOCKET

  WSADATA wsaData;

  iErrorCode = WSAStartup(MAKEWORD(2, 1), &wsaData);

  CheckSockError(iErrorCode, "WSAStartup");

  SockRaw = socket(AF_INET, SOCK_RAW, IPPROTO_IP);

  CheckSockError(SockRaw, "socket");

  //獲取本機IP地址

  char name;

  iErrorCode = gethostname(name, MAX_HOSTNAME_LAN);

  CheckSockError(iErrorCode, "gethostname");

  struct hostent *pHostent;

  pHostent = (struct hostent*)malloc(sizeof(struct hostent));

  pHostent = gethostbyname(name);

  SOCKADDR_IN sa;

  sa.sin_family = AF_INET;

  sa.sin_port = htons(6000);

  memcpy(&sa.sin_addr.S_un.S_addr, pHostent->h_addr_list, pHostent->h_length);

  iErrorCode = bind(SockRaw, (PSOCKADDR) &sa, sizeof(sa));

  CheckSockError(iErrorCode, "bind");

  //設置SOCK_RAW為SIO_RCVALL,以便接收所有的IP包

  DWORD dwBufferLen;

  DWORD dwBufferInLen = 1;

  DWORD dwBytesReturned = 0;

  iErrorCode = WSAIoctl(SockRaw, SIO_RCVALL, &dwBufferInLen, sizeof(dwBufferInLen)

  , &dwBufferLen, sizeof(dwBufferLen), &dwBytesReturned, NULL, NULL);

  CheckSockError(iErrorCode, "Ioctl");

  下面就可以接收并處理IP報文:

  //偵聽IP報文

  while (1)

  {

  memset(RecvBuf, 0, sizeof(RecvBuf));

  iErrorCode = recv(SockRaw, RecvBuf, sizeof(RecvBuf), 0);

  CheckSockError(iErrorCode, "recv");

  iErrorCode = DecodeIpPack(RecvBuf, iErrorCode);

  CheckSockError(iErrorCode, "Decode");

  }

  Sniffer程序接收到報文后,即可調用相應的程序來分析具體的報文,

電腦資料

原始套接字透析的構建sniffer》(http://m.stanzs.com)。

  對于sniffer我們不得不說的是,僅僅將網(wǎng)卡置于混雜模式并不能保證我們能嗅探到交換式局域網(wǎng)上的所有幀,因為交換式局域網(wǎng)已經(jīng)不再是廣播式/總線傳輸了,為了能嗅探到交換式局域網(wǎng)上的幀,我們需要采用另一項技術ARP欺騙。

最新文章