想用NetworkExtension在iOS中实现配置hosts的功能

QBIT 2024-01-29 12:59:54

代码如下

APP_ID权限等设置已经打开了,在ios系统中也新建了vpn连接,但无法连接,请教大佬,有相关经验的,可否提供类似代码?

import UIKit
import NetworkExtension

@objcMembers
class ViewController: UIViewController {
    @IBOutlet var connectButton: UIButton!
    let vpnManager = NETunnelProviderManager.shared()
    private func initVPNTunnelProviderManager() {
        let tunnelProtocol = NETunnelProviderProtocol()
        tunnelProtocol.providerBundleIdentifier = "com.xx.xx"

        // 设置你的 hosts 或其他协议参数
        tunnelProtocol.serverAddress = "223.1.1.1"
        tunnelProtocol.username = "test"
        if let passwordData = "test".data(using: .utf8) {
            tunnelProtocol.passwordReference = passwordData
        } else {
            // Handle the case where conversion from string to data fails
            print("Failed to convert password string to data")
        }

        tunnelProtocol.providerConfiguration = [
            "protocol": [
                "L2TP": [
                    "serverAddress":"223.1.1.1",
                    "username": "test",
                    "passwordReference": "test",  // Data containing the password
                    "sharedSecretReference": "test",  // Data containing the shared secret
                ]
            ]
        ]


        vpnManager.protocolConfiguration = tunnelProtocol
        vpnManager.saveToPreferences { error in
            if let error = error {
                print("Error saving VPN configuration: \(error.localizedDescription)")
            } else {
                // Configuration saved successfully
            }
        }
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        initVPNTunnelProviderManager()
        NotificationCenter.default.addObserver(self, selector: #selector(ViewController.VPNStatusDidChange(_:)), name: NSNotification.Name.NEVPNStatusDidChange, object: nil)

        // Do any additional setup after loading the view.
    }

    func VPNStatusDidChange(_ notification: Notification?) {
        print("VPN Status changed:")
        let status = self.vpnManager.connection.status
        switch status {
        case .connecting:
            print("Connecting...")
            connectButton.setTitle("Disconnect", for: .normal)
            break
        case .connected:
            print("Connected...")
            connectButton.setTitle("Disconnect", for: .normal)
            break
        case .disconnecting:
            print("Disconnecting...")
            break
        case .disconnected:
            print("Disconnected...")
            connectButton.setTitle("Connect", for: .normal)
            break
        case .invalid:
            print("Invliad")
            break
        case .reasserting:
            print("Reasserting...")
            break
        default:
            print("unknow Vpn Status...", status)
            break
        }
    }
    
    @IBAction func go(_ sender: UIButton, forEvent event: UIEvent) {
        print("Go!")

        self.vpnManager.loadFromPreferences { (error:Error?) in
            if let error = error {
                print(error)
            }
            if (sender.title(for: .normal) == "Connect") {
                do {
                    try self.vpnManager.connection.startVPNTunnel()
                } catch {
                    print(error)
                }
            } else {
                self.vpnManager.connection.stopVPNTunnel()
            }
        }
    }
}

 

 

...全文
12949 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
QBIT 2024-01-29
  • 打赏
  • 举报
回复

APP Stream IOS抓包其中一项功能就是配置hosts,我们想实现类似功能。Stream IOS抓包

内容概要:本文提出了一种基于高保真电磁暂态仿真的智能电网虚假数据注入攻击(FDIA)数据集构建与影响分析方法,通过PSCAD与MATLAB联合仿真平台,在IEEE标准测试系统(如9节点或39节点系统)上建立精确的电力系统电磁暂态模型,全面模拟系统在正常运行与遭受FDIA攻击下的动态响应过程。该方法能够生成包含电压、电流、功率、频率等多维度电气量的高精度、时间同步的仿真数据集,真实反映攻击对系统暂态稳定性、潮流分布、电压波动及频率响应的影响,尤其适用于构网型/跟网型逆变器、储能系统、分布式能源高比例接入等新型电力系统场景的安全性评估。所构建的数据集具有高真实性、可复现性和强扩展性,为FDIA攻击机理研究、隐蔽性分析、传播路径追踪以及攻击检测算法(如基于机器学习的异常检测模型)的训练与验证提供了坚实的数据基础和技术支撑。; 适合人群:电力系统自动化、智能电网安全、能源互联网等领域的高校研究生、科研人员及工程技术人员,要求具备扎实的电力系统分析理论基础,熟悉PSCAD/EMTDC与MATLAB/Simulink仿真工具的基本操作,了解状态估计、SCADA系统及网络安全基本概念; 使用场景及目标:① 构建高保真的电力系统网络攻击仿真环境,复现FDIA攻击场景;② 生成用于训练、测试和验证FDIA检测模型的标准化高质量数据集;③ 深入分析虚假数据注入对电力系统暂态稳定性和动态行为的影响机理;④ 支持新型电力系统背景下智能电网安全防护技术、韧性提升策略的研究与实验验证; 阅读建议:建议结合文中所述的联合仿真流程,动手搭建PSCAD电磁暂态模型并实现与MATLAB的数据交互,重点关注攻击向量的设计、量测量篡改策略、系统响应特征提取等关键步骤,同时参考提供的资源链接获取完整代码与案例实现,以深化对攻击建模与防御机制的理解。

1,423

社区成员

发帖
与我相关
我的任务
社区描述
Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C共同运行于MAC OS和iOS平台,用于搭建基于苹果平台的应用程序。
swift 技术论坛(原bbs)
社区管理员
  • Swift
  • 展菲
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧