當前位置:首頁 » 編程語言 » python發送包

python發送包

發布時間: 2023-11-05 05:08:13

❶ 怎麼用python和原始套接字發送一tcp數據包

TCP的首部格式:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

—Source Port是源埠,16位。
—Destination Port是目的埠,16位。
—Sequence Number是發送數據包中的第一個位元組的序列號,32位。
—Acknowledgment Number是確認序列號,32位。
—Data Offset是數據偏移,4位,該欄位的值是TCP首部(包括選項)長度乘以4。
—標志位: 6位,URG表示Urgent Pointer欄位有意義:
ACK表示Acknowledgment Number欄位有意義
PSH表示Push功能,RST表示復位TCP連接
SYN表示SYN報文(在建立TCP連接的時候使用)
FIN表示沒有數據需要發送了(在關閉TCP連接的時候使用)
Window表示接收緩沖區的空閑空間,16位,用來告訴TCP連接對端自己能夠接收的最大數據長度。
—Checksum是校驗和,16位。
—Urgent Pointers是緊急指針,16位,只有URG標志位被設置時該欄位才有意義,表示緊急數據相對序列號(Sequence Number欄位的值)的偏移。
更多TCP協議的詳細信息可以在網上輕易找到,在這里不再贅述。
為了建立一個可以自己構造數據的包,我們使用"SOCK_RAW"這種socket格式,使用"IPPROTO_RAW"協議,它會告訴系統我們將提供網路層和傳輸層。

s = socket.socket(socket.AF_INET,socket.SOCK_RAW,)
通過這個簡單的類,我們可以進行IP頭部信息構造
class ip(object):
def __init__(self, source, destination):
self.version = 4

❷ python發送數據包獲取返回數據(其他的語言能實現也可以)

使用網路翻譯的一個例子,可以翻譯你輸入的文字,發送需要的內容,獲取返回的數據

import urllib.request
import urllib.parse
import json
import time

while True:
url = 'http://fanyi..com/v2transapi'

words = input("輸入你想翻譯的內容:")

data = {}
data['from'] = 'auto'
data['to'] = 'auto'
data['query'] = words
data['transtype'] = 'translang'
data['simple_means_flag'] = '3'

data = urllib.parse.urlencode(data).encode('utf-8')

headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36'
}

req = urllib.request.Request(url, data, headers)
req.add_header('Referer', 'http://fanyi..com/')
response = urllib.request.urlopen(req)
html = response.read().decode('utf-8')
js = json.loads(html)
# print(html)
# print(js)
print(js['trans_result']['data'][0]['dst'])
time.sleep(1)

❸ 用python怎麼發送tcp協議的16進制數據包

一般字元串可以直接發,不是可讀的也可以用"\x33\x22"這種發。
如果是一列數之類的,可以用struct的pack打包成字元串發送。

❹ 如何將自己的Python代碼打包發布到pypi上

    什麼是pypi

    簡單的說pypi是一個python包的倉庫,裡面有很多別人寫好的python庫,你可以通過easy_install或者pip進行安裝,方便用戶更方面的使用你的代碼模塊。

    將代碼打包並上傳到pypi上,大體上分為以下幾步:

    1、整理代碼的目錄結構,方便打包和python的import,為了方便引用,需要將代碼模塊變成一個包,所以需要將功能代碼用目錄來整合方便引用,並且需要創建__init__文件,__init__中可以沒有內容,也可以在__init__文件中進行import(from .extractor import Document)操作,以減少整體模塊引用時import的層數,避免錯誤。

[html]viewplain
├──./tidypage
│├──./tidypage/cleaners.py
│├──./tidypage/extractor.py
│├──./tidypage/__init__.py
│└──./tidypage/titles.py

    2、功能模塊的目錄整理好後,就可以開始整理和添加發布到pypi上所使用的文件了

tidy_page
├──LICENSE
├──README.rst
├──requirements.txt
├──setup.py
├──tidypage
│├──cleaners.py
│├──extractor.py
│├──__init__.py
│└──titles.py
  • 就是將原來的目錄深移一層,文件夾名稱可以根據自己意願。然後在到第一層的目錄下創建些特殊文件,具體你可以看看下面這個文件結構你就明白了

    LICENSE文件是授權文件,比如:MIT license, APACHElicense

    README.rst 文件想必大家都不陌生,其實就是項目介紹和使用說明

    setup文件才是重點,是python模塊安裝所需要的文件,它的格式如下:

#!/usr/bin/envpython
from__future__importprint_function
fromsetuptoolsimportsetup,find_packages
importsys

setup(
name="tidy-page",
version="0.1.1",
author="DesionWang",
author_email="[email protected]",
description="htmltextparser,getthecontentformhtmlpage",
long_description=open("README.rst").read(),
license="MIT",
url="https://github.com/desion/tidy_page",
packages=['tidypage'],
install_requires=[
"beautifulsoup4",
lxml_requirement
],
classifiers=[
"Environment::WebEnvironment",
"IntendedAudience::Developers",
"OperatingSystem::OSIndependent",
"Topic::TextProcessing::Indexing",
"Topic::Utilities",
"Topic::Internet",
"Topic::SoftwareDevelopment::Libraries::PythonMoles",
"ProgrammingLanguage::Python",
"ProgrammingLanguage::Python::2",
"ProgrammingLanguage::Python::2.6",
"ProgrammingLanguage::Python::2.7",
],
)
  • NAME名字,一般放你包的名字即可PACKAGES包含的包,可以多個,這是一個列表DESCRIPTION關於這個包的描述LONG_DESCRIPTION參見read方法說明KEYWORDS關於當前包的一些關鍵字,方便PyPI進行分類。AUTHOR誰是這個包的作者,寫誰的名字吧AUTHOR_EMAIL作者的郵件地址URL你這個包的項目地址,如果有,給一個吧,沒有你直接填寫在PyPI你這個包的地址也是可以的VERSION當前包的版本,這個按你自己需要的版本控制方式來LICENSE授權方式INSTALL_REQUIRES模塊所依賴的python模塊
  • 文中的classifiers的內容並不是隨便填寫的,你需要參照本文參考文檔中的PyPI Classifiers來寫

    3、開始使用Distutils進行打包

    為了保證效果,在打包之前我們可以驗證setup.py的正確性,執行下面的代碼

    python setup.py check

  • 輸出一般是running check如果有錯誤或者警告,就會在此之後顯示沒有任何顯示表示Distutils認可你這個setup.py文件。


  • 如果沒有問題,那麼就可以正式打包,執行下面的代碼:


  • python setup.py sdist



  • 執行完成後,會在頂層目錄下生成dist目錄和egg目錄

tidy_page
├──tidy_page/dist
│├──tidy_page/dist/tidy-page-0.1.0.tar.gz
│└──tidy_page/dist/tidy-page-0.1.1.tar.gz
├──tidy_page/LICENSE
├──tidy_page/README.rst
├──tidy_page/setup.py
├──tidy_page/tidypage
│├──tidy_page/tidypage/cleaners.py
│├──tidy_page/tidypage/extractor.py
│├──tidy_page/tidypage/__init__.py
│└──tidy_page/tidypage/titles.py
├──tidy_page/tidy_page.egg-info
│├──tidy_page/tidy_page.egg-info/dependency_links.txt
│├──tidy_page/tidy_page.egg-info/PKG-INFO
│├──tidy_page/tidy_page.egg-info/requires.txt
│├──tidy_page/tidy_page.egg-info/SOURCES.txt
│└──tidy_page/tidy_page.egg-info/top_level.txt

  • 4、打包完成後就可以准備將打包好的模塊上傳到pypi了,首先你需要在pypi上進行注冊gotoPyPI Live

    注冊完成後,你需要在本地創建好pypi的配置文件,不然有可能會出現使用http無法上傳到pypi的問題

    Create a.pypircconfiguration file,在用戶的home目錄下創建.pypirc文件,文件的內容如下

  • [distutils]index-servers=pypi[pypi]repository=https://pypi.python.org/pypiusername=your_usernamepassword=your_passwor
chmod600~/.pypirc
pythonsetup.pyregister-rpypi
  • 在pypi上注冊模塊

  • python setup.py sdist upload -r pypi

  • 上傳python文件包,沒有問題你就可以在pypi上看到你上傳的包了並且可以使用pip搜索和install你的python包了


❺ python向指定ip發送數據包會造成

提到網路編程,我們就不得不提socket(衡巧氏套接字),打開一個socket需要知道目標ip和埠,再指定協議類型即可,應用程序通常通過"套接字"向網路發出請求或者應答網路請求,使主機間或者一台計算機上的進程間可以通訊。python提供了咐散兩個socket模塊:
低級別的網路服務支持基本的 Socket,它提供了標準的 BSD Sockets API,可以訪問底層操作寬態系統Socket介面的全部方法。

❻ Python scapy執行發包時出現winerror 10013

在使用Python中的Scapy庫時出現了"winerror: 10013"錯誤,這可能是由於你沒有管理員許可權導致的。

該錯誤通常出現在執行數據包時,因為Scapy需要在系統底層發送和接收數據包,這需要管理員許可權。

要解決這個問題,你可以嘗試以下幾種方法之一:

1.使用管理員許可權運行你的Python腳本。你可以在命令行中使用"sudo"命令或在Windows中右鍵單擊腳本並選擇"以管理員身份運行滑蔽"。

2.在Windows中,你可以嘗試關閉防火牆,以便Scapy能夠發送和接收數據包。

3.如果你使用的滑鍵是Linux或MacOS,你可以嘗試使用"ipfw"或"iptables"命令來允許Scapy發送和接收數據包。

如果你的問題仍然無法解決,可以嘗試搜索解決方案或在信讓州Scapy論壇上尋求幫助。

❼ 怎樣用 python(2.5或其它版本均可)實現圖形界面,並向指定IP地址的指定埠發送數據包回答請註明版本

可以使用pygtk來實現圖形界面,可以在網上找一些教程。


向指定埠發送數據包,使用socket內置庫。下面有一個簡單的demo以供參考:

server端:

importsocket
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind(("",8081))
whileTrue:
#Receiveupto1,024bytesinadatagram
data,addr=s.recvfrom(1024)
print"Received:",data,"from",addr

client端:

importsocket
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
port=8081
host="localhost"
whileTrue:
msg=raw_input()
s.sendto(msg,(host,port))


望採納,謝謝支持!

熱點內容
三角定位演算法 發布:2025-01-31 11:25:33 瀏覽:147
java判斷空格 發布:2025-01-31 11:24:01 瀏覽:831
安卓照片加鬍子是什麼軟體 發布:2025-01-31 11:20:03 瀏覽:907
創建資料庫並設置編碼 發布:2025-01-31 11:11:52 瀏覽:781
搭建數據中心需要的伺服器配置 發布:2025-01-31 11:11:44 瀏覽:590
c語言小數點後四捨五入 發布:2025-01-31 11:10:10 瀏覽:496
httpslinux 發布:2025-01-31 11:10:09 瀏覽:828
java4 發布:2025-01-31 11:08:42 瀏覽:355
什麼是密碼屏蔽 發布:2025-01-31 11:05:13 瀏覽:216
一個演算法的效率可分為 發布:2025-01-31 11:05:12 瀏覽:639