diff --git a/README.md b/README.md index 48affa2e..a092a167 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,8 @@ * 如果任何单位或个人认为该项目的代码/APK可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关代码/APK。 +* 隐私声明:SmsForwarder 不会收集任何您的隐私数据!!!APP启动时发送版本信息发送到友盟统计;手动检查新版本时发送版本号用于检查新版本;除此之外,没有任何数据!!! + -------- ## 特点和准则: @@ -77,7 +79,7 @@ > ⚠ 该APP打开后会自动后台运行并在任务栏显示运行图标,请勿强杀,退出后请重新开启,并加入到系统白名单中,并允许后台运行 -> ⚠ 近期接收到部分用户反馈,`SmsForwarder`无法正确转发通知类短信,涉及 ROM 有华为 EMUI 和 小米 MIUI。这两个系统提供了验证类短信安全保护功能,导致验证码不能正常通过广播获得。以下是解决方案。 +> ⚠ 近期接收到部分用户反馈,`SmsForwarder`无法正确转发通知类短信(普通短信正常),涉及 ROM 有华为 EMUI、小米 MIUI、VIVO OriginOS、OPPO ColorOS等。国内厂商定制系统提供了验证类短信安全保护功能,导致验证码不能正常通过广播获得。以下是解决方案: > ⚠ 风险警示:转发验证码可能导致您的个人隐私、账户安全受到损害,如果您已经知晓该风险,请继续进行以下操作。 @@ -91,6 +93,10 @@ > 安全中心 > 授权管理 > `短信转发器` > 权限 > 勾选通知类短信 +> vivo 手机: + +> 信息 > 左上角3个点 > 设置 > 隐私保护 > 关闭验证码安全保护开关 + ### 发送方设置参考 #### 钉钉机器人 diff --git a/build.gradle b/build.gradle index 5fb76649..a6192aa4 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { repositories { google() - jcenter() + mavenCentral() maven { url "https://jitpack.io" } maven { url 'https://repo1.maven.org/maven2/' } } @@ -16,7 +16,7 @@ buildscript { allprojects { repositories { google() - jcenter() + mavenCentral() maven { url "https://jitpack.io" } maven { url 'https://repo1.maven.org/maven2/' } } diff --git a/doc/POST_WEB.md b/doc/POST_WEB.md index 69ba1fd8..52003874 100644 --- a/doc/POST_WEB.md +++ b/doc/POST_WEB.md @@ -3,8 +3,8 @@ > ⚠ 有一个已经实现好的站点[消息通知](https://msg.allmything.com) ### 请求体如下 -> post form -参数: + +> post form 参数: | key | 类型 | 说明 | | ---- | ---- | ---- | @@ -17,19 +17,21 @@ * sign部分参考借鉴了[阿里钉钉群机器人的sign生成](https://developers.dingtalk.com/document/app/custom-robot-access) ### sign校验规则 -把timestamp+"\n"+密钥当做签名字符串,使用HmacSHA256算法计算签名,然后进行Base64 encode,最后再把签名参数再进行urlEncode,得到最终的签名(需要使用UTF-8字符集) -| 参数 | 说明 | -| ---- | ---- | -| timestamp | 当前时间戳,单位是毫秒,(建议验证与请求调用时间误差不能超过1小时,防止重放欺骗) | -| secret | 密钥,web通知设置页面,secret | + +把timestamp+"\n"+密钥当做签名字符串,使用HmacSHA256算法计算签名,然后进行Base64 encode,最后再把签名参数再进行urlEncode,得到最终的签名(需要使用UTF-8字符集) | 参数 | 说明 | | ---- | ---- | | timestamp | 当前时间戳,单位是毫秒,(建议验证与请求调用时间误差不能超过1小时,防止重放欺骗) | | secret | 密钥,web通知设置页面,secret | 示例: + ```Java //java + import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; + import org.apache.commons.codec.binary.Base64; + import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; public class Test { public static void main(String[] args) throws Exception { @@ -38,9 +40,9 @@ public class Test { String stringToSign = timestamp + "\n" + secret; Mac mac = Mac.getInstance("HmacSHA256"); - mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256")); - byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8")); - String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)),"UTF-8"); + mac.init(new SecretKeySpec(secret.getBytes(StandardCharsets.UTF_8), "HmacSHA256")); + byte[] signData = mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8)); + String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8"); System.out.println(sign); } @@ -67,6 +69,7 @@ print(timestamp) print(sign) ``` + ```python #python 2.7 import time