SCAPY學習筆記

Scapy是一個可以讓用戶發送、偵聽和解析並僞裝網絡報文的Python程序。這些功能可以用於製作偵測、掃描和攻擊網絡的工具。

1)常用的幾個命令

    conf:保存配置信息,修改方式,conf.verb = 2

    ls():可以顯示所有支持的數據包對象。例:list show、ls()、ls(TCP)

    lsc():列出所有函數

    hide_defaults():用來刪除一些用戶提供的和default value相同的項目

        例:>>> a=IP()/TCP() >>> b=IP(str(a))  >>> b.hide_defaults()    >>> b

    display():display()方法可以簡單查看當前packet的各個參數的取值情況

        例:>>> a=IP(dst="192.168.0.1") >>> a.display()

    不同層之間通過“/”來連接

    (1,4):爲1,2,3,4的四個      [1,4]: 爲1和4

2)數據包操作函數

         1、send()在第三層發送數據包,但沒有接收功能

                  >>> send(IP(dst="192.168.115.188")/ICMP()) 

         2、sendp(),在第二層發送數據包,同樣沒有接收功能         

                  >>> sendp(Ether()/IP(dst="www.baidu.com",ttl=1)/ICMP())                 

         3、sr(),在第三層發送數據包,有接收功能   

                  >>> sr(IP(dst="192.168.115.1")/TCP(dport=[21,22,23]))

         4、sr1(),在第三層發送數據包,有接收功能,但只接收第一個包

                  >>> sr1(IP(dst="192.168.115.188")/ICMP()/"test")

         5、srloop(),在第三層工作,如下:

                  >>> p=srloop(IP(dst="www.baidu.com",ttl=1)/ICMP())

                  >>> p=srloop(IP(dst="www.baidu.com",ttl=1)/ICMP(),inter=3,count=2)

                  這裏第一條語句在執行時,將會不停的ping百度,第二條執行時每隔3秒ping一次,一共執行兩次。

         6、srp()、srp1()、srploop()與上面3、4、5相同,只是工作在第二層。

3)實例

     1、SYN掃描(也叫“半開式掃描”(half-open scanning),因爲它沒有完成一個完整的TCP連接。)

    這種方法向目標端口發送一個SYN分組(packet),如果目標端口返回SYN/ACK,那麼可以肯定該端口處於檢聽狀態;否則,返回的是RST/ACK。

    >>> ans,unans=sr1(IP(dst="61.135.169.105")/TCP(dport=80,flags="S"))

    >>>ans.summary(lambda(s,r):r.sprintf("%TCP.sport% \t %TCP.flags%"))顯示

    >>>ans.make_table(lambda(s,r):s.dst,s.src,s.ttl)

    2、TCP traceroute(traceroute:用來追蹤出發點到目的地所經過的路徑)

    >>>res,unans=traceroute(["www.baidu.com","www.kali.org"],dport=[80,443],maxttl=20,retry=-2)

    >>>res.graph() 顯示圖形

    >>>res.graph(target=">/tmp/graph.svg")

    3、簡單的SNIFF嗅探

    >>> sniff(filter="icmp and host 61.135.169.125",count=2)

    >>> sniff(iface="ppp0",prn=lambda x:x.summary())

   4、二層掃描之ARP掃描

   >>>ARP().display()

   >>>arp=ARP()

   >>>arp.pdst=”192.168.1.1”

   >>>anser=sr1(arp) #發送同時收到迴應包

 5、實現ping命令

  >>>i = IP()

  >>>p = ICMP()

  >>>ping = (i/p)

 >>>ping[IP].dst=”192.168.1.1”

 >>>ping.display()

 >>>anser=sr1(ping)   #發送同時收到迴應包

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章