xiehuc / pidgin-lwqq

a pidgin plugin based on lwqq, a excellent safe useful library for webqq protocol
GNU General Public License v3.0
660 stars 185 forks source link

又无法登录了 Fri Jan 30 09:43:44 CST 2015 #618

Closed asmca closed 9 years ago

asmca commented 9 years ago

[Jan 30 09:43:13] ERROR[3495]: login.c:393 do_login_back: Unknow error

asmca commented 9 years ago

有没有出现类似情况的。。。

asmca commented 9 years ago

已经打上commit: https://github.com/xiehuc/lwqq/commit/7a1ad123e8347867fd25e7b587099db8ab1f9e97

maosuyun2009 commented 9 years ago

@asmca 我的也是这样,pull新的commit还是登录不上

asmca commented 9 years ago

昨天打上patch之后就没问题了, 保不齐 昨晚 腾讯那边又改什么参数了。

难道他们也有人在track 这个项目~

EricInBj commented 9 years ago

不是吧。。。。 我网试了一下,退出pidgin,重新登录,是可以的啊。

刚刚又登录了个别的号,也没问题。。

xiehuc commented 9 years ago

unknow error 一般只是网络错误,多试几次

jizhongling commented 9 years ago

看到吓了一跳,试了下我的没有任何问题。

noteatapples commented 9 years ago

非常感谢,已经可以顺利登录了,补丁很好用。

loafer commented 9 years ago

补丁在哪?没找到

loafer commented 9 years ago

PPA不更行了吗?

lainme commented 9 years ago

@loafer 更新的是liblwqq0,pidgin-lwqq没有做修改。 sudo apt-get update sudo apt-get install liblwqq0

Lavande commented 9 years ago

未更新上面的commit,第一次登录,unknown error,点击reconnect,正常登录了

loafer commented 9 years ago

@lainme 谢谢搞定了。但是发现今早又登陆不上了

jizhongling commented 9 years ago

@loafer 我的自从更新后一直没有问题,或许使用Launchpad的PPA好一点。

loafer commented 9 years ago

@jizhongling不知啥原因,只是提示“unknown error”,不过多试了几次,又登上去了。

EricInBj commented 9 years ago

恩,我今天也这情况,unknown error比较多。。。

jizhongling commented 9 years ago

@loafer 恩,我现在也出现无数unknown error以致不能登录的情况了,看来话还真不敢说死

Lavande commented 9 years ago

看错了,@asmca 说的commit我已经更新过,今天一直 unknown error登录不了

chengdongdong commented 9 years ago

同样问题,unknown error,狗日的腾讯

xiehuc commented 9 years ago

挺头疼的。

shmilee commented 9 years ago

点个十几次,总能蹦出验证码的

jizhongling commented 9 years ago

@shmilee 还真是。点了11次出来验证码,然后正常登录了。猜测是联网过程有随机性,但肯定不是hash密码有随机性,因为每次是先校验验证码,后核对密码。估计和@EricInBj 改的那个url参数有关。

EricInBj commented 9 years ago

@xiehuc 我gdb了一下,发现出unknow的时候, do_login_back的响应是这样的。

311 response = req->response; (gdb) p response $1 = 0x4632254632254133 error: Cannot access memory at address 0x4632254632254133

EricInBj commented 9 years ago

见鬼,这半个多小时完全不出unknow error了。。。

EricInBj commented 9 years ago

刚才重启完机器,又出unknow,gdb看到是在 login.c:get_login_sig_back中。 截取g_login_sig的时候结果有问题,

结果是这样的:

(gdb) p login_sig $9 = "SM4uAj7IEU9-XzUwIDdGS1RwooJxVqmQ-wH9lOrw1Vyp0mPpqAjEQnY4XpZzR7sD\000g_time.time5=new Date();\r\n\twebLoginReport();\t\r\n\tptui_notifySize(\"login\");\r\n\tif(!curXui){ptui_initFocus(login_form);}\r\n}\r\nweblogin<body onload=\"onPageLoad()\" onc"


不过似乎和这个没关系。。。 不过我还是在我本地改成 char login_sig[64] 了。 等出问题的时候再调试。。。


刚才用fiddler看了下HTTP请求。 发现报unknow error的时候实际上是这个响应。。。。。。。。。。。。。。。。。

ptuiCB('71','0','','0','您的帐号由于异常禁止登录,请联系客服。(2009081021)', 'QQNUMBER');

不知道这个异常的判断标准是什么。。。。

EricInBj commented 9 years ago

找到报这个错误的根本原因了。在登录的时候,如果不服务器说,这次就不用亲输验证码了。 这时候要带上下面几个参数,其中,pt_verifysession_v1的值从check响应的cookie中取,看代码注册里 @xiehuc 写了句,要处理这个参数,但实际没处理,应该是以前服务器没做严格检查。 好吧,出来混尽早要还,来补上这几个参数吧。。。。我先试试。。

&pt_uistyle=5 &pt_randsalt=0 &pt_vcode_v1=0 &pt_verifysession_v1=d2e7a943d5ae6189e5


折腾半天,发现加上这几个参数之后就会说密码错误。。看URL确实跟web qq的基本一样了,除了p的加密方式不一样。 另外就是webqq请求的时候带了一堆cookie,lwqq只有俩,不过这个应该不是关键,webqq那应该只是浏览器自动带上的。

EricInBj commented 9 years ago

@xiehuc 最近比较忙啊? 我这两天断断续续折腾了不少,现在我这边的情况是:

  1. 把密码加密方式改成RSA的了,用的JS文件就是你在dev分支里的那个。
  2. 不管有没有验证码,登录url都会增加上面贴子里说的pt_verifysession_v1等几个参数,其中pt_verifysession_v1的值有两种情况: a). 不需要验证码时,这个的值check请求返回时带的ptvfsession cookie值,其实也就是调用 ptui_checkVC的第五个参数。 b). 需要验证码时,值为cookie中的verifysession,这个cookie在获取验证码图片,就是getimage的响应中有。
  3. 做了如上改动之后,现在不管有无验证码,都报密码错误
  4. gdb中在do_login下断点,把生成的url拷出来,开浏览器的隐身模式(没有任何cookie,排除cookie干扰),请求url,也报密码错误。
  5. 如果把第4步请求的URL中的p参数替换成在浏览器中加密(把整个encrypt.js内容贴console中,然后执行 encryption(pwd,pt.salt,vcode)得到的密文。这样就可以登录成功。
  6. pt.salt是这样一个串: '\x00\x00\x00\x00\x07\x27\x11\x6b' 直接在console中输出显示 "'k" 。
  7. 使用原来代码中lwqq_enc_pwd函数中对 uin的处理结果 _uin 来调用函数加密也不行,看了一下_uin,值为 "\000\000\000\000\a'\021k"
  8. 胜利就在眼前了。
  9. 操,目前这个salt是个常量,直接写死在encrypt.js中,登录成功!不过悲催的是,别的号登录不成功。再研究下。。。
  10. 似乎salt是每个号码不同样。。。。。看来还是不能偷机取巧写死。。。

似乎搞好了!!! 还是用了个野路子。。改了salt,把\替换成 - 然后在encrypt.js里再替换回来。。。。

EricInBj commented 9 years ago

同志们,我这简单测试了几个号,有没有验证码都能正常登录了。 基本不会写C, 还好没改多少地方,照猫画虎拼凑上了,比较恶心,js文件也暂时没放安装目录里,就先不发pull request了。。回头再研究研究。或者 @xiehuc 有时间的时候直接改这边的代码吧。 各位可以临时用我fork的代码编译安装测试,记得把lib/encrypt.js扔到 /tmp下。 好了,回家。。。

https://github.com/EricInBj/lwqq/commit/2346512e88334f1cd054c49b74dd9e79b4041a3d

jizhongling commented 9 years ago

感谢@EricInBj ,辛苦了

xiehuc commented 9 years ago

@EricInBj 我也回家过年了,难得蹭邻居的网能上去了。 我干脆加你为协作者得了,另外考虑弄个lwqq的组织么?把pidgin-lwqq和lwqq都放到下面去。

EricInBj commented 9 years ago

@xiehuc 原来是回家了啊,我说呢。。 协作者。。可我基本不会C啊。。。照猫画老虎排查排查问题还凑合。。。 目前倒是借着折腾这些事儿学习C,哈哈。 明天要是不出门的话,我先把encrypt.js文件路径写死的问题解决了。请教个问题:我看你之前在pidgin-lwqq的dev分支里引入了这个文件,为什么不是在lwqq里加入这个呢,我觉得这是lwqq所依赖的东西啊,是有什么原因吗? 我现在不知道把这文件放哪好了。。。 另外,能否邮件或Q联系? 我的是hotmail邮箱,就是我这ID @ hotmail.com

xiehuc commented 9 years ago

怎么说呢,当时想着lwqq没有一个res文件夹来放这些资源文件。其实你的也是对的。 现在通过添加一个 lwqq_util_load_res 的 api 函数来辅助读取资源文件了。

我已经把你的更新拉进来了,并加入了一些patch。

jizhongling commented 9 years ago

@xiehuc @EricInBj 提供一个信息供参考:我5次登录都是出现10个unknown error,第11次成功,不知道有没有什么道理。

Lavande commented 9 years ago

ls应该是巧合吧?我这登录了20次都没登录成功。。。。

xiehuc commented 9 years ago

新补丁应该能用吧,我都登上去了

Lavande notifications@github.com于2015年2月8日星期日写道:

ls应该是巧合吧?我这登录了20次都没登录成功。。。。

— Reply to this email directly or view it on GitHub https://github.com/xiehuc/pidgin-lwqq/issues/618#issuecomment-73390634.

EricInBj commented 9 years ago

@jizhongling 确实差不多就是10个unknow error, 因为前十次web qq服务器那边没有要求输入验证码。第11次才会要求的。 @xiehuc 更新了这边的代码,把我的垃圾代码都改好了,哈哈,大家可以更新啦。

felixonmars commented 9 years ago

我这里测试良好, 已更新下面的包到 Arch [community] 仓库:

lwqq 0.4.1.20150208-1 pidgin-lwqq 0.4.1.20150208-1

jizhongling commented 9 years ago

首先感谢@xiehuc @EricInBj 但是我安装了Launchpad的更新后,一登录QQ,pidgin就自动退出。 我找找log file,然后传上来。 系统:Linux Mint 17.1

lainme commented 9 years ago

@jizhongling 我可能少加一个文件……等等再更新一次

lainme commented 9 years ago

@jizhongling 我把encrypt.js忘了,你可以自己把它放到/usr/share/lwqq底下,或者等会再更新一次liblwqq0

jizhongling commented 9 years ago

谢谢@lainme 的及时回复。可惜我在git clone里找不到encript.js,所以还是等你更新吧。

Lavande commented 9 years ago

呜,最新的代码我这编译不了,make出问题了不知道怎么回事……

/home/foxx/Programs/dev/compile_dir/pidgin-lwqq/src/translate.c: In function ‘translate_global_init’: /home/foxx/Programs/dev/compile_dir/pidgin-lwqq/src/translate.c:11:92: error: ‘RES_DIR’ undeclared (first use in this function)

define GLOBAL_SMILEY_PATH(path) (snprintf(path,sizeof(path),"%s"LWQQ_PATH_SEP"smiley.txt",RES_DIR),path)

                                                                                        ^

/home/foxx/Programs/dev/compile_dir/pidgin-lwqq/src/translate.c:417:42: note: in expansion of macro ‘GLOBAL_SMILEY_PATH’ build_smiley_exp_from_file(smiley_exp, GLOBAL_SMILEY_PATH(path)); ^ /home/foxx/Programs/dev/compile_dir/pidgin-lwqq/src/translate.c:11:92: note: each undeclared identifier is reported only once for each function it appears in

define GLOBAL_SMILEY_PATH(path) (snprintf(path,sizeof(path),"%s"LWQQ_PATH_SEP"smiley.txt",RES_DIR),path)

                                                                                        ^

/home/foxx/Programs/dev/compile_dir/pidgin-lwqq/src/translate.c:417:42: note: in expansion of macro ‘GLOBAL_SMILEY_PATH’ build_smiley_exp_from_file(smiley_exp, GLOBAL_SMILEY_PATH(path)); ^ /home/foxx/Programs/dev/compile_dir/pidgin-lwqq/src/translate.c:11:100: warning: left-hand operand of comma expression has no effect [-Wunused-value]

define GLOBAL_SMILEY_PATH(path) (snprintf(path,sizeof(path),"%s"LWQQ_PATH_SEP"smiley.txt",RES_DIR),path)

                                                                                                ^

/home/foxx/Programs/dev/compile_dir/pidgin-lwqq/src/translate.c:417:42: note: in expansion of macro ‘GLOBAL_SMILEY_PATH’ build_smiley_exp_from_file(smiley_exp, GLOBAL_SMILEY_PATH(path)); ^ make[2]: * [src/CMakeFiles/webqq.dir/translate.c.o] Error 1 make[1]: * [src/CMakeFiles/webqq.dir/all] Error 2 make: *\ [all] Error 2

lainme commented 9 years ago

@jizhongling 应该可以了。我虚拟机出了问题,显示不出验证码,没法自己测试。

@Lavande 需要先更新lwqq

Lavande commented 9 years ago

@lainme lwqq我更新了哇,么的用……

jizhongling commented 9 years ago

@lainme 我更新了lwqq0,退出重新登录linux,还是崩溃。 但是用命令行登录不崩溃,命令行回显如下: $ pidgin Verify code: !FCS Get verify code OK [Feb 08 08:08:04] WARNING[4808]: http.c:670 check_multi_info: async retcode:6 Couldn't resolve host name [Feb 08 08:08:04] WARNING[4808]: http.c:670 check_multi_info: async retcode:6 Couldn't resolve host name [Feb 08 08:08:04] WARNING[4808]: http.c:670 check_multi_info: async retcode:6 Couldn't resolve host name [Feb 08 08:08:04] WARNING[4808]: http.c:670 check_multi_info: async retcode:6 Couldn't resolve host name [Feb 08 08:08:04] WARNING[4808]: http.c:670 check_multi_info: async retcode:6 Couldn't resolve host name [Feb 08 08:08:04] WARNING[4808]: http.c:670 check_multi_info: async retcode:6 Couldn't resolve host name [Feb 08 08:08:04] WARNING[4808]: http.c:670 check_multi_info: async retcode:6 Couldn't resolve host name [Feb 08 08:08:04] WARNING[4808]: http.c:670 check_multi_info: async retcode:6 Couldn't resolve host name [Feb 08 08:08:04] WARNING[4808]: http.c:670 check_multi_info: async retcode:6 Couldn't resolve host name

[Feb 08 08:09:01] ERROR[4808]: http.c:907 lwqq_http_do_request: do_request fail curlcode:42

felixonmars commented 9 years ago

有可能和我遇到了同一个问题? #621

lainme commented 9 years ago

@jizhongling 刚才有人发邮件说用更新后包就能登录了,所以你遇到的可能是 #621 ,而不是打包的问题。你可以参照这里 https://github.com/xiehuc/pidgin-lwqq/wiki/How-To-Debug 看下是否同一问题

jizhongling commented 9 years ago

@felixonmars 请试下你命令行调用pidgin崩溃不?我命令行工作的很好。

lainme commented 9 years ago

@Lavande 会不会是装了多份lwqq?或者清理build目录试试?

felixonmars commented 9 years ago

@jizhongling 就是从命令行直接 gdb 启动的... 出现概率比较高, 目测大概 50%.