记得第一次听容祖儿的歌,是《挥着翅膀的女孩》
我觉得这歌很好听,就记住了她的名字~
现在也经常听这首歌,后来听到了英文原版《Proud of You》
youtu.be/j5XAS-0ZL1g感觉英文版,好可爱啊~ 比国语版声音甜美很多~
最后接触了粤语版《我的骄傲》
youtu.be/CutywLQGnlM记得第一次听容祖儿的歌,是《挥着翅膀的女孩》
我觉得这歌很好听,就记住了她的名字~
现在也经常听这首歌,后来听到了英文原版《Proud of You》
youtu.be/j5XAS-0ZL1g感觉英文版,好可爱啊~ 比国语版声音甜美很多~
最后接触了粤语版《我的骄傲》
youtu.be/CutywLQGnlM@小二 不好意思,youtube链接发错了,麻烦替换成下面这个。。。刚发现的。。。
youtu.be/RJpdqlhMnek@natasha #10 我想多发些音乐来吸引更多人来2049
因为,我知道很多歌曲在墙内被封杀了。大家和我一样,只能在墙外听歌了。
主要是我听的歌曲,对墙内的小朋友来说,都太老太老了。。。所以吸引过来的都是年纪比较大的老人了
@natasha #10 不知道了,我想发的日本的歌曲,比如英雄的黎明,故乡的原风景,之类的。。。
@爱狗却养猫 #7 明天开始发港台电视剧的主题曲好了
估计可以吸引到一批老人来这里~
前世今生(笛子獨秦)
youtu.be/lzwceMQ3CTc悲情面具
@这里改名要葱吗 #4 这个问题,我在品葱专门写过文章https://pincong.rocks/article/10327
后来没过多久,admin就开了一个文娱休闲板块,专门让我发音乐,可惜我没葱发了。。。
根据当时成立这个板块,就是用来发政治无关的内容的
https://pincong.rocks/video/486
https://pincong.rocks/video/490
https://pincong.rocks/video/491
乱马,还是很好看的,大家可以看看!!!!
完全不明白这样的男人,为什么有女孩子喜欢?这些女孩子看上他哪点啊?
@爱狗却养猫 #7 我还是喜欢TVB的BGM
先入为主吧
@小二 , 你改过代码了?现在发youtube的链接,可以直接嵌入视频,而不是以前只是个链接了?
@爱狗却养猫 #3 多好的女孩子啊。。
胡斐就是看谁好看喜欢谁。最过分的还是认她当妹妹
补一个新闻链接
https://www.zaobao.com/realtime/china/story20200411-1044764
R.I.P
手动点赞~
2049功能越来越完善了!
@爱狗却养猫 #5 金庸和琼瑶三观不正。。。
你好!谢谢你发了这首歌!
这首歌,是我原本打算明天发的!但是刚好看到你发了!
省了我自己发帖子!再次表达感谢!
@Phragmites #9 没关系,别放心上,还是要谢谢你
圆月弯刀BGM 3
歌名:渚と小夜子
我还很喜欢 姬神 的音乐!
youtu.be/yaxY6T7amtc歌名:舞鳥
youtu.be/NEUsfRRYkoI歌名:遠い日、風はあおあお
youtu.be/l2ATTW0VBBo歌名:Earthflame
youtu.be/XbuUQXpaouw歌名:Evening Poem
youtu.be/TSNgXWS-53k歌名:十三の春
youtu.be/zRJDKc_cSC8歌名:ひとひらの雪
@阿離 #12 谢谢!
我平时上网不大方便,都是偷偷摸摸上网的。。。
今天发帖到达上限了
明天继续吧。。。
圆月弯刀BGM 2
歌名: コバルト镇魂
梁小冰,当时真的是颜值巅峰啊。长得和仙女一样,我觉得比李若彤的小龙女要漂亮。
演的青青,性格非常温柔,非常善良。放现在是玛丽苏,但是我对这个角色没有讨厌,只是怜惜,同情!
我对梁小冰,好像就记住这一个片子。。。
寂静之声,是我很喜欢的音乐!
我本想自己发姚斯婷版本
youtu.be/BgstilTGzOU另外,我也祝大家圣诞快乐~
https://pincong.rocks/video/1574
@小二 #10 cf的CDN,其实是反向代理。这么做为的是v2rayuser说的,和其他网站共享IP,导致GFW不敢冒然封IP。
至于不公开真实IP,是为了防止共产党对自己的服务器进行DDoS,因为暴露了真实IP,共产党就可以对这个IP进行DDoS。你想想,DoH返回的是CDN的地址,封不封你的IP,墙内不都可以正常访问2049么?
@v2rayuser #9 你和小二说得对。因为开了CF的CDN,和其他网站共享了IP,GFW是不能随便封IP。
回到你说的GFW手段上。对GFW最棘手的是ESNI。但是却特别好破解,只要封掉所有的DoH服务器就可以了。
使用传统的DNS服务器,无法做到ESNI,我已经写了代码讲解,说明了原因。
公开的DoH服务器全封杀了就可以了。如果是自己搭DoH服务器,说明自己在墙外有服务器,既然有服务器,直接v2ray就可以一次性搞定,也没有必要v2ray和doh都部署了。
和DoH服务器的TLS连接,是SNI方式的,不是ESNI。我也解释过了。所以,DoH部署到CDN上,也可以根据SNI精确RST掉。
当然了,可以使用IP方式直接访问DoH服务器,这样会导致GFW直接封杀1.1.1.1这个IP。
@Phragmites #7 谢谢你!
如果你方便,就封到今年平安夜吧。我上去陪大家过圣诞节!
@v2rayuser #6 以下是我的个人理解:
v2ex上很多人会联系我,说自己的VPS 的IP被封了。其实64,两会期间,封IP更猖獗。既然共产党连私人翻墙的VPS的IP都封杀,为什么不封杀品葱的ip呢?
我觉得对共产党来说,封杀一个品葱IP,是非常简单的事情。
两种可能:
1.共产党高层,觉得品葱只是BBC CNN VOACHINESE 级别,给个SNI RST待遇就很给面子了
2.GFW内部,有我们的同志,所以不封杀品葱IP
关于CDN,我觉得你有误解。品葱没有使用前置域名,所以不需要封杀CDN的ip,封杀品葱ip就可以了。
关于前置域名用法,参考迷雾通
revProx := &httputil.ReverseProxy{
Director: func(req *http.Request) {
log.Println("reverse proxying", req.Method, req.URL)
req.Host = binderHost
req.URL.Scheme = binderURL.Scheme
req.URL.Host = binderURL.Host
req.URL.Path = binderURL.Path + "/" + req.URL.Path
},
req.URL.Host = binderURL.Host 这个是前置域名,req.Host = binderHost 这个才是真实地址。
如果我是GFW,只要 TCP RST 所有品葱IP的443端口就可以了。不需要墙掉所有的CDN IP地址。
回到反向代理,我经常上反向代理网站,Google会提示这个是钓鱼网站。连Google都可以识别反向代理网站,我觉得GFW做不到,我反正不信。
最好的方法其实是v2ray的websocket,就是你配置一个随机的websocket path,因为GFW是猜不到这个path的,如果是你path是/ 那么大概率被墙.。。建议path 是一个随机的地址 /psdfjklsadfaksdlhgdjkas
类似这样的
@solids #5
仅考虑代理软件,代理软件会去向目标网站申请证书。而且没有校验证书是不是有效。
如果这个时候被GFW中间人攻击,代理软件会忽略,导致中间人攻击。
https://github.com/URenko/Accesser/ 官网写的 支持python3.7版本
https://docs.python.org/3/library/ssl.html
ssl.match_hostname 这段 Changed in version 3.7: The function is no longer used to TLS connections. Hostname matching is now performed by OpenSSL.
同时 Verifying certificates When calling the SSLContext constructor directly, CERT_NONE is the default. Since it does not authenticate the other peer, it can be insecure, especially in client mode where most of time you would like to ensure the authenticity of the server you’re talking to. Therefore, when in client mode, it is highly recommended to use CERT_REQUIRED. However, it is in itself not sufficient; you also have to check that the server certificate, which can be obtained by calling SSLSocket.getpeercert(), matches the desired service. For many protocols and applications, the service can be identified by the hostname; in this case, the match_hostname() function can be used. This common check is automatically performed when SSLContext.check_hostname is enabled.
Changed in version 3.7: Hostname matchings is now performed by OpenSSL. Python no longer uses match_hostname().
然后开始看代码201-204行
if self.host in setting.config['alert_hostname']:
server_hostname = setting.config['alert_hostname'][self.host]
else:
server_hostname = None
人话版本:如果代理软件认为域名 在 https://github.com/URenko/Accesser/blob/master/template/pac 文件的domains里的话,同时,域名不在https://github.com/URenko/Accesser/blob/master/config.json.default 的alert_hostname的话,则把SNI信息去除,否则改用 json里的域名
也就是说,代码是删除了SNI信息来完成规避SNI RST,这样GFW伪造一个证书,就可以骗过代理,因为代理不会检查证书
@张怀义 #3
第一个问题,本地浏览器发起TLS请求,代理软件截获。删掉了SNI,转发给服务器。服务器返回了证书,但是会有告警,代理软件忽略了告警,所以可以上网。也因为忽略了告警,如果出现GitHub那样的伪造的证书,也会被许可,这样就被中间人攻击了。
第二个问题,GFW会模拟正常的浏览器访问这些反向代理服务器,根据应答报文,就能知道这个是代理服务器了。就是GFW扫描流量,发现可疑TLS连接,就会模拟浏览器去尝试访问。所以v2ray模拟websocket的时候,才会伪造一个网站,因为GFW会自己嗅探
@Phragmites #1 我希望可以临时禁止登陆。但是懦夫斯基不允许。先这样吧
你也知道,我登录也只是发发音乐,其实也不做什么的
@小二 麻烦把开头这句话删了,谢谢!
先啰嗦一句,估计这是全网唯一一篇中文讲解ESNI的文章。其他语言有没有,我就不知道了。
@rebecca #2 不知道为什么,明明被你禁止登录,我却可以登录了
听这个版本好了
第一个问题
就是这次GitHub的中间人攻击,原理一模一样。不建议使用这个方式,很容易被中间人攻击。
第二个问题
反向代理肯定可以,但是GFW可以主动嗅探。你的反向代理服务器马上就会被墙。不可行!
dig TXT 2049bbs.xyz +short
这条命令,可以查到 2049 的esni record
传统过程:
1.火狐向传统DNS请求 Google的IP地址
2.火狐连接得到的IP地址,并给出带SNI的ClientHello
3.正常浏览网页
DoH + ESNI过程
1.火狐通过DoH请求Google的IP地址,并得到TXT record
2.火狐根据TXT record得到公钥,和自己的私钥,计算得到AEAD的密钥
3.火狐用AEAD密钥加密了SNI
4.火狐连接Google的IP地址,并发起TLS握手,其中SNI字段被加密了
5.正常浏览网页
代码流程:
第一步
firefox\netwerk\dns\TRR.cpp 文件的 TRR::SendHTTPRequest() 发起了DoH请求,查询服务器的IP地址
同文件的TRR::On200Response(nsIChannel* aChannel)函数解析了DoH的应答,根据TXT字段,设置了公钥
第二步
firefox\security\nss\lib\ssl\tls13esni.c 文件的 SSLExp_SetESNIKeyPair 把得到的record记录,设置到 ss->esniKeys = keys; 里去,完成了服务器公钥的设置
第三步
firefox\security\nss\lib\ssl\ssl3con.c 文件的 tls13_SetupClientHello 开始组装ClientHello报文,和ESNI相关的这行
rv = tls13_ClientSetupESNI(ss);
firefox\security\nss\lib\ssl\tls13esni.c的tls13_ClientSetupESNI函数 调用 tls13_CreateKeyShare函数,得到
ss->xtnData.esniPrivateKey = keyPair;
ss->xtnData.esniSuite = suite;
ss->xtnData.peerEsniShare = share;
第四步
firefox\security\nss\lib\ssl\ssl3ext.c 文件的 ssl_ConstructExtensions 开始组装clienthello的ext部分
重点是
rv = (*sender->ex_sender)(ss, &ss->xtnData, buf, &append);
其中 ex_sender 函数指针指向 static const ssl3ExtensionHandler clientHelloHandlers[] 的 ex_sender
因为我们关心的是ESNI,所以看 tls13_ServerHandleEsniXtn, 每种ext都有自己的ex_sender函数,挺方便扩展的
第五步
firefox\security\nss\lib\ssl\tls13exthandle.c 文件的tls13_ClientSendEsniXtn函数
aead = tls13_GetAead(ssl_GetBulkCipherDef(suiteDef));
得到了具体的aead算法加密函数,并调用 tls13_ComputeESNIKeys 得到了AEAD的密钥
rv = aead(&keyMat, PR_FALSE /* Encrypt */,
outBuf, &outLen, sizeof(outBuf),
SSL_BUFFER_BASE(&sni),
SSL_BUFFER_LEN(&sni),
SSL_BUFFER_BASE(&aadInput),
SSL_BUFFER_LEN(&aadInput));
最后调用aead函数加密sni,得到esni字符串outBuf,并完成最后的ext组装!
@张怀义 我讲完火狐的ESNI加密流程代码分析了
@v2rayuser 我解释下你的DoH发起的时候,有没有ESNI的问题。
首先DoH的地址,可以是这样的 https://1.1.1.1/dns-query
也是可以 https://dns.couldflare-dns.com/dns-query 这样的
如果是第一种情况,因为是IP地址,自然不存在SNI,也就不可能存在ESNI
如果是第二种情况,因为是域名,所以要先去查这个域名的具体IP,也就是用传统的DNS查找
在about:config配置页,输入 network.trr.bootstrapAddress 这个配置后面填入具体的DNS地址
完整过程就是火狐,先从network.trr.bootstrapAddress 配置的DNS地址,查找具体的IP,再发起TLS连接。这个时候,没有使用DoH,用的是传统的DNS,所以SNI没有加密
火狐使用ESNI,必须配合DoH,使用传统的DNS是无效的
@v2rayuser #44 你应该是没有理解DoH和ESNI,所以这么问,我开个新帖子具体解释下
后生可畏。。。
看了这么多?
@小二 #10 可以看看能不能在首页,标题太长截断 后面追加... 这样的方式显示?
我觉得男生可以给女生密码啊,女生也可以给男生啊。
哎,感觉是一个很有争议的话题,还是不趟浑水了
@张怀义 #8 《一点旧一点新》我觉得挺好的。师太的小说少看吧
@小二 #3
左边的标题比较短,右边的标题比较长
导致右边item的高度比左边高,最后的效果就是右边比左边长
限制标题长度,估计可以解决这个问题
@饱读书名 #11
11个硬币里选择2个硬币 C(11,2) = 55 种组合 每次使用天平,有<,=,>三种情况,使用4次,可以得到3^4次方,81种结果
根据信息论得知,通过可以设计一种编码方式,实现用一个3进制的数来表示对应的一个组合
用枚举的方式去找到这个对应关系。 我贴的代码,就是在用枚举的办法,遍历去找这个对应关系。 具体由两种方案编码
方案1
ABC-DEF
BEH-CDJ
DGH-EIJ
AGI-FHJ
方案2
ABC-DEF
DGH-EIJ
AGI-BHJ
CDEHI-ABFGJ @小二 #4
这个是IBM自己研发的编程语言,类似LINGO
execute 这个关键字 ,类似 main函数
subject to 这个表示设定限制条件
不知道你学过线性优化没有
y < 7*x + 3 (1)
y < 8*x + 20 (2)
求y的最大值
subject to 类似 条件1,2
execute 相当于求y的最大值
@饱读书名 #3 对不起,你说的对。原题目是说2枚比其他轻。是我的问题