相关疑难解决方法(0)

IP地址以零结尾?

这可能不是正确的地方或正确的时间,但我有一个问题.我是一名计算机工程师,我知道一些关于网络的事情,但是当我看到(见图)时,我是WTF.

情况:我星期五回到家,被要求帮助我父亲解决一些网络问题.他不久前坐了几台IP摄像机,我从任何地方都可以使用它.但本周IPS做了某种"重启"或升级或者什么都没有,我们得到了图片上显示的IP.现在我无法从外部IP连接到这些IP摄像头.

假设:我猜测IPS只有一个小于24位的子网掩码,但IPS为什么要这样做呢?为什么我无法连接到这个IP?

任何人都有什么可说的情况?如果我只是联系IPS,我很可能会得到一个新的IP,但我想我只是为了好玩而分享这个.我从没想过会从IPS获得这样的IP:p

在此输入图像描述

ip networking

33
推荐指数
1
解决办法
4万
查看次数

带有VpnService的Android防火墙

我正在尝试使用VpnService为BS项目实现一个简单的Android防火墙.我选择VpnService是因为它将在非root设备上运行.它将记录连接并让您过滤连接.(基于IP)

有一个应用程序这样做是有可能的.

Google Play应用商店

我做了一些研究,发现VpnService创建了一个Tun接口.而已.(没有VPN实现只是一个隧道)它允许您为此接口添加地址并添加路由.它返回一个文件描述符.您可以读取传出的包并写入传入的包.

我创建了一个VpnService派生类,我开始服务.我可以tun0使用VpnService.Builder类进行配置.当我查看mobiwol'sadb shell netcfg它的连接时,创建一个tun010.2.3.4/32地址的接口.它将所有程序包路由到此专用网络并发送到Internet.我也在尝试.创建了10.0.0.2/32地址的接口.添加了具有addRoute功能的路由.0.0.0.0/0所以据我所知,我可以从所有网络捕获所有包.(我对这个主题很新,还在学习.我在互联网上找到了作品,所以我不太确定.如果我错了,请纠正我.)

我在服务中创建了2个线程.一个从文件描述符读取并使用受保护的套接字将其写入127.0.0.1.(我不确定我是否应该读/写127.0.0.1.也许这就是问题所在.)

我分析了从文件描述符中读取的数据包.例如:

01000101    byte:69     //ipv4 20byte header
00000000    byte:0      //TOS
00000000    byte:0      //Total Length
00111100    byte:60     //Total Length
11111100    byte:-4     //ID
11011011    byte:-37    //ID
01000000    byte:64     //fragment
00000000    byte:0      //"
01000000    byte:64     //TTL
00000110    byte:6      //Protocol 6 -> TCP
01011110    byte:94     //Header checksum
11001111    byte:-49    //Header checksum
00001010    byte:10     //10.0.0.2
00000000    byte:0
00000000    byte:0
00000010    byte:2
10101101    byte:-83    //173.194.39.78 //google
00111110    byte:-62
00100111    byte:39 …
Run Code Online (Sandbox Code Playgroud)

java networking android packet-capture tun

29
推荐指数
1
解决办法
2万
查看次数

适用于Android的防火墙,带有VpnService.响应已传递,但抛出了SocketTimeoutException

我正在使用VpnService为Android实现一个简单的防火墙.我的应用程序类似于ToyVpnService,但它不会将原始IP数据包发送到远程VPN服务器,而远程VPN服务器会将它们转发到目的地.

我的实现在这里:https://bitbucket.org/MaksimDmitriev/norootfirewall/src/006f7c33cd1cd4055f372ed3a88664fe2a4be3dd/src/com/norootfw/NoRootFwService.java?at=unix

我可以在本地完成所有这些转发程序吗?这就是我想要实现的.

我初始化一个TUN设备及其文件描述符:

mInterface = new Builder().setSession(getString(R.string.app_name))
                .addAddress("10.0.2.1", 24)
                .addRoute("0.0.0.0", 1)
                .addRoute("128.0.0.0", 1)
                .establish();

in = new FileInputStream(mInterface.getFileDescriptor());
out = new FileOutputStream(mInterface.getFileDescriptor());
Run Code Online (Sandbox Code Playgroud)

我将0.0.0.0/1和128.0.0.0/1分配给TUN设备,使其比0.0.0.0/0的默认路由更优先.我使用了0.0.0.0/0并遇到了同样的异常,如下所示.

这是一个示例UDP请求.

1).我从TUN设备读取了一个IP数据包.

05-06 00:46:52.749: D/UDPChecksum(31077): Sent == [69, 0, 0, 36, 0, 0, 64, 0, 64, 17, 108, 91, 10, 0, 2, 1, -64, -88, 1, -59, -53, 1, -50, -87, 0, 16, 89, -114, 85, 68, 80, 95, 68, 65, 84, 65]
Run Code Online (Sandbox Code Playgroud)

请在此处考虑IPv4数据包结构. 例如,第一个数字69(二进制的0100 …

sockets networking android firewall udp

25
推荐指数
1
解决办法
2374
查看次数

如何从防止嗅探的应用程序中捕获数据包

我正在研究从Facebook安卓应用程序嗅探数据包.我想在社交网络上研究用户行为时使用嗅探数据.

我在过去两个月学到的是我必须创建一个vpn服务并用它来嗅探数据.互联网上有很多有用的代码,我试图理解和运行.我设法使用这些代码嗅探某些应用程序的数据,这些代码都使用相同的概念.

当使用上述代码中的每一个,并进行少量修改时,我设法捕获所有应用程序的数据包,但是对于像facebook这样的应用程序,vpnService使这些应用程序停止工作; 当我创建vpn服务并尝试评论帖子或进行任何需要在Facebook应用程序和Facebook服务器之间发送/接收数据的操作时,此操作不会发生; 看起来不知何故Facebook应用程序知道有人在嗅他.

在过去的两个月里,我一直在尝试在不破坏Facebook应用程序功能的情况下找到捕获Facebook应用程序包的方法.

我尝试在Android示例中按照KeyChain演示安装证书,但它不适用于我.

从我的搜索中,我知道/我确信有一些我缺少的东西; 我搜索的应用程序做了我想要完成的事情,而没有像facebook那样的应用程序检测它.我在Google Play上找到了LostNetNoRootFirewall.

使用LostNetNoRootFirewall,我设法创建了一个vpn服务并嗅探数据包,而facebook应用程序就像一个魅力!

我的问题

我应该向我的应用程序添加什么才能创建一个vpnService并阻止像facebook这样的应用程序检测到我的服务正在嗅探它的数据包?

我正在处理的当前代码.[原始来源]

package com.git.firewall;

public class GITVpnService extends VpnService implements Handler.Callback, Runnable {
    private static final String TAG = "GITVpnService";

    private String mServerAddress = "127.0.0.1";
    private int mServerPort = 55555;
    private PendingIntent mConfigureIntent;

    private Handler mHandler;
    private Thread mThread;

    private ParcelFileDescriptor mInterface;

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // The handler is …
Run Code Online (Sandbox Code Playgroud)

java networking android android-vpn-service

7
推荐指数
0
解决办法
632
查看次数

Android VpnService - 如何转发拦截的互联网流量?

我已经关注此链接并使用VpnService创建了Vpn接口.在将前向路由添加为"0.0.0.0"时,所有互联网流量都被转发到Vpn接口.我可以读取数据包,访问协议,目标IP和端口.

现在我试图通过tcp套接字将数据包转发到目的地.但是套接字连接失败并且连接超时.

exception: java.net.ConnectException: failed to connect to /74.125.227.114 (port 443): connect failed: ETIMEDOUT (Connection timed out)
Run Code Online (Sandbox Code Playgroud)

注意:当我尝试使用相同的ip和端口连接套接字但没有Vpn时,它会连接.无法弄清楚我哪里出错了?

粘贴下面的代码:

public class VpnServiceEx extends VpnService implements Handler.Callback, Runnable {
    private static final String TAG = "VpnServiceEx";

    private Handler mHandler;
    private Thread mThread;

    private ParcelFileDescriptor mInterface;

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // The handler is only used to show messages.
        if (mHandler == null) {
            mHandler = new Handler(this);
        }

        // Stop the previous session …
Run Code Online (Sandbox Code Playgroud)

sockets vpn networking android tcp

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

移动平台上是否可以进行TCP数据包过滤?

我有兴趣让我的移动应用程序在后台运行并过滤TCP数据包.

我知道由于沙盒,每个操作系统特权级别以及iOS如何处理后台任务,我将面临限制,因此我想确认是否可以在iOS和Android上执行此操作.

Android和iOS是否允许您分析和修改通过TCP端口的数据包?如果可能的话怎么样?当我的应用程序保留在后台时,我可以这样做吗?

port networking android tcp ios

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

在Android中创建交互式防火墙应用

我想为Android创建防火墙应用程序,当一个应用程序要连接到互联网时显示该应用程序的名称,并让用户永久阻止它或暂时阻止它或允许它,以及当该应用程序想要从网络接收数据时显示该应用程序的名称,并且用户可以允许或拒绝。

我查看了以下问题:创建防火墙,但不能满足我的需求。

是否建议检测哪些应用可以访问网络和/或从中接收数据?

谢谢!

android firewall

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

Android VpnService转发数据包

我想使用 androidVpnService来捕获数据包并根据 IP 地址过滤它们。我可以很好地从“tun”接口获取数据包,但之后我不确定如何将它们转发到原始目的地。根据这个答案的评论,我似乎只需要:

  1. 创建一个新的套接字到目标IP地址和端口
  2. 修剪 IP 和 TCP 标头以仅发送数据
  3. 当我收到响应时重新附加 IP 和 TCP 标头
  4. 将完整的数据包发送到输出流

我尝试像这样发送数据:

Socket socket = new Socket();
socket.bind(new InetSocketAddress(0));
if (protect(socket)){
    Log.e(TAG, "Socket protected");
}else{
    Log.e(TAG, "Socket NOT protected");
}
socket.connect(new InetSocketAddress(ipPacket.getDestinationIp(), ipPacket.getDstPort()));
Log.e(TAG, "Socket connected: " + socket.isConnected());

socket.getOutputStream().write(getTCPHeader(getIpHeader(packet)[1])[1].array());
Run Code Online (Sandbox Code Playgroud)

getTCPHeader(ByteArray packet)这些方法getIpHeader(ByteArray packet)简单地将数据包分成两个,ByteArray如下所示:

private ByteBuffer[] getIpHeader(ByteBuffer packet){
    packet.position(0);
    ByteBuffer ipHeader = ByteBuffer.allocate(20);
    ByteBuffer data = ByteBuffer.allocate(packet.limit() - 20);
    
    packet.get(ipHeader.array(), 0, 20);
    
    packet.get(data.array(), 0, packet.limit() - 20); …
Run Code Online (Sandbox Code Playgroud)

java sockets android tcp packet-capture

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

Android 本地 VPN 服务:无法获得响应

我对 Android 及其服务还很陌生。我正在尝试在我的应用程序中实现本地VPN 服务(使用 Kotlin 和 Java)。

\n\n

问题

\n\n

我的 VPN 服务取自ToyVpn Google 示例,并结合 1、2、3 中的示例在本地使用无需连接到远程服务器),但无法正常工作。

\n\n
\n\n

我的应用程序原理

\n\n

我看到了这个这个问题,但是那里的答案不是很有见地,我找不到我的问题的解决方案。

\n\n

所以该应用程序非常简单:当用户单击主活动上的“是”按钮时,它应该转发所有数据包,当单击“否”时,它应该阻止它。目的:将其用作防火墙,如下所示:

\n\n

我的VPN应用程序的原理

\n\n

我所有的代码都是用 Kotlin 语言编写的,但它并不复杂,对于 JAVA 开发人员来说非常清晰。所以我希望上面的代码非常清晰,因为它取自此处(Google 提供的 ToyVpn 示例)并刚刚转换为 kotlin。

\n\n
\n\n

我的配置和代码

\n\n

为了在我的应用程序中启用 VPN 服务,我将AndroidManifest.xml放入<application>标记此设置:

\n\n
<service android:name="com.example.username.wifictrl.model.VpnFilter"\n         android:permission="android.permission.BIND_VPN_SERVICE" >\n    <intent-filter>\n        <action android:name="android.net.VpnService" />\n    </intent-filter>\n</service>\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的MainActivity代码包含:

\n\n
override fun …
Run Code Online (Sandbox Code Playgroud)

java vpn android kotlin kotlin-android-extensions

2
推荐指数
1
解决办法
8176
查看次数