最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

面向網絡編程大家都知道吧!面向監(jiān)獄編程,你想要試試嗎?

2021-05-08 18:46 作者:C語言編程__Plus  | 我要投稿

網絡編程大家都學過吧?

socket->bind->listen->accept->recv/recvfrom?->send/sendto

一氣呵成,什么select、poll、epoll多路復用模型信手拈來。

但這一套東西,只是開發(fā)建立在傳輸層TCP、UDP之上的應用程序。


你有沒有想過,如何編程批量發(fā)送一批TCP SYN握手包,來進行端口掃描?

如何編程來發(fā)送一個偽造了IP地址的ARP數據包和IP數據報文?

甚至,如何編程來發(fā)送一個偽造了MAC地址的以太網數據幀?

一旦你掌握了上面幾招,玩轉數據包不是問題,開發(fā)各種神器不在話下。但一定要用在正途上,不要面向監(jiān)獄編程哦~


那到底如何構造發(fā)送各種各樣的數據包呢?今天給大家介紹一個強大的玩意:scapy

這是一個強大的數據包構造工具,你可以在Python中使用它,是時候喊一聲:Python大法好了!

ARP

我們拿ARP開刀,ARP是地址解析協議,局域網中通信需要使用網卡的MAC地址,而網絡層通信使用的是IP地址,在應用程序的數據包被發(fā)送出去之前,在IP報文前面添加以太網幀頭時,需要填寫收件人的MAC地址,如果是局域網內部通信,這個收件人地址就是目的電腦的網卡MAC地址,而如果是互聯網上的公網IP地址,這個收件人地址就是網關的MAC地址。

無論怎樣,總得有個MAC地址才行,那怎么來呢?這就是ARP協議要干的事,它能將一個IP地址轉換成一個MAC地址。

ARP解析的過程這里就不詳述了,簡單來說,比如要查詢192.168.1.100的MAC地址,主機使用ARP協議在局域網中發(fā)出一聲廣播:192.168.1.100,我叫你一聲你敢答應嗎?

局域網中所有人都能收到這個廣播(因為它的收件人MAC地址是FF-FF-FF-FF-FF-FF),但只有IP地址是192.168.1.100的這個家伙會回一句:爺爺在此!我的MAC地址是xxxxxx。

注意,在我們平時應用程序通信時,以上過程都是操作系統底層協議棧自動完成的,我們的應用程序感知不到這些。

我們可以使用Scapy這個庫,來發(fā)起一次ARP解析。

上面這段代碼,通過scapy庫中的srp函數發(fā)送了一個以太網幀,收件人是ff:ff:ff:ff:ff:ff,表明這是個廣播包,鏈路層之上是ARP協議,需要解析的IP是傳入待解析的IP地址參數。

上面的函數一執(zhí)行,你就能在wireshark中抓到數據包了:


上面說過,正常情況下,只有目標地址是我查的那個主機才會回復我。

但假如你的局域網中有人不懷好意,搶在真正的主機之前回答我:爺爺在此!我的MAC地址是yyyyyy。

那事情就糟了,后面的的通信報文都發(fā)給這個假冒的家伙那里去了,這就是大名鼎鼎的ARP欺騙攻擊!

再試想一下,如果查詢的IP地址是網關的IP地址,那后果更嚴重,所有的網絡通信都發(fā)到這家伙來了。

既然能發(fā)送ARP查詢報文,你把上面的代碼改一下,自然也能發(fā)送ARP應答報文···

ARP的故事先說到這里,咱們再來看一下,用scapy做一個端口掃描器。

端口掃描

TCP端口掃描,通過發(fā)送三次握手的第一次SYN數據包,根據返回的結果來判斷端口的打開情況:

如果返回ACK+SYN,也就是flags字段是18,則說明端口開啟:


如果返回ACK+RST,也就是flags字段是20,則說明端口關閉:


下面的函數就能實現:

抓包來看:


握手包和服務器的返回包都能清楚看到,如果在循環(huán)中不斷調用該函數,傳入不同的端口,則可以實現批量端口掃描。

scapy構造數據包的能力這只是冰山一角,更多強大的功能等著你去研究。

學習計算機網絡,不要只停留在看書和看博文的基礎上,如果能自己編程收發(fā)數據包,去實現ARP、ICMP、DHCP、DNS的功能,或者開發(fā)一些簡單的網絡工具,絕對比別人掌握的更加深刻。

最后,給大家留一個思考題,如何通過構造IP報文實現traceroute的路由跟蹤功能呢,想一想,這該如何實現?

最后還有句話是這么說的:栽一棵樹最好的時間是十年前,其次是現在。對于學習編程或者正在工作的朋友,如果你想更好的提升你的編程能力幫助你提升水平!筆者這里或許可以幫到你~

微信公眾號:C語言編程學習基地

分享(源碼、項目實戰(zhàn)視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!



面向網絡編程大家都知道吧!面向監(jiān)獄編程,你想要試試嗎?的評論 (共 條)

分享到微博請遵守國家法律
宁陵县| 芷江| 彩票| 嘉峪关市| 都兰县| 合作市| 甘孜县| 江安县| 赫章县| 宝丰县| 宁明县| 金阳县| 炎陵县| 稻城县| 澳门| 牙克石市| 延寿县| 全州县| 永靖县| 常州市| 锦州市| 阳原县| 孟村| 邓州市| 新泰市| 天峨县| 霍林郭勒市| 峡江县| 马关县| 广饶县| 平山县| 华阴市| 诏安县| 高邑县| 曲松县| 安徽省| 阿鲁科尔沁旗| 绥芬河市| 苏尼特左旗| 寿宁县| 台南市|