shadowsocks / shadowsocks-qt5

A cross-platform shadowsocks GUI client
GNU Lesser General Public License v3.0
7.97k stars 2.33k forks source link

Add support for chacha20-ietf-poly1305 #595

Closed cuzfrog closed 6 years ago

cuzfrog commented 6 years ago

Thanks. chacha20-ietf seems not working properly against service that uses chacha20-ietf-poly1305

zxy198717 commented 6 years ago

+1

simonbinwang commented 6 years ago

+1

helocy commented 6 years ago

+1

csy530216 commented 6 years ago

+1

cuzfrog commented 6 years ago

Please do not reply with simple +1s, which spawn meaningless emails to everyone related. Thanks.

codingdie commented 6 years ago

chacha20-ietf-poly1305 will be necessary

begeekmyfriend commented 6 years ago

This issue can be solved as follows

# Install libsodium
sudo apt-get install libsodium-dev

# Install libbotan-2.x from source
wget https://botan.randombit.net/releases/Botan-2.3.0.tgz
tar xvf Botan-2.3.0.tgz
cd Botan-2.3.0
./configure.py
make
sudo make install
sudo ldconfig

# Install libQtShadowsocks
git clone https://github.com/shadowsocks/libQtShadowsocks.git
cd libQtShadowsocks
vim CMakeLists.txt
# Change Line 8 as "On"
mkdir build
cd build
cmake ..
make
sudo make install

# Install 
git clone https://github.com/shadowsocks/shadowsocks-qt5
cd shadowsocks-qt5
mkdir build
cd build
cmake ..
make
sudo make install

Note that when building libQtShadowsocks, please merge my PR first.

yaochx commented 6 years ago

@begeekmyfriend thank you, it works, but no need to do the PR change. I rebooted my system twice, it worked. before that, proxy return connection closed error or no response error

Super-Tree commented 6 years ago

@begeekmyfriend @yaochx 我安装了libsodium和libbotan,然后安装了shadowsocks-qt5 , 之后打开shadowsocks没有看到加密方式里面多了chacha20-ietf-poly1305 ,难道是还要安装libQtShadowsocks? (因为电脑山没QT,所以就没装第三个) 望指教!

begeekmyfriend commented 6 years ago

@Super-Tree shadowsocks-qt5调用的就是libQtShadowsocks,你要注意这个

yaochx commented 6 years ago

@Super-Tree 需要源码编译安装

helocy commented 6 years ago

I have tried the solution @begeekmyfriend provided, and it works fine, thank you.

BTW: I need to install two packages:

sudo apt install libzbar-dev libqrencode-dev

Super-Tree commented 6 years ago

@begeekmyfriend 我已经装了第三个包libQtShadowsocks,在cmake第四个包shadowsocks-qt5的时候,cmake报错:pkg_check_modules(QSS REQUIRED QtShadowsocks>=2.0.0) 找不到这个QtShadowsocks,可是我刚才已经安装第三个包了呀, 我要怎么设置cmakelists才能让它找到QtShadowsocks. 感觉问的问题有些低级,但是我在网上查了好多也没有解决,麻烦指点一下~

begeekmyfriend commented 6 years ago

@wujiangGitHub 如果你是Ubuntu的话请apt安装qtbase5-dev,qt5-default(还有一个记不清了,自己网上搜),会在/usr/lib下面生成QT相关cmake模块

@Super-Tree 你的问题也类似,用apt安装

wujiangGitHub commented 6 years ago

@begeekmyfriend thanks

csy530216 commented 6 years ago

I finished every step and solved some problems, such as fixing qToBigEndian compile error, installing some libs. However, after I finished installing shadowsocks-qt5, when I run ss-qt5, it shows:

ss-qt5: /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5: version `Qt_5' not found (required by ss-qt5)
ss-qt5: /usr/lib/x86_64-linux-gnu/libQt5Network.so.5: version `Qt_5' not found (required by ss-qt5)
ss-qt5: /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5: version `Qt_5' not found (required by ss-qt5)
ss-qt5: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.6' not found (required by ss-qt5)
ss-qt5: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5' not found (required by ss-qt5)
ss-qt5: /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5: version `Qt_5' not found (required by ss-qt5)
ss-qt5: /usr/lib/x86_64-linux-gnu/libQt5Network.so.5: version `Qt_5' not found (required by /usr/local/lib/libQtShadowsocks.so.2)
ss-qt5: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.6' not found (required by /usr/local/lib/libQtShadowsocks.so.2)
ss-qt5: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5' not found (required by /usr/local/lib/libQtShadowsocks.so.2)

Then I installed qtbase5-dev, qt5-default, qt5-qmake, but the error messages still show.

How to fix that? Thanks!

begeekmyfriend commented 6 years ago

@csy530216 Try

sudo apt install libqtxxxx

Super-Tree commented 6 years ago

@begeekmyfriend 再次打扰,不好意思 我用apt安装了shadowsocks-qt5,运行ss-qt5选择加密方式时,还是没有chacha20-ietf-poly1305,要怎么办呢? 是不是还是应该从源码安装,还是要解决 package 'QtShadowsocks>=2.0.0' not found 主要是我都安装libQtShadowsocks了,为啥还是找不到呢,哎,求指导 谢谢你了!

begeekmyfriend commented 6 years ago

@Super-Tree 是要源码安装shadowsocks-qt5libQtShadowsocks的宏打开了没有,编译进去了没?

begeekmyfriend commented 6 years ago

@Super-Tree libQtshadowsocks也要源码编译,记得还要改CMakeLists.txt第八行,还有我的PR

csy530216 commented 6 years ago

@Super-Tree 试试sudo ldconfig

begeekmyfriend commented 6 years ago

@Super-Tree 我的帖子你都不仔细看么。。。

yelantf commented 6 years ago

I think it would be perfect if this issue can be fixed in next release. Building by source code is not a comfortable way.

ybtsdst commented 6 years ago

@helocy how to install libzbar-dev ? apt seems not work on 16.04

Super-Tree commented 6 years ago

终于解决了,问题是安装完QT后没有在.bashrc里面添加LD_LIBRARY_PATH,加上这句export LD_LIBRARY_PATH=/home/name/Qt/5.10.0/gcc_64/lib/:/other/lib/you/use/lib:$LD_LIBRARY_PATH; 另外,大家要是在编译shadowsocks-qt5,libQtShadowsocks时,cmake提示没找到qt相关组件(前提是你安装了qt),则需要在cmakelists.txt中添加cmake_prefix_path, set(CMAKE_PREFIX_PATH "/home/name/Qt/5.10.0/gcc_64") @begeekmyfriend @csy530216 谢谢耐心的指点!

ghost commented 6 years ago

我在 make libQtShadowsocks 时出现错误,有谁可以告诉我是缺少了哪个包吗? 我的系统是 ubuntu16.04LTS,而且在 cmake .. 时没有错误.

[  3%] Automatic moc for target QtShadowsocks
[  3%] Built target QtShadowsocks_automoc
[  6%] Building CXX object lib/CMakeFiles/QtShadowsocks.dir/encryptor.cpp.o
/home/yungkc/Downloads/libQtShadowsocks/lib/encryptor.cpp: In member function ‘std::__cxx11::string QSS::Encryptor::encrypt(const uint8_t*, size_t)’:
/home/yungkc/Downloads/libQtShadowsocks/lib/encryptor.cpp:141:71: error: no matching function for call to ‘qToBigEndian(uint16_t&, uint16_t*)’
         qToBigEndian(inLen, reinterpret_cast<uint16_t*>(&rawLength[0]));
                                                                       ^
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QtEndian:1:0,
                 from /home/yungkc/Downloads/libQtShadowsocks/lib/encryptor.cpp:25:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qendian.h:206:32: note: candidate: template<class T> T qToBigEndian(T)
 template <typename T> inline T qToBigEndian(T source)
                                ^
/usr/include/x86_64-linux-gnu/qt5/QtCore/qendian.h:206:32: note:   template argument deduction/substitution failed:
/home/yungkc/Downloads/libQtShadowsocks/lib/encryptor.cpp:141:71: note:   candidate expects 1 argument, 2 provided
         qToBigEndian(inLen, reinterpret_cast<uint16_t*>(&rawLength[0]));
                                                                       ^
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QtEndian:1:0,
                 from /home/yungkc/Downloads/libQtShadowsocks/lib/encryptor.cpp:25:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qendian.h:214:35: note: candidate: template<class T> void qToBigEndian(T, uchar*)
 template <typename T> inline void qToBigEndian(T src, uchar *dest)
                                   ^
/usr/include/x86_64-linux-gnu/qt5/QtCore/qendian.h:214:35: note:   template argument deduction/substitution failed:
/home/yungkc/Downloads/libQtShadowsocks/lib/encryptor.cpp:141:71: note:   cannot convert ‘(uint16_t*)rawLength.std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::operator[]<char, std::char_traits<char>, std::allocator<char> >(0ul)’ (type ‘uint16_t* {aka short unsigned int*}’) to type ‘uchar* {aka unsigned char*}’
         qToBigEndian(inLen, reinterpret_cast<uint16_t*>(&rawLength[0]));
                                                                       ^
lib/CMakeFiles/QtShadowsocks.dir/build.make:206: recipe for target 'lib/CMakeFiles/QtShadowsocks.dir/encryptor.cpp.o' failed
make[2]: *** [lib/CMakeFiles/QtShadowsocks.dir/encryptor.cpp.o] Error 1
CMakeFiles/Makefile2:86: recipe for target 'lib/CMakeFiles/QtShadowsocks.dir/all' failed
make[1]: *** [lib/CMakeFiles/QtShadowsocks.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2
begeekmyfriend commented 6 years ago

@yungkcx See my PR

ghost commented 6 years ago

@begeekmyfriend OK, thanks~

librehat commented 6 years ago

This method is not supported by current release yet. I'll release an alpha build in AppImage to let you test in following days.

willwhui commented 6 years ago

@begeekmyfriend $ cmake .. CMake Warning at CMakeLists.txt:20 (find_package): Could not find a configuration file for package "Qt5Core" that is compatible with requested version "5.5".

The following configuration files were considered but not accepted:

/usr/lib/x86_64-linux-gnu/cmake/Qt5Core/Qt5CoreConfig.cmake, version: 5.2.1
/usr/lib/x86_64-linux-gnu/cmake/Qt5Core/Qt5CoreConfig.cmake, version: 5.2.1

请问应该怎么解决?网上搜了一圈找不到合适的方法。谢谢。

begeekmyfriend commented 6 years ago

@willwhui See here

willwhui commented 6 years ago

@begeekmyfriend , I had installed these two packages. I just tried to start from the the beginning again a few minutes ago, and found an error at the first command

~$ sudo apt-get install libsodium-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package libsodium-dev

Here install-libsodium.sh listed some ways to add source of libsodium. But I don't know which ones are secure? My Ubuntu version is 14.04 Would you please give me some advices? Thanks.

begeekmyfriend commented 6 years ago

@willwhui Install from scratch. Just clone the libsodium repo on Github.

rexpie commented 6 years ago

@begeekmyfriend 按照你的方法完整编译了,但运行时无法下载超过1M的文件,很不稳定,日志报错很多都是 AEAD data chunk is incomplete (too small for payload) AEAD data chunk is incomplete (too small for payload) AEAD data chunk is incomplete (too small for payload) AEAD data chunk is incomplete (too small for payload) AEAD data chunk is incomplete (too small for payload) AEAD data chunk is incomplete (too small for payload) AEAD data chunk is incomplete (too small for payload) AEAD data chunk is incomplete (too small for length) Remote: Integrity failure: ChaCha20Poly1305 tag check failed

感觉客户端的botan不稳定?手头上有个android的客户端,下载基本稳定,大文件也没有问题。服务器是一样的。

cushionXY commented 6 years ago

各位大佬,ss-qt5这个客户端没有aes-256-gcm这种加密方式,怎么破解.

begeekmyfriend commented 6 years ago

@cushionXY 你找我的方式编译,AES-256-GCM在列表中

cushionXY commented 6 years ago

大佬,是把您上边给的所有命令都执行一遍么?而您的意思是不是,将您的PR里面的代码在cmake 的时候粘贴上前去么?还有make后面跟的文件是您的PR么?是不是就是加上这个文件(lib/encryptor.cpp).还有就是,我之前下过qt-5了,要删除了从下么?

begeekmyfriend commented 6 years ago

@cushionXY 请仔细看一遍上面的帖子,我不想再重复一遍

sudo apt install qtbase5-dev
sudo apt install qt5-default

还有一个貌似这样,记不清了,自己试试

sudo apt install libqt5xxx

记住apt安装的位置是在/usr/lib 目录下,也是你在构建时引用的真正位置

cushionXY commented 6 years ago

谢谢大佬了

willwhui commented 6 years ago

Need help again, @begeekmyfriend When install libQtShadowsocks

build$ make
[  3%] Building CXX object lib/CMakeFiles/QtShadowsocks.dir/address.cpp.o
In file included from /home/xxx/coding/ss-qt5/Botan-2.3.0/libQtShadowsocks/lib/address.cpp:25:0:
/home/xxx/coding/ss-qt5/Botan-2.3.0/libQtShadowsocks/lib/common.h:26:24: fatal error: QHostAddress: No such file or directory
 #include <QHostAddress>
                        ^
compilation terminated.
make[2]: *** [lib/CMakeFiles/QtShadowsocks.dir/address.cpp.o] Error 1
make[1]: *** [lib/CMakeFiles/QtShadowsocks.dir/all] Error 2
make: *** [all] Error 2

here says need QT += network in the ".pro" file. but I can't find any .pro file in this project.

And I had found the file QHostAddress at /usr/include/qt5/QtNetwork Thanks a lot.

leomatrix commented 6 years ago

@begeekmyfriend ss-qt5的使用需要配合 privoxy吗?

begeekmyfriend commented 6 years ago

@leomatrix 没用到过

ppflower commented 6 years ago

@willwhui Maybe you need to install some dependencies. You can refer to this.

ATKghost commented 6 years ago

@begeekmyfriend 我按你的步骤编译安装Botan-2,也从git仓库的代码编译安装了一遍,但是编译libQtShadowsocks时仍找不到botan-2,求解

% sudo ldconfig -v | grep botan libbotan-2.so.4 -> libbotan-2.so.4.4.0 libbotan-2.so.3 -> libbotan-2.so.3.3.0 libbotan-2.so.4 -> libbotan-2.so.4.4.0 libbotan-1.10.so.1 -> libbotan-1.10.so.1.17

~/git/libQtShadowsocks/build % cmake .. -- Checking for module 'botan-2>=2.3.0' -- Package 'botan-2', required by 'virtual:world', not found CMake Error at /usr/share/cmake/Modules/FindPkgConfig.cmake:412 (message): A required package was not found Call Stack (most recent call first): /usr/share/cmake/Modules/FindPkgConfig.cmake:588 (_pkg_check_modules_internal) CMakeLists.txt:26 (pkg_check_modules)

begeekmyfriend commented 6 years ago

sudo ldconfig

@ATKghost Please read my post closely and do not make me say "read the f***ing post!"

ATKghost commented 6 years ago

@begeekmyfriend sudo ldconfig执行了没任何回应,问题依旧,所以才来提问的,我是Fedora26,有关联么?

begeekmyfriend commented 6 years ago

@ATKghost libbotan-1libbotan-2的路径分别是什么,试试删掉(备份)libbotan-1

ATKghost commented 6 years ago

@begeekmyfriend libbotan-2/lib/usr/lib/usr/local/lib都有。libbotan-1/lib64。我把libbotan-1移除后也还是不行

librehat commented 6 years ago

Please download the AppImage here: https://github.com/shadowsocks/shadowsocks-qt5/releases/tag/v3.0.0alpha

mylxiaoyi commented 6 years ago

@rexpie 我也遇到文件无法下载的问题,在终端里输出相同的错误。你的问题解决了吗?