Python原始套接字程式設計

pythontab發表於2014-02-17

在實驗中需要自己構造單獨的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()


相關文章