Skip to content
This repository has been archived by the owner on Nov 2, 2023. It is now read-only.

无法登录,提示 当前QQ版本过低/环境异常 #507

Open
TheresaQWQ opened this issue Mar 2, 2023 · 48 comments
Open

无法登录,提示 当前QQ版本过低/环境异常 #507

TheresaQWQ opened this issue Mar 2, 2023 · 48 comments

Comments

@TheresaQWQ
Copy link

TheresaQWQ commented Mar 2, 2023

Node.js Version

v19.2.0

Package(oicq) Version

oicq@2.3.1

Login Protocol

Watch

Bug Description (最好截图说明,你的文字描述可能无法准确传达信息)

image

如图

尝试过了其他issue中提出的所有方案,包括 修改 device.js,使用gocq的设备文件,使用其他协议登录,开启设备锁等,均无法登录

还有另外一个错误提示是环境异常

网络环境是电信家庭宽带,理论上来说应该不会是这个的问题?

Log Details (控制台日志,请提供包含前后一段时间内的)

yarn run v1.22.19
$ ts-node app.ts --dev
[2023-03-02T13:12:11.659] [MARK] [Watch:2300691416] - ----------
[2023-03-02T13:12:11.661] [MARK] [Watch:2300691416] - Package Version: oicq@2.3.1 (Released on 2022/6/21)
[2023-03-02T13:12:11.661] [MARK] [Watch:2300691416] - View Changelogs:https://github.com/takayama-lily/oicq/releases
[2023-03-02T13:12:11.662] [MARK] [Watch:2300691416] - ----------
Use async .hasTable to check if table exists and then use plain .createTable. Since .createTableIfNotExists actually just generates plain "CREATE
TABLE IF NOT EXIST..." query it will not work correctly if there are any alter table queries generated for columns afterwards. To not break old migrations this function is left untouched for now, but it should not be used when writing new code and it is removed from documentation.
Use async .hasTable to check if table exists and then use plain .createTable. Since .createTableIfNotExists actually just generates plain "CREATE
TABLE IF NOT EXIST..." query it will not work correctly if there are any alter table queries generated for columns afterwards. To not break old migrations this function is left untouched for now, but it should not be used when writing new code and it is removed from documentation.
[2023-03-02T13:12:24.861] [INFO] [Watch:2300691416] - Webhook is listening on port 13999
[2023-03-02T13:12:24.922] [MARK] [Watch:2300691416] - 180.109.192.45:8080 connected
[2023-03-02T13:12:25.164] [MARK] [Watch:2300691416] - 收到滑动验证码,请访问以下地址完成滑动,并从网络响应中取出ticket输入:https://ssl.captcha.qq.com/template/wireless_mqq_captcha.html?style=simple&aid=16&uin=2300691416&sid=4338607713048080442&cap_cd=WnD65BKguwNKlP28IxNGyKz3luV26_txlKewaFvP2FDyUmRJHz61sg**&clientype=1&apptype=2
输入ticket:
t03I4Z0kNaTXY9nS5v55NSRRSLtJbEPlrOPsWL20xkuu1qwCvWxIzEsl0DgiF9nR4RJY2fjuxCzZSapc7n66wcKNuK6hGYrgp8mho9wUTx6_wvcYwtB_uwJpy1ONpDmgQrLxdkJI0G_tAY*
[2023-03-02T13:12:47.661] [ERROR] [Watch:2300691416] - [温馨提示]当前QQ版本过低,请升级至最新版本后再登录。点击进入下载页面

@TheresaQWQ TheresaQWQ changed the title 当前QQ版本过低 无法登录,提示 当前QQ版本过低/环境异常 Mar 2, 2023
@PullAndRun
Copy link

我也是同样不能登录,已经登录的qq还可以用,一旦重新登陆,就卡在滑动验证码。验证码输入之后提示qq版本过低。感觉qq提升风控等级或者更改协议了。

@Fanrito
Copy link

Fanrito commented Mar 3, 2023

我也是同样的问题

@PullAndRun
Copy link

我发现,qq的pc客户端出新版了。原版登录的时候要滑动验证码登录,新版直接就能登录。可能是协议更新了?也可能是最近在开会,风控等级提升了。

@TheresaQWQ
Copy link
Author

咱这边暂时解决了,更换了 https://github.com/icqqjs/icqq ,现在没问题了,以及测试了一下gocqhttp也是可以正常登录的

顺带一提,咱这边不开启设备锁依旧登不上,开启之后就好了,可能是我账号风控太严格了?

@PullAndRun
Copy link

咱这边暂时解决了,更换了 https://github.com/icqqjs/icqq ,现在没问题了,以及测试了一下gocqhttp也是可以正常登录的

顺带一提,咱这边不开启设备锁依旧登不上,开启之后就好了,可能是我账号风控太严格了?

icqq4天前更新了登录协议。oicq没更新。。

@Umegiri
Copy link

Umegiri commented Mar 4, 2023

QQ被冻结了解冻之后又给我冻上了,我压根都没登陆也能给我再冻起来

@348251248
Copy link

用icqq怎么只能扫码啊,而且扫完没反应。。oicq换号都不能用了

@FlowPeakFish
Copy link

现在只能手表扫码登录,而且每次扫码后,下次登录还要重新扫码。

@amakerlife
Copy link

同样的问题,与之前 #451 的提示不同,之前的解决方法均无效

@348251248
Copy link

手表登录,今天也提示版本过低了

@lc-cn
Copy link
Contributor

lc-cn commented Mar 6, 2023

用icqq怎么只能扫码啊,而且扫完没反应。。oicq换号都不能用了

icqq的密码登录记得查看wiki,和oicq的不一样

@lc-cn
Copy link
Contributor

lc-cn commented Mar 6, 2023

表示换了icqq也用不了,小小的尴尬。。。插眼一个解决方案

是不知道怎么登录吧

@PullAndRun
Copy link

PullAndRun commented Mar 6, 2023

我登录成功了。
这里先感谢icqq开发者的神力和辛勤劳动。
我把icqq的commit的t544的前两个文件的修改抄袭到了oicq同文件里面
然后通过密码登录成功了。无论以前怎样不能登录的账号,都能登录成功。
之后我用icqq来生成登录token,粘贴到oicq里面,改一下文件名就能用
这样做的原因是我懒得改我的业务逻辑,等哪天不懒的时候,我就把项目迁移到icqq。
感谢icqq的大神。

@FlowPeakFish
Copy link

FlowPeakFish commented Mar 6, 2023

我登录成功了。 这里先感谢icqq开发者的神力和辛勤劳动。 我把icqq的commit的t544的前两个文件的修改抄袭到了oicq同文件里面 然后通过密码登录成功了。无论以前怎样不能登录的账号,都能登录成功。 之后我用icqq来生成登录token,粘贴到oicq里面,改一下文件名就能用 这样做的原因是我懒得改我的业务逻辑,等哪天不懒的时候,我就把项目迁移到icqq。 感谢icqq的大神。

非常感谢你的方案,和icqq的帮助。
这是我的修改文件和内容,希望对大家有所帮助。
文件路径:node_modules/oicq/lib/core/device.js
修改内容:主要是修改了generateShortDevice函数、mobile对象等Platform的一些参数,具体参考:
https://github.com/icqqjs/icqq/blob/main/lib/core/device.ts
觉得麻烦可以直接将以下内容替换。
device.js.zip
当然,这只是一种临时解决方案,重新npm i后,就需要重新修改,我不确定这是否是偶然情况,如果有通过这种方案,成功登录的,可以反馈一下🧐
登录成功截图:
image

@lc-cn
Copy link
Contributor

lc-cn commented Mar 6, 2023

我登录成功了。 这里先感谢icqq开发者的神力和辛勤劳动。 我把icqq的commit的t544的前两个文件的修改抄袭到了oicq同文件里面 然后通过密码登录成功了。无论以前怎样不能登录的账号,都能登录成功。 之后我用icqq来生成登录token,粘贴到oicq里面,改一下文件名就能用 这样做的原因是我懒得改我的业务逻辑,等哪天不懒的时候,我就把项目迁移到icqq。 感谢icqq的大神。

来自icqq的维护者之一:求个star

@PullAndRun
Copy link

我登录成功了。 这里先感谢icqq开发者的神力和辛勤劳动。 我把icqq的commit的t544的前两个文件的修改抄袭到了oicq同文件里面 然后通过密码登录成功了。无论以前怎样不能登录的账号,都能登录成功。 之后我用icqq来生成登录token,粘贴到oicq里面,改一下文件名就能用 这样做的原因是我懒得改我的业务逻辑,等哪天不懒的时候,我就把项目迁移到icqq。 感谢icqq的大神。

来自icqq的开发者:求个star

大神晚上好!已经点star。感觉一个star不太够,如果可以的话,我想点至少100个star。

@Clarlotte
Copy link

用icqq怎么只能扫码啊,而且扫完没反应。。oicq换号都不能用了

icqq的密码登录记得查看wiki,和oicq的不一样

你好,我看了icqq的wiki,账号密码都填写了,登陆时还是扫码登陆,具体怎么操作,能说明一下吗

@lc-cn
Copy link
Contributor

lc-cn commented Mar 6, 2023

用icqq怎么只能扫码啊,而且扫完没反应。。oicq换号都不能用了

icqq的密码登录记得查看wiki,和oicq的不一样

你好,我看了icqq的wiki,账号密码都填写了,登陆时还是扫码登陆,具体怎么操作,能说明一下吗

icqq只是解决了大多数账号登录问题,但依然有极少数账号无法登录,这个得慢慢调整

@lc-cn
Copy link
Contributor

lc-cn commented Mar 6, 2023

用icqq怎么只能扫码啊,而且扫完没反应。。oicq换号都不能用了

icqq的密码登录记得查看wiki,和oicq的不一样

你好,我看了icqq的wiki,账号密码都填写了,登陆时还是扫码登陆,具体怎么操作,能说明一下吗

或者你加icqq群,我给你看看

@Clarlotte
Copy link

用icqq怎么只能扫码啊,而且扫完没反应。。oicq换号都不能用了

icqq的密码登录记得查看wiki,和oicq的不一样

你好,我看了icqq的wiki,账号密码都填写了,登陆时还是扫码登陆,具体怎么操作,能说明一下吗

或者你加icqq群,我给你看看

群在哪,没找到

@lc-cn
Copy link
Contributor

lc-cn commented Mar 6, 2023

用icqq怎么只能扫码啊,而且扫完没反应。。oicq换号都不能用了

icqq的密码登录记得查看wiki,和oicq的不一样

你好,我看了icqq的wiki,账号密码都填写了,登陆时还是扫码登陆,具体怎么操作,能说明一下吗

或者你加icqq群,我给你看看

群在哪,没找到

860669870

@Clarlotte
Copy link

用icqq怎么只能扫码啊,而且扫完没反应。。oicq换号都不能用了

icqq的密码登录记得查看wiki,和oicq的不一样

你好,我看了icqq的wiki,账号密码都填写了,登陆时还是扫码登陆,具体怎么操作,能说明一下吗

或者你加icqq群,我给你看看

群在哪,没找到

860669870

没搜到,设置了吧

@lc-cn
Copy link
Contributor

lc-cn commented Mar 6, 2023

icqq README.md最底下有链接

@lc-cn
Copy link
Contributor

lc-cn commented Mar 6, 2023

拦截内鬼,从我做起

@348251248
Copy link

得麻烦可以直接将以下内容替换。

感谢大佬提供的device.js,完美解决了我的登录问题。目前看下来属于侵入性最小的改动了。 临时方案等oicq的更新把 :)

@bincooo
Copy link

bincooo commented Mar 7, 2023

用icqq怎么只能扫码啊,而且扫完没反应。。oicq换号都不能用了

icqq的密码登录记得查看wiki,和oicq的不一样

你好,我看了icqq的wiki,账号密码都填写了,登陆时还是扫码登陆,具体怎么操作,能说明一下吗

icqq只是解决了大多数账号登录问题,但依然有极少数账号无法登录,这个得慢慢调整

唉,不知到oicq的作者还管不管。貌似很久没更了

@llllin2333
Copy link

我登录成功了。 这里先感谢icqq开发者的神力和辛勤劳动。 我把icqq的commit的t544的前两个文件的修改抄袭到了oicq同文件里面 然后通过密码登录成功了。无论以前怎样不能登录的账号,都能登录成功。 之后我用icqq来生成登录token,粘贴到oicq里面,改一下文件名就能用 这样做的原因是我懒得改我的业务逻辑,等哪天不懒的时候,我就把项目迁移到icqq。 感谢icqq的大神。

非常感谢你的方案,和icqq的帮助。 这是我的修改文件和内容,希望对大家有所帮助。 文件路径:node_modules/oicq/lib/core/device.js 修改内容:主要是修改了generateShortDevice函数、mobile对象等Platform的一些参数,具体参考: https://github.com/icqqjs/icqq/blob/main/lib/core/device.ts 觉得麻烦可以直接将以下内容替换。 device.js.zip 当然,这只是一种临时解决方案,重新npm i后,就需要重新修改,我不确定这是否是偶然情况,如果有通过这种方案,成功登录的,可以反馈一下🧐 登录成功截图: image

非常感谢!

@B1ackSand
Copy link

我登录成功了。 这里先感谢icqq开发者的神力和辛勤劳动。 我把icqq的commit的t544的前两个文件的修改抄袭到了oicq同文件里面 然后通过密码登录成功了。无论以前怎样不能登录的账号,都能登录成功。 之后我用icqq来生成登录token,粘贴到oicq里面,改一下文件名就能用 这样做的原因是我懒得改我的业务逻辑,等哪天不懒的时候,我就把项目迁移到icqq。 感谢icqq的大神。

非常感谢你的方案,和icqq的帮助。 这是我的修改文件和内容,希望对大家有所帮助。 文件路径:node_modules/oicq/lib/core/device.js 修改内容:主要是修改了generateShortDevice函数、mobile对象等Platform的一些参数,具体参考: https://github.com/icqqjs/icqq/blob/main/lib/core/device.ts 觉得麻烦可以直接将以下内容替换。 device.js.zip 当然,这只是一种临时解决方案,重新npm i后,就需要重新修改,我不确定这是否是偶然情况,如果有通过这种方案,成功登录的,可以反馈一下🧐 登录成功截图: image

非常感谢分享!已经重新登录成功了。
另:记得删除当前账号自动生成的device-xxx.json,否则会继续沿用之前的设备和版本信息。

@MuYuehe
Copy link

MuYuehe commented Mar 9, 2023

非常感谢,这个方法确实很不错,而且我使用docker来运行更加方便,可以把容器中node_modules/oicq/lib/core复制到主机中,然后再映射到容器中,这样也不用每次都配置了,谢谢

@dmlgzs
Copy link
Contributor

dmlgzs commented Mar 9, 2023

大神晚上好!已经点star。感觉一个star不太够,如果可以的话,我想点至少100个star。

也给 Icalingua++ 和其对应的协议库分叉点个 star 罢,icqq 登录流程相关的代码是从这个上面移植的

@KafuuEriri
Copy link

KafuuEriri commented Mar 14, 2023

我登录成功了。 这里先感谢icqq开发者的神力和辛勤劳动。 我把icqq的commit的t544的前两个文件的修改抄袭到了oicq同文件里面 然后通过密码登录成功了。无论以前怎样不能登录的账号,都能登录成功。 之后我用icqq来生成登录token,粘贴到oicq里面,改一下文件名就能用 这样做的原因是我懒得改我的业务逻辑,等哪天不懒的时候,我就把项目迁移到icqq。 感谢icqq的大神。

非常感谢你的方案,和icqq的帮助。 这是我的修改文件和内容,希望对大家有所帮助。 文件路径:node_modules/oicq/lib/core/device.js 修改内容:主要是修改了generateShortDevice函数、mobile对象等Platform的一些参数,具体参考: https://github.com/icqqjs/icqq/blob/main/lib/core/device.ts 觉得麻烦可以直接将以下内容替换。 device.js.zip 当然,这只是一种临时解决方案,重新npm i后,就需要重新修改,我不确定这是否是偶然情况,如果有通过这种方案,成功登录的,可以反馈一下🧐 登录成功截图: image

感谢提供的修复,解决了登录问题

@abandon-jw3
Copy link

ICQQ开发者感谢成功了了这里开发者的神力神力和辛勤劳动劳动我我把我我我我我我我我我我我账号,都可以登录成功。 其中我用icqq来生成登录token,粘贴到oicq里面,改一下文件名就可以使用这样的原因是我懒得改我的业务逼我,恶心递给我就把项目迁移到icqq。谢谢icqq的大神。

来自icqq的维护者之一:求个星

太感谢了 这解决了大问题,,先点个星星以表敬意

@348251248
Copy link

icqq好像又版本过低了,各位有类似的问题吗?

@yinque
Copy link

yinque commented Mar 16, 2023

icqq好像又版本过低了,各位有类似的问题吗?

+1

@crossgg
Copy link

crossgg commented Mar 17, 2023

密码登录代码放在哪里呀 不指导怎么用

@crossgg
Copy link

crossgg commented Mar 17, 2023

用icqq怎么只能扫码啊,而且扫完没反应。。oicq换号都不能用了

icqq的密码登录记得查看wiki,和oicq的不一样

不知道怎么登录,代码不知道放在那里

@FlowPeakFish
Copy link

FlowPeakFish commented Mar 17, 2023

image
今天晚上又报错误,无法进行登录。
研究了一下icqq,直接复制js已无法解决,那就不修复oicq了。
直接将oicq直接替换为icqq。

  1. 卸载oicq并安装icqq
npm uninstall oicq
npm install icqq
  1. 编辑登录的代码 lib/bot.js,主要将:
await bot.login(cfg.pwd)

修改为:

await bot.login(cfg.qq, cfg.pwd)
  1. 重新登陆,ticket验证,手机验证码,成功登录,成功登录截图:
    image

希望之后不要出新变动,感谢 @IC-CN 的及时更新,大家可以给 icqq 个Star:
https://github.com/icqqjs/icqq

@348251248
Copy link

icqq版本过低只要删掉设备相关信息就行啦

rm -rf data

@sxy1998123
Copy link

image 今天晚上又报错误,无法进行登录。 研究了一下icqq,直接复制js已无法解决,那就不修复oicq了。 直接将oicq直接替换为icqq。

  1. 卸载oicq并安装icqq
npm uninstall oicq
npm install icqq
  1. 编辑登录的代码 lib/bot.js,主要将:
await bot.login(cfg.pwd)

修改为:

await bot.login(cfg.qq, cfg.pwd)
  1. 重新登陆,ticket验证,手机验证码,成功登录,成功登录截图:
    image

希望之后不要出新变动,感谢 @IC-CN 的及时更新,大家可以给 icqq 个Star: https://github.com/icqqjs/icqq

今天我使用了icqq也仍然无法登陆,版本是0.0.32
image
用的是最简单的模板程序,不知道你那里可以正常登陆吗?

@firstmeet1108
Copy link

图片今天晚上又报错,无法登录。研究了下icqq,直接复制js已无法解决,那就不修改oicq了。直接将oicq直接接为icqq。

  1. 载oicq并安装icqq
npm uninstall oicq
npm install icqq
  1. 编辑登录的代码lib/bot.js,主要将:
await bot.login(cfg.pwd)

修改为:

await bot.login(cfg.qq, cfg.pwd)
  1. 重新登陆,票证,手机验证码,成功登录,成功登录截图:
    图片

希望之后不要出现新变化,谢谢@IC-CN的时候更新,大家可以给icqq一个Star:https://github.com/icqqjs/icqq

今天我用了icqq也仍然无法登陆,版本是0.0.32 用的是最简单的模板程序,不知道你那里可以正常登陆吗? 图片

+1

@crossgg
Copy link

crossgg commented Mar 20, 2023

搞不定,改成:go-cqhttp了 使用正常

@Innei
Copy link

Innei commented Mar 21, 2023

patch package:

diff --git a/lib/core/device.js b/lib/core/device.js
index ffadc63..57da54d 100644
--- a/lib/core/device.js
+++ b/lib/core/device.js
@@ -34,7 +34,7 @@ function generateImei(uin) {
     return imei + calcSP(imei);
 }
 /** 生成短设备信息 */
-function generateShortDevice(uin) {
+function generateShortDeviceDeprecated(uin) {
     const hash = (0, constants_1.md5)(String(uin));
     const hex = hash.toString("hex");
     return {
@@ -56,6 +56,45 @@ function generateShortDevice(uin) {
         "--end--": "修改后可能需要重新验证设备",
     };
 }
+/** 生成随机设备信息 */
+function generateShortDevice(uin) {
+    function randomString(length) {
+        const pool = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+        let result = "";
+
+        for (let i = 0; i < length; i++) {
+            result += pool.charAt(Math.floor(Math.random() * pool.length));
+        }
+
+        return result;
+    }
+
+    function randomInt(boundary) {
+      return Math.floor(Math.random() * boundary);
+    }
+
+    return {
+        "--begin--": "该设备由账号作为seed固定生成,账号不变则永远相同",
+        "--notice--": "The code that generated this file was patched by Adachi-BOT",
+        product: `ILPP-${randomString(5).toUpperCase()}`,
+        device: `${randomString(5).toUpperCase()}`,
+        board: `${randomString(5).toUpperCase()}`,
+        brand: `${randomString(4).toUpperCase()}`,
+        model: `ILPP ${randomString(4).toUpperCase()}`,
+        wifi_ssid: `HUAWEI-${randomString(7)}`,
+        bootloader: "U-boot",
+        android_id: `IL.${randomInt(10000000)}.${randomInt(10000)}`,
+        boot_id: `${randomString(8)}-${randomString(4)}-${randomString(4)}-${randomString(4)}-${randomString(12)}`,
+        proc_version: `Linux version 5.10.101-android12-${randomString(8)}`,
+        mac_address: `2D:${randomString(2).toUpperCase()}:${randomString(2).toUpperCase()}:${randomString(
+            2
+        ).toUpperCase()}:${randomString(2).toUpperCase()}:${randomString(2).toUpperCase()}`,
+        ip_address: `192.168.${randomInt(255)}.${randomInt(255)}`,
+        imei: `86${randomInt(10000000000000)}`,
+        incremental: `${randomString(10).toUpperCase()}`,
+        "--end--": "修改后可能需要重新验证设备。",
+    };
+}
 exports.generateShortDevice = generateShortDevice;
 /** 生成完整设备信息 */
 function generateFullDevice(d) {
@@ -104,16 +143,19 @@ var Platform;
     Platform[Platform["iPad"] = 5] = "iPad";
 })(Platform = exports.Platform || (exports.Platform = {}));
 const mobile = {
+    // XXX Here update device informations based on mirai
+    // https://github.com/mamoe/mirai/blob/c9d1d386b16e886ad63eb51e6baf7270fcf2fa7b/mirai-core/src/commonMain/kotlin/utils/MiraiProtocolInternal.kt
     id: "com.tencent.mobileqq",
-    name: "A8.8.80.7400",
-    version: "8.8.80.7400",
-    ver: "8.8.80",
-    sign: Buffer.from([166, 183, 69, 191, 36, 162, 194, 119, 82, 119, 22, 246, 243, 110, 182, 141]),
+    name: "A8.9.33.10335",
+    version: "8.9.33.10335",
+    ver: "8.9.15",
+    sign: Buffer.from([0xA6, 0xB7, 0x45, 0xBF, 0x24, 0xA2, 0xC2, 0x77, 0x52, 0x77, 0x16, 0xF6, 0xF3, 0x6E, 0xB6, 0x8D]),
-    buildtime: 1640921786,
+    buildtime: 1673599898,
     appid: 16,
-    subid: 537113159,
-    bitmap: 184024956,
-    sigmap: 34869472,
+    subid: 537151682,
+    bitmap: 150470524,
+    sigmap: 16724722,
+    subsigmap: 0x10400,
-    sdkver: "6.0.0.2494",
+    sdkver: "6.0.0.2534",
     display: "Android",
 };

@ParticleG
Copy link

patch package:

diff --git a/lib/core/device.js b/lib/core/device.js
index ffadc63..57da54d 100644
--- a/lib/core/device.js
+++ b/lib/core/device.js
@@ -34,7 +34,7 @@ function generateImei(uin) {
     return imei + calcSP(imei);
 }
 /** 生成短设备信息 */
-function generateShortDevice(uin) {
+function generateShortDeviceDeprecated(uin) {
     const hash = (0, constants_1.md5)(String(uin));
     const hex = hash.toString("hex");
     return {
@@ -56,6 +56,45 @@ function generateShortDevice(uin) {
         "--end--": "修改后可能需要重新验证设备",
     };
 }
+/** 生成随机设备信息 */
+function generateShortDevice(uin) {
+    function randomString(length) {
+        const pool = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+        let result = "";
+
+        for (let i = 0; i < length; i++) {
+            result += pool.charAt(Math.floor(Math.random() * pool.length));
+        }
+
+        return result;
+    }
+
+    function randomInt(boundary) {
+      return Math.floor(Math.random() * boundary);
+    }
+
+    return {
+        "--begin--": "该设备由账号作为seed固定生成,账号不变则永远相同",
+        "--notice--": "The code that generated this file was patched by Adachi-BOT",
+        product: `ILPP-${randomString(5).toUpperCase()}`,
+        device: `${randomString(5).toUpperCase()}`,
+        board: `${randomString(5).toUpperCase()}`,
+        brand: `${randomString(4).toUpperCase()}`,
+        model: `ILPP ${randomString(4).toUpperCase()}`,
+        wifi_ssid: `HUAWEI-${randomString(7)}`,
+        bootloader: "U-boot",
+        android_id: `IL.${randomInt(10000000)}.${randomInt(10000)}`,
+        boot_id: `${randomString(8)}-${randomString(4)}-${randomString(4)}-${randomString(4)}-${randomString(12)}`,
+        proc_version: `Linux version 5.10.101-android12-${randomString(8)}`,
+        mac_address: `2D:${randomString(2).toUpperCase()}:${randomString(2).toUpperCase()}:${randomString(
+            2
+        ).toUpperCase()}:${randomString(2).toUpperCase()}:${randomString(2).toUpperCase()}`,
+        ip_address: `192.168.${randomInt(255)}.${randomInt(255)}`,
+        imei: `86${randomInt(10000000000000)}`,
+        incremental: `${randomString(10).toUpperCase()}`,
+        "--end--": "修改后可能需要重新验证设备。",
+    };
+}
 exports.generateShortDevice = generateShortDevice;
 /** 生成完整设备信息 */
 function generateFullDevice(d) {
@@ -104,16 +143,19 @@ var Platform;
     Platform[Platform["iPad"] = 5] = "iPad";
 })(Platform = exports.Platform || (exports.Platform = {}));
 const mobile = {
+    // XXX Here update device informations based on mirai
+    // https://github.com/mamoe/mirai/blob/c9d1d386b16e886ad63eb51e6baf7270fcf2fa7b/mirai-core/src/commonMain/kotlin/utils/MiraiProtocolInternal.kt
     id: "com.tencent.mobileqq",
-    name: "A8.8.80.7400",
-    version: "8.8.80.7400",
-    ver: "8.8.80",
-    sign: Buffer.from([166, 183, 69, 191, 36, 162, 194, 119, 82, 119, 22, 246, 243, 110, 182, 141]),
+    name: "A8.9.33.10335",
+    version: "8.9.33.10335",
+    ver: "8.9.15",
+    sign: Buffer.from([0xA6, 0xB7, 0x45, 0xBF, 0x24, 0xA2, 0xC2, 0x77, 0x52, 0x77, 0x16, 0xF6, 0xF3, 0x6E, 0xB6, 0x8D]),
-    buildtime: 1640921786,
+    buildtime: 1673599898,
     appid: 16,
-    subid: 537113159,
-    bitmap: 184024956,
-    sigmap: 34869472,
+    subid: 537151682,
+    bitmap: 150470524,
+    sigmap: 16724722,
+    subsigmap: 0x10400,
-    sdkver: "6.0.0.2494",
+    sdkver: "6.0.0.2534",
     display: "Android",
 };

是不是可以给OICQ提个PR?

@bincooo
Copy link

bincooo commented Mar 31, 2023

感觉作者已经放弃维护了,还是趁早换平台吧。
icqq可以先观望一下

@myotsuki
Copy link

感觉作者已经放弃维护了,还是早点换平台吧。icqq 可以先看看一下

你的icqq能用不?我的还是提示:
[2023-03-31T19:19:05.253] [WARN] [icqq] - token失效: [安全提醒]当前网络不稳定,登录失败。推荐使用常用设备或通过手机号登录。(错误码:237)
[2023-03-31T19:19:05.253] [ERROR] [icqq] - [安全提醒]当前网络不稳定,登录失败。推荐使用常用设备或通过手机号登录。

@ParticleG
Copy link

感觉作者已经放弃维护了,还是趁早换平台吧。 icqq可以先观望一下

有无更好用的协议库推荐,其他平台的也行

@Myfanqie
Copy link

Myfanqie commented Apr 4, 2023

有用,谢谢哥

@Innei
Copy link

Innei commented Apr 23, 2023

copy from icqq

update 2023-04-23 22:51:28 ,patch package

diff --git a/lib/core/device.js b/lib/core/device.js
index ffadc63..57da54d 100644
--- a/lib/core/device.js
+++ b/lib/core/device.js
@@ -34,7 +34,7 @@ function generateImei(uin) {
     return imei + calcSP(imei);
 }
 /** 生成短设备信息 */
-function generateShortDevice(uin) {
+function generateShortDeviceDeprecated(uin) {
     const hash = (0, constants_1.md5)(String(uin));
     const hex = hash.toString("hex");
     return {
@@ -56,6 +56,45 @@ function generateShortDevice(uin) {
         "--end--": "修改后可能需要重新验证设备",
     };
 }
+/** 生成随机设备信息 */
+function generateShortDevice(uin) {
+    function randomString(length) {
+        const pool = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+        let result = "";
+
+        for (let i = 0; i < length; i++) {
+            result += pool.charAt(Math.floor(Math.random() * pool.length));
+        }
+
+        return result;
+    }
+
+    function randomInt(boundary) {
+      return Math.floor(Math.random() * boundary);
+    }
+
+    return {
+        "--begin--": "该设备由账号作为seed固定生成,账号不变则永远相同",
+        "--notice--": "The code that generated this file was patched by Adachi-BOT",
+        product: `ILPP-${randomString(5).toUpperCase()}`,
+        device: `${randomString(5).toUpperCase()}`,
+        board: `${randomString(5).toUpperCase()}`,
+        brand: `${randomString(4).toUpperCase()}`,
+        model: `ILPP ${randomString(4).toUpperCase()}`,
+        wifi_ssid: `HUAWEI-${randomString(7)}`,
+        bootloader: "U-boot",
+        android_id: `IL.${randomInt(10000000)}.${randomInt(10000)}`,
+        boot_id: `${randomString(8)}-${randomString(4)}-${randomString(4)}-${randomString(4)}-${randomString(12)}`,
+        proc_version: `Linux version 5.10.101-android12-${randomString(8)}`,
+        mac_address: `2D:${randomString(2).toUpperCase()}:${randomString(2).toUpperCase()}:${randomString(
+            2
+        ).toUpperCase()}:${randomString(2).toUpperCase()}:${randomString(2).toUpperCase()}`,
+        ip_address: `192.168.${randomInt(255)}.${randomInt(255)}`,
+        imei: `86${randomInt(10000000000000)}`,
+        incremental: `${randomString(10).toUpperCase()}`,
+        "--end--": "修改后可能需要重新验证设备。",
+    };
+}
 exports.generateShortDevice = generateShortDevice;
 /** 生成完整设备信息 */
 function generateFullDevice(d) {
@@ -104,16 +143,19 @@ var Platform;
     Platform[Platform["iPad"] = 5] = "iPad";
 })(Platform = exports.Platform || (exports.Platform = {}));
 const mobile = {
+    // XXX Here update device informations based on mirai
+    // https://github.com/mamoe/mirai/blob/c9d1d386b16e886ad63eb51e6baf7270fcf2fa7b/mirai-core/src/commonMain/kotlin/utils/MiraiProtocolInternal.kt
     id: "com.tencent.mobileqq",
-    name: "A8.8.80.7400",
-    version: "8.8.80.7400",
-    ver: "8.8.80",
-    sign: Buffer.from([166, 183, 69, 191, 36, 162, 194, 119, 82, 119, 22, 246, 243, 110, 182, 141]),
+    name: "A8.9.50.f5a7d351",
+    version: "8.9.50.10650",
+    ver: "8.9.50",
+    sign: Buffer.from([0xA6, 0xB7, 0x45, 0xBF, 0x24, 0xA2, 0xC2, 0x77, 0x52, 0x77, 0x16, 0xF6, 0xF3, 0x6E, 0xB6, 0x8D]),
-    buildtime: 1640921786,
+    buildtime: 1676531414,
     appid: 16,
-    subid: 537113159,
-    bitmap: 184024956,
-    sigmap: 34869472,
+    subid: 537155551,
+    bitmap: 150470524,
+    sigmap: 16724722,
+    subsigmap: 0x10400,
-    sdkver: "6.0.0.2494",
+    sdkver: "6.0.0.2535",
     display: "Android",
 };

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests