Wireshark抓取APP数据包

一、编写目的

最近工作中,我们生产环境的应用需要使用国密证书通过HTTPS访问服务端,需要验证我们应用的接口调用是否走了国密证书这一套流程。因此学习了一下通过Wireshark抓包分析。本文章主要介绍使用Windows PC端借助USB无线网卡,使用Wireshark进行抓包。

二、原理和具体方法

  1. 利用USB网卡连接公司Wi-Fi;
    注意:应该也可以使用PC端的本地无线网卡,开启热点,不需要USB无线网卡,因为我同事这么操作的是可以,本人未进行实际操作
  2. 通过无线网卡建立虚拟Wi-Fi;
  3. 安装Wireshark抓包工具;
  4. 用手机连接建立的虚拟Wi-Fi;
  5. 打开Wireshark抓包工具,选择建立的虚拟Wi-Fi;
  6. 手机端触发相关。

三、Windows PC端

1. 利用USB网卡连接公司Wi-Fi

  1. 禁用其他网络适配器,包含:本地有线网、本地无线网
  2. 插入USB无线网卡,安装驱动
  3. 安装完成后,可以识别无线网卡,选择公司wifi,并进行连接
  4. 通过无线网卡建立虚拟wifi

2. 通过无线网卡建立虚拟Wifi

  1. Windows 11,搜索PowerShell,通过管理员运行
  2. 输入命令,查看无线网卡状况,是否支持承载网络
netsh wlan show drivers

netsh wlan show drivers
3. 允许设置承载网络模式(hostednetwork) ,并设置 Wifi 名称( ssid )以及密码( key )

netsh wlan set hostednetwork mode=allow ssid=twyusb key=12345678
注意:
命令“ssid”后XXX为网络名称即要设定的wifi名称,自己随便命名(最好用英文) 
“Key”后边XXXXXXXX为你要设定的wifi密码(至少8位)。
此命令有两个参数:
mode:是否启用虚拟WiFi网卡,改为disallow则为禁用。例如:只使用mode=disallow可以直接禁用虚拟Wifi网卡。
如果将keyUsage指定为永久,将保存安全密钥并在将来再次启动托管网络时使用。否则只有在当前或下一次启动托管网络时使用此密码。停止托管网络后,将从系统中删除临时安全密钥。如果未指定 keyUsage,默认情况下,它是永久性的。
运行netsh wlan set hostednetwork mode=allow ssid=XXX key=XXXXXXXX命令之后看到成功的提示。

netsh wlan set hostednetwork mode=allow ssid=twyusb key=12345678
4. 启动承载网络模式

netsh wlan start hostednetwork

netsh wlan start hostednetwork
5. 右键点击【此电脑】,选择【管理】,选择【设备管理器】,选择【网络适配器】
虚拟网络适配器
6. 打开【控制面板】,选择【网络和 Internet】,选择【网络和共享中心】 ,选择【更改适配器设置】,选择已经连接的无线网络,右键属性,选择【共享】,勾选【Internet连接共享】相关选项,将【家庭网络连接】中选择建立的虚拟网卡
在这里插入图片描述
7. 点击确定即可。

3. 安装Wireshark抓包工具

  1. 下载地址:https://www.wireshark.org/download.html
  2. 下载版本:V4.4.0版本
  3. 双击下载的exe文件,安装即可。

4. 用手机连接建立的虚拟Wi-Fi

手机Wifi连接设置的虚拟wifi:twyusb,输入密码:12345678,可正常上网即可;

5. 打开Wireshark抓包工具,选择建立的虚拟网卡

当时设置的本地虚拟网卡是:本地连接13*,因此在【捕获】中选择【本地连接13*】即可。

在这里插入图片描述

参考

  1. https://blog.youkuaiyun.com/qq_41176800/article/details/115301659
  2. https://www.testwo.com/article/679
在Android设备上,当您打开其他应用程序时,系统可能会为了释放资源而冻结或终止后台运行的服务(Service)。这会导致您的 `BatteryDataService` 被停止,从而导致数据抓取中断和数据丢失。以下是一些解决方法: ### 1. **前台服务(Foreground Service)** - 将 `BatteryDataService` 设置为前台服务,这样可以提高其优先级,减少被系统杀死的风险。 - 在 `onStartCommand` 方法中调用 `startForeground` 方法来显示一个通知,使用户知道服务正在运行。 ```java @SuppressLint("ForegroundServiceType") @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.e("zsq", "onStartCommand"); Notification notification = createNotification(); startForeground(NOTIFICATION_ID, notification); return START_STICKY; } private Notification createNotification() { Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID) .setContentTitle("Foreground Service") .setContentText("Service is running in the foreground") .setSmallIcon(R.mipmap.ic_launcher) .build(); return notification; } ``` ### 2. **START_STICKY 标志** - 使用 `START_STICKY` 标志,确保即使服务被系统杀死,也会在条件允许时重新启动。 - 这已经在 `onStartCommand` 中实现了。 ```java @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.e("zsq", "onStartCommand"); Notification notification = createNotification(); startForeground(NOTIFICATION_ID, notification); return START_STICKY; } ``` ### 3. **处理服务销毁后的重启** - 在 `onDestroy` 方法中,重新启动服务以确保数据抓取继续进行。 ```java @Override public void onDestroy() { super.onDestroy(); Log.e("zsq", "service ondestroy"); // 释放资源 if (fileOutputStream != null) { try { fileOutputStream.flush(); fileOutputStream.close(); Log.d("zsq", "FileOutputStream closed successfully."); } catch (IOException e) { Log.e("zsq", "Error while closing FileOutputStream: " + e.getMessage()); } } if (workbook != null) { try { workbook.close(); Log.d("zsq", "Workbook closed successfully."); } catch (IOException e) { Log.e("zsq", "Error while closing Workbook: " + e.getMessage()); } } handler.removeCallbacks(runnable); unregisterReceiver(shutdownReceiver); // 重启服务 Intent restartServiceIntent = new Intent(getApplicationContext(), BatteryDataService.class); restartServiceIntent.setPackage(getPackageName()); startService(restartServiceIntent); } ``` ### 4. **优化数据保存机制** - 确保在每次数据采集后及时保存数据,避免因服务被杀死而导致大量数据丢失。 - 可以考虑在 `SaveSingleDataToExcelTask` 中增加异常处理,确保数据保存成功。 ### 5. **降低内存占用** - 优化服务的内存占用,减少被系统杀死的可能性。 - 避免在服务中进行耗时操作,可以使用 `AsyncTask` 或者 `WorkManager` 来异步处理。 通过以上方法,您可以提高 `BatteryDataService` 的稳定性和可靠性,减少数据丢失的风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值