最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2015年05月04日 09:59:17   投稿:goldensun  
這篇文章主要介紹了Python中利用原始套接字進行網絡編程的示例,使用sock_raw接受和發(fā)送數據包可以避開網絡協議的諸多限制,需要的朋友可以參考下

在實驗中需要自己構造單獨的HTTP數據報文,而使用SOCK_STREAM進行發(fā)送數據包,需要進行完整的TCP交互。

因此想使用原始套接字進行編程,直接構造數據包,并在IP層進行發(fā)送,即采用SOCK_RAW進行數據發(fā)送。

使用SOCK_RAW的優(yōu)勢是,可以對數據包進行完整的修改,可以處理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 sys
import socket
from 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()

相關文章

  • Python如何輸出異常信息(行號)

    Python如何輸出異常信息(行號)

    這篇文章主要介紹了Python如何輸出異常信息(行號)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python基礎之python循環(huán)控制語句break/continue詳解

    Python基礎之python循環(huán)控制語句break/continue詳解

    Python中提供了兩個關鍵字用來控制循環(huán)語句,分別是break和continue,接下來通過兩個案例來區(qū)分這兩個控制語句的不同,感興趣的朋友一起看看吧
    2021-09-09
  • PySpark中RDD的數據輸出問題詳解

    PySpark中RDD的數據輸出問題詳解

    RDD是 Spark 中最基礎的抽象,它表示了一個可以并行操作的、不可變得、被分區(qū)了的元素集合,這篇文章主要介紹了PySpark中RDD的數據輸出詳解,需要的朋友可以參考下
    2023-01-01
  • Python 馬氏距離求取函數詳解

    Python 馬氏距離求取函數詳解

    這篇文章主要為大家介紹了Python 馬氏距離求取函數,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • Python圖片縮放cv2.resize()圖文詳解

    Python圖片縮放cv2.resize()圖文詳解

    這篇文章主要給大家介紹了關于Python圖片縮放cv2.resize()的相關資料, resize是opencv庫中的一個函數,主要起到對圖片進行縮放的作用,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-10-10
  • Python3爬樓梯算法示例

    Python3爬樓梯算法示例

    這篇文章主要介紹了Python3爬樓梯算法,涉及Python基于面向對象的字符串遍歷、切片、運算等相關操作技巧,需要的朋友可以參考下
    2019-03-03
  • Python快速實現一個線程池的示例代碼

    Python快速實現一個線程池的示例代碼

    當有多個?IO?密集型的任務要被處理時,我們自然而然會想到多線程。而線程池的實現也很簡單,因為?Python?提供了一個標準庫?concurrent.futures,已經內置了對線程池的支持。所以本篇文章,我們就來詳細介紹一下該模塊的用法
    2022-07-07
  • python基礎教程之lambda表達式使用方法

    python基礎教程之lambda表達式使用方法

    lambda表達式相當于函數體為單個return語句的普通函數的匿名函數,本文主要介紹lambda表達式使用方法
    2014-02-02
  • python密碼學換位密碼及換位解密轉置加密教程

    python密碼學換位密碼及換位解密轉置加密教程

    這篇文章主要為大家介紹了python密碼學換位密碼及換位解密轉置加密教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Flask入門教程實例:搭建一個靜態(tài)博客

    Flask入門教程實例:搭建一個靜態(tài)博客

    這篇文章主要介紹了Flask入門教程實例:搭建一個靜態(tài)博客,本文主要介紹flask框架的環(huán)境配置以及一個靜態(tài)博客胡搭建實例,需要的朋友可以參考下
    2015-03-03

最新評論

新津县| 泸西县| 河池市| 桐柏县| 桂东县| 绍兴县| 西乌珠穆沁旗| 九江市| 连云港市| 万荣县| 扶绥县| 西宁市| 文昌市| 合作市| 汝南县| 阜新市| 花莲市| 新巴尔虎右旗| 德庆县| 汝阳县| 诸暨市| 崇仁县| 铜川市| 泊头市| 赤壁市| 庄浪县| 正阳县| 鄂伦春自治旗| 汝南县| 嫩江县| 青冈县| 晋城| 遂川县| 武安市| 林州市| 普宁市| 南阳市| 裕民县| 湖州市| 石林| 六盘水市|