Python原始套接字编程
在尝试中需要本身结构单独的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()