<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          學(xué)習(xí)網(wǎng)絡(luò)開(kāi)發(fā)必須了解的幾個(gè)小工具

          共 5785字,需瀏覽 12分鐘

           ·

          2021-05-16 00:40


          大家好,歡迎來(lái)到 Crossin的編程教室 !
          學(xué)習(xí)Python的一個(gè)方向是進(jìn)行網(wǎng)絡(luò)相關(guān)的開(kāi)發(fā),比如爬蟲(chóng)、網(wǎng)站開(kāi)發(fā)、服務(wù)器運(yùn)維等。這些任務(wù)都會(huì)和網(wǎng)絡(luò)配置打交道。在實(shí)際開(kāi)發(fā)過(guò)程中,熟悉使用Linux或者Windows中相關(guān)網(wǎng)絡(luò)工具和模塊,可以更快更準(zhǔn)地實(shí)現(xiàn)需求或解決故障。所以今天就給大家分享幾個(gè)做網(wǎng)絡(luò)開(kāi)發(fā)應(yīng)知應(yīng)會(huì)的幾樣利器。

          1. nc

          nc,即netcat,被稱為網(wǎng)絡(luò)安全屆的“瑞士軍刀”。網(wǎng)絡(luò)黑客們經(jīng)常會(huì)在滲透過(guò)程中使用nc搞點(diǎn)事兒。它可以用來(lái)快速構(gòu)建網(wǎng)絡(luò)鏈接,調(diào)試客戶端程序。

          nc參數(shù)

          上案例:

          執(zhí)行任務(wù)執(zhí)行命令
          掃描機(jī)器A端口號(hào)在30-40的服務(wù)nc -z A 30-40
          連接服務(wù)器A 端口號(hào)為5000nc -C A 5000
          傳送文件MachineA:nc -v -n ip portE:\a.exe

          2. ping

          Ping是再常用不過(guò)的命令,用來(lái)實(shí)現(xiàn)對(duì)網(wǎng)路連通性探測(cè)。我們知道網(wǎng)絡(luò)上機(jī)器有唯一確定的IP地址,給地方發(fā)送數(shù)據(jù)包,根據(jù)返回的信息初步判斷目標(biāo)機(jī)器是否存在或者目標(biāo)機(jī)器操作系統(tǒng)等信息。

          ping

          在具體實(shí)現(xiàn)中其是實(shí)使用了ICMP協(xié)議,它是一種基于IP協(xié)議的控制協(xié)議,網(wǎng)際控制協(xié)議,其報(bào)文的具體格式:

          具體字段含義:

          • 類型:表示ICMP的類型,如果為0表示請(qǐng)求類型,為8表示應(yīng)答

          • 代碼:用來(lái)查找產(chǎn)生錯(cuò)誤的原因

          • 校驗(yàn)和:檢查錯(cuò)誤的數(shù)據(jù)

          • 標(biāo)識(shí)符:使用標(biāo)識(shí)符確認(rèn)到底是誰(shuí)發(fā)送的控制協(xié)議

          • 序列號(hào):唯一確定的一個(gè)報(bào)文

          ping命令組裝成上述的IP報(bào)文進(jìn)行發(fā)送,報(bào)文目的地為ping目的地址,原地址為發(fā)送ping主機(jī)地址,然后按照ICMP的規(guī)則填寫數(shù)據(jù)。

          隨后IP報(bào)文通過(guò)ARP協(xié)議請(qǐng)求廣播到局域網(wǎng)絡(luò)上的所有主機(jī),并接收返回消息,以此確定目標(biāo)的物理地址

          查看詳細(xì)參數(shù):

          ping參數(shù)

          常用參數(shù):

          • [-l] :定義所發(fā)送數(shù)據(jù)包的大小,默認(rèn)為32字節(jié)

          • [-n] :定義所發(fā)數(shù)據(jù)包的次數(shù),默認(rèn)為3次

          • [-t] :表示不間斷向目標(biāo)IP發(fā)送數(shù)據(jù)包

          TTL

          TTL 是 IP 協(xié)議包中的一個(gè)值,它告訴網(wǎng)絡(luò)路由器包在網(wǎng)絡(luò)中的時(shí)間是否太長(zhǎng)而應(yīng)被丟棄

          • TTL設(shè)置時(shí)間越長(zhǎng),那么緩存時(shí)間也就越長(zhǎng),更新也就越不容易生效。增大TTL可以節(jié)約域名解析時(shí)間從而加快網(wǎng)站的訪問(wèn)

          • 減小TTL值,減少更換空間時(shí)的不可訪問(wèn)時(shí)間

          返回值:

          • Request timed out

          可能出現(xiàn)的情況:

          對(duì)方已經(jīng)關(guān)機(jī)或者根本沒(méi)有這個(gè)地址

          可能不在同一個(gè)網(wǎng)段,即使通過(guò)路由也無(wú)法找到對(duì)方從而出現(xiàn)超時(shí)

          對(duì)方存在但是設(shè)置了防火墻過(guò)濾

          • Destination host Unreachable

          與對(duì)方不在同一個(gè)網(wǎng)段且沒(méi)有設(shè)置默認(rèn)路由

          網(wǎng)線出毛病

          • Bad IP address

          要么是IP地址不存在,要么是沒(méi)有正確連接DNS服務(wù)器從而無(wú)法解析

          3. ifconfig/ipaddr

          查看服務(wù)器網(wǎng)卡,IP等信息

          ipaddr

          上圖中被馬賽克的位置假設(shè)為 10.172.100.3,這樣就是一個(gè)IP地址,凡是都有規(guī)則,IP地址按照小數(shù)點(diǎn)分割為四部分,每部分占8字節(jié),所以IP地址為32位,那么這樣的IP地址一共有多少呢

          從而出現(xiàn)IPV6,128位

          當(dāng)時(shí)覺(jué)得32位很夠用了,還將其分為5類,如下圖所示

          網(wǎng)絡(luò)地址分類

          我們?cè)倏纯锤黝惖刂返闹鳈C(jī)數(shù)量是多少:

          上圖中可知道C類地址太少了吧,但是B類地址又太多,怎么中和一下嘞

          無(wú)類型域間選路

          CIDR 地址中包含標(biāo)準(zhǔn)的32位IP地址和有關(guān)網(wǎng)絡(luò)前綴位數(shù)的信息。比如10.172.100.3/24,IP地址斜杠后面數(shù)字24,代表24位是網(wǎng)絡(luò)號(hào),后面八位為主機(jī)號(hào)。

          如何得到網(wǎng)絡(luò)號(hào)?

          使用IP地址和子網(wǎng)掩碼進(jìn)行AND計(jì)算得到網(wǎng)絡(luò)號(hào)。

          4. tcpdump

          和它類似的工具在windows中是wireshark,其采用底層庫(kù)winpcap/libpcap實(shí)現(xiàn)。采用了bpf過(guò)濾機(jī)制。

          具體參數(shù)的含義:
          tcpdump

          知道了相關(guān)參數(shù),下面看幾個(gè)案例:

          執(zhí)行任務(wù)執(zhí)行命令
          捕獲特定網(wǎng)口數(shù)據(jù)包
          tcpdump -i eth0
          捕獲特定個(gè)數(shù)(1000)的包tcpdump -c 1000 -i eth0
          將捕獲的包保存到文件tcpdump -w a.pcap -i eth0
          讀取pcap格式的包tcpdump -r a.pcap
          增加捕獲包的時(shí)間戳tcpdump -n -ttt -i eth0
          指定捕獲包的協(xié)議類型tcpdump -i eth0 arp
          捕獲指定端口tcpdump -i eth0 post 22
          捕獲特定目標(biāo)ip+port的包tcpdump -i eth0 dst address and port 22
          捕獲DNS請(qǐng)求和響應(yīng)tcpdump -i eth0 -s0 port 53
          匹配Http請(qǐng)求頭tcpdump -s 0 -v -n -l | egrep -i "POST /|GET /|Host:"
          捕獲特定網(wǎng)口數(shù)據(jù)包tcpdump -i eth0
          捕獲特定個(gè)數(shù)(1000)的包tcpdump -c 1000 -i eth0
          將捕獲的包保存到文件tcpdump -w a.pcap -i eth0
          讀取pcap格式的包tcpdump -r a.pcap
          增加捕獲包的時(shí)間戳tcpdump -n -ttt -i eth0
          指定捕獲包的協(xié)議類型tcpdump -i eth0 arp
          捕獲指定端口tcpdump -i eth0 post 22
          捕獲特定目標(biāo)ip+port的包tcpdump -i eth0 dst address and port 22
          捕獲DNS請(qǐng)求和響應(yīng)tcpdump -i eth0 -s0 port 53
          匹配Http請(qǐng)求頭tcpdump -s 0 -v -n -l | egrep -i "POST /|GET /|Host:"

          5. lsof

          列出當(dāng)前系統(tǒng)打開(kāi)的文件描述符工具。可以得知感興趣的描述符是被哪些進(jìn)程使用

          相關(guān)參數(shù):

          lsof

          老規(guī)矩,上幾個(gè)例子:

          執(zhí)行任務(wù)命令
          列出所有的網(wǎng)絡(luò)鏈接lsof -i
          列出所有udp的網(wǎng)絡(luò)鏈接lsof -i udp
          列出誰(shuí)在使用某個(gè)端口lsof -i :3306
          列出誰(shuí)在使用特定的tcp端口lsof -i tcp:80
          根據(jù)文件描述范圍列出文件信息lsof -d 2-3
          udp命令
          列出誰(shuí)在使用某個(gè)端口lsof -i :3306
          列出誰(shuí)在使用特定的tcp端口lsof -i tcp:80
          根據(jù)文件描述范圍列出文件信息lsof -d 2-3

          6. netstat

          netstat是一個(gè)網(wǎng)絡(luò)信息統(tǒng)計(jì)工具。它可以得到網(wǎng)卡接口上全部了解,路由表信息,網(wǎng)卡接口信息等。通常在網(wǎng)絡(luò)編程中我們用它來(lái)顯示TCP連接以及狀態(tài)信息。

          幾個(gè)常用例子:

          執(zhí)行任務(wù)執(zhí)行命令
          列出所有連接netstat -a
          只列出TCP或者UDPnetstat -at/netstat -au
          列出監(jiān)聽(tīng)中的連接netstat -tnl
          獲取進(jìn)程名、進(jìn)程號(hào)以及用戶 IDnestat  -nlpt
          打印統(tǒng)計(jì)信息netstat -s
          netstat持續(xù)輸出netstat -ct
          打印active狀態(tài)的連接netstat -atnp | grep ESTA
          查看服務(wù)是否運(yùn)行(npt)netstat -aple| grep ntp

          7. dpkt

          dpkt定義包packet類,它定義了網(wǎng)絡(luò)報(bào)文類型的基礎(chǔ)類。其中IP,ICMP等繼承于dpkt class,每一個(gè)子類有一個(gè) __hdr__ 結(jié)構(gòu),此結(jié)構(gòu)定義了不同報(bào)文的頭部,方便取出相應(yīng)的控制字段。示例如下

          #!/usr/bin/python
          #coding=utf-8
          import dpkt
          import socket
          import optparse

          def printPcap(pcap):
              # 遍歷[timestamp, packet]記錄的數(shù)組
              for (ts, buf) in pcap:
                  try:
                      # 獲取以太網(wǎng)部分?jǐn)?shù)據(jù)
                      eth = dpkt.ethernet.Ethernet(buf)
                      # 獲取IP層數(shù)據(jù)
                      ip = eth.data
                      # 把存儲(chǔ)在inet_ntoa中的IP地址轉(zhuǎn)換成一個(gè)字符串
                      src = socket.inet_ntoa(ip.src)
                      dst = socket.inet_ntoa(ip.dst)
                      print '[+] 源地址: ' + src + ' --> 目標(biāo)地址: ' + dst
                  except:
                      pass

          def main():
              parser = optparse.OptionParser('[*] Usage : ./pcapTest.py -f <file>')#測(cè)試包
              parser.add_option('-f',dest='fileName',type='string',help='specify target filename')
              (options,args) = parser.parse_args()
              fileName = options.fileName# 取得包名

              if fileName == None:
                  print parser.usage
                  exit(0)
              else:
                  #f = open('geotest.pcap')
                  f = open(fileName)
                  pcap = dpkt.pcap.Reader(f)
                  printPcap(pcap)

          if __name__ == '__main__':
              main()

          8. scapy

          注意哈,這個(gè)是嗅探包不是爬蟲(chóng)框架scrapy哈??纯垂倬W(wǎng)怎么說(shuō)的,如“強(qiáng)大的交互式包操作工具”、“支持大量協(xié)議的包解析和包構(gòu)造”、“輕松取代 hping,85% 的 nmap,arpspoof,tcpdump 等等”。不過(guò)歸根到底,它說(shuō)的強(qiáng)大功能,都是基于 Scapy 是一個(gè)強(qiáng)大的網(wǎng)絡(luò)數(shù)據(jù)包操作工具才能實(shí)現(xiàn)得了的。只是大概介紹,具體用法官網(wǎng)非常詳細(xì),有助于學(xué)習(xí)網(wǎng)絡(luò)協(xié)議


          以上便是今天給大家分享的網(wǎng)絡(luò)利器,動(dòng)手試一試吧。

          如果文章對(duì)你有幫助,歡迎轉(zhuǎn)發(fā)/點(diǎn)贊/收藏~

          作者:L的存在

          來(lái)源:我是程序員小賤


          _往期文章推薦_

          100網(wǎng)絡(luò)基礎(chǔ)知識(shí)普及,看完成半個(gè)網(wǎng)絡(luò)高手!




          如需了解付費(fèi)精品課程教學(xué)答疑服務(wù)
          請(qǐng)?jiān)?strong style="max-width: 100%;overflow-wrap: break-word !important;box-sizing: border-box !important;">Crossin的編程教室內(nèi)回復(fù): 666

          瀏覽 45
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产亲子伦视频一区二区三区 | 欧美孕妇一级片 | 国产精品性爱a√ | 一级特黄A大片 | 青青草AV导航 |