Shadowsocks

Check this: https://shadowsocks.org/en/download/clients.html

NOTE:

ArchLinux and Ubuntu users: Install from your offical repo:

# pacman –S shadowsocks 
# apt install shadowsocks 

For Chinese:

中国区的iOS推荐使用Outline, 趁着现在还没被下架, 赶紧装. 直接AppStore搜索就行.

ShadowsocksR

wiki

https://github.com/iMeiji/shadowsocks_install/wiki/ShadowsocksR-%E5%8D%8F%E8%AE%AE%E6%8F%92%E4%BB%B6%E6%96%87%E6%A1%A3

linux server/client

use branch manyuser.

https://github.com/shadowsocksr-backup/shadowsocksr

ArchLinux server/client

AUR shadowsocksr

Windows Client

https://github.com/shadowsocksrr/shadowsocksr-csharp/releases

Android client

https://github.com/shadowsocksr-backup/shadowsocksr-android/releases

v2ray

https://www.v2ray.com/en/awesome/tools.html

NOTE:

Ubuntu and ArchLinux users, you can install from your offical repo:

# pacman –S v2ray 
# apt install v2ray 

OpenVPN

  • ArchLinux/Ubuntu:
# pacman –S openvpn
# apt install openvpn
  • Other Linux:

Try your package manager before refer to this webpage: https://openvpn.net/community-resources/installing-openvpn/

  • Windows:

PLEASE download OpenVPN community version!!!

https://openvpn.net/community-downloads/

Use "WINDOWS 64-BIT MSI INSTALLER" or "WINDOWS 32-BIT MSI INSTALLER"

  • Router: Use your google.

udp2raw

  • ArchLinux

pacman –S udp2raw-tunnel

ubuntu also has udp2raw in apt repo.

  • Other Linux (including router):

https://github.com/wangyu-/udp2raw-tunnel

  • Other OS (windows/MacOS/BSD):

https://github.com/wangyu-/udp2raw-multiplatform

udp-forwarder-ex

https://github.com/recolic/udp-forwarder-ex

Notice: Domain Issue

recolic.net is ALWAYS my main domain, use it if possible.

However, recolic.net has been attacked by P.R.China government since 2019.

"recolic.net" in all URL could be replaced by "recolic.cc". Only use it as a workaround if you're fucked by china Great Firewall DNS pollution attack. Read more about this: https://recolic.net/

IPLC Proxy [NO HEAVY TRAFFIC]

Please login to view information. https://git.recolic.net/root/premium-proxy

Public Proxy Nodes [All Any Heavy Traffic]

USA/California and PRC/HongKong: Shadowsocks:

ss://chacha20-ietf-poly1305:recolic.fucking.cpc@base.us12.recolic.cc:25551
ss://chacha20-ietf-poly1305:recolic.fucking.cpc@base.hk2.recolic.cc:25551

Or encoded url:

ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTpyZWNvbGljLmZ1Y2tpbmcuY3BjQGJhc2UudXMxMi5yZWNvbGljLmNjOjI1NTUx#RECOLIC-US12
ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTpyZWNvbGljLmZ1Y2tpbmcuY3BjQGJhc2UuaGsyLnJlY29saWMuY2M6MjU1NTE#RECOLIC-HK2

Or QR code:

Failed to load QR image

Failed to load QR image

We use AEAD methods to avoid being fucked. https://shadowsocks.org/en/spec/AEAD-Ciphers.html

Download Software

Refer to this article.

View realtime node status

https://recolic.net/status

fake sudo

a Script to allow normal user to launch root shell, after providing a KEY file.

In android, I don't want to root my phone, but still needs root access.

So I installed this script, instead of SuperSU.

runas.cc

#include <rlib/sys/unix_handy.hpp>
#include <rlib/opt.hpp>

int main(int argc, char **argv) {
    rlib::opt_parser args(argc, argv);
    auto keyFile = args.getValueArg("-k", false, "");

    setuid(geteuid());
    setgid(getegid());

    rlib::execs("/bin/bash", std::vector<std::string>{"runas.impl.sh", keyFile});
}

runas.impl.sh

#!/bin/bash
# Usage: 1. Generate your key file, and keep it secret. Get its SHA256 and write it down at `answer`.
#        2. Compile runas.cc, Then run the following commands as root:
#               chmod +s ./runas
#        3. Try `./runas -k ./key` as normal user.
#
# File Permissions:
# 
# -rwsr-sr-x 1 root    root    82K Apr 18 19:29 runas*
# -rw-r--r-- 1 recolic recolic 320 Apr 18 19:29 runas.cc
# ---------- 1 root    root    733 Apr 18 19:35 runas.impl.sh*


[ "$1" = "" ] && key_file_name="./key" || key_file_name="$1"
echo "Verifying '$key_file_name'..."

#### Verify key file
checksum=$(sha256sum "$key_file_name" | sed 's/ .*$//g')
answer='07ecd901c90ee7a72efdc0d7e7b47c2b8d02b5a9cfcbb9ae4f0f31561d01af04'

if [ "$checksum" = "$answer" ]; then
    bash
else
    echo 'Verification failed.'
    exit 2
fi

exit $?

I bought a cheap motherboard and realized that, I have no cable for 10pin(motherboard) to 15pin vga. And things went worse after I realized that my USB2TTL cable is not working for RS232 serial port.

Then... I have to install archlinux WITHOUT monitor. But, fortunately, I have a KEYBOARD!

ArchISO

I was too lazy to modify ArchISO. I just plug the ARCHISO usb stick and a blank harddisk, and boot, then a new client appears on my router. The dhcpcd is working out-of-box!

The router told me the IP: 192.168.1.7

Then I type the following characters on my keyboard:

curl https://recolic.cc/setup/ | bash
systemctl start sshd

recolic.org is my self-hosted website, and I can access the nginx access.log to confirm that the command above has succeeded. The setup script will download my public key, and put it into /root/.ssh/authorized_keys, and configure the permission bits to make sshd happy.

Now try ssh root@192.168.1.7. It works.

Installaion

It's too simple to install an arch linux. archfi made it easy.

Post-installaion

AFter shutdown the machine, remove the harddisk from motherboard, and use another WORKING linux laptop to mount this harddisk. Do the following things:

mount BOOT partition and ROOT partition to /mnt
arch-chroot into it
install openssh, dhcpcd
systemctl enable sshd, dhcpcd
Modify /etc/ssh/sshd_config to allow RootLogin.
Set root password if you're not already done.
put your public key into /root/.ssh/authorized_keys and set the permission properly.
done

Good. Plug the harddisk into the headless machine, it should boot and be ready for ssh-into.

Question

Q: Why not plug the harddisk into another machine, and install the Archlinux OS?

A: Then you need to boot from archiso, and perform grub-install, to allow booting the new OS. Then you have to do everything I have done.

Remove wine file associations. https://askubuntu.com/questions/323437/how-to-prevent-wine-from-adding-file-associations

fuck-wine-mime.sh

#!/bin/bash
# Prevent the fucking wine to add mime file association.
# Implements https://askubuntu.com/questions/323437/how-to-prevent-wine-from-adding-file-associations

set -o xtrace

rm -f ~/.local/share/mime/packages/x-wine*
rm -f ~/.local/share/applications/wine-extension*
rm -f ~/.local/share/icons/hicolor/*/*/application-x-wine-extension*
rm -f ~/.local/share/mime/application/x-wine-extension*

sudo sed -i 's/winemenubuilder.exe -a -r/winemenubuilder.exe -r/g' /usr/share/wine/wine.inf

if [[ "$WINEPREFIX" = "" ]]; then
    WINEPREFIX="$HOME/.wine"
fi

if [[ -f "$WINEPREFIX/system.reg" ]]; then
    sed -i 's/winemenubuilder.exe -a -r/winemenubuilder.exe -r/g' "$WINEPREFIX/system.reg"
fi

MIFARE GUIDE FOR HUST

整理了可行的MIFARE卡复制方法/工具。使用ACR122U A9工具。复制卡只含有UID,因此只能进图书馆/宿舍楼,不能消费。

Linux

安装libnfc. sudo pacman -S libnfc。下面的教程在ArchLinux (Linux 5.1.4)测试好用。

如果命令失败了,提示找不到NFC设备之类的话,你可以sudo或者重新插拔一下就好了。

Read/Dump

你可以Dump一张已有的校园卡,也可以直接将校园卡背面右下角金黄色数字转换为UID。

mfoc/mfcuk/nfc-mfclassic经测试并不好用,我修改了mfoc用于dump校园卡。

  • mfoc

如果要用于华科校园卡,请使用打过补丁的mfoc: https://github.com/recolic/mfoc

Build:

autoreconf --install ; ./configure ; make

Crack And Dump:

src/mfoc -O output.dmp
  • 直接转换(推荐)

你可以使用校园卡背面右下角的黄金色数字,直接得到校园卡的UID数据。

这是一个POC。这段代码清晰的解释了如何从黄色数字计算出你需要的所有数据,你可以学习但你不一定能直接编译它。https://github.com/recolic/mfoc/blob/master/tools/nToData.cc

上面这段代码的输出就是校园卡的数据的前8个字节。所有的卡片的剩余数据都一模一样,你可以在https://github.com/recolic/mfoc 的template.dump找到一个模板。

Write

买到的MIFARE白卡/钥匙扣必须支持写block 0。

  • nfc-mfclassic

你可以将B改为A/a/b。具体含义见nfc-mfclassic文档。

nfc-mfclassic W B u output.dump

成功输入及输出样例。

~/t/mfoc ❯❯❯ sudo nfc-mfclassic W B u output.dump
NFC reader: RFCARD / RF1258V603 PICC Interface opened
Found MIFARE Classic card:
ISO/IEC 14443A (106 kbps) target:
    ATQA (SENS_RES): 04  00  
       UID (NFCID1): aa  aa  aa  aa  
      SAK (SEL_RES): 08  
Guessing size: seems to be a 1024-byte card
Sent bits:     50  00  57  cd  
Sent bits:     40 (7 bits)
Received bits: a (4 bits)
Sent bits:     43  
Received bits: 0a  
Card unlocked
Writing 64 blocks |................................................................|
Done, 64 of 64 blocks written.

我发现有的钥匙扣,只能写一次UID然后就被永远锁死了。一次性产品,正常现象。

Windows

商家直接送了软件,我直接放链接。驱动建议自己去ACR122U官网下载。Windows10下测试好用。

https://dl.recolic.net/res/NFCIO.zip

其中含有旧版本驱动,TagReader.exe,UIDWriter.exe。一个读一个写。

android qq聊天记录导出大致流程

tested on android 6 tencent qq

  1. 设法将/data/data/com.tencent.*/databases目录拷贝出来,我假设你了解如何做到这一点。

  2. 运行以下命令。我假设你了解如何安装/使用sqlite,我假设你了解linux基本知识。

$ sqlite3 872222222-IndexQQMsg.db
sqlite> .output /home/recolic/extraDisk/tmp/tmp.out
sqlite> select * from IndexContent_content ;
sqlite> .quit

拿到输出的文件,跑下面的这个qqmsg_decoder.py就可以了。如果你需要filter等自定义功能,我假设你了解如何使用python。

注意到这个聊天记录似乎有丢失,总觉得少了点什么。感谢补充。

qqmsg_decoder.py

#!/usr/bin/env python3
# $ sqlite3 872222222-IndexQQMsg.db
# sqlite> .output /home/recolic/extraDisk/tmp/tmp.out
# sqlite> select * from IndexContent_content ;
# sqlite> .quit

import sys
import base64
import datetime

############## User defined
def _filter(line):
    #return '111222333' in line
    #return '257112220' in line
    return True
##############

def decode_qtimestamp(s):
#    print('debug', s, file=sys.stderr)
    if s == '':
        return 0
    ts = base64.b64decode(s)[4:8]
    return sum([int(ts[i])*(256**(3-i)) for i in range(4)])

def timestamp_to_str(int_ts):
    return datetime.datetime.fromtimestamp(int_ts).strftime('%Y-%m-%d %H:%M:%S')

with open(sys.argv[1]) as f: 
    cont = f.read()

for line in cont.split('\n'):
    if line == '':
        continue
    ar = line.split('|')
    timestamp = timestamp_to_str(decode_qtimestamp(ar[-1]))
    ar = ar[:-1]
    line = '|'.join([ar[0]] + [base64.b64decode(ele.encode()).decode(errors='ignore') for ele in ar[1:]])
    line += '|' + timestamp
    if _filter(line):
        print(line)

C++11 minified rlib. usually used while writing ALG solutions.

https://github.com/recolic/rlib

rlib.min.hpp

/*
 *
 * string.hpp: string process utility.
 * Recolic Keghart <root@recolic.net>
 * MIT License
 *
 * Minified version: works on C++11.
 *
 */

#ifndef R_STRING_HPP
#define R_STRING_HPP

#include <vector>
#include <string>
#include <stdexcept>

namespace rlib {
    class string : public std::string {
    public:
        using std::string::string;
        string() : std::string() {}
        string(const std::string &s) : std::string(s) {}
        string(std::string &&s) : std::string(std::forward<std::string>(s)) {}

    private:
        template <typename T> struct as_helper {};
        template <typename T>
        T as(as_helper<T>) const {
            if(empty()) return T();
            return T(*this);
        }
        const char *as(as_helper<const char *>) const {
            return this->c_str();
        }
        std::string as(as_helper<std::string>) const {
            return std::move(*this);
        }
        rlib::string as(as_helper<rlib::string>) const {
            return std::move(*this);
        }
        char as(as_helper<char>) const {
            if(size() > 1)
                throw std::invalid_argument("Can not convert rlib::string to char: size() > 1.");
            return size() == 0 ? '' : *cbegin();
        }
        // unsigned-char conflicts with uint8_t. I'll regard it as uint8_t. ("8".as<unsigned char> == 8)
        //unsigned char as(as_helper<unsigned char>) const {
        //    return static_cast<unsigned char>(as<char>());
        //}
        bool as(as_helper<bool>) const {
            if(*this == "true") {
                return true;
            }
            else if(*this == "false") {
                return false;
            }
            // Nothing is slower than throw(); Just test more cases...
            else if(*this == "1" || *this == "True" || *this == "TRUE") {
                return true;
            }
            else if(*this == "0" || *this == "False" || *this == "FALSE") {
                return false;
            }
            throw std::invalid_argument("Can not convert rlib::string to bool. Not matching any template.");
        }

#define RLIB_IMPL_GEN_AS_NUMERIC(type, std_conv) 
        type as(as_helper<type>) const { 
            if(empty()) return 0; 
            return std::std_conv(*this); 
        }

        RLIB_IMPL_GEN_AS_NUMERIC(int, stoi)
        RLIB_IMPL_GEN_AS_NUMERIC(long, stol)
        RLIB_IMPL_GEN_AS_NUMERIC(unsigned long, stoul)
        RLIB_IMPL_GEN_AS_NUMERIC(unsigned long long, stoull)
        RLIB_IMPL_GEN_AS_NUMERIC(long long, stoll)
        RLIB_IMPL_GEN_AS_NUMERIC(float, stof)
        RLIB_IMPL_GEN_AS_NUMERIC(double, stod)
        RLIB_IMPL_GEN_AS_NUMERIC(long double, stold)

#define RLIB_IMPL_GEN_AS_ALIAS(new_type, old_type) 
        new_type as(as_helper<new_type>) const { 
            return static_cast<new_type>(as<old_type>()); 
        }

        RLIB_IMPL_GEN_AS_ALIAS(unsigned int, unsigned long)
        RLIB_IMPL_GEN_AS_ALIAS(unsigned short, unsigned long)
        RLIB_IMPL_GEN_AS_ALIAS(uint8_t, unsigned long)

        RLIB_IMPL_GEN_AS_ALIAS(short, int)
        RLIB_IMPL_GEN_AS_ALIAS(int8_t, int)

    public:
        template <typename T>
        T as() const {
            return std::forward<T>(as(as_helper<T>()));
        }

        template <typename T>
        std::vector<T> split_as(const char ÷r = ' ') const {
            const string &toSplit = *this;
            std::vector<T> buf;
            size_t curr = 0, prev = 0;
            while((curr = toSplit.find(divider, curr)) != std::string::npos) {
                buf.push_back(string(toSplit.substr(prev, curr - prev)).as<T>());
                ++curr; // skip divider
                prev = curr;
            }
            buf.push_back(string(toSplit.substr(prev)).as<T>());
            return std::move(buf);
        }
        template <typename T>
        std::vector<T> split_as(const std::string ÷r) const {
            const string &toSplit = *this;
            std::vector<T> buf;
            size_t curr = 0, prev = 0;
            while((curr = toSplit.find(divider, curr)) != std::string::npos) {
                buf.push_back(string(toSplit.substr(prev, curr - prev)).as<T>());
                curr += divider.size(); // skip divider
                prev = curr;
            }
            buf.push_back(string(toSplit.substr(prev)).as<T>());
            return std::move(buf);
        }

        template <class ForwardIterable>
        string &join(const ForwardIterable &buffer) {
            join(buffer.cbegin(), buffer.cend());
            return *this;
        }
        template <class ForwardIterator>
        string &join(ForwardIterator begin, ForwardIterator end) {
            const string &toJoin = *this;
            std::string result;
            for(ForwardIterator iter = begin; iter != end; ++iter) {
                if(iter != begin)
                    result += toJoin;
                result += *iter;
            }
            return operator=(std::move(result));
        }

        string &strip() {
            strip(" trn");
            return *this;
        }
        template <typename CharOrStringOrView>
        string &strip(const CharOrStringOrView &stripped) {
            size_t len = size();
            size_t begin = find_first_not_of(stripped);

            if(begin == std::string::npos) {
                clear();
                return *this;
            }
            size_t end = find_last_not_of(stripped);

            erase(end + 1, len - end - 1);
            erase(0, begin);
            return *this;
        }

        string &replace(const std::string &from, const std::string &to) {
            size_t _;
            replace(from, to, _);
            return *this;
        }
        string &replace(const std::string &from, const std::string &to, size_t &out_times) {
            if(from.empty())
                return *this;
            size_t start_pos = 0;
            size_t times = 0;
            while((start_pos = find(from, start_pos)) != std::string::npos)
            {
                ++times;
                this->std::string::replace(start_pos, from.length(), to);
                start_pos += to.length(); // In case 'to' contains 'from', like replacing 'x' with 'yx'
            }
            out_times = times;
            return *this;
        }
        string &replace_once(const std::string &from, const std::string &to) {
            bool _;
            replace_once(from, to, _);
            return *this;
        }
        string &replace_once(const std::string &from, const std::string &to, bool &out_replaced) {
            size_t start_pos = find(from);
            if(start_pos == std::string::npos) {
                out_replaced = false;
            }
            else {
                this->std::string::replace(start_pos, from.length(), to);
                out_replaced = true;
            }
            return *this;
        }


    };
}

#endif

#include <iostream>
#include <string>

namespace rlib {
    // This is my own hand-written library. I'm making it easy to use it directly.

    inline rlib::string scanln(std::istream &is = std::cin, char delimiter = 'n') noexcept {
        std::string line;
        std::getline(is, line, delimiter);
        return (line); // RVO
    }

    template <typename PrintFinalT>
    void print(PrintFinalT reqArg)
    {
        std::cout << reqArg;
    }
    template <typename Required, typename... Optional>
    void print(Required reqArgs, Optional... optiArgs)
    {
        std::cout << reqArgs << ' ';
        print(optiArgs ...);
    }
    template <typename... Optional>
    void println(Optional... optiArgs)
    {
        print(optiArgs ...);
        println();
    }
    template <> 
    inline void println()
    {
        //std::cout << rlib::endl;
        std::cout << std::endl;
    }
}


一键得到一个精简版的手机QQ(Android)

转发别人的。

hackqq.sh

#!/system/bin/sh

# 使用方法:
#     adb shell "curl -Ssl https://gist.githubusercontent.com/kookxiang/1104e898f270c9a7a0784f70979ec532/raw/hackQQ.sh | su"

# 使用方法 (手动):
#     0.确保你手机 Root 了
#     1.下载这个脚本到某个地方
#     2.下载 Android SDK(需要其中的 adb)
#     3.在命令行运行 adb devices,确保能看到你的手机
#     4.通过命令 adb push 这个脚本保存的路径 /sdcard/hackqq.sh 把这份脚本发送到你的手机上
#     5.运行命令 adb shell su -c bash /sdcard/hackqq.sh 执行脚本
#     6.启动你的手机 QQ 试试
#     7.如有问题重装 QQ 一般就可恢复,如需完全恢复请删除 /sdcard/tencent/MobileQQ 目录

if [ `whoami` != "root" ]; then
    echo "请用 Root 权限运行"
    exit -1
fi

clearFile(){
    echo -n > $1
    chmod 551 $1
}

removeAndCreateFile(){
    rm -rf $1
    touch $1
}

clearAndPreventWrite(){
    if [ -d $1 ]; then
        rm -rf $1/*
    else
        mkdir $1
    fi
    chmod 551 $1
}

disableComponent(){
    pm disable com.tencent.mobileqq/${1} > /dev/null
}

echo 正在停止QQ...
am force-stop com.tencent.mobileqq

echo 开始组件清理
echo "正在清理: 动态..."
disableComponent com.tencent.mobileqq.activity.LebaEnabledPluginsActivity
disableComponent com.tencent.mobileqq.activity.LebaListMgrActivity
disableComponent com.tencent.biz.lebasearch.LebaSearchPluginManagerActivity

echo "正在清理: 应用宝..."
disableComponent com.tencent.open.appcenter.QZoneAppCenterActivity
disableComponent com.tencent.open.applist.QZoneAppListActivity
disableComponent com.tencent.open.appcenter.QZoneAppWebViewActivity
disableComponent com.tencent.open.applist.WebAppActivity2

echo "正在清理: 附近的群..."
disableComponent com.tencent.mobileqq.troop.activity.NearbyTroopsActivity
disableComponent com.tencent.mobileqq.troop.activity.NearbyTroopsLocationActivity
disableComponent com.tencent.biz.troop.activity.TroopNearByBigMapActivity

echo "正在清理: 热聊..."
disableComponent com.tencent.mobileqq.troop.activity.NearbyTroopsActivity
disableComponent com.tencent.mobileqq.activity.ChatSettingForHotChat
disableComponent com.tencent.mobileqq.activity.FakeHotChatBrowserActivity
disableComponent com.tencent.mobileqq.activity.HotChatAnnounceActivity
disableComponent com.tencent.mobileqq.activity.HotChatDemoActivity
disableComponent com.tencent.mobileqq.dating.HotChatFlashPicActivity
disableComponent com.tencent.mobileqq.hotchat.HotChatMemberListActivity

echo "正在清理: QQ 游戏..."
disableComponent com.tencent.gamecenter.activities.GameCenterActivity
disableComponent com.tencent.mobileqq.cooperation.InstallGameActivity

echo "正在清理: QQ 阅读..."
disableComponent com.tencent.mobileqq.activity.BookShareAdviceEditActivity
disableComponent cooperation.qqreader.QRBridgeActivity
disableComponent cooperation.qqreader.QRHardWareActivity
disableComponent cooperation.qqreader.QRPluginProxyActivity
disableComponent cooperation.qqreader.QRReaderPageProxyActivity
disableComponent cooperation.qqreader.QRWebBrowserActivity

echo "正在清理: QQ 动漫..."
disableComponent cooperation.comic.VipComicJumpActivity
disableComponent cooperation.comic.VipComicLandReaderProxyActivity
disableComponent cooperation.comic.VipComicPlayProxyActivity
disableComponent cooperation.comic.VipComicPortraitReaderProxyActivity
disableComponent cooperation.comic.VipComicProxyActivity
disableComponent cooperation.comic.VipComicProxyActivity\$SingleTop
disableComponent cooperation.comic.VipComicTranslucentBrowserActivity

echo "正在清理: QQ 看点..."
disableComponent cooperation.qqhotspot.QQHotSpotBridgeActivity
disableComponent cooperation.qqhotspot.QQHotSpotProxyActivity
disableComponent cooperation.qqhotspot.QQHotSpotProxyActivity\$SingleTop

echo 开始清理功能组件
echo "正在清理: 好友动态..."
disableComponent cooperation.qzone.CrashNotificationActivity
disableComponent cooperation.qzone.PluginDownloadActivity
disableComponent com.tencent.mobileqq.activity.QZoneDiscoverActivity
disableComponent com.qzone.feed.ui.activity.QZoneFriendFeedActivity
disableComponent cooperation.qzone.QZoneVideoDownloadActivity
disableComponent cooperation.qzone.QzoneCommonProxyActivity
disableComponent cooperation.qzone.QzoneFeedsPluginProxyActivity
disableComponent cooperation.qzone.QzoneGPUPluginProxyActivity
disableComponent cooperation.qzone.QzoneNOGPUPluginProxyActivity
disableComponent cooperation.qzone.QzoneOrientationPluginProxyActivity
disableComponent com.tencent.mobileqq.activity.QzonePhotoModeActivity
disableComponent cooperation.qzone.QzonePictureExtPluginProxyActivity
disableComponent cooperation.qzone.QzonePicturePluginProxyActivity
disableComponent cooperation.qzone.QzonePluginProxyActivity
disableComponent cooperation.qzone.QzonePublishMoodProxyActivity
disableComponent cooperation.qzone.QzoneTransNoTitlePluginProxyActivity
disableComponent cooperation.qzone.QzoneTransWithKeyboardPluginProxyActivity
disableComponent cooperation.qzone.QzoneTranslucentGPUPluginProxyActivity
disableComponent cooperation.qzone.QzoneTranslucentPluginProxyActivity
disableComponent cooperation.qzone.video.QzoneVideoPluginProxyActivity
disableComponent cooperation.qzone.TranslucentActivity
disableComponent cooperation.qzone.debug.ServerSetting
disableComponent cooperation.qzone.debug.UploadServerSetting
disableComponent cooperation.qzone.debug.QZoneStatisticsSettingActivity

echo "正在清理: QQ 收藏..."
disableComponent cooperation.qqfav.globalsearch.FavoriteSearchActivity
disableComponent cooperation.qqfav.widget.LocationDetailActivity
disableComponent cooperation.qqfav.widget.QfavJumpActivity
disableComponent cooperation.qqfav.QfavPluginProxyActivity
disableComponent cooperation.qqfav.QfavPluginProxyActivity\$DetailProxy
disableComponent cooperation.qqfav.QfavPluginProxyActivity\$ForResult
disableComponent cooperation.qqfav.QfavPluginProxyActivity\$ImageViewer
disableComponent cooperation.qqfav.QfavPluginProxyActivity\$ScreenOrientationProxy
disableComponent cooperation.qqfav.QfavPluginProxyActivity\$SingleTop

echo "正在清理: QQ WiFi..."
disableComponent cooperation.qqwifi.QQWIFIMapProxyActivity
disableComponent cooperation.qqwifi.QQWiFiConnectProxyActivity
disableComponent cooperation.qqwifi.QQWiFiPluginInstallActivity
disableComponent cooperation.qqwifi.QQWiFiProxyActivity

echo "正在清理: 群作业..."
disableComponent cooperation.troop_homework.outer.TroopHWCommitActivity
disableComponent cooperation.troop_homework.outer.TroopHWEmptyActivity
disableComponent cooperation.troop_homework.outer.TroopHWImagePreviewActivity
disableComponent cooperation.troop_homework.outer.TroopHWRecordActivity
disableComponent cooperation.troop_homework.outer.TroopHWRecordArrangeActivity
disableComponent cooperation.troop_homework.TroopHomeworkPluginInstallerActivity
disableComponent cooperation.troop_homework.TroopHomeworkProxyActivity

echo "正在清理: 智能设备..."
disableComponent com.tencent.device.bind.DevicePluginDownloadActivity
disableComponent cooperation.smartdevice.SmartDevicePluginDownloadActivity
disableComponent cooperation.smartdevice.SmartDevicePluginProxyActivity

echo "正在清理: 微云..."
disableComponent cooperation.weiyun.AlbumBackupLaunchProxyActivity
disableComponent cooperation.weiyun.AlbumBackupProxyActivity

echo "正在清理: 水印相机..."
disableComponent cooperation.zebra.WatermarkPluginProxyActivity

echo "正在清理: 悄悄话..."
disableComponent cooperation.secmsg.SecMsgPluginProxyActivity
disableComponent cooperation.secmsg.SecMsgPluginProxyTransparentActivity

echo "正在清理: 电话黄页..."
disableComponent cooperation.huangye.HYBlankActivity
disableComponent cooperation.huangye.HYBridgeActivity
disableComponent cooperation.huangye.HYPluginProxyActivity
disableComponent cooperation.huangye.HYPluginProxyActivity\$SingleTop
disableComponent com.tencent.biz.huangye.QQYPQRCodePreviewActivity

echo "正在清理: 文件近传..."
disableComponent cooperation.qlink.QlinkAgentActivity
disableComponent com.tencent.qlink.activity.QlinkApGuidelineActivity
disableComponent cooperation.qlink.QlinkBridgeActivity
disableComponent com.tencent.qlink.activity.QlinkDefaultActivity
disableComponent cooperation.qlink.QlinkDialogActivity
disableComponent com.tencent.qlink.widget.QlinkDialogWrapper
disableComponent com.tencent.qlink.activity.QlinkDiscoverActivity
disableComponent com.tencent.qlink.activity.QlinkGuidePageActivity
disableComponent cooperation.qlink.QlinkPluginProxyActivity
disableComponent com.tencent.qlink.activity.QlinkProxyActivity
disableComponent com.tencent.qlink.activity.QlinkSearchActivity
disableComponent cooperation.qlink.QlinkShareJumpActivity
disableComponent cooperation.qlink.QlinkStandardDialogActivity
disableComponent com.tencent.qlink.activity.QlinkTransferActivity

echo "正在清理: 来电..."
disableComponent cooperation.dingdong.DingdongPluginBridgeActivity
disableComponent cooperation.dingdong.DingdongPluginProxyActivity
disableComponent cooperation.dingdong.DingdongPluginProxyActivity\$DingActivity
disableComponent cooperation.dingdong.DingdongPluginProxyActivity\$ApprovalActivity
disableComponent cooperation.dingdong.OfficeOpenBrowserActivity

echo "正在清理: 兴趣号..."
disableComponent cooperation.readinjoy.ReadInJoyPluginInstallActivity
disableComponent cooperation.readinjoy.ReadInJoyProxyActivity
disableComponent cooperation.readinjoy.ReadInJoyProxyActivity\$ReadInJoyLandscapeActivity
disableComponent cooperation.readinjoy.ReadInJoyProxyActivity\$ReadInJoyStartActivity
disableComponent com.tencent.biz.pubaccount.readinjoy.activity.ReadInJoyAccountDetailActivity
disableComponent com.tencent.biz.pubaccount.readinjoy.activity.ReadInJoyArticleDetailActivity
disableComponent com.tencent.biz.pubaccount.readinjoy.activity.ReadInJoyFeedsActivity

echo "正在清理: 新鲜事..."
disableComponent com.tencent.mobileqq.freshnews.FreshNewsDetailActivity
disableComponent com.tencent.mobileqq.activity.FreshNewsEditActivity
disableComponent com.tencent.mobileqq.freshnews.MyFreshNewsActivity
disableComponent com.tencent.mobileqq.freshnews.topic.NearbyTopicFeedActivity

echo "正在清理: C2B..."
disableComponent cooperation.c2b.C2BBrowserActivity
disableComponent cooperation.c2b.C2BScanCodeActivity
disableComponent cooperation.c2b.C2BTakePhotoActivity
disableComponent cooperation.c2b.C2BUploadFileActivity
disableComponent cooperation.c2b.C2BUploadImageActivity
disableComponent cooperation.c2b.C2BVideoPreviewActivity

echo "正在清理: 热点..."
disableComponent cooperation.qqhotspot.QQHotSpotBridgeActivity
disableComponent cooperation.qqhotspot.QQHotSpotProxyActivity
disableComponent cooperation.qqhotspot.QQHotSpotProxyActivity\$SingleTop

echo "正在清理: 短视频..."
disableComponent com.tencent.mobileqq.activity.shortvideo.MX3ShortVideoOpenGlActivity
disableComponent com.tencent.mobileqq.activity.shortvideo.SendVideoActivity
disableComponent com.tencent.mobileqq.activity.shortvideo.ShortVideoOpenGlActivity
disableComponent com.tencent.mobileqq.activity.shortvideo.ShortVideoPlayActivity
disableComponent com.tencent.mobileqq.activity.shortvideo.ShortVideoPlayerActivity
disableComponent com.tencent.mobileqq.activity.shortvideo.ShortVideoPreviewActivity

echo "正在清理: 个性装扮..."
disableComponent com.tencent.mobileqq.activity.IndividuationSetActivity
disableComponent com.tencent.mobileqq.vas.AvatarPendantMarketActivity
disableComponent com.tencent.mobileqq.vas.ChatBackgroundMarketActivity
disableComponent com.tencent.mobileqq.activity.QQVasH5PayBrowserActivity
disableComponent com.tencent.mobileqq.theme.diy.ThemeDIYActivity
disableComponent com.tencent.mobileqq.activity.ThemeDownloadAndSetActivity
disableComponent com.tencent.mobileqq.activity.ThemeNoviceGuideActivity
disableComponent com.tencent.mobileqq.activity.ThemeSwitchDlgActivity

echo "正在清理: 个性签名..."
disableComponent com.tencent.mobileqq.richstatus.ActionGridActivity
disableComponent com.tencent.mobileqq.richstatus.ActionListActivity
disableComponent com.tencent.mobileqq.richstatus.ActionUrlActivity
disableComponent com.tencent.mobileqq.richstatus.EditActivity
disableComponent com.tencent.mobileqq.richstatus.MovieDetailActivity
disableComponent com.tencent.mobileqq.richstatus.StatusHistoryActivity

echo "正在清理: 附近..."
disableComponent com.tencent.mobileqq.nearby.interestTag.ChooseInterestTagActivity
disableComponent com.tencent.mobileqq.nearby.myvistor.MyVistorListActivity
disableComponent com.tencent.mobileqq.activity.NearPeopleActivity
disableComponent com.tencent.mobileqq.activity.NearPeopleFilterActivity
disableComponent com.tencent.mobileqq.activity.NearbyBaseActivity
disableComponent com.tencent.mobileqq.nearby.NearbyFlowerInfoActivity
disableComponent com.tencent.mobileqq.nearby.guide.NearbyGuideActivity
disableComponent com.tencent.mobileqq.nearby.profilecard.NearbyPeopleProfileActivity
disableComponent com.tencent.mobileqq.nearby.picbrowser.NearbyPicBrowserActivity
disableComponent com.tencent.mobileqq.nearby.picbrowser.NearbyProfilePicBrowserActivity
disableComponent com.tencent.mobileqq.activity.qqcard.NearbyQQCardActivity
disableComponent com.tencent.mobileqq.nearpeople.ranking.ShowLoveEditorActivity

echo "正在清理: 约会..."
disableComponent com.tencent.mobileqq.dating.DateEventMsgActivity
disableComponent com.tencent.mobileqq.dating.DatingDestinationActivity
disableComponent com.tencent.mobileqq.dating.DatingDetailActivity
disableComponent com.tencent.mobileqq.dating.DatingFeedActivity
disableComponent com.tencent.mobileqq.dating.DatingFilterActivity
disableComponent com.tencent.mobileqq.dating.DatingOthersActivity
disableComponent com.tencent.mobileqq.dating.DatingTopListActivity
disableComponent com.tencent.mobileqq.dating.DatingUserCenterActivity
disableComponent com.tencent.mobileqq.dating.HotChatFlashPicActivity
disableComponent com.tencent.mobileqq.dating.MsgBoxListActivity
disableComponent com.tencent.mobileqq.dating.NearbyTransitActivity
disableComponent com.tencent.mobileqq.dating.PublicDatingActivity
disableComponent com.tencent.mobileqq.dating.SayHelloMsgListActivity

echo "正在清理: 安全检测..."
disableComponent com.tencent.mobileqq.activity.SecurityDetectActivity
disableComponent com.tencent.mobileqq.activity.SecurityLoginDetectActivity
disableComponent com.tencent.mobileqq.activity.SecurityPickproofActivity
disableComponent com.tencent.mobileqq.activity.SecurityProtectActivity
disableComponent com.tencent.securemodule.ui.TransparentActivity
disableComponent com.tencent.mobileqq.activity.QQSpaceCleanActivity

echo "正在清理: 送花..."
disableComponent com.tencent.mobileqq.activity.bless.BlessActivity
disableComponent com.tencent.mobileqq.activity.BlessPTVActivity
disableComponent com.tencent.mobileqq.activity.bless.BlessResultActivity
disableComponent com.tencent.mobileqq.activity.bless.BlessSendTextActivity
disableComponent com.tencent.mobileqq.activity.bless.BlessTypeActivity

echo 开始流氓服务清理
echo "正在停用: 毒瘤服务..."
disableComponent com.tencent.mobileqq.app.CoreService
disableComponent com.tencent.mobileqq.app.CoreService\$KernelService

echo "正在停用: 好友动态..."
disableComponent com.tencent.mobileqq.app.CoreService
disableComponent com.tencent.mobileqq.app.CoreService\$KernelService
disableComponent cooperation.qzone.QzonePictureViewerProxyService
disableComponent cooperation.qzone.video.QzoneVideoPluginProxyService
disableComponent cooperation.qzone.QzonePluginProxyService
disableComponent cooperation.qzone.remote.logic.QzoneWebPluginProxyService
disableComponent cooperation.qzone.QzonePluginPublishQueueProxyService
disableComponent com.tencent.mobileqq.pluginsdk.ipc.PluginRemoteService$Sub1
disableComponent com.tencent.mobileqq.pluginsdk.ipc.PluginRemoteService$Sub2

echo "正在停用: QQ WiFi..."
disableComponent cooperation.qqwifi.QQWiFiAssistService
disableComponent cooperation.qqwifi.QQWiFiAutoJumpService

echo "正在停用: 插件服务..."
disableComponent cooperation.smartdevice.ipc.BluetoothLeProxyService
disableComponent cooperation.smartdevice.ipc.SmartDeviceProxyService
disableComponent cooperation.huangye.ipc.HYProxyService
disableComponent cooperation.qqhotspot.ipc.QQHotSpotProxyService
disableComponent cooperation.qlink.QlinkPluginProxyService
disableComponent cooperation.secmsg.SecMessagerService
disableComponent cooperation.troop_homework.ipc.TroopHomeworkProxyService
disableComponent cooperation.comic.VipComicProxyService
disableComponent com.tencent.mobileqq.music.QQPlayerService

echo "正在停用: 安全登录检查..."
disableComponent com.tencent.securemodule.impl.SecureService

echo "正在停用: 联系人同步..."
disableComponent com.tencent.mobileqq.contactsync.authenticator.AuthenticationService
disableComponent com.tencent.mobileqq.service.contactsync.ContactSyncPluginProxyService

echo "正在停用: 附近..."
disableComponent com.tencent.mobileqq.nearby.ipc.ConnectNearbyProcService

echo "正在停用: 腾讯寻找丢失儿童项目..."
disableComponent com.tencent.device.qfind.BluetoothLeService

echo 正在断开消息接收器
echo "正在禁用: 后台自启..."
disableComponent com.tencent.mobileqq.msf.core.NetConnInfoCenter

echo "正在禁用: QQ 空间..."
disableComponent cooperation.qzone.NotificationClickReceiver

echo "正在禁用: QQ WiFi..."
disableComponent cooperation.qqwifi.AutoConnectReceiver

echo "正在禁用: 系统报告..."
disableComponent com.tencent.open.business.base.appreport.AppReportReceiver

echo "正在禁用: 崩溃报告..."
disableComponent com.tencent.mobileqq.redtouch.RedPointBroadcastReceiver
disableComponent com.tencent.mobileqq.statistics.ReportReceiver
disableComponent com.tencent.mobileqq.statistics.UECReceiver
disableComponent com.tencent.mobileqq.activity.qwallet.report.VACDReportReceiver

echo "正在禁用: 插件崩溃报告..."
disableComponent cooperation.plugin.PluginCrashReceiver

echo "正在禁用: 插件相关..."
disableComponent cooperation.qzone.QzoneProxyReceiver
disableComponent cooperation.dingdong.DingdongPluginProxyBroadcastReceiver
disableComponent cooperation.photoedit.PhotoEditProxyReceiver
disableComponent cooperation.qqreader.QRAioCmdReceiver
disableComponent cooperation.qqfav.QfavPluginProxyReceiver
disableComponent cooperation.comic.VipProxyPreLoadComicProcess
disableComponent cooperation.qqreader.VipProxyRreLoadReaderProcess
disableComponent cooperation.weiyun.WeiyunProxyBroadcastReceiver
disableComponent cooperation.qwallet.plugin.QWalletProxyReceiver

echo "正在禁用: 主题相关..."
disableComponent com.tencent.mobileqq.statistics.UECReceiver

echo 正在清理 Data Provider
disableComponent cooperation.qqfav.content.FavoritesProvider
disableComponent cooperation.readinjoy.content.ReadInJoyDataProvider

if [ -d /sdcard/tencent/MobileQQ/.pendant ]; then
    echo 去除头像挂件
    removeAndCreateFile /sdcard/tencent/MobileQQ/.pendant
fi

if [ -d /sdcard/tencent/MobileQQ/.signatureTemplate ]; then
    echo 去签名气泡
    removeAndCreateFile /sdcard/tencent/MobileQQ/.signatureTemplate
fi

if [ -d /sdcard/tencent/MobileQQ/.custom_background ]; then
    echo 去自定义主题
    removeAndCreateFile /sdcard/tencent/MobileQQ/custom_background
fi

if [ -n /data/data/com.tencent.mobileqq/files/SensMsgTipsCfg.xml ]; then
    echo 去聊天蓝字
    clearFile /data/data/com.tencent.mobileqq/files/SensMsgTipsCfg.xml
fi

if [ -n "$(ls -a /data/data/com.tencent.mobileqq/files/bubble_info)" ]; then
    echo 去聊天气泡
    rm -rf /data/data/com.tencent.mobileqq/files/bubble_info/*
    chmod 0 /data/data/com.tencent.mobileqq/files/bubble_info
fi

if [ -d /sdcard/tencent/mobileQQ/font_info ]; then
    echo 去聊天字体
    removeAndCreateFile /sdcard/tencent/mobileQQ/font_info
fi

if [ -n "$(ls -a /data/data/com.tencent.mobileqq/files/splashpic)" ]; then
    echo 去启动图片
    clearAndPreventWrite /data/data/com.tencent.mobileqq/files/splashpic
fi

if [ -n /data/data/com.tencent.mobileqq/files/recommendEmotion.json ]; then
    echo 去除推荐表情包
    clearFile /data/data/com.tencent.mobileqq/files/recommemd_emotion_file_*
    clearFile /data/data/com.tencent.mobileqq/files/magic_promotion_*.json
    clearFile /data/data/com.tencent.mobileqq/files/recommendEmotion.json
fi

if [ -n "$(ls -a /data/data/com.tencent.mobileqq/app_qqwifi_dir)" ]; then
    echo 禁用 QQ Wifi
    clearAndPreventWrite /data/data/com.tencent.mobileqq/app_qqwifi_dir
    clearAndPreventWrite /data/data/com.tencent.mobileqq/app_qqwifi_jar_storage_name
    clearAndPreventWrite /data/data/com.tencent.mobileqq/app_qqwifi_jarinfo_storage_name
fi

if [ -f /data/data/com.tencent.mobileqq/app_installed_plugin/qzone_live_video_plugin_hack.apk ]; then
    echo 卸载插件 - QQ 空间小视频插件
    rm -rf /data/data/com.tencent.mobileqq/app_installed_plugin/qzone_live_video_plugin_hack.apk
fi

if [ -f /data/data/com.tencent.mobileqq/app_installed_plugin/qzone_plugin.apk ]; then
    echo 卸载插件 - QQ 空间
    rm -rf /data/data/com.tencent.mobileqq/app_installed_plugin/qzone_plugin.apk.cfg
    rm -rf /data/data/com.tencent.mobileqq/app_installed_plugin/qzone_plugin.apk
fi

if [ -f /data/data/com.tencent.mobileqq/app_installed_plugin/qqfav.apk ]; then
    echo 卸载插件 - QQ 收藏
    rm -rf /data/data/com.tencent.mobileqq/app_installed_plugin/qqfav.apk.cfg
    rm -rf /data/data/com.tencent.mobileqq/app_installed_plugin/qqfav.apk
fi

if [ -f /data/data/com.tencent.mobileqq/app_installed_plugin/comic_plugin.apk ]; then
    echo 卸载插件 - QQ 漫画
    rm -rf /data/data/com.tencent.mobileqq/app_installed_plugin/comic_plugin.apk.cfg
    rm -rf /data/data/com.tencent.mobileqq/app_installed_plugin/comic_plugin.apk
fi

if [ -f /data/data/com.tencent.mobileqq/app_installed_plugin/qlink_plugin.apk ]; then
    echo 卸载插件 - QQ 互连
    rm -rf /data/data/com.tencent.mobileqq/app_installed_plugin/qlink_plugin.apk.cfg
    rm -rf /data/data/com.tencent.mobileqq/app_installed_plugin/qlink_plugin.apk
fi

if [ -f /data/data/com.tencent.mobileqq/app_installed_plugin/qqreaderplugin.apk ]; then
    echo 卸载插件 - QQ 阅读
    rm -rf /data/data/com.tencent.mobileqq/app_installed_plugin/qqreaderplugin.apk.cfg
    rm -rf /data/data/com.tencent.mobileqq/app_installed_plugin/qqreaderplugin.apk
fi

if [ -f /data/data/com.tencent.mobileqq/app_installed_plugin/secmsg_plugin.apk ]; then
    echo 卸载插件 - QQ 悄悄话
    rm -rf /data/data/com.tencent.mobileqq/app_installed_plugin/secmsg_plugin.apk.cfg
    rm -rf /data/data/com.tencent.mobileqq/app_installed_plugin/secmsg_plugin.apk
fi

if [ -f /data/data/com.tencent.mobileqq/app_installed_plugin/qqsmartdevice.apk ]; then
    echo 卸载插件 - QQ 智能设备
    rm -rf /data/data/com.tencent.mobileqq/app_installed_plugin/qqsmartdevice.apk.cfg
    rm -rf /data/data/com.tencent.mobileqq/app_installed_plugin/qqsmartdevice.apk
fi

if stat -c %A /data/data/com.tencent.mobileqq/app_installed_plugin | grep w > /dev/null; then
    echo 锁定插件文件夹
    chmod 551 /data/data/com.tencent.mobileqq/app_installed_plugin
fi

[tampermonkey] SB中国银行网银购汇不用等30秒看sb购汇申请书。一键安装:https://openuserjs.org/users/recolic/scripts

fuckboc.user.js

// ==UserScript==
// @name         FUCK BankOfChina By USD from CNY 30 seconds wait.
// @namespace    https://recolic.net/
// @version      0.1
// @description  If you buy other concurrency on www.boc.cn, you have to wait 30 seconds to read a document. I fucked it.
// @author       Recolic Keghart <root@recolic.net>
// @match        https://ebsnew.boc.cn/boc15/welcome.html*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';


    //document.getElementById('btn_confirm_456444').classList.remove('btn-red-disabled');
    document.getElementById('content').addEventListener("mouseenter", function(){
        document.getElementById('btn_confirm_456444').classList.remove('btn-red-disabled');
    }, false);
    /*window.addEventListener('load', function() {
        alert('hi3');
    }, false);
    alert('fuck');*/

})();