C語言嗅探器帶報告

2020-09-03 會發光的你

關鍵代碼
通過C語言,實現了一個網絡的嗅探器的基本功能。可以做到能檢測計算機中的所有網卡,實現了網卡的選擇並打開混雜模式。監聽網絡中所有的數據包,並解析出數據包是使用的協議為哪種,以及每種協議首部的各種欄位,如源IP位址、目的IP位址、源埠、目的埠、源MAC地址、目的MAC地址、數據包的長度等。同時能解析出數據包數據部分的內容,並儘可能的以可讀的方式輸出。此外,還可以選擇要監聽的數據包協議的類型,在監聽的過程中可以檢測到 ping 命令等。
下載連結:https://download.csdn.net/download/RONNIE_Zz/12652059


void packet_handler(u_char *dumpfile, const struct pcap_pkthdr *header, const u_char *pkt_data){ //回調函數,當收到每一個數據包時會被libpcap所調用 if(header->caplen>400) return; struct tm *ltime; char timestr[16]; ip_header * ip_hd; udp_header * udp_hd; tcp_header * tcp_hd; ethe_header * ethe_hd; int ip_len,tcp_len,start; u_short sport,dport; printf(&34;); ltime=localtime(&header->ts.tv_sec); //將時間戳轉換為可讀字符 strftime( timestr, sizeof timestr, &34;, ltime); printf(&34;,timestr); ethe_hd = (ethe_header *)pkt_data; ip_hd = (ip_header *)(pkt_data + 14); ip_len = (ip_hd ->ver_ihl & 0xf) * 4; //ip首部長度 udp_hd = (udp_header *)((u_char *)ip_hd + ip_len); sport = ntohs(udp_hd->sport); dport = ntohs(udp_hd->dport); if(ip_hd->proto==17) { printf(&34;); start=ip_len+8; } else if(ip_hd->proto==6) { printf(&34;); tcp_hd = (tcp_header *)((u_char *)ip_hd + ip_len); tcp_len=ntohs(tcp_hd->sum)>>12; start=ip_len+tcp_len*4; } else if(ip_hd->proto==1) { printf(&34;); start=ip_len+23; } else printf(&34;); //printf(&34;,start); printf(&34;,header->caplen); printf(&34;, ip_hd->saddr.b1, ip_hd->saddr.b2, ip_hd->saddr.b3, ip_hd->saddr.b4, ip_hd->daddr.b1, ip_hd->daddr.b2, ip_hd->daddr.b3, ip_hd->daddr.b4, sport, dport, ethe_hd->mac_source_address.b1, ethe_hd->mac_source_address.b2, ethe_hd->mac_source_address.b3, ethe_hd->mac_source_address.b4, ethe_hd->mac_source_address.b5, ethe_hd->mac_source_address.b6, ethe_hd->mac_dest_address.b1, ethe_hd->mac_dest_address.b2, ethe_hd->mac_dest_address.b3, ethe_hd->mac_dest_address.b4, ethe_hd->mac_dest_address.b5, ethe_hd->mac_dest_address.b6); //輸出數據部分 printf(&34;); for (int i=start; (i < header->caplen + 1 ) ; i++) { printf(&34;, pkt_data[i-1]); if ( (i % LINE_LEN) == 0) printf(&34;); } printf(&34;);}

相關焦點

  • 零基礎如何學習C語言?親手總結 17 招絕技,帶你玩轉C語言
    C語言是我們大多數人的編程入門語言,對其也再熟悉不過了,不過很多初學者在學習的過程中難免會出現迷茫,比如:不知道C語言可以開發哪些項目,可以應用在哪些實際的開發中……這些迷茫也導致了我們在學習的過程中不知道如何學、學什麼,所以,
  • 網絡嗅探器工作原理及驅動流程
    嗅探器是一種監視網絡數據運行的軟體設備,協議分析器既能用於合法網絡管理也能用於竊取網絡信息。網絡運作和維護都可以採用協議分析器:如監視網絡流量、分析數據包、監視網絡資源利用、執行網絡安全操作規則、鑑定分析網絡數據以及診斷並修復網絡問題等等。非法嗅探器嚴重威脅網絡安全性,這是因為它實質上不能進行探測行為且容易隨處插入,所以網絡黑客常將它作為攻擊武器。
  • C語言在編程中起來到的作用
    1、C語言製作簡單計算器C語言開發計算器.jpg2、C語言實現通訊錄項目使用 C 語言完成一個簡單的通訊錄。會涉及到結構體、數組、鍊表等重要概念。C語言實現高並發聊天室.png4、C語言編寫萬年曆使用 C 語言完成一個簡單的日曆功能。輸入相應的年/月即可看到當月的日曆。image.png二、C語言可以開發遊戲當然C語言也可以開發一些小遊戲,有趣的同時也掌握了相應的知識點。5、C語言製作2048使用 C 語言完成一個2048遊戲。
  • 基於linux平臺的c語言語言教學針與數組
    大家好,我是陌塵,從今天開始,我會更新全套的c語言教學,從頭開始,一步一步,跟著我學,你也可以成為程序大神c語言是七十年代初問世的,現在已經成為luax下的最流行的高級語言,luax大部分語言都是用c語言寫的
  • C語言的歷史,個人談談c語言
    作為一門計算機語言,c語言是一門面向過程,非常抽象的一個程序設計語言,他是在底層開發,並不適用於高層開發,能夠直接以簡單的方式編譯存儲器。作為一門高級語言,不需要任何運行環境。20世紀80年代,美國國家標準局為了避免各國產生的差異,於是給c語言制定了一套完整的國際標準語言
  • 那些主流程式語言的知識,C語言
    前言對於程式語言來說,經常看到有因為各自支持的語言陣營而互懟的,其實根本沒那個必要,都只是一種工具而已。當多數主流語言都會使用時也許你就不會有偏見了,本質不過都是用來描述計算機的一個任務,只是每門語言設計時考慮的側重點不一樣而已。
  • 計算機二級c語言
    計算機二級c語言,那麼,關於計算機二級c語言還有哪些知識點呢? 成人計算機培訓機構市面上非常多,尤其是我們剛剛從學校走出來不知道哪家成人計算機培訓機構比較好,自己隨便在網上搜索了一下成人計算機培訓機構哪家好?
  • c語言入門第一季3
    C語言一經出現就以其功能豐富、表達能力強、靈活方便、應用面廣等特點迅速在全世界普及和推廣今天這篇文章主要講數據輸入和格式化輸出。上面就是c語言包含的數據類型結構這張就是c語言常用的格式化輸出這就是我們這節課的代碼當我們輸入完代碼之後就可以運行了等會我會解釋代碼的內容運行帶代碼點解上面的嘆號就可以了 int age;   float Height; printf("請輸入你的年齡:");//列印到屏幕(括號中得內容)。
  • 跟光磊學C語言-C語言概述與開發環境搭建
    語言和計算機語言的區別是計算機語言只要語法沒有問題就會無條件執行。個關鍵字就可以完成無數的功能執行速度快(機器語言/彙編語言/C語言)功能強大(C語言是當前最流行的語言)編程自由(語法檢測不是非常嚴格,初學者容易出錯,不同的環境編譯的結果可能不一樣)可移植性好(windows,linux,macOS都支持C語言,嵌入式,物聯網都支持C語言)
  • C語言教程
    ,又具有彙編語言的特點。2.C語言教程--C語言有哪些特點?  編輯、編譯、連接、運行一個C語言程序的具體過程如下:  (1)編輯源程序,完成之後將源程序以擴展名.c存檔。  (2)對源程序進行編譯,即將源程序轉換為擴展名為.obj的二進位代碼。
  • C 語言發展史的點點滴滴
    此版本還看到了C語言的開始,該語言用於編寫一些命令。此處的代碼僅是某些命令,某些庫函數和C編譯器的原始碼。c /中的文件來自 last1120c.tar.gz 磁帶,並構成了第二版Unix的有效C編譯器。
  • 帶你走進C語言,簡單C程序和完整C程序的組成
    初學C語言你第一個代碼肯定是「hello word」這個簡單的C,#include <stdio.h>Int main(){Printf(「HELLO,WORD\n」);Return 0;}就是這個代碼,具體這些都是什麼意思你知道麼?讓我帶你走進C的世界。
  • 李老師帶你做二級C語言選擇題真題,輕鬆過級「10」
    #c語言李老師帶你做二級C語言選擇題真題,輕鬆過級「7」第【8】期(基本語法36-41題):李老師帶你做二級C語言選擇題真題,輕鬆過級「8」第【9】期(輸入輸出1-5題):李老師帶你做二級C語言選擇題真題,輕鬆過級「9」第【10】期、輸入輸出(6-10題)
  • C+相比其他語言到底難在哪裡?
    看過程式語言排行榜的都知道,c/c++自02年以來,不管時代如何發展,其排名一直在前五以內,足見其在程式語言界的地位。編程界流行這麼一句話:c幾乎什麼都能做,c++幾乎什麼都能做好,足見其功能的強大。
  • 李老師帶你做二級C語言選擇題真題,輕鬆過級「13」
    李老師帶你做二級C語言選擇題真題,輕鬆過級「9」第【10】期(輸入輸出6-10題):李老師帶你做二級C語言選擇題真題,輕鬆過級「10」第【11】期(輸入輸出11-15題):李老師帶你做二級C語言選擇題真題,輕鬆過級「11」第【12】期(輸入輸出16-20題):
  • C語言全局變量那些事兒
    (感謝網友 @我的上鋪叫路遙 投稿)作為一名程式設計師,如果說沉迷一門程式語言算作一種樂趣的話,那麼與此同時反過來去黑一門程式語言就是這種樂趣的升華。今天我們就來黑一把C語言,好好展示一下這門經典語言令人抓狂的一面。
  • 「C語言從入門到入土」必備C語言基礎筆記整理
    一、C語言1、什麼是C語言?C語言是人寫機器看的一種語言。C語言是高級語言中的低級語言。C語言貼近硬體。C語言的入門學習比較簡單。彙編語言——>B語言——>C語言2、C語言的特性首先C語言就是你的女朋友。
  • 那些年學C語言犯的錯,C語言新手易錯集錦之main函數
    在C語言中缺少主函數的時候都會顯示以上錯誤哦!相信很多剛開始學習C語言的小夥伴都會出現這樣的問題吧!雙無系列沒有返回值,沒有入參main()在C89標準中,這種寫法是可以接受的,但使用現在的編譯器編譯時,會報告警,並且會將其返回值默認為int。實際上,如果函數沒有顯式聲明返回類型,那麼編譯器會將返回值默認為int。
  • C語言怎麼樣?今天聊聊C語言的發展史!
    在C語言被用作系統程式語言之前,Tomphson也用過B語言編寫過作業系統。可見在C語言實現以前,B語言已經可以投入實用了。因此第一個C語言編譯器的原型完全可能是用B語言或者混合B語言與PDP彙編語言編寫的。 我們現在都知道,B語言的執行效率比較低,但是如果全部用彙編語言來編寫,不僅開發周期長、維護難度大,更可怕的是失去了高級程序設計語言必需的移植性。
  • 60個C語言項目源碼
    來源:公眾號(c語言與cpp編程)c語言24點遊戲源碼c語言Turbo C下寫的俄羅斯方塊c語言UDP傳輸系統源碼c語言萬年曆源碼c語言五子棋源碼c語言俄羅斯方塊c語言做的一個任務管理器c語言做的播放器源碼