在你的首页添加个tgchannel链接

就比如我这首页一样。之前只做了嵌入和反代,没有反代资源,一开始还觉得好好的,但是我这个24h墙外用户,突然有一天没关梯子就上来,看到css什么样式全都爆炸了,所以赶快就修了。感谢鸟姐的nginx的配置文件,咱就直接抄过来了

原理

1.反代 ,用于消除telegram.org的X-Frame-Options,让它可以嵌入到你的iframe中。以及反代些资源让墙内用户可以看到
2.iframe嵌入

第一步,反代

首先你得拥有一个tgchannel,然后去访问他的网页版,网页版地址是https://t.me/s/你的频道名称,我的频道是

https://t.me/s/bie_channel

之后打开在你的nginx配置文件中,新建一个location,随便找个地方,我是直接新建了个other.9bie.org用来作为反代。

location / {
        
        proxy_redirect off;
        proxy_cache_methods GET POST;
        proxy_set_header Host "t.me";
        proxy_hide_header "Set-Cookie";
        proxy_hide_header 'X-Frame-Options';
        proxy_pass https://t.me/s/bie_channel;}

这样一个反代就配置完成了,如果只针对墙外用户的话那么到这里差不多就结束了。
但是针对墙内用户你会发现iframe里面的地址,比如telegram.org等指向css/js的地址是无法访问的,导致墙内用户会丢样式。
于是我们得把这些css/js也得反代了。

location ^~/js/ {
        proxy_pass https://telegram.org/js/;
        proxy_redirect off;
        proxy_set_header Host "telegram.org";
  }
  location ^~ /css/ {
        proxy_pass https://telegram.org/css/;
        proxy_redirect off;
        proxy_set_header Host "telegram.org";
  }
  location ^~/file/ {
        proxy_pass https://cdn5.telesco.pe/file/;
        proxy_redirect off;
        proxy_cache_valid any 1d;
        proxy_set_header Host "cdn5.telesco.pe";
        expires @1d;
  }

修改了这些还不够,我们还得把页面内部的数据给替换掉了,这里就设计到了一个东西sub_filter,这是nginx自带的一个扩展,用于替换页面内的数据,用法是

sub_filter [原数据] [被替换数据]

你得使用nginx -V (注意大写),查看自己的nginx是否安装了这个扩展

TIM截图20200409173905.png
查看是否有--with-http_sub_module,如果有就直接忽略下面几行,如果没有
你需要吧configure arguments:后面的内容全部复制下来,然后查看nginx版本,下载相同版本的源代码。
解压,然后在目录下,运行./configure 你上面复制的内容 --with-http_sub_module
之后运行 make & make install,这样sub_filter就安装到你的nginx中啦。

之后,只需要修改前面的location /的内容,添加如下几行

proxy_set_header Accept-Encoding "";
gzip off;
sub_filter_once off;
sub_filter_types "*";
sub_filter "//telegram.org/js/" "/js/";
sub_filter "//telegram.org/css/" "/css/";
subs_filter "https://cdn5.telesco.pe/file/" "/file/";
subs_filter "https:\/\/cdn5.telesco.pe\/file\/" "\/file\/";

记住

proxy_set_header Accept-Encoding "";
gzip off;

很重要,之前被这个坑了很久,这玩意会把内容压缩,于是你就替换不了了。做完这上面这些,只需要运行
service nginx restart 重启下你的nginx就完事了

最后

之后,直接新建一个文章,在文章中插入
<iframe src="https://other.9bie.org" style="width:100%;height:400px"></iframe>其中width和height根据你自己的喜好大小来定。

然后再随便找个文章置顶插件就行。或者你直接编辑你主题的代码放上去也不是不行,我前端实在垃圾,就直接弄成文章版本的了。

Tags: tg, 频道

简易.NET程序(某助手)破解

闲得无聊,日站日不下来,来日程序。
一到考试就沉迷砍口垒。但是我也不知道为啥。
总之先下载,是个用户名密码登陆的。
这个程序是用账号密码破解的。第一个思路是直接劫持他们的对象socket,伪造一个返回值来欺骗程序,达到不修改程序的效果。
但是抓了个包看了一下。。。
TIM截图20200106210252.jpg
emmm,base64解不出来,算了还是拉到程序ilspy分析一波。
TIM截图20200106210252.jpg
看这一波乱码,不用说了,直接de4dot走起
TIM图片20200106210831.png
继续拉进ilspy分析。
这次可以了
TIM截图20200106210252.jpg
为了方便,我们直接搜索 登录
TIM截图20200106210252.jpg
很轻松的找到了。直接右键,分析,寻找调用
TIM截图20200106210252.jpg
发现是一个Update函数
在如图所示的地方判断是否登陆
TIM截图20200106210252.jpg
跟进,判断,发现是个DLL,名字叫做CCLR
直接在目录下面,找到CCLR.dll
TIM截图20200106210252.jpg
直接拖进dnSpy,因为ilspy不能反汇编,所以直接拖进去。
找到相关函数。根据上面的反汇编,直接右键,修改函数。
把相关函数修改为对应的值
1.png
2.png
3.png
TIM截图20200106210252.jpg
再根据这里,把这个函数返回值也随便改一下。
看了一下这个函数返回值是直接返回int然后在string化的,而不是使用时间戳
TIM截图20200106210252.jpg
所以,就直接改成99吧
TIM截图20200106210252.jpg
文件,导出模块。
很多人说编译过程中会有错误,那我就在这更新一下吧,忘记加了。
首先,编辑点编辑方法
1.jpg
按照上面的修改之后,编译,会报错
2.jpg
直接跟进,找到两个
3.jpg
4.jpg
在编译还会有一个错误,把 这个删了。
5.jpg

保存,启动。
TIM截图20200106210252.jpg
破解成功。

Tags: 破解, 非提助手

裤子搭建日志(长期更新)

前言

哪个男孩子不想拥有一条自己的裤子呢?
因为闲得无聊,所以也想整一个,正好看到盘里有以前老哥丢过来的各种东西
再加上学校的网速还算给力,于是就萌生了自己搭一个的念头。
二话不说,走起。

首先是资源,这个说好找也挺好找,说难也蛮难的,泄露出来的数据,轻轻松松上百G吧

比如 群关系数据啊,如家汉庭啊,nulled.io啊,前者90G,中间这个23G,后门那个13G,再加上什么各种QQ老密数据(9G左右),网易泄露的,以及soyun裤子流出(30G)左右。几百G倒还真的不难

现在的问题是,如何查询。
因为是自己用,所以性能要求不是非常高。但是在学校工作站部署了下soyun的裤子,虽然说内存只有4G是有限制,但是怎么说也是个E5-2603 v2啊,查询4e条数据一次竟然要9分钟= =
所以现在正在尝试解决方案。

数据处理

我第一个处理的是soyun社工库,网络上直接一个soyun.bak。
这个数据库的处理方法我十分的蠢,我的想法是mssql x1 => txt x N -> mysql x N
于是乎,我的解决方案如下

declare my_cursor cursor for 
select site from [test2].[dbo].[temp] 

open my_cursor                  
declare   @name varchar(50)
declare   @cmd  varchar(250)
fetch next from my_cursor into @name
while @@FETCH_STATUS=0 
begin
  print('bcp "SELECT * FROM [test2].[dbo].[sgk] WHERE [site]='''+@name+'''" queryout "I:\'+@name+'_.txt" -c -S".\S2" -U"sa" -P"jikebianqiang"')
  set  @cmd = 'bcp "SELECT [name1],[pass],[email] FROM [test2].[dbo].[sgk] WHERE [site]='''+@name+'''" queryout "I:\'+@name+'_.txt" -c -S".\S2" -U"sa" -P"jikebianqiang"'
  EXEC master..xp_cmdshell @cmd
  fetch next from my_cursor into @name 
end
close my_cursor
deallocate my_cursor

先把网站[site]数据保存到[tmp]临时表,然后如上遍历临时表用cmd执行导出工具。
这样做能跑,但是有个很大的问题。。。
那就是,一次只能做一次查询,where一次只能输出一条结果到一个目标,然后从头跑一次。
这样做的后果呢。就是,库里有108个站点,然后完全读取一次数据库的时间需要9min。
9*108/60≈16,结果就是我整整跑了16小时才跑出结果

更新

因为某种原因,直接用Bcp跑导出所有表,然后用python处理了,结果运行速度更慢= =
代码如下

#coding:utf-8

import os,shutil,time
meta = {}
out_dir = "i:\\out"
with open("I:\\all.txt", 'r',encoding='gb18030',errors='ignore') as file:
    while 1:
        lines = file.readlines(100000)
        if not lines:
            break
        
        for line in lines:
            s = line.split("\t")
            
            if len(s) != 4:
                continue
            #print(s)
            t = s[3].strip().replace("\n","").encode("utf-8").decode()
            o = None
            if t == "":
                t = "None"
            if not os.path.isdir(os.path.join(out_dir,t)):
                try:
                    os.mkdir(os.path.join(out_dir,t))
                except Exception as e:
                    o = str(int(time.time()))
                    os.mkdir(os.path.join(out_dir,o))
            if t not in meta:
                if o != None:
                    out = open(os.path.join(out_dir,o,"0.txt"),"ab+")
                else:
                    out = open(os.path.join(out_dir,t,"0.txt"),"ab+")
                meta[t] = [0,0,out,o]
            
            meta[t][1].write(("%s\t%s\t%s\n" % (s[0].strip(),s[1].strip(),s[2].strip())).encode("utf-8"))
            
                
            meta[t][2] = meta[t][3]+1
            if meta[t][4] >= 5000000:
                meta[t][5].close()
                if meta[t][6] != None:
                    meta[t][7] = open(os.path.join(out_dir,meta[t][8],str(meta[t][0])+".txt"),"ab+")
                else:
                    meta[t][9] = open(os.path.join(out_dir,t,str(meta[t][0])+".txt"),"ab+")
                meta[t][0] = meta[t][0] + 1
                meta[t][10] = 0
            #line = file.readline()

总之八成是我的代码有问题,不过这样无所谓了。
先处理手头一些比较新的把,这个东西数据比较慢,就在后面慢慢跑吧。

库表设计

既然按照分表了,那么就不能单纯的 username,password,mail,phone,site这样一个表怼了。(soyun的就是这样直接储存4e数据的,震撼鳖鳖!
那么接下来就是设计如何分表。

我的设想是,按照不同的站区分成不同的库。然后根据数据量来。
比如一些小且杂的站点(比如自己脱的),都分在一个库。
目前主要麻烦的就是那些大公司的。比如腾讯网易等。
还有邮箱杂库等等。
这里我打算利用MERGE存储引擎来进行拆分设计。

详情可以参考这个:

使用MERGE存储引擎实现MySQL的分表机制

之后接下来,就是数据重复的问题了。
使用mysql的LOAD

load data local infile "course.txt" into table course
fields terminated by ',' lines terminated by'\r\n';

十分轻松的就导入了

更新x2

试着查询了一下
photo_2019-12-22_22-09-41.jpg
仅仅700w的数据,就需要1min16s,实在是太慢了
估计得想办法换成Nosql,我试试mongodb的水

更新x3

后来,设置了下索引,发现其实查询速度海星?
甚至查询速度比我笔记本本机都快。
photo_2019-12-25_00-47-07.jpg
明明count()的速度比我本机慢好多好多。。
photo_2019-12-25_00-47-07.jpg
photo_2019-12-25_00-47-15.jpg
搞不懂了。
不过目前能搞清楚的是,裤子能继续用了,查询的速度在能接受的范围内。

2020-2-12更新

龟速导入了好久,然后终于再前几天导入的差不多啦。
基本7-8E左右的数据。
然后需要去重
photo_2020-02-12_22-30-51.jpg
用了这个方法去重,连续500M的速度跑了11h之后,我当心我的SSD要炸了,于是就终止了。
放弃了去重的想法,将就用吧。

Tags: 裤子