Swift5.1.2 Xcode11.2.1 SwiftUI
- 無音盗聴アプリはButton押下など何かのActionに組み込まれる
- Apple App Storeの審査基準では録音系アプリは特に厳しい
- セキュリティ対策とチェックポイントを公開
- ボイスレコーダーの作り方を確認
「以下は動画のハイライトです。」
中古のオークションなどでiPhoneを購入するとたまに初期化されていないiPhoneが届いたりすることもあります。また、脱獄系アプリなど見た目の機能につられて非正規のアプリに手を染めてしまう方もいるかもしれません。
その中でやはり脅威の一つとなるのが日常会話などをバレないように盗聴するアプリです。ばれずに録音するアプリは作るのは簡単ですがAppleの厳密な審査でリジェクトを受けるのが常です。それだけセキュリティ対策がAppleのポリシーとして意識されているのが現状でもあります。
まずこうした盗聴アプリを確認するにはその作られ方を学習する必要があります。その仕組みを理解すればどこを気をつければ良いか今後の予防策にもなります。
アプリの設定上での確認事項は動画をご査収ください。ここではより専門的にソースコードを中心にお話を進めます。まずその作られ方を見てみましょう。
まずSwiftUIでAVKitをimportしたら以下の変数を定義します。
@State var player:AVAudioPlayer!
@State var recorder:AVAudioRecorder!
@State var spString:String = "1.0"
@State var meterBool = true
@State var currentTime = "0"
@State var documentPath = FileManager.default.urls(for: .documentDirectory,
in: .userDomainMask)[0]
AVAudioPlayerは録音したファイルを再生するために使うものです。音声ファイルを再生する方法は前回の動画をご査収ください。ここでは再生方法は割愛させていただきます。
次にContentViewのBodyの中に以下二つのButtonを配置します。
Button(action:{
print("Sart Recording")
var audioFilename = self.documentPath.appendingPathComponent("cq.m4a")
let settings = [
AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
AVSampleRateKey: 12000,
AVNumberOfChannelsKey: 1,
AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
]
self.meterBool = true
self.recorder = try! AVAudioRecorder(url: audioFilename, settings: settings)
self.recorder.record()
DispatchQueue.global(qos: .background).async {
while self.meterBool == true {
self.currentTime = "\(round(self.recorder.currentTime*10)/10)"
print(self.currentTime)
}
}
}) {
Text("録音開始")
}
Spacer().frame(height:50)
Button(action:{
print("Stop Recording")
self.meterBool = false
self.recorder.stop()
self.recorder = nil
}) {
Text("録音停止")
}
上記の数10行のコードをコピペするだけで実は無音盗聴アプリが実装できてしまうのです。わかりやすくTextの各Buttonに「録音開始」「録音停止」と記載しておりますが、ここの文字を適当に別の名前で「カウントアップ開始」「カウントアップ停止」などにしたらユーザーは録音されていると分からずにこのButtonを押してしまうことになります。
AppleのApp Storeではこうした背景から審査基準としてそのアプリが現在録音中であるのかどうかをわかりやすくユーザーに知らせることをデベロッパーに義務付けております。例えば「録音中」というメッセージを明示することや録音の音量などのインディケーターをアプリに搭載することを求められております。
自作のアプリが入った中古iPhoneや脱獄系アプリはこうしたルールを無視して作成されたものが多いのでこれを機にソースコードの動きなどを勉強してセキュリティ意識を高めていただければと思います。
ソースコードはYouTubeのコメント欄に記載します。
目次へ戻る