日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
面向監(jiān)獄編程,就靠它了

網(wǎng)絡(luò)編程大家都學(xué)過吧?

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的東鄉(xiāng)族網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

 
 
 
 
  1. socket -> bind -> listen -> accept-> recv/recvfrom -> send/sendto 

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

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

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

如何編程來發(fā)送一個(gè)偽造了IP地址的ARP數(shù)據(jù)包和IP數(shù)據(jù)報(bào)文?

甚至,如何編程來發(fā)送一個(gè)偽造了MAC地址的以太網(wǎng)數(shù)據(jù)幀?

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

那到底如何構(gòu)造發(fā)送各種各樣的數(shù)據(jù)包呢?今天給大家介紹一個(gè)強(qiáng)大的玩意:scapy

這是一個(gè)強(qiáng)大的數(shù)據(jù)包構(gòu)造工具,你可以在Python中使用它,是時(shí)候喊一聲:Python大法好了!

ARP

我們拿ARP開刀,ARP是地址解析協(xié)議,局域網(wǎng)中通信需要使用網(wǎng)卡的MAC地址,而網(wǎng)絡(luò)層通信使用的是IP地址,在應(yīng)用程序的數(shù)據(jù)包被發(fā)送出去之前,在IP報(bào)文前面添加以太網(wǎng)幀頭時(shí),需要填寫收件人的MAC地址,如果是局域網(wǎng)內(nèi)部通信,這個(gè)收件人地址就是目的電腦的網(wǎng)卡MAC地址,而如果是互聯(lián)網(wǎng)上的公網(wǎng)IP地址,這個(gè)收件人地址就是網(wǎng)關(guān)的MAC地址。

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

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

局域網(wǎng)中所有人都能收到這個(gè)廣播(因?yàn)樗氖占薓AC地址是FF-FF-FF-FF-FF-FF),但只有IP地址是192.168.1.100的這個(gè)家伙會(huì)回一句:爺爺在此!我的MAC地址是xxxxxx。

注意,在我們平時(shí)應(yīng)用程序通信時(shí),以上過程都是操作系統(tǒng)底層協(xié)議棧自動(dòng)完成的,我們的應(yīng)用程序感知不到這些。

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

 
 
 
 
  1. from scapy.all import * 
  2. def arp_scan(ip): 
  3.     answer, uanswer = srp(Ether(dst="ff:ff:ff:ff:ff:ff") / ARP(pdst=ip), inter=0.1, timeout=2, verbose=False) 
  4.     mac_list = [] 
  5.     for send, recv in answer: 
  6.         if recv[ARP].op == 2: 
  7.             mac_list.append((recv[ARP].psrc, recv[Ether].hwsrc)) 
  8.         return mac_list 

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

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

上面說過,正常情況下,只有目標(biāo)地址是我查的那個(gè)主機(jī)才會(huì)回復(fù)我。

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

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

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

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

ARP的故事先說到這里,咱們?cè)賮砜匆幌拢胹capy做一個(gè)端口掃描器。

端口掃描

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

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

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

下面的函數(shù)就能實(shí)現(xiàn):

 
 
 
 
  1. from scapy.all import * 
  2. def port_scan(port): 
  3.     answer, uanswer = sr(IP(dst="192.168.1.1") / fuzz(TCP(dport=int(port), flags="S"))) 
  4.     for s, r in ans: 
  5.         if r[TCP].flags == 18: 
  6.             print("port is Open") 
  7.         if r[TCP].flags == 20: 
  8.             print("port is Closed") 

抓包來看:

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

scapy構(gòu)造數(shù)據(jù)包的能力這只是冰山一角,更多強(qiáng)大的功能等著你去研究。

學(xué)習(xí)計(jì)算機(jī)網(wǎng)絡(luò),不要只停留在看書和看博文的基礎(chǔ)上,如果能自己編程收發(fā)數(shù)據(jù)包,去實(shí)現(xiàn)ARP、ICMP、DHCP、DNS的功能,或者開發(fā)一些簡(jiǎn)單的網(wǎng)絡(luò)工具,絕對(duì)比別人掌握的更加深刻。

最后,給大家留一個(gè)思考題,如何通過構(gòu)造IP報(bào)文實(shí)現(xiàn)traceroute的路由跟蹤功能呢,想一想,這該如何實(shí)現(xiàn)?


當(dāng)前名稱:面向監(jiān)獄編程,就靠它了
文章分享:http://m.5511xx.com/article/dpjcgsg.html