Skip to content

Commit 1d38ef1

Browse files
committed
3.76
1 parent 9b2478c commit 1d38ef1

16 files changed

Lines changed: 281 additions & 103 deletions

File tree

CHANGELOG.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
3.76
2+
* 默认内置 shell 使用 bash
3+
* 修复断网后远程桌面触摸无法使用的问题
4+
* 修复 OpenVPN 僵尸进程的问题
5+
* startmitm.py 支持指定 adb 串号
6+
* 支持 magisk 自启动
7+
18
3.0.59
29
* 所有界面提示使用英文
310
* 修复一个 web 接口未认证的问题

README.md

Lines changed: 121 additions & 73 deletions
Large diffs are not rendered by default.

lamda/__init__.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,4 @@
22
#
33
# Distributed under MIT license.
44
# See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5-
__version__ = "3.0"
6-
__build__ = 59
5+
__version__ = "3.76"

setup.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
setuptools.setup(
88
name = "lamda",
9-
version = "{}.{}".format(__version__, __build__),
9+
version = "{}".format(__version__),
1010
description = "Android reverse engineering & automation framework",
1111
url = "https://github.com/rev1si0n/lamda",
1212
author = "rev1si0n",
@@ -19,9 +19,9 @@
1919
],
2020
},
2121
install_requires= [
22-
"grpcio-tools>=1.35.0,<1.48.0",
23-
"grpc-interceptor>=0.13.0,<0.14.2",
24-
"grpcio>=1.35.0,<1.48.0",
22+
"grpcio-tools>=1.35.0,<1.49.0",
23+
"grpc-interceptor>=0.13.0,<0.15.0",
24+
"grpcio>=1.35.0,<1.49.0",
2525
"asn1crypto>=1.0.0,<2",
2626
],
2727
classifiers = [

tools/README.md

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@
44

55
开始之前,请确保已经启动设备上的 lamda 服务端。
66

7-
**注意**:部分命令文档可能具有时效性随时更新,为了避免版本问题,继续前请务必先在手机上安装最新版本的 lamda 以及其 Python 库和依赖库。所有使用到 adb 的脚本均 只支持一台手机通过 USB (adb) 连接电脑,请确保 `adb devices` 中只有一个设备。
8-
9-
部分功能需要安装 adb,如果要用到,请确保已安装 adb 且不要太过老旧。
7+
**注意**:部分命令文档可能具有时效性随时更新,为了避免版本问题,继续前请务必先在手机上安装最新版本的 lamda 以及其 Python 库和依赖库。部分功能需要使用 adb,请务必确保安装的 adb 是最新版本。
108

119
```bash
1210
# 如果没有安装,请 自行搜索 如何安装,这里提供的只是基础建议
@@ -81,6 +79,11 @@ test.pem # 用于加密客户端与服务端通信的证书
8179

8280
> 注:你有可能需要手动安装 pyOpenSSL 依赖库 `pip install pyOpenSSL`
8381
82+
83+
## id_rsa
84+
85+
lamda 内置 ssh 使用的默认 ssh 私钥,此与 `ssh.sh``scp.sh` 中硬编码的私钥相同。
86+
8487
## startmitm.py
8588

8689
启动中间人,这将会全自动的在设备上开启全局的中间人,你就可以截获应用的 http/s 流量,当然,也可以包括 DNS 请求(全局)。
@@ -127,6 +130,7 @@ python3 -u startmitm.py 192.168.1.2:com.some.package
127130
如果你想使用特定的DNS,或者一些情况下,你可能出现DNS解析错误/无法解析的情况(可能出现于一些原生的系统),可以这样做
128131

129132
```bash
133+
# 使用中国大陆 DNS
130134
python3 -u startmitm.py 192.168.1.2 --nameserver 114.114.114.114
131135
```
132136

@@ -140,21 +144,25 @@ python3 -u startmitm.py 192.168.1.2 -s http_flow_hook.py
140144
```
141145
即可。
142146

143-
手机与当前电脑不在同一网络下,但是你可以物理接触设备,你仍然可以进行中间人,但是**需要确保当前设备已通过USB接入**电脑且已ADB授权。
147+
手机与当前电脑不在同一网络下,但是你可以物理接触设备,你仍然可以进行中间人,但是**需要确保当前设备已通过USB 或者 `adb connect` 接入**电脑且已ADB授权。
144148

145149
```bash
150+
# localhost 代表使用 adb 设备
151+
# 当前仅连接了一台 adb 设备
146152
python3 -u startmitm.py localhost
153+
# 电脑连接了多台 adb 设备,你需要指定 adb serial
154+
# 这个 serial 请从命令 adb devices 的输出中寻找
155+
python3 -u startmitm.py localhost --serial bfde362
147156
```
148157
即可。
149158

150159
手机与当前电脑不在同一网络下,也无法物理接触设备,但是只要你可以访问 lamda 的端口,你也可以进行中间人。
151160
**这种情况通常为**:你使用了内置 frp 服务转发了 lamda 到远程服务器,或者你自行通过某种方式转发了 lamda 的 65000 端口到某个地方(例如 SSH、路由器端口转发等-**注意安全性问题**),这种情况下你和 lamda 之间
152-
**仅有这一个端口**可以直接交流,其他端口是无法访问的。这种情况下,手机无法访问到本机的任何端口,本机也只能访问到手机的 lamda 端口,这样需要通过以下方式来进行。(注意 OpenVPN 网络互通,并不属于这个情况)
161+
**仅有这一个端口**可以直接交流,其他端口是无法互相访问的。这种情况下,手机无法访问到本机的任何端口,本机也只能访问到手机的 lamda 端口(或者手机有公网IP,但本机在不互通的内网),这样需要通过以下方式来进行。(注意 OpenVPN 网络互通,并不属于这个情况)
153162

154163
这时,需要通过稍微繁琐的组合方式来进行,下面介绍如何操作。
155164

156-
首先,使用 `adb_pubkey.py` 或者自行调用接口将自身的 adb 公钥安装到设备上(请在本文档搜索),
157-
随后,确保当前电脑没有任何 USB ADB 设备连接(`adb devices` 显示无设备)。
165+
首先,使用 `adb_pubkey.py` 或者自行调用接口将自身的 adb 公钥安装到设备上(请在本文档搜索)。
158166

159167
现在执行以下命令
160168

@@ -169,7 +177,10 @@ adb connect x.x.x.x:65000
169177
最后,按照和上文 通过USB 一样的方法操作
170178
```bash
171179
# localhost 代表使用 adb 设备
180+
# 当前仅连接了一台 adb 设备
172181
python3 -u startmitm.py localhost
182+
# 电脑连接了多台 adb 设备,你需要指定 adb serial
183+
python3 -u startmitm.py localhost --serial x.x.x.x:65000
173184
```
174185

175186
即可。
@@ -333,6 +344,9 @@ print (data["result"])
333344
bash emu-install 192.168.1.2
334345
```
335346

347+
## magisk
348+
349+
lamda 的 magisk 模块构架
336350

337351
## 各种服务脚本 (Docker)
338352

tools/adb_pubkey.py

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,36 @@
11
#!/usr/bin/env python3
22
#encoding=utf-8
33
import os
4-
import sys
5-
import shutil
6-
from lamda.client import *
4+
import argparse
75

8-
cmd, host = sys.argv[1:]
6+
from os.path import isfile
7+
from lamda.client import *
98

109
certfile = os.environ.get("CERTIFICATE", None)
1110
port = int(os.environ.get("LAMDAPORT", 65000))
1211

13-
d = Device(host, port=port, certificate=certfile)
12+
android_path = os.path.join("~", ".android")
13+
abs_android_path = os.path.expanduser(android_path)
14+
f = "adbkey.pub"
15+
16+
argp = argparse.ArgumentParser()
1417

15-
shutil.which("adb") or exit("no adb")
18+
argp.add_argument("action", nargs=1)
19+
argp.add_argument("device", nargs=1)
1620

17-
os.popen("adb start-server").read()
21+
args = argp.parse_args()
1822

19-
android_path = os.path.join("~", ".android")
20-
abs_android_path = os.path.expanduser(android_path)
23+
d = Device(args.device[0], port=port,
24+
certificate=certfile)
25+
cmd = args.action[0]
2126

2227
os.chdir(abs_android_path)
2328

29+
# try generate pubkey
2430
pubkey = os.popen("adb pubkey adbkey").read()
25-
open("adbkey.pub", "w").write(pubkey)
31+
open("adbkey.lamda", "w").write(pubkey)
32+
33+
f = ("adbkey.lamda", f)[isfile(f)]
2634

27-
func = getattr(d, "%s_adb_pubkey" % cmd)
28-
r = func("adbkey.pub")
29-
print ("OK: %s" % r)
35+
call = getattr(d, "%s_adb_pubkey" % cmd)
36+
exit(not call(f))

tools/id_rsa

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIIEogIBAAKCAQEA4QHmY32OT+F+maERMn1cvBRuIOIXH9yOALG+GMCngtjRJzSR
3+
n09dInmXE+PjiAqNRWvknVEjFywv0v1v/H2qSRJKR/togPgySjiABhigqDHdirNd
4+
Dh63oN2e+d0yythoLzsQrH5BSVtw05Atpkr7bW4KdfMveWuddvDACnQ3mvCXq50X
5+
IK3cOlmHXwcJrX55BhEXxgHIqw0upf0A7DC3Afz5xjOA6+K/O2EzZIIJ+sWw7/Ko
6+
5+3m98Et0zwcxe20uNxzYf7JSMu3490YNckLiQcDrZVRUXNS70HO9HWCXKdjFJPi
7+
GgPtKUQNHjChwzSCQQGzqitXdwa60i9Sy1U09wIBIwKCAQAzbiYIHLLQbg5PAD5x
8+
8MS9Rn+SfNIV6UUHeRWCACZJyyh9/WMdGXRfpsNyQreqEQpZArfpcaGe5YdGK0zL
9+
/3dhKMCFe0sWKhofl+K/kJnAC2XWj2W6FaZQp69PDfz7KiZxMhJwkeMJc/yIIPR9
10+
x/70cOxyuz4NH+l6Rag8510qujhxn6lGc1+ZNHGeAYmUD7wFz9/QYDZU9C0YcylA
11+
2+Q5woU3L4b3y3JKqB6/dnsP9uF7R5KBR+qiqOwVm0nhvVU5uwbpQwTXeklopXyN
12+
rI/NeYcsDoEyb8NquVXX/GkOgY0FhqblGUR9kSdTLHq6VamelHc+dczZgMxcsq1c
13+
mnnLAoGBAP2FPssFpHJRhSr38Fq5A7mEjQeiPq2WgYV7kCpJT5F5OymcCCETIjEH
14+
4pTk5zCWUuIBx5LlzSa0XnQSYb0100ZzvDgfm1NPmqdkpPwkkbh2xyoHYTTPJ3WG
15+
TDur8Qyi83NteveszO1TCAGBTe3zN+2ov9qzl5Y7QHF94GVFDo4NAoGBAOM1Q8eG
16+
0KeqjutTz/UMtejoFpz0Hi1g32PfdQInHx8MDslYu3Fcpnos3xf59H7+mrRy0fUM
17+
hh27v7DiUvxUfhlojf0F3kDKeg9VZBslZF3vTCpFdKdFouZ2Cru3lCoaPSau69BC
18+
6HQw4P+RABrgxc6CeE9FUGEEMss+wTcRItITAoGBAO8ImkpkZ9mAD9gOV6X+5kEz
19+
1W2Y+USVOEqns9AZPGSW4AKpDvqdAvsHbzvtxAk9RtUXnumW118B1WYf9cEG3SUr
20+
SxBYUJ8B6ZaDdvxc/mwYOCBQGdK0sCz692t2OwvqGL1J95kQo/W0r8bnoT9wSqzg
21+
72fN5rI33azVxPHExJSPAoGAGfd1deOFj4E057HOn6muY8LAwXr8InF4nbMjULQD
22+
joUJARF0gfv1xNHtnFcUoMyj912UVoUWpE/4poBD/5SgsnJZXr7XkmBIdsfuLvz1
23+
hxQItF+1j3WsN5h2QVbPGsErj2RyuLcwgk66oN1fGQO+1cXEm1hg9SUNHorUQM7C
24+
JqMCgYEAofxXJ8dOWUaFIHmKLE7Y+0+i3D1yXVIyu/puuaQGbNFHxjcJ9ZdubhLN
25+
IyzJvngtM7mC90FtUETxvErMGdTzFeKtSKBZsJ8BiLCszRCEuJf5RX6uNrFUQ2pT
26+
PEmns088Gs4KUDwjTG0zQtj3pNc5zDynDMpFKp96spefqLJqw3s=
27+
-----END RSA PRIVATE KEY-----
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/sbin/sh
2+
source /data/adb/magisk/util_functions.sh
3+
4+
if [ ${MAGISK_VER_CODE} -lt 20400 ]; then
5+
abort "Please install Magisk v20.4 +"
6+
exit 1
7+
fi
8+
9+
if [ "${BOOTMODE}" != "true" ]; then
10+
abort "Must install from Magisk app"
11+
fi
12+
13+
OUTFD=$2
14+
ZIPFILE=$3
15+
install_module
16+
exit 0
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#MAGISK

tools/magisk/common/server/.keep

Whitespace-only changes.

0 commit comments

Comments
 (0)