标签: packet

以UTF-8嗅探和显示TCP数据包

我正在尝试使用tcpdump来显示在我的网络上流动的tcp数据包的内容.我有类似的东西:

tcpdump -i wlan0 -l -A
Run Code Online (Sandbox Code Playgroud)

-A选项将内容显示为ASCII文本,但我的文本似乎是UTF-8.有没有办法使用tcpdump正确显示UTF-8?你知道其他任何有用的工具吗?

非常感谢

tcp sniffing utf-8 tcpdump packet

6
推荐指数
1
解决办法
7276
查看次数

示例RTP数据包流

我试图通过用户定义的协议隧道传输RTP流量,并希望测试此设置.是否有任何C++库,我可以使用它来生成示例RTP数据包,然后通过我的库隧道它们?

谢谢.

c++ rtp packet

6
推荐指数
1
解决办法
8902
查看次数

如何在Python中重组TCP数据包?

如何在Python中重组TCP数据包?有没有现成的工具?

谢谢!:-)

python tcp packet

6
推荐指数
2
解决办法
6780
查看次数

Java多播发送数据,未接收

我正在用Java编写一个类,用于大大简化多播过程.但是,我遇到了两个大问题:

  1. 该类发送数据(我可以使用我的网络监视器Wireshark验证这一点),但同一组中的任何其他人都不会收到数据.
  2. 在某些机器上,传输过程中超出了发送数据包TTL(同样,根据Wireshark).

有人可以帮帮我吗?我一直在努力寻找几小时的答案,看来我的代码遵循了从多播主机连接,加入,发送和接收数据的所有基本过程.

以下是该课程相关部分的片段:

Multicaster类:

public class Multicaster {
  public int port = 5540;

  protected String IPAddress;

  private MulticastSocket msConn;
  private InetAddress netAddr;

  public Multicaster(String IPAddress) {
    this.IPAddress = IPAddress;
  }

  public String recieveData() {
    byte[] buf = new byte[1000];
    DatagramPacket pack = new DatagramPacket(buf, buf.length);

    try {
      this.msConn.receive(pack);
      new Message(pack);
      String out = new String(pack.getData());
      return out.substring(0, pack.getLength());
    } catch (IOException e) {
      return new String("");
    }
  }

  public void joinGroup() { 
    try {
      this.msConn.joinGroup(this.netAddr);
    } catch (IOException …
Run Code Online (Sandbox Code Playgroud)

java lan multicast send packet

6
推荐指数
1
解决办法
5716
查看次数

没有得到所有ICMP超时消息:为什么?

我正在使用Scapy来重放一些我改变TTL值的转储数据包.即使TTL = 1,我也得到了非常奇怪的结果.

当我将测试时间彼此分开时,我可以从大约40%到95%的数据包中获得ICMP超时消息.然后我可以递归地重放未应答的数据包,并且每次获得的回复数据包的百分比与之前相同或多或少.

这是为什么?

我一直在发送间隔为0.1秒的数据包.这应该没问题吧?我的超时值是10秒,这应该是非常保守的.

这有什么不对?

python scapy packet icmp ttl

6
推荐指数
1
解决办法
1043
查看次数

发送和接收UDP数据包

以下代码在端口15000上发送数据包:

int port = 15000;
UdpClient udp = new UdpClient();
//udp.EnableBroadcast = true;  //This was suggested in a now deleted answer
IPEndPoint groupEP = new IPEndPoint(IPAddress.Broadcast, port);
string str4 = "I want to receive this!";
byte[] sendBytes4 = Encoding.ASCII.GetBytes(str4);
udp.Send(sendBytes4, sendBytes4.Length, groupEP);
udp.Close();
Run Code Online (Sandbox Code Playgroud)

但是,如果我不能在另一台计算机上接收它,那就没用了.我所需要的只是将命令发送到局域网上的另一台计算机,并让它接收它并做一些事情.

不使用Pcap库,有什么办法可以实现这个目标吗?我的程序正在与之通信的计算机是Windows XP 32位,而发送计算机是Windows 7 64位,如果它有所不同.我已经研究了各种net send命令,但我无法解决它们.

我也可以访问计算机(XP one)的本地IP,因为它可以在其上物理输入'ipconfig'.

编辑:这是我正在使用的接收功能,从某处复制:

public void ReceiveBroadcast(int port)
{
    Debug.WriteLine("Trying to receive...");
    UdpClient client = null;
    try
    {
        client = new UdpClient(port);
    }
    catch (Exception ex)
    {
        Debug.WriteLine(ex.Message); …
Run Code Online (Sandbox Code Playgroud)

c# message udp broadcast packet

6
推荐指数
1
解决办法
5万
查看次数

在Haskell中有效匹配很多模式

我曾想过将Haskell用于游戏服务器,但在编码时,我发现自己正在查看解析数据包的部分,认为"哇,这将导致很多模式匹配".看到要完成的匹配量很多(走那里,攻击,抢劫,打开等等).

我所做的是:

  1. 收到一个包
  2. 将数据包标头解析为十六进制字符串(例如"02B5")
  3. 从数据包中获取其余数据
  4. 匹配parseIO中的标头
  5. 使用数据包内容调用适当的函数

映射String - > method会很容易,但是这些方法具有不同的in-parameters数量.

我想到了下面简单的两种模式匹配方式.

#1
packetIO :: String -> IO ()
packetIO packet =
  case packet of
    "02B5" -> function1
    "ADD5" -> function2
    ... and so on

#2
packetIO :: String -> IO ()
packetIO "02B5" = function1
packetIO "ADD5" = function2
... and so on
Run Code Online (Sandbox Code Playgroud)

两者都在考虑性能和编码风格,有没有办法更好地处理从客户端收到的数据包?

如果您有任何我找不到的资源或链接,请指出我的方向!

编辑130521:

看起来像下面列出的两种选择都是不错的选择.只是等待在评论中看到我的问题的答案,然后选择哪个是我的最佳解决方案.

  1. 在Map结构中存储(ByteString - > Function).O(log n)
  2. 将ByteString转换为Word16并进行模式匹配.O(log n)到树或O(1)到查找表

编辑130521:

正如Philip JF所说,决定与Word16进行模式匹配.两者都是很好的选择,虽然我的猜测是同样快,但Map可能会更快看到我不必转换为Word16,另一个选项为我的使用提供了更易读的代码:

packetIO 0x02B5 = function1
packetIO 0xADD5 = function2
etc
Run Code Online (Sandbox Code Playgroud)

haskell pattern-matching packet

6
推荐指数
2
解决办法
574
查看次数

UDP-可选校验和

根据我对UDP的了解,它没有错误处理,没有检查发送/接收的数据序列,没有检查重复的数据包,没有检查损坏的数据包以及显然不能保证已接收发送的数据包。 。

因此,考虑到这一点,为什么实际上在UDP中存在使用校验和的选项?因为可以肯定的是,如果您要确保以正确的顺序接收发送的数据(而不损坏等),则可以使用TCP ...

谢谢你的时间 :)

error-handling checksum udp tcp packet

6
推荐指数
1
解决办法
3739
查看次数

带C的Z波协议:关于Z波帧结构和编程的一般问题

(在我提出问题之前;我不知道是否允许任何人回答我的问题,因为Z波协议应该是机密信息,但如果它确实违反了任何类型的规则,那么随意删除这个帖子.)

我目前正在尝试编写一个C程序,它只是构造一个由原始二进制数据组成的Z波消息,然后将该消息发送到连接Z波控制器的USB接口(我正在使用AEOTEC Z-Stick USB加密狗由Aeon Labs提供).我也使用指南作为参考,并试图在简单C中重写示例代码.但是,如果你看一下指南,特别是他试图发送给USB控制器的消息:

/*
0x01, 0x09, 0x00, 0x13, nodeId, 0x03, 0x20, 0x01, state, 0x05, checksum
*/
Run Code Online (Sandbox Code Playgroud)

...也许只是我,但似乎缺少来自通常的Z波框架的一些信息.我的猜测是前4个字节代表Home ID后跟节点ID,但是我无法弄清楚'0x03'之后的含义,假设该字节后面的其余部分代表"Basic"命令类(' 0x20',1字节)和相应的"Set"应用程序命令('0x01',1字节).在校验和位之前'0x05'代表什么?那传输头信息呢,为什么不包含它?看起来他不需要包含它......或者我只是在解释数据包完全错误.有人可以开导我吗?

另外,如果您从USB端口读取应用程序层信息(f.ex.中带有open()&read()命令,那么它是否正确无法检索应用程序层信息?)

先感谢您!

c networking packet z-wave

6
推荐指数
2
解决办法
2339
查看次数

任何在线UDP / TCP数据包发送者?

有很多提供生成和发送UDP / TCP数据包的应用程序,但是我正在寻找一些在线等效的应用程序。类似于www.wakeonlan.me,但适用于由我定义的有效负载的UDP / TCP数据包(不仅仅是简单的WoL数据包)。
我编写了一些PHP代码来发送简单的UDP数据包,但不幸的是,出于安全原因,该代码已被阻止(我使用了免费的托管服务器)。

有谁知道一些用于简单数据包生成的站点?

此致,
Mopsiok

ethernet packet sender

5
推荐指数
0
解决办法
3848
查看次数