首页
友链
壁纸
留言
今日热榜
更多
关于
时光
推荐
精品流量卡
Search
1
都二十多年了,你的梦为什么还没碎!
57,089 阅读
2
2022年5个好用的 BT/ 磁力链接下载工具推荐 |Windows 、安卓系统
37,376 阅读
3
nps内网穿透实现外网访问树莓派
32,425 阅读
4
实践利用宝塔建emlog个人博客-超详细【原创】
26,132 阅读
5
Typecho-Joe-Theme主题帮助文档
24,623 阅读
闲杂乱码
Python
网站源码
微信小程序
娱乐分享
Is相册
软件工具
登录
Search
标签搜索
PHP
HTML
API
Javascript
源码
JS
Vue
Github
CloudFlare
接口
函数
SQL
ASP.NET
MVC
EF
T4模板
后台管理
CDN
微信小程序
MAC
韩小韩
累计撰写
262
篇文章
累计收到
1,303
条评论
首页
栏目
闲杂乱码
Python
网站源码
微信小程序
娱乐分享
Is相册
软件工具
页面
友链
壁纸
留言
今日热榜
关于
时光
推荐
精品流量卡
搜索到
4
篇与
python
的结果
2022-11-25
简单逆向某色情网站图片加密(原创)
{message type="info" content="今天,一Py哥们为民除害爬取某色情网站的时候,遇到了一点点小问题,关于色色电影列表中视频封面数据的问题,我简单的看了一下,我也是第一次见到这种,挺有意思的封面图片渲染,所以单拉出来我们一起来看看!"/}图片地址SRC{callout color="#f0ad4e"}审查元素查看图片地址是 Base64 地址,并不是网络地址,不会被墙,根据用户网速加载,不占用服务器带宽,挺好的。控制台的数据是没有任何问题的,然后又看了一下源代码。{/callout}IMG标签中的Origanal数据{callout color="#f0ad4e"}我从源代码中查看 IMG 标签并没有发现 SRC 属性,但是看到了一个有意思的属性,data-origanal,直觉告诉我,这个数据并不简单,然后我分页加载了一下视频看到加载图片时会加载data-origanal对应的TXT文件。{/callout}{callout color="#f0ad4e"}当我打开TXT文件看了一下其中的数据,第一眼的感觉就是Base64加密数据,呀,太简单了,肯定是图片的Base64地址,我立马和封面的Base64图片地址对比一看,一点都不一样!我又想了一下,难道是图片地址再Base64了一下?然后我继续Base64解密了一下。{/callout}{callout color="#f0ad4e"}乱七八糟,这不是Base64数据,那肯定就是AES加密咯,一个色情网站怎么还花里胡哨!{/callout}JS文件简单剖析{callout color="#f0ad4e"}全局搜索了一下 data-origanal 和 origanal关键词,,发现了其中一个文件并找打了有关的函数,利用Ajax请求获取TXT文静中的数据,然后并传入一个函数进行解密。{/callout}{callout color="#f0ad4e"}继续搜索关键词 desDecrypt 找到了一个eval加密JS文件。{/callout}{callout color="#f0ad4e"}简单解密了一下,取到了原始函数,截取我们主要用到的两个函数,一个加密,一个解密,如下。{/callout}// 秘钥 let asc_key = "jeH3O1VX"; let base_lv = "nHnsU4cX"; // 加密 function desEncrypt(a) { let tmpiv = CryptoJS.enc.Utf8.parse(base_lv); let key = CryptoJS.enc.Utf8.parse(asc_key); var b = CryptoJS.AES.encrypt(a, key, { iv: tmpiv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7, formatter: CryptoJS.format.OpenSSL, }); return b.ciphertext.toString(CryptoJS.enc.Base64); } // 解密 function desDecrypt(a) { a = a.replace(/\s*/g, ""); let tmpiv = CryptoJS.enc.Utf8.parse(base_lv); var b = CryptoJS.enc.Utf8.parse(asc_key); var c = CryptoJS.DES.decrypt( { ciphertext: CryptoJS.enc.Base64.parse(a) }, b, { iv: tmpiv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7, formatter: CryptoJS.format.OpenSSL, } ); return c.toString(CryptoJS.enc.Utf8); }{callout color="#f0ad4e"}执行函数并调用了一下解密函数,手动传入了TXT文件中AES加密的数据,并取到了封面图片IMG标签的SRC地址。{/callout}个人看法{callout color="#f0ad4e"}从文件数据的加密解密还是JS中关键函数的eval加密来说,整体流程走下来,没有任何难度,连麻烦都算不上,怎么说呢,他是用心了还是没用心,我也说不上来。但这个图片渲染的方式我还是第一次见。如果这个加密如果是为了防爬,我个人认为简直太弱了。从图片地址加密前后对比来说,加密后的图片地址,也就是TXT文件中的数据比原始图片地址数据大了好多,是挺鸡肋的。{/callout}总结{callout color="#f0ad4e"}今天发现了一个挺有意思的小东西~{/callout}
2022年11月25日
1,381 阅读
21 评论
6 点赞
2022-08-24
FFMPEG视频切片TS文件添加PNG文件头伪图片上传
{message type="info" content="在这个图床泛滥的时代,不能白白浪费那么那么那么多免费的图床!总想着做点什么,想来想去,只想把我好多好多无处可放的视频传上去,可是图床它并不能上传视频。思来想去,图床只能上传图片嘛?为什么它知道我是图片?我想!并不是!看来看去,噢,原来只要把文件头改成图片HEAD头就OK,我说它是图片它就是图片!图片改头换面伪装大法现在开始~"/}前期准备{callout color="#f0ad4e"}FFmpeg 并配置环境变量(不会的话百度一下 你知道~){/callout}{cloud title="FFmpeg 官网下载" type="default" url="https://www.gyan.dev/ffmpeg/builds/" password=""/}{callout color="#f0ad4e"}python 环境 (自行安装,不会的话,百度一下噢~){/callout}{cloud title="Python 官网下载" type="default" url="https://www.python.org/downloads/" password=""/}整体步奏对MP4视频文件转换单TS文件对单TS文件切割成多个TS切片文件并生成M3U8文件对TS文件进行 "偷天换日 改头换面" 伪图片处理上传任意图床取 "PNG" 文件地址最后预览视频{callout color="#f0ad4e"}国外图床 测试可正常播放(视频质量过高,且国外CDN,速度加载较慢,国内图床无敌!){/callout}{dplayer src="https://jsd.onmicrosoft.cn/gh/uxiaohan/GitImgTypecho@master/usr/uploads/2022/08/index.m3u8"/}开始 Start{callout color="#f0ad4e"}Python 脚本博主已经写好,一键处理,方便至简!!!!{/callout}代码片段{callout color="#f0ad4e"}标准mp4视频转TS文件{/callout}# Mp4 文件名字 不需要加 .mp4 后缀 vName = 'SaiBoPengKe' cmd_str = f'ffmpeg -y -i {vName}.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb {vName}.ts' subprocess.run(cmd_str, encoding="utf-8", shell=True) print(f'标准 Mp4 转换到 TS 成功!'){callout color="#f0ad4e"}TS单文件切片{/callout}filePath = f'./{vName}' if os.path.exists(filePath) == False: os.makedirs(filePath) cmd_str = f'ffmpeg -i {vName}.ts -c copy -map 0 -f segment -segment_list ./{vName}/index.m3u8 -segment_time 2 ./{vName}/output%03d.ts' subprocess.run(cmd_str, encoding="utf-8", shell=True) print(f'TS 切片 成功!'){callout color="#f0ad4e"}TS切片文件批量重命名为PNG{/callout}file_list = os.listdir(filePath) for i in file_list: if i.endswith(".ts"): new_name = i.replace(".ts", ".png") os.rename(f'{filePath}/' + i, f'{filePath}/' + new_name) print("TS重命名为PNG 成功!"){callout color="#f0ad4e"}TS切片 偷天换日 改头换面 添加PNG文件头{/callout}file_list = os.listdir(filePath) rewritePath = f'{filePath}Png/' if os.path.exists(rewritePath) == False: os.makedirs(rewritePath) for i in file_list: if i.endswith(".png"): copyfile("PNG", f'{rewritePath}/' + i) else: copyfile(f'{filePath}/' + i, f'{rewritePath}/' + i) file_list = os.listdir(rewritePath) for i in file_list: if i.endswith(".png"): bin_file = open(f'{filePath}/' + i, 'rb') # 打开二进制文件 # 合并文件 with open(f'{rewritePath}/' + i, 'ab') as f: f.write(bin_file.read()) bin_file.close() print("PNG元数据转PNG-TS 成功!") os.remove(f'{vName}.ts') shutil.rmtree(filePath) print("临时文件删除成功"){callout color="#f0ad4e"}这里需要一个 PNG 文件头,可自己自定义,上传后伪图片文件可显示博主提供一个做好的{/callout}{callout color="#f0ad4e"}PNG头部HEAD数据16进制{/callout}89504E470D0A1A0A0000000D494844520000007C0000007508060000008C118576000000017352474200AECE1CE90000000467414D410000B18F0BFC6105000000097048597300000EC300000EC301C76FA8640000011049444154785EEDD10101000008C320FB97BE411815B8855238A6704CE198C23185630AC7148E29{cloud title="PNG头文件下载" type="lz" url="https://ohan.lanzouv.com/i4PL80a5vgoh" password=""/}代码整合脚本# utf-8 import subprocess import os import shutil from shutil import copyfile # Mp4 文件名字 vName = 'sbpk' # 标准mp4转TS格式------------------------------------------------------------------------------ cmd_str = f'ffmpeg -y -i {vName}.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb {vName}.ts' subprocess.run(cmd_str, encoding="utf-8", shell=True) print(f'标准 Mp4 转换到 TS 成功!') # TS切片------------------------------------------------------------------------------ filePath = f'./{vName}' if os.path.exists(filePath) == False: os.makedirs(filePath) cmd_str = f'ffmpeg -i {vName}.ts -c copy -map 0 -f segment -segment_list ./{vName}/index.m3u8 -segment_time 2 ./{vName}/output%03d.ts' subprocess.run(cmd_str, encoding="utf-8", shell=True) print(f'TS 切片 成功!') # TS重命名为PNG------------------------------------------------------------------------------ file_list = os.listdir(filePath) for i in file_list: if i.endswith(".ts"): new_name = i.replace(".ts", ".png") os.rename(f'{filePath}/' + i, f'{filePath}/' + new_name) print("TS重命名为PNG 成功!") # PNG文件添加PNG文件头------------------------------------------------------------------------------ file_list = os.listdir(filePath) rewritePath = f'{filePath}Png/' if os.path.exists(rewritePath) == False: os.makedirs(rewritePath) for i in file_list: if i.endswith(".png"): copyfile("PNG", f'{rewritePath}/' + i) else: copyfile(f'{filePath}/' + i, f'{rewritePath}/' + i) file_list = os.listdir(rewritePath) for i in file_list: if i.endswith(".png"): bin_file = open(f'{filePath}/' + i, 'rb') # 打开二进制文件 # 合并文件 with open(f'{rewritePath}/' + i, 'ab') as f: f.write(bin_file.read()) bin_file.close() print("PNG元数据转PNG-TS 成功!") os.remove(f'{vName}.ts') shutil.rmtree(filePath) print("临时文件删除成功"){message type="info" content="我刚测试成功,立马发文,快去试试吧~"/}
2022年08月24日
2,089 阅读
8 评论
2 点赞
2022-07-27
按照图片尺寸自动分类 手机分辨率 电脑分辨率 python脚本
# coding=utf-8 """ 功能:按图片的尺寸大小进行分类 区分 电脑分辨率图片 手机分辨率图片 """ import os import shutil from PIL import Image # 定义一个分类函数,函数括号中为需要分类的图片文件夹路径 def photo_classify(files_path): # 读取文件夹中所有文件的名称 files_list = os.listdir(files_path) # 循环文件夹中的所有文件 for photo in files_list: # 获取图片的绝对路径 photo_abspath = os.path.join(files_path, photo) # print(photo_abspath) # 判断photo是不是文件夹,若是文件夹则跳过,若不是文件夹则继续执行 if os.path.isdir(photo_abspath): continue else: # 读图片的尺寸 img = Image.open(photo_abspath) # 取图片宽度 weight = img.size[0] # 取图片高度 high = img.size[1] # 对比图片宽高 if weight > high: # 根据图片尺寸Copy文件到新目录 PC new_paths = os.path.join(r'D:\Download\pc', photo) shutil.copyfile(photo_abspath, new_paths) print('pc') else: # 根据图片尺寸Copy文件到新目录 Mobil new_paths = os.path.join(r'D:\Download\mobil', photo) shutil.copyfile(photo_abspath, new_paths) print('mobil') img.close() # 转移完毕后 删除原文件 os.remove(photo_abspath) print('分类成功!') # 图片目录 files_path = r'D:\Download\meinv' if __name__ == '__main__': photo_classify(files_path)
2022年07月27日
508 阅读
4 评论
2 点赞
2021-03-12
腾讯视频自动签到脚本
吐槽:该死的 TX 视频不能自动增长成长值了!必须要自己手动签到.签到页面还难找,麻烦的要死.那么弄个脚本自动签到一下吧.我快一年好莱坞会员 6 了一直升级不到 7.估计得挂一年才到 7.坑!准备cookie腾讯云函数开始1.先按下F12,登录腾讯视频https://v.qq.com,扫码,账号密码登录都可以.2.找到下面的链接https;//access.video.qq,com/user/auth_refresh?vappid=&vsecret=&type=qq&g_tk=&g_vstk=&g_actk=&callback=jQuery_1581095328109&_=1*然后复制这个链接到记事本里(一会用到)然后把 cookie复制出来把上面的 链接 和 cookie 放在记事本里(一会用到)3.登录腾讯云,找到腾讯云函数(https://console.cloud.tencent.com/scf/list).4.点击下一步直接复制下面代码,各式不要变,替换刚刚复制的链接和cookie即可。# coding: utf-8 import requests import sys reload(sys) sys.setdefaultencoding('utf8') def start(): login_headers = { 'Referer': 'https://v.qq.com', 'Cookie': 'tvfe_boss_uuid=****************; video_guid=****************; video_platform=2; pgv_pvid=****************; pgv_info=ssid=****************; RK=7tisrTqPWm; ptcz=****************; main_login=qq; vqq_access_token=****************; vqq_appid=****************; vqq_openid=****************; vqq_vuserid=170104213; vqq_vusession=****************..; vqq_refresh_token=****************; login_time_init=2021-3-12 9:3:43; vqq_next_refresh_time=6597; vqq_login_time_init=****************; login_time_last=2021-3-12 9:3:47; uid=****************' } login = requests.get('https://access.video.qq.com/user/auth_refresh?vappid=****************&vsecret=****************&type=qq&g_tk=&g_vstk=****************&g_actk=****************&callback=****************&_=****************', headers=login_headers) cookie = requests.utils.dict_from_cookiejar(login.cookies) sign_headers = { 'Cookie': 'tvfe_boss_uuid=****************; video_guid=****************; video_platform=2; pgv_pvid=****************; pgv_info=ssid=****************; RK=****************; ptcz=**********************; main_login=qq; vqq_access_token=****************; vqq_appid=****************; vqq_openid=****************; vqq_vuserid=170104213; vqq_vusession='+cookie['vqq_vusession']+';' } sign = requests.get( 'https://vip.video.qq.com/fcgi-bin/comm_cgi?name=hierarchical_task_system&cmd=2', headers=sign_headers).text if 'Account Verify Error' in sign: print 'Sign error,Cookie Invalid' requests.get('https://sc.ftqq.com/你的方糖的key.send?text=%e7%ad%be%e5%88%b0%e5%a4%b1%e8%b4%a5&desp=%e7%ad%be%e5%88%b0%e5%a4%b1%e8%b4%a5%ef%bc%8cCookie%e5%a4%b1%e6%95%88') else: print 'Sign Success' requests.get('https://sc.ftqq.com/你的方糖的key.send?text=%e7%ad%be%e5%88%b0%e6%88%90%e5%8a%9f%ef%bc%8c%e8%8e%b7%e5%be%97%e5%88%86%e6%95%b0%ef%bc%9a' + sign[42:-14]+'&desp=%e7%ad%be%e5%88%b0%e6%88%90%e5%8a%9f%ef%bc%8c%e8%8e%b7%e5%be%97%e5%88%86%e6%95%b0%ef%bc%9a'+sign[42:-14]) def main_handler(event, context): return start() if __name__ == '__main__': start()替换"cookie"为你刚才存到记事本的 cookie(第二个 cookie 变量别覆盖了),替换 SCKEY 为你的 KEY,server 酱(为了微信通知)的地址,申请地址:http://sc.ftqq.com/5.点击完成定时执行.或者每天的凌晨 3 点自动执行自定义周期 0 0 3 测试一下.有可能返回 null ,登陆自己的腾讯视频,看看有没有签到,如果签到了,就是OK的!视频教程{dplayer src="https://d0.ananas.chaoxing.com/download/8861d8b91419a21d745aa32aa8dd8454?at_=1615515823053&ak_=bc6a453748c428eabb5a51ae2f9a3601&ad_=a8e6211cf2970ed19c273163cf50df03"/}
2021年03月12日
2,718 阅读
4 评论
3 点赞