国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python中利用原始套接字進行網絡編程的示例

2019-11-25 17:33:50
字體:
來源:轉載
供稿:網友

在實驗中需要自己構造單獨的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## Author:  Yangjun## Created:    08/02/2014# Copyright:  (c) Yangjun 2014# Licence:    <your licence>#------------------------------------------------------------------------------- import sysimport socketfrom impacket import ImpactDecoder, ImpactPacket def main():   if len(sys.argv) < 3:    print "Use: %s <src ip> <dst ip>" % sys.argv[0]    print "Use: %s <src ip> <dst ip> <cnt>" % sys.argv[0]    sys.exit(1)  elif len(sys.argv) == 3:    src = sys.argv[1]    dst = sys.argv[2]    cnt = 1  elif len(sys.argv) ==4:    src = sys.argv[1]    dst = sys.argv[2]    cnt = sys.argv[3]  else:    print "Input error!"    sys.exit(1)#print src, dst  ip = ImpactPacket.IP()  ip.set_ip_src(src)  ip.set_ip_dst(dst)   # Create a new ICMP packet of type ECHO.  icmp = ImpactPacket.ICMP()  tcp = ImpactPacket.TCP()  tcp.set_th_sport(55968)  tcp.set_th_dport(80)  tcp.set_th_seq(1)  tcp.set_th_ack(1)  tcp.set_th_flags(0x18)  tcp.set_th_win(64)   tcp.contains( ImpactPacket.Data("GET /att/DIYLife/41264/528 HTTP/1.1/r/nHost: 192.168.111.1/r/nAccept-Encoding: identity/r/n/r/n"))   ip.contains(tcp)   # Open a raw socket. Special permissions are usually required.  s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)  s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)  seq_id = 0  while cnt >= 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()

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜君县| 宁德市| 临朐县| 蓝田县| 罗江县| 永兴县| 武义县| 海宁市| 新河县| 玉林市| 兴隆县| 彰武县| 镇宁| 盱眙县| 香格里拉县| 钟山县| 城步| 乌什县| 突泉县| 固镇县| 大安市| 静海县| 大理市| 禹城市| 瑞金市| 无极县| 塔城市| 监利县| 温州市| 兰溪市| 南康市| 枣庄市| 望谟县| 旅游| 大丰市| 曲麻莱县| 青河县| 颍上县| 渭南市| 龙江县| 龙陵县|