【发布时间】:2009-03-16 15:08:59
【问题描述】:
我希望使用 Java 来欺骗 UDP 数据包。是否有任何好的 Java 库可以让您创建自己的 RAW SOCKETS?
【问题讨论】:
-
(有一个 RFE 可以将此添加到 Java 库中:bugs.sun.com/bugdatabase/view_bug.do?bug_id=4727550)
我希望使用 Java 来欺骗 UDP 数据包。是否有任何好的 Java 库可以让您创建自己的 RAW SOCKETS?
【问题讨论】:
我会使用包装libpcap 的Java API。
libpcap 有一个“注入”功能,允许您发送原始数据包。 (当然,您在尝试发送数据包的机器上必须具有 root 或管理员权限。)有许多可用的 Java API,例如 jNetPcap 或 jpacp。例如,jpcap 有一个class that allows you to send any packet。
这不需要不同的库。它通常是平台上标准套接字库的一部分,如Winsock 或伯克利套接字。相关选项通常称为ASOCK_RAW。
【讨论】:
在 Windows XP SP2(可能是更高版本,包括 vista,但我不确定)中,raw sockets are disabled。 UDP 套接字的这些限制比 TCP 套接字要宽松一些,因此您仍然可以做任何您想做的事情。该链接包含有关您可以做什么以及如何做的信息,这些信息可能会对您有所帮助,或者至少可以帮助您确定是否可行。
【讨论】:
如果您想编写一个 java 程序来欺骗 UDP 数据包,那么我会按照 Mike 的建议使用 jNetPcap 或 jpcap。如果您只是想欺骗(而不是编写程序),那么我会尝试wireshark。
【讨论】: