Commit eaa21e7d authored by liuyang's avatar liuyang

APK抓包>从频道1开始依次抓取

#BYLSERVER-1693
parent 2d2b000c
...@@ -168,9 +168,8 @@ class Task : IAppBaseCallback { ...@@ -168,9 +168,8 @@ class Task : IAppBaseCallback {
} }
AdbUtil.launchApp("${this.apkInfo.packageName}/${this.apkInfo.launcher}") AdbUtil.launchApp("${this.apkInfo.packageName}/${this.apkInfo.launcher}")
Thread.sleep(2 * 1000L) // 启动立即抓取,避免第一个频道没有抓到
// 启动2s开始抓取,避免第一个频道没有抓到 capture(this.apkInfo.captureDelay, false)
capture(this.apkInfo.launchDelay + this.apkInfo.captureDelay)
Thread.sleep(this.apkInfo.launchDelay * 1000L) Thread.sleep(this.apkInfo.launchDelay * 1000L)
// 启动后按键事件模拟 // 启动后按键事件模拟
...@@ -182,6 +181,7 @@ class Task : IAppBaseCallback { ...@@ -182,6 +181,7 @@ class Task : IAppBaseCallback {
private fun processChannels(index:Int): Boolean { private fun processChannels(index:Int): Boolean {
Log.i(TAG, "processChannels") Log.i(TAG, "processChannels")
step() step()
quitCapture()
for (i in index + 1 until this.apkInfo.channelCount) { for (i in index + 1 until this.apkInfo.channelCount) {
if (this.status == "7") if (this.status == "7")
...@@ -237,7 +237,7 @@ class Task : IAppBaseCallback { ...@@ -237,7 +237,7 @@ class Task : IAppBaseCallback {
} }
// 抓包处理 // 抓包处理
private fun capture(delay: Int) { private fun capture(delay: Int, quit: Boolean = true) {
Log.i(TAG, "capture") Log.i(TAG, "capture")
val file = File(this.capturePath) val file = File(this.capturePath)
if (file.exists()) if (file.exists())
...@@ -245,8 +245,15 @@ class Task : IAppBaseCallback { ...@@ -245,8 +245,15 @@ class Task : IAppBaseCallback {
Thread(Runnable { Thread(Runnable {
proc = AdbUtil.tcpCapture(this.capturePath) proc = AdbUtil.tcpCapture(this.capturePath)
}).start() }).start()
Log.i(TAG, "capture sleep $delay seconds")
Thread.sleep(delay * 1000L) if (quit) {
Log.i(TAG, "capture sleep $delay seconds")
Thread.sleep(delay * 1000L)
quitCapture()
}
}
private fun quitCapture() {
proc?.destroy() proc?.destroy()
AdbUtil.killTcpdump() AdbUtil.killTcpdump()
Thread.sleep(2000L) Thread.sleep(2000L)
......
package com.duolebo.blyrobot.util package com.duolebo.blyrobot.util
import android.text.TextUtils
import android.util.Log import android.util.Log
import com.duolebo.blyrobot.data.EmulateKey import com.duolebo.blyrobot.data.EmulateKey
import java.io.BufferedReader import java.io.BufferedReader
...@@ -211,7 +212,7 @@ object AdbUtil { ...@@ -211,7 +212,7 @@ object AdbUtil {
val keyEvents = ArrayList<EmulateKey>() val keyEvents = ArrayList<EmulateKey>()
val keys = keyPath.split(Constants.SLASH) val keys = keyPath.split(Constants.SLASH)
for (stepKey in keys) { for (stepKey in keys) {
var delay = "0" var delay = "1"
var key = stepKey var key = stepKey
if (Constants.VERTICAL_BAR in stepKey) { if (Constants.VERTICAL_BAR in stepKey) {
val params = stepKey.split(Constants.VERTICAL_BAR) val params = stepKey.split(Constants.VERTICAL_BAR)
...@@ -221,11 +222,16 @@ object AdbUtil { ...@@ -221,11 +222,16 @@ object AdbUtil {
if (Constants.ASTERISK in stepKey) { if (Constants.ASTERISK in stepKey) {
val params = stepKey.split(Constants.ASTERISK) val params = stepKey.split(Constants.ASTERISK)
for (i in 0..params[1].toInt()) { if (params.size > 1 && TextUtils.isDigitsOnly(params[1])) {
val keyEvent = EmulateKey() for (i in 0..params[1].toInt()) {
keyEvent.key = params[0] val keyEvent = EmulateKey()
keyEvent.delay = delay keyEvent.key = params[0]
keyEvents.add(keyEvent) keyEvent.delay = delay
keyEvents.add(keyEvent)
}
}
else {
Log.i(TAG, "multi key event is invalid.")
} }
} else { } else {
val keyEvent = EmulateKey() val keyEvent = EmulateKey()
...@@ -240,7 +246,7 @@ object AdbUtil { ...@@ -240,7 +246,7 @@ object AdbUtil {
Log.i(TAG, "send key: $keyEvent") Log.i(TAG, "send key: $keyEvent")
val cmdKey = "input keyevent ${Constants.KEY_MAP[keyEvent.key]}" val cmdKey = "input keyevent ${Constants.KEY_MAP[keyEvent.key]}"
commands.add(cmdKey) commands.add(cmdKey)
if (keyEvent.key.toInt() > 0) if (keyEvent.delay.toInt() > 0)
commands.add("sleep ${keyEvent.delay}") commands.add("sleep ${keyEvent.delay}")
} }
...@@ -318,23 +324,27 @@ object AdbUtil { ...@@ -318,23 +324,27 @@ object AdbUtil {
} }
fun killTcpdump() { fun killTcpdump() {
val result = exeCmdEcho("killall", true) try {
val result = exeCmdEcho("killall", true)
if (result.status != -1)
exeCmdEcho("killall tcpdump", true) if (result.status != -1)
else { exeCmdEcho("killall tcpdump", true)
val psResult = exeCmdEcho("ps | grep tcpdump", true) else {
for (line in psResult.successLines) { val psResult = exeCmdEcho("ps | grep tcpdump", true)
val arr = line.split(' ') for (line in psResult.successLines) {
val items = ArrayList<String>() val arr = line.split(' ')
arr.forEach { val items = ArrayList<String>()
if (!it.isNullOrEmpty()) arr.forEach {
items.add(it) if (!it.isNullOrEmpty())
} items.add(it)
if (items.isNotEmpty()) { }
exeCmdEcho("kill " + items[1], true) if (items.isNotEmpty()) {
exeCmdEcho("kill " + items[1], true)
}
} }
} }
} catch (e: Exception) {
e.printStackTrace()
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment