首頁  >  文章  >  後端開發  >  Python原始套接字程式設計

Python原始套接字程式設計

高洛峰
高洛峰原創
2016-10-18 10:01:461452瀏覽

在實驗中需要自行建構單獨的HTTP資料封包,而使用SOCK_STREAM進行傳送封包,需要進行完整的TCP交互作用。

因此想使用原始套接字進行編程,直接構造資料包,並在IP層進行發送,即採用SOCK_RAW進行資料發送。

使用SOCK_RAW的優點是,可以對資料包進行完整的修改,可以處理IP層上的所有資料包,對各欄位進行修改,而不受UDP和TCP的限制。

下面開始建構HTTP封包,

IP層和TCP層使用python的Impacket庫,http內容自行填寫。

#!/usr/bin/env python
  
#-------------------------------------------------------------------------------
# Name:     raw_http.py
# Purpose:       construct a raw http get packet
#
# Licence:   PythonTab.com    
#-------------------------------------------------------------------------------
  
import sys
import socket
from impacket import ImpactDecoder, ImpactPacket
  
def main():
  
    if len(sys.argv) = 1:
        # Calculate its checksum.
        seq_id = seq_id + 1
        tcp.set_th_seq(seq_id)
        tcp.calculate_checksum()
  
        # Send it to the target host.
        s.sendto(ip.get_packet(), (dst,80))
        cnt= cnt -1
  
if __name__ == '__main__':
    main()


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn