草庐IT

android - 使用 tcpdump 在 Android 中进行 24/7 数据包捕获

我想在一周内在Android中获取数据包级数据流量捕获(.pcap)(如果可能,在多个文件中)。我以为我可以通过Shark使用tcpdump,但我发现捕获会在一段时间后停止。我得到的最大数据包捕获约为40MB。我发现tcpdump在更改网络接口(interface)时停止/崩溃。例如,当手机连接到3G时,当我从Shark运行tcpdump时,我可以看到tcpdump运行的过程,直到我打开WiFi。在GalaxyS2中,当通过WiFi连接时,我有以下接口(interface)(通过在adbshell中使用netcfg获得):lo、svnet0、usb0、sit0、eth0。当我通过3G连

android - 将原始数据包发送到 Android 中的 NetworkInterface 不起作用?

我正在尝试通过VPN将数据包从VPN发送到适当的硬件上,而不使用任何真正的VPN服务器,因此我可以记录正在发送的数据包。我能够为wlan0接口(interface)获取一个InetAddress我希望数据包实际到达,但我不太确定那是否是正确的地方完全没有(它显示了我当前的IP地址)。然后我在上面使用了一个DatagramChannel(称为socket并且IntetAddress是uplink):socket.connect(newInetSocketAddress(uplink,0));并将数据包写入其中:socket.write(packet);但没有什么东西粘住,我只是得到jav

java - 强制android立即发送UDP数据包?

我正在尝试通过WiFi将我的GalaxyAce连接到我的笔记本电脑。两个设备都通过WiFi连接到路由器,并且双方都使用Java。在TCP连接不时给我非常高的ping后,我决定基于UDP连接,以便能够控制数据包实际发送的时间。但是,Android似乎仍在缓冲UDP数据包并且不会立即发送它们。如果在几分之一秒内没有传出数据传输,这或者它会完全关闭WiFi。首先,我以大约每秒一次的不规则间隔ping电话,重复发送ping请求,只要没有收到答复(包括UDP中的数据包丢失):computer->phone->computerPinging192.168.1.40:148.05968msPingi

java - 在某些Android设备上严重UDP数据包丢失

我已经搜索了interwebz,但没有结果。我们面临的问题是某些Android设备会遭受严重的数据包丢失。为了提供一些背景信息,该应用程序连接到特定的Wifi并查找在端口17216上广播的UDP数据包。这些数据包的大小为832字节(不包括包装的header),并且以每秒4的常规速率发送。我们仅在以下两种设备上遇到了问题:低端TurboxRubikII平板电脑和ASUSMemoPadHD7。我们测试过的其他设备(手机和平板电脑)均以规定的定期间隔收集数据包。接收数据包的功能是这样的:publicvoidrun(){while(isUDPServerRunning){try{socket.

android - 可以使用 VpnService 实现来捕获和发送数据包吗?

我正在考虑使用新的android(4.0)VpnService接口(interface)来实现简单的数据包捕获和分析的可能性。有谁知道是否可以获取您在VpnService实现中收到的数据包并将它们简单地写出到Activity/默认网络设备?当然,要接收数据,我还必须能够从网络设备读取数据。如果可能,可以使用哪些API写入网络设备? 最佳答案 tPacketCapture创建到远程机器的第二个套接字以转发数据包。我已经使用adbshellnetstat查看了tPacketCapture:ProtoRecv-QSend-QLocalAd

android - 如何在 Android 上接收多播数据包

我正在尝试从多播地址接收数据,但对MulticastSocket.receive()的调用会阻塞,直到发生超时。我做了一些网络嗅探,发现我的设备(和模拟器)从不发送MulticastSocket.joinGroup请求。我尝试从我的PC上运行相同的Java代码作为一个独立的应用程序,它运行良好。会不会是Android平台屏蔽了IGMP加入请求?以前有人在Android上成功使用多播吗?我的list文件包含以下权限:我在2.1(模拟器和设备)上运行我的应用程序。有什么想法吗?谢谢, 最佳答案 Lukas给出了我在他的博客上看到的最好的

c++ - 我正在将 UDP 数据包从本地主机发送到本地主机,并在有时丢弃的数据包上运行。我该如何阻止这种情况以及为什么会发生这种情况?

这是我程序的输出sendingagentupdateCreatednewplayerIdentifiedsendingagentupdatePhysics:2ticksthisframetime=200time=300***PacketDropped:2:10******PacketDropped:2:11******PacketDropped:2:12******PacketDropped:2:13******PacketDropped:2:14******PacketDropped:2:15******PacketDropped:2:16******PacketDropped:2:

java - 在 Android 上用 Java 或 C/C++ 解码 Airplay 数据包

我目前正在为Android应用程序的一个子部分开发AirPlay接收器。我正在使用以下框架:https://github.com/pentateu/DroidAirPlay虽然这在某些中档设备(如miPad)上运行良好,但我们需要让它在低规范定制设备上运行。定制设备解码airplay数据包的速度比miPad慢10到20倍。结果,音频数据包失去了时间同步,并且由于解码数据包所花费的时间,音频永远无法重新同步。我正在研究Play商店中的其他一些airplay接收器应用程序,据我所知,它们往往基于Shairport(https://github.com/abrasive/shairport)

c++ - 发送带有 syn 标志集的原始 tcp 数据包只是通过 lo 接口(interface),而不是我想要的 eth0

我想向我的httpd服务器发送一个syn数据包并获得一个响应的syn-ack数据包。但是当我使用Wireshark进行监控时,数据包是由我的本地接口(interface)lo而不是eth0发送的。我已经尝试在setsockopt中设置一些不同的值,正如您在下面的代码中看到的那样,但似乎都没有用,它总是使用lo接口(interface)并且不是eth0。我不知道使它通过本地接口(interface)的tcp数据包是否有问题,或者是否有其他问题。#include#include#include#include#include#include#include#include#include#

c++ - 我如何在 C/C++ 中接收原始的第 2 层数据包?

我如何在POSIXyC++中接收第2层数据包?数据包只有src和dstMAC地址、类型/长度和自定义格式的数据。它们不是TCP或UDP或IP或IGMP或ARP或其他任何东西-它们是硬件人员给我的自制格式。我的socket(AF_PACKET,SOCK_RAW,IPPROTO_RAW)永远不会从它的recvfrom()返回。我可以正常发送,但无论我在网络堆栈中使用什么选项,我都无法接收。(平台是VxWorks,但我可以翻译POSIX或Linux或任何...)接收码(当前版本):ints;if((s=socket(AF_PACKET,SOCK_RAW,IPPROTO_RAW))