电竞比分网-中国电竞赛事及体育赛事平台

分享

學習網(wǎng)絡開發(fā)必須了解的幾個小工具

 閑野之家 2021-05-15

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

1. nc

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

圖片
nc參數(shù)

上案例:

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

2. ping

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

圖片
ping

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

圖片

具體字段含義:

  • 類型:表示ICMP的類型,如果為0表示請求類型,為8表示應答

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

  • 校驗和:檢查錯誤的數(shù)據(jù)

  • 標識符:使用標識符確認到底是誰發(fā)送的控制協(xié)議

  • 序列號:唯一確定的一個報文

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

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

查看詳細參數(shù):

圖片
ping參數(shù)

常用參數(shù):

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

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

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

TTL

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

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

  • 減小TTL值,減少更換空間時的不可訪問時間

返回值:

  • Request timed out

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

對方已經(jīng)關機或者根本沒有這個地址

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

對方存在但是設置了防火墻過濾

  • Destination host Unreachable

與對方不在同一個網(wǎng)段且沒有設置默認路由

網(wǎng)線出毛病

  • Bad IP address

要么是IP地址不存在,要么是沒有正確連接DNS服務器從而無法解析

3. ifconfig/ipaddr

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

圖片
ipaddr

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

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

當時覺得32位很夠用了,還將其分為5類,如下圖所示

圖片
網(wǎng)絡地址分類

我們再看看各類地址的主機數(shù)量是多少:

圖片

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

無類型域間選路

CIDR 地址中包含標準的32位IP地址和有關網(wǎng)絡前綴位數(shù)的信息。比如10.172.100.3/24,IP地址斜杠后面數(shù)字24,代表24位是網(wǎng)絡號,后面八位為主機號。

如何得到網(wǎng)絡號?

使用IP地址和子網(wǎng)掩碼進行AND計算得到網(wǎng)絡號。

圖片

4. tcpdump

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

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

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

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

5. lsof

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

相關參數(shù):

圖片
lsof

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

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

6. netstat

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

圖片

幾個常用例子:

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

7. dpkt

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

#!/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)部分數(shù)據(jù)
            eth = dpkt.ethernet.Ethernet(buf)
            # 獲取IP層數(shù)據(jù)
            ip = eth.data
            # 把存儲在inet_ntoa中的IP地址轉換成一個字符串
            src = socket.inet_ntoa(ip.src)
            dst = socket.inet_ntoa(ip.dst)
            print '[ ] 源地址: '   src   ' --> 目標地址: '   dst
        except:
            pass

def main():
    parser = optparse.OptionParser('[*] Usage : ./pcapTest.py -f <file>')#測試包
    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

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

圖片

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

作者:L的存在

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多