我想计算我想发送的UDP报头数据包的校验和:
packetosend = """60 00 00 00 00 24 3a 40 20 02 c0 a8 01 50 00 01 00 00
00 00 00 00 09 38 20 02 c0 a8 01 50 00 01 00 00 00 00 00 00 09 6f"""
Run Code Online (Sandbox Code Playgroud)
所以我需要加入这个utf-16(不是问题)并计算这个特定数据包的校验和.我怎样才能做到这一点?
谢谢!
编辑:是的它是ICMPv6数据包的IPv6标头,无论如何我想知道的是公式,以及它是如何工作的.
我将给出一个ICMP ping echo(v4)数据包的另一个例子:
packet = """
08 00 d1 15 76 0c 00 07 bf d3 55 4a ad b5 03 00 // "d1 15" is the packet checksum
08 09 0a …Run Code Online (Sandbox Code Playgroud) 我正在寻找编写一个小程序,该程序将拦截网络数据包(在本地计算机上)并在它们出入网络之前对其进行修改。我还需要能够修改标题,而不仅仅是数据。
我已经研究过几种可能性,但不确定哪种是最佳选择。那里有开源的数据包过滤器,但是过滤似乎只能允许或拒绝数据包,而没有其他功能。
另一个解决方案是编写NDIS中间驱动程序,但是编写驱动程序超出了我的范围。甚至WinDDK中简单的直通示例也有数千行。我也不希望经常重新安装驱动程序并重新启动以测试我的代码。
理想情况下,我希望该程序自成一体,而不依赖于第三方驱动程序/软件/其他程序的安装。
因此,如果您能向我指出正确的方向,请以我的方式抛出一些有用的链接,无论如何,我将不胜感激。
我的问题与这篇文章类似.但是我不会发送数据包长度而不是最后一个0字节. 在Java中读取tcp流的最有效方法
所以我想知道我将如何编写代码.
目前我只是使用
this.socketIn = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
String line = this.socketIn.readLine();
Run Code Online (Sandbox Code Playgroud)
如果在您发送数据包时发送数据包,它将计算尚未作为完全读取线路到达的数据包,但它不完整并且会弄乱整个协议.
在我的协议中,每个数据包以0字节(0x00)结束,以确定单个数据包的结束,如果数据包最终合并/堆叠在一起.
所以我真正要做的就是继续读取套接字流,直到达到0x00表示数据包已经完全制作并准备好进行处理..当然还有某种安全性(我认为超时是最好的)来确定数据包是垃圾,因为它没有在特定时间帧的0字节中结束,比如5秒.
我该怎么做呢?
PS>我没有使用NIO框架,只是每个连接套接字的常规线程,我不想切换到NIO,因为很难用完全不同的全局线程注入数据,该线程处理更新并向随机用户发送特定更新(不播出).
这是我到目前为止所尝试的.
String line = "";
int read;
long timeOut = System.currentTimeMillis();
while(true) {
read = this.socketIn.read();
if (read == -1 || read == 0 || (System.currentTimeMillis()-timeOut) > 5000)
break;
line += read
}
Run Code Online (Sandbox Code Playgroud) 我使用相同的UDP套接字来发送和接收数据.我想知道DGRAM套接字的数据包排队是否已经存在,或者我们是否必须单独处理它.
如果用户代码必须处理排队,它是如何完成的?我们是否有针对套接字的recvfrom的单独线程,并将数据包放入reciver_queue并从另一个sending_queue发送到?
示例代码绝对令人敬畏.谢谢你的帮助.
我熟悉如何使用AudioUnit播放声音,并对数据包和帧的概念感到困惑.我想知道:
AudioUnit上下文中数据包和帧的定义是什么
每个数据包使用多个样本以及每帧多个数据包的交易是什么
我的理由是:在我到目前为止看到的所有代码示例中,数据包本质上是一个样本,对于16位立体声流,通常mBytesPerPacket = 4.mFramesPerPacket通常为1,制作一个帧,一个数据包和一个样本(都是立体声样本),相同的概念.
我期望数据包和/或帧是样本的缓冲区,即一组256或512个连续样本,驱动程序可以指向并线性读取.将帧/数据包大小减少到一个样本似乎会给负责播放数据的任何驱动程序带来不必要的压力.我错过了什么?
我在C++中使用libpcap来读取pcap文件中的数据包,例如:
rc = pcap_next_ex((pcap_t*)handle, &header, (const unsigned char**)packet);
Run Code Online (Sandbox Code Playgroud)
我想解析数据包标头(没有有效负载).
例如,如何解析给定的数据包以提取其源和目的地IP地址?
谢谢
我的移动相机有H264流.在我的Java应用程序中,我可以逐帧访问已经使用H264编码的流.我需要将它流式传输到Wowza媒体服务器.既然wowza只了解RTP/RTSP流,我可以在每个帧数据的前面添加RTP头并将其流式传输到wowza吗?
非常感谢你的帮助
可以说我有一个用python编写的应用程序来发送ping或电子邮件。如何使用例如Scapy将发送的数据包的源IP地址更改为伪造的IP地址?
考虑分配给我的eth0的IP地址是192.168.0.100。我的电子邮件应用程序将使用此IP发送消息。但是,我想在准备好发送该数据包时对其进行操作,因此其源IP不是192.168.0.100,而是192.168.0.101。
我想要执行此操作而不必实现MITM。
在启动TCP连接时是否可以发送带有自定义有效负载的SYN数据包?我的直觉是它在理论上是可行的.我正在寻找一种在Linux中实现这一目标的简单方法(使用C或Go语言),但由于它不是标准行为,我还没有找到有用的信息.(这篇文章很相似,但不是很有帮助.)
请帮帮我,谢谢!
编辑:抱歉模棱两可.不仅是这种任务的可能性,我也在寻找一种方法,甚至是样本代码来实现它.