Commit 1b9e7fae authored by liuyang's avatar liuyang

APK抓包>从频道1开始依次抓取, 修复抓包等待时间停止任务,重新开始后之前的任务仍在执行问题

#BYLSERVER-1693
parent 95d297ad
...@@ -89,7 +89,9 @@ class MainActivity : AppCompatActivity(), IAppBaseCallback { ...@@ -89,7 +89,9 @@ class MainActivity : AppCompatActivity(), IAppBaseCallback {
private fun start() { private fun start() {
startBtn.isEnabled = false startBtn.isEnabled = false
startBtn.isFocusable = false
stopBtn.isEnabled = true stopBtn.isEnabled = true
stopBtn.isFocusable = true
if (TaskManager.instance.tasks.size > 0) { if (TaskManager.instance.tasks.size > 0) {
startRobot() startRobot()
} }
...@@ -102,7 +104,9 @@ class MainActivity : AppCompatActivity(), IAppBaseCallback { ...@@ -102,7 +104,9 @@ class MainActivity : AppCompatActivity(), IAppBaseCallback {
private fun stop() { private fun stop() {
stopRobot() stopRobot()
stopBtn.isEnabled = false stopBtn.isEnabled = false
stopBtn.isFocusable = false
startBtn.isEnabled = true startBtn.isEnabled = true
startBtn.isFocusable = true
} }
private fun resetStartBtn() { private fun resetStartBtn() {
...@@ -196,7 +200,6 @@ class MainActivity : AppCompatActivity(), IAppBaseCallback { ...@@ -196,7 +200,6 @@ class MainActivity : AppCompatActivity(), IAppBaseCallback {
if (TaskManager.instance.tasks.size > 0) { if (TaskManager.instance.tasks.size > 0) {
startRobot() startRobot()
startSet = false startSet = false
startBtn.text = "停止"
refreshBtn.isEnabled = false refreshBtn.isEnabled = false
} }
else { else {
......
...@@ -20,7 +20,9 @@ import java.text.SimpleDateFormat ...@@ -20,7 +20,9 @@ import java.text.SimpleDateFormat
import java.util.* import java.util.*
import kotlin.collections.ArrayList import kotlin.collections.ArrayList
/**
* 任务类
*/
class Task : Thread, IAppBaseCallback { class Task : Thread, IAppBaseCallback {
enum class State { enum class State {
...@@ -61,6 +63,9 @@ class Task : Thread, IAppBaseCallback { ...@@ -61,6 +63,9 @@ class Task : Thread, IAppBaseCallback {
return true return true
} }
/**
* 从apk配置生成信息
*/
fun from(apkInfo: ApkInfo) { fun from(apkInfo: ApkInfo) {
this.apkInfo = apkInfo this.apkInfo = apkInfo
// this.imagePath = this.context.cacheDir.absolutePath + "/" + apkInfo.packageName // this.imagePath = this.context.cacheDir.absolutePath + "/" + apkInfo.packageName
...@@ -85,6 +90,9 @@ class Task : Thread, IAppBaseCallback { ...@@ -85,6 +90,9 @@ class Task : Thread, IAppBaseCallback {
execute() execute()
} }
/**
* 执行任务
*/
private fun execute() { private fun execute() {
//如果之前的上传任务还在执行,进行取消 //如果之前的上传任务还在执行,进行取消
if (!uploadId.isNullOrEmpty()) { if (!uploadId.isNullOrEmpty()) {
...@@ -130,6 +138,9 @@ class Task : Thread, IAppBaseCallback { ...@@ -130,6 +138,9 @@ class Task : Thread, IAppBaseCallback {
report() report()
} }
/**
* 重置状态
*/
fun reset() { fun reset() {
this.status = State.IDLE this.status = State.IDLE
this.channelIndex = 0 this.channelIndex = 0
...@@ -165,6 +176,9 @@ class Task : Thread, IAppBaseCallback { ...@@ -165,6 +176,9 @@ class Task : Thread, IAppBaseCallback {
} }
} }
/**
* 启动app
*/
private fun launchApp(reset: Boolean = false) { private fun launchApp(reset: Boolean = false) {
Log.i(TAG, "launchApp") Log.i(TAG, "launchApp")
if (reset) { if (reset) {
...@@ -186,6 +200,10 @@ class Task : Thread, IAppBaseCallback { ...@@ -186,6 +200,10 @@ class Task : Thread, IAppBaseCallback {
} }
} }
/**
* 频道轮询
* @param index 频道序号
*/
private fun processChannels(index: Int): Boolean { private fun processChannels(index: Int): Boolean {
Log.i(TAG, "processChannels") Log.i(TAG, "processChannels")
step() step()
...@@ -200,7 +218,7 @@ class Task : Thread, IAppBaseCallback { ...@@ -200,7 +218,7 @@ class Task : Thread, IAppBaseCallback {
AdbUtil.sendMultiKey(this.apkInfo.channelKeyEvent) AdbUtil.sendMultiKey(this.apkInfo.channelKeyEvent)
if (!AppUtil.isAppForeground(context, this.apkInfo.packageName)) { if (!AppUtil.isAppForeground(context, this.apkInfo.packageName)) {
Log.i(TAG, "targe app crashed?") Log.i(TAG, "target app crashed?")
return false return false
} }
...@@ -210,6 +228,10 @@ class Task : Thread, IAppBaseCallback { ...@@ -210,6 +228,10 @@ class Task : Thread, IAppBaseCallback {
return true return true
} }
/**
* 单个频道处理
* 分析抓包数据+屏幕截图
*/
private fun step() { private fun step() {
Log.i(TAG, "step channel ${this.channelIndex}") Log.i(TAG, "step channel ${this.channelIndex}")
...@@ -261,6 +283,9 @@ class Task : Thread, IAppBaseCallback { ...@@ -261,6 +283,9 @@ class Task : Thread, IAppBaseCallback {
} }
} }
/**
* 退出抓包
*/
private fun quitCapture() { private fun quitCapture() {
proc?.destroy() proc?.destroy()
AdbUtil.killTcpdump() AdbUtil.killTcpdump()
...@@ -365,12 +390,16 @@ class Task : Thread, IAppBaseCallback { ...@@ -365,12 +390,16 @@ class Task : Thread, IAppBaseCallback {
Log.i(TAG, "upload errorCount: $errorCount") Log.i(TAG, "upload errorCount: $errorCount")
} }
/**
* ftp 上传回调监听
*/
private fun uploadImageCallback(): UploadStatusDelegate { private fun uploadImageCallback(): UploadStatusDelegate {
val totalUpload = this.uploadImages.size val totalUpload = this.uploadImages.size
Log.i(TAG, "total upload count : $totalUpload") Log.i(TAG, "total upload count : $totalUpload")
return object : UploadStatusDelegate { return object : UploadStatusDelegate {
override fun onCancelled(context: Context?, uploadInfo: UploadInfo?) { override fun onCancelled(context: Context?, uploadInfo: UploadInfo?) {
} }
override fun onProgress(context: Context?, uploadInfo: UploadInfo?) { override fun onProgress(context: Context?, uploadInfo: UploadInfo?) {
...@@ -389,6 +418,7 @@ class Task : Thread, IAppBaseCallback { ...@@ -389,6 +418,7 @@ class Task : Thread, IAppBaseCallback {
} }
} }
//通过ftp上传图片到服务器
private fun uploadImage() { private fun uploadImage() {
try { try {
...@@ -415,7 +445,11 @@ class Task : Thread, IAppBaseCallback { ...@@ -415,7 +445,11 @@ class Task : Thread, IAppBaseCallback {
} }
} }
/**
* 先上报数据,截图上传继续在后台进行
*/
private fun report() { private fun report() {
Log.i(TAG, "report....")
val postJson = JSONObject() val postJson = JSONObject()
val reportArray = JSONArray() val reportArray = JSONArray()
reportArray.put(this.reportJson) reportArray.put(this.reportJson)
...@@ -424,23 +458,32 @@ class Task : Thread, IAppBaseCallback { ...@@ -424,23 +458,32 @@ class Task : Thread, IAppBaseCallback {
} }
override fun onProtocolFailed(p0: IProtocol?) { override fun onProtocolFailed(p0: IProtocol?) {
Log.i(TAG, "onProtocolFailed....")
this.status = State.REPORT_FAILED this.status = State.REPORT_FAILED
finish(false) finish(false)
} }
override fun onHttpFailed(p0: IProtocol?) { override fun onHttpFailed(p0: IProtocol?) {
Log.i(TAG, "onHttpFailed....")
this.status = State.REPORT_FAILED this.status = State.REPORT_FAILED
finish(false) finish(false)
} }
override fun onProtocolSucceed(p0: IProtocol?) { override fun onProtocolSucceed(p0: IProtocol?) {
Log.i(TAG, "onProtocolSucceed....")
this.status = State.COMPLETE this.status = State.COMPLETE
finish(true) finish(true)
} }
var taskListener: OnTaskListener? = null var taskListener: OnTaskListener? = null
/**
* 任务状态
*/
interface OnTaskListener { interface OnTaskListener {
/**
* @param result true 成功完成
*/
fun onComplete(result: Boolean) fun onComplete(result: Boolean)
} }
......
...@@ -5,6 +5,9 @@ import com.duolebo.blyrobot.data.Task ...@@ -5,6 +5,9 @@ import com.duolebo.blyrobot.data.Task
import java.util.* import java.util.*
import kotlin.collections.ArrayList import kotlin.collections.ArrayList
/**
* 任务管理类
*/
class TaskManager { class TaskManager {
companion object { companion object {
...@@ -20,6 +23,10 @@ class TaskManager { ...@@ -20,6 +23,10 @@ class TaskManager {
private var currentTask: Task? = null private var currentTask: Task? = null
private var scheduleTime: Timer? = null private var scheduleTime: Timer? = null
/**
* 添加任务
* @param task
*/
fun add(task: Task) { fun add(task: Task) {
for (existTask in tasks) { for (existTask in tasks) {
Log.i(TAG, "exist task app: ${existTask.apkInfo.packageName}") Log.i(TAG, "exist task app: ${existTask.apkInfo.packageName}")
......
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