当前位置:首页 » 编程语言 » 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 14:02:28 浏览:552
android仓库管理系统 发布:2025-01-31 14:02:27 浏览:700
batsql语句 发布:2025-01-31 14:00:13 浏览:733
沈阳加密狗 发布:2025-01-31 13:54:58 浏览:705
联想服务器怎么装windows7 发布:2025-01-31 13:54:52 浏览:874
java二级考试历年真题 发布:2025-01-31 13:50:31 浏览:171
编程一刻 发布:2025-01-31 13:36:44 浏览:585
编程小草出土 发布:2025-01-31 13:33:27 浏览:579
如何设置服务器屏蔽你的ip 发布:2025-01-31 13:25:58 浏览:243
扣扣的独立密码是什么密码 发布:2025-01-31 13:23:42 浏览:132