bytecat
66 subscribers
4 photos
6 videos
6 files
41 links
USDT Tron:
TV7xutPgpSP1wQWF66ppiazZX7yJ5424JX
LTC: ltc1qfwg0lpv2taaa9z7ek73hwxldsj97zj7duplfrp
Session: 05be77963b5a305065d3a109e00aeaf98e6640e82c1973a92073ec762e8506ae35
The atmosphere in the associated group is sheer chaos.
Download Telegram
gfw-looking-glass.sh
while true; do printf "\0\0\1\0\0\1\0\0\0\0\0\0\6wux.ru\300" | nc -uq1 8.8.8.8 53 | hd -s20; done

https://x.com/gfwrev/status/25220534979
ProjectX入群题解析(2 months ago)
1 将Let's encrypt的YE1证书的p-384公钥和使用"114514"在xcalc.pages.dev计算结果的作为hex解码后的前48字节作为私钥,进行椭圆曲线迪菲-赫尔曼交换,获得的共享秘密前3个字节是.
2 将世界上最后一张ip6.arpa证书的p-256公钥和使用"114514" sha512结果的前32字节作为私钥,进行椭圆曲线迪菲-赫尔曼密钥交换,获得的共享秘密前3个字节是.(错题)
关于第二题,我给Yuhan6665发送了一个消息,但是问了Spam Info bot,它说
"I am afraid some Telegram users found your message annoying and forwarded them to our team."
后来作罢.(这个故事可以滑到下面去看.)
消息如下
"""
CA/Browser Forum在2025年11月10日投票的Ballot SC-086v3
该提案不允许了给ip6.arpa及其子域名颁发公共信任的TLS证书
所以世界上最后一张ip6.arpa子域名的PEM cert的p-256公钥(在https://crt.sh 中ID是21503216809)是一个
未压缩的椭圆曲线公钥.(如果后文提到,则是ECC公钥)
它的后三个字节是9a6a4d.
如果大佬(Yuhan6665)认可"以上叙述",那么一道入群题需要更改.
"""
3 在Xray中,使用vision且设置TLS指纹为HellowChrome_120_PQ时,对其JA4指纹sha384后,后六位是.(错题)
4 在Xray中,使用WSS且设置TLS指纹为safari时,对其JA4指纹md5后,后六位是.
5 在Xray中,设置TLS指纹为safari时,对其JA4指纹sha384后,后六位是.
6 Curve25519中,有限域中的非0元素个数的48次方根是多少.
7 xray24.10.32以hex打开后第114514字节往后3字节.

限于时间,今天(2 months ago)就分享两道题目的解法,标注错题的为什么是错题明天再说.
柿子挑软的捏,先看最后一题.
7 访问https://github.com/XTLS/Xray-core ,单击Release,
接下来访问github.com/XTLS/Xray-core/releases/tag/v24.10.31
下载Xray-linux-64.zip并解压缩它.
xxd -l -s 114513 -l 3 xray
结果是e88a14
a=open('/root/Downloads/xray','rb')
a.seek(114513)
114513
a.read(3).hex()
结果也是e88a14
a.close()
最后别忘了关闭.
1
访问https://letsencrypt.org/certificates/ 并单击Certificate details后的pem,另存为int-ye1.pem.
用openssl查看证书(假设它是公钥证书)
openssl x509 -in ./int-ye1.pem -text -noout
这和letsencrypt.org/certs/gen-y/int-ye3.txt里的文本是一样的.
可以知道它的签名算法是ECDSA(椭圆曲线数字签名算法),它于1999年被接受为ANSI X9.62,ANSI X9.62定义了prime256v1,而SEC2 v2定义了secp256r1,换句话说,在ANSI X9.62中曲线secp256r1被命名为了prime256v1.
from cryptography.hazmat.primitives.asymmetric import ec
from cryptography.hazmat.primitives import serialization
from cryptography import x509
y = open("./int-ye1.pem",'rb')
l = y.read()
y.close()
c = x509.load_pem_x509_certificate(l)
p = c.public_key()
u = p.public_bytes(encoding=serialization.Encoding.X962,format=serialization.PublicFormat.UncompressedPoint)
将u.hex与pub:后字符串(同样来自于int-ye3.txt)去掉冒号比较,发现是一样的,注意这个序列是以04开头的.
众所周知,其实使用"114514"在xcalc.pages.dev计算结果就是加盐Sha512,盐值是"salt114514".
结果是a84a0c3e9c4e97258534dfb703b067e4b457bb7050ca1fe7ee031e8d4a229fdcf74850ffeaf7dfcd9672be1430047bbdbc0dda246f9b8baae7a5031456e84763
有128个(偶数个)十六进制数字
用binascii模块的unhexlify将它作为hex解码.
然后取开头到48号位(不含)的字符,这个数组所表示的整数(int.from_bytes,第二个参数是'big',字节顺序是大端序)就是a84a0c开头的哈希前面加个0x的结果,这个结果记作L
Q = ec.derive_private_key(L, ec.SECP384R1())
Q.exchange(ec.ECDH(), p)
这就是答案了,3ccf00bc927f12cc9e0a98ff21add7fc9b2f44637d8799729fdabb0e593d6742b75cf4bd88d919fbd0d9d2ba4b2099a3
前三个字节是3ccf00,撒花完结.
一年前的B站申诉
(好好看看置顶视频 它被限流了
只因我在标题的""里写入 (最后一个知乎的量化调酒师也关注了两年半))
它的视频中
把下确界当成了最小值,
把开覆盖当成了包含,(居然有两个集合相互包含但不相等),
并忽略了指标集,'你别管它有多少个'大量如此的模糊解释.
更多请审核的工作人员跳转6:37观看,如果学过<实变函数论>的话,不然这个错误的视频就会误导很多人了.
一年前的知乎申诉
这里面只讨论了卷积,并引用了美国的诺伯特.维纳所写的<控制论 或动物与机器的控制和通信的科学>中的一段文本,所以它没有营销广告.如果这也算垃圾信息,那么试问我们如何在不谈论所谓"垃圾信息"的同时了解"图像信号处理"?
bytecat
我就在霹雳霹雳发布了一个视频 运行了如下程序 import requests from stem import Signal from stem.control import Controller url="https://check[.]torproject[.]org" import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) from bs4 import BeautifulSoup proxies…
还有以下命令(两年前的事了)
apt install -y libasound2-data libasound2t64 x11-utils libdbus-glib-1-2 file python3-socks python3-stem python3-bs4 python3-requests xz-utils #KALI LINUX
apt install -y libdbus-glib-1-2 libasound2-data libgtk-3-common #Ubuntu
chown root /mnt/wslg/runtime-dir
tar -xf tor-browser-linux-x86_64-13.5.6.tar.xz
./start-tor-browser.desktop --detach --verbose
有问题请朋友们指出
@echo off
setlocal enabledelayedexpansion
for %%x in (jpg) do (
set /a c=0
for %%f in (*.%%x) do (
set "d=!c!.%%x"
if exist "!d!" (
echo "!d!"
) else (
ren "%%f" "!d!"
echo %c%
)
set /a c+=1
)
echo .
)
pause
第一步:右键浏览器空白处,选择检查,点击网络,ctrl+r刷新,点击名称列表中的任意一个,然
后再右侧的标头中下拉,找到User-Agent复制后面的内容,
比如是Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/127.0.0.0 Safari/537.36
再找到referer复制后面的内容,比如是
https://www.3gbizhi.com/wallMV/index.html

第二步:构造一个http(s)请求头
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36',
'Referer':'https://www.3gbizhi.com/wallMV/index.html'
}

注意事先需导入两个库
import requests
import parsel


4.
url='http://www.3gbizhi.com/wallMV/index.html'
r=requests.get(url=url,headers=headers)

r表示服务器的应答,requests.get表示采用get请求(http请求的一种),headers是刚才的字
典,url在单引号里,参数在左,变量在右.
r.status_code输出应该是200,不然后续无法进行.接着print(r.text)
输出html文本内容一共有1359行
右键view查看.
对于html,现在应该用xpath表达式筛选出里面的img标签.
第六步:在浏览器中找到xpath右键检查,按下ctrl+shift+c
随便点一个图片检查找到该元素右键复制,复制xpath,
比如是/html/body/main/div[4]/ul/li[11]/a/img,
去掉/html/body以及[]里的数字,就像这样//main/div/ul/li/a/img,
注意main前面是//
第七步:我们要使r.text有一个向量xpath,
首先要把它转化为一个parsel对象,例如parsel.Selector(r.text)
然后
print(pasel.Selector(r.text).xpath('//main/div/ul/li/a/img').getall())
可以看到有一大堆输出,其中有一堆属性是lay-src,=号后的内容直接指向了图片所在
的url地址(相当于点击"在新标签页中打开图片")
例如https://pic.3gbizhi.com/uploads/xxx.jpg
我们要获取这个属性,只需要
print(pasel.Selector(r.text).xpath('//main/div/ul/li/a/img/@lay-src').getall())

返回一个图片列表.
第八步:for循环遍历这个列表
datalist=pasel.Selector(r.text).xpath('//main/div/ul/li/a/img/@lay-src').getall(
)
for data in datalist:
print(data)

这将把他们一行一行的输出,如果想把他们保存,只需要
number=1
for data in datalist:
with open (f'www3gbizhi/{number}.jpg','wb') as p:
#wb模式针对二进制数据的写入 f表示格式化,不然要加双斜杠
#www3gbizh是路径,as表示把它重命名为p
p.write(requests.get(url=data,headers=headers).content)
#.content表示二进制格式的数据write表示写入
number+=1
#让number从一开始,不断+1
#前提,同目录下一定要有一个空文件夹www3gbizhi

源码:
import requests
import parsel
number=1
for page in range(2,35):
print('=========={}=========='.format(page))
#{}是一个占位符,范围从1到34
base_url="https://www.3gbizhi.com/wallMV/index_{}.html".format(page)#同理
headers={'User-agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebkit/537.1 (KHTML ,like Gecko) Safari/537.1'}
response=requests.get(url=base_url) html_data=response.text
parse=parsel.Selector(html_data)
data_list=parse.xpath('/html/body/main/div/ul/li/a/img/@lay-src').getall()
for data in data_list:
imgdata=requests.get(url=data,headers=headers).content
with open (f'www3g/{number}.jpg',mode='wb') as f:
f.write(imgdata)
number+=1

总结,parsel只是用了一种正则表达式的方法,beauifulsoup甚至linux的perl命令也可以筛
选(三个月内发表)
本文在三个月前被我写下,现在发现它还可以运行,高兴极了.
(眨眼两年过去了)
SITE.txt
11.4 KB
推荐网站
https://github.com/shuakami/qq-chat-exporter/
[问题] Json文件中回复类型的消息的发送者错位
问题类型: 导出相关

我的问题:

这三行是已尝试的方法中的python3的stdout中的一个切片
gfwrev [回复 gfwrev: message_sample_1]
bytecategory [回复 bytecategory: message_sample_3]
bytecategory [回复 gfwrev: message_sample_2]
其中第三行是预期正确的 而第一行和第二行是错误的
分别应该是
gfwrev [回复 bytecategory: message_sample_1]
gfwrev [回复 bytecategory: message_sample_3]
这个问题看似是无中生有的 实际上有价值

已尝试的方法如下

from itertools import islice,cycle
length = 0
with open("/root/114514.json",'r') as f:
data = f.read()
data = json.loads(data)
senders = {'1912723': 'gfwrev','19031218': 'bytecategory'}
iterable = iter(data['messages'])
while (item := next(iterable, None)) and item.get("system") is True:
length +=1
for message in data['messages'][length:]:
text = message['content']['text']
first_key = next(iter(senders))
second_key = next(islice(senders, 1, None))
first_value = next(iter(senders.values()))
second_value = next(islice(senders.values(), 1, None))
text = text.replace(first_key, first_value)
text = text.replace(second_key, second_value)
if message['type'] == 'type_1' and message['system'] != True:
sender_name = message['sender']['name']
elif message['type'] == 'type_3':
uid = message['sender']['uid']
people_name = cycle(senders.values())
while True:
name = next(people_name)
if name == senders[uid]:
break
sender_name = next(people_name)
else:
del(text)
if 'text' in vars() and sender_name != None:
print(sender_name,text)
从今以后我抓鸡都用这个模板了,望周知.
import urllib3
http = urllib3.PoolManager(
timeout=urllib3.Timeout(connect=114514,read=1314520),
retries=False
)
aband = []
act = []
file_path = 'assets_2026211.txt'
with open(file_path,'r',encoding='utf-8') as f:
for line in f:
line = line.strip()
if not line:
continue
parts = [p.strip() for p in line.split(',')]
if len(parts) == 3 and parts[2]:
aband.append(parts)
elif len(parts) >= 2:
act.append(parts[:2])
del aband
for b in act:
ip = b[0]
port = b[1]
url = "http://" + ip + ":" + port + ""
try:
response = http.request('GET',url)
if b'root' in response.data:
print(ip + ':' + port)
else:
print(ip + ';' + port)
except:
pass
不怕神一样的对手,就怕猪一样的队友.
------顶级黑客Jeremy Hammond
masscan 0.0.0.0/0 -pU:123 -oX ntp.xml --rate 160000 --exclude 255.255.255.255

from lxml import etree
port = None
address = None
parsedServers = []
#Opens the file used to store single enteries.
outputFile = open('output.txt', 'a')
#Iterates through the masscan XML file.
for event, element in etree.iterparse('ntp.xml', tag="host"):
for child in element:
if child.tag == 'address':
#Assigns the current iterations address to the address variable.
address = child.attrib['addr']
if child.tag == 'ports':
for a in child:
#Assigns the current iterations port to the port variable.
port = a.attrib['portid']
#is both port and IP address are present.

if port != None and address != None:
#If the IP hasnt yet been added to the output file.
if address not in parsedServers:
print(address)
#Write the IP address to the file.
outputFile.write(address + '\n')
#write the IP to the parsedServers list
parsedServers.append(address)
port = None
address = None
element.clear()
outputFile.close()
print('End')
from scapy.all import *
import _thread
#Raw packet data used to request Monlist from NTP server
rawData = "\x17\x00\x03\x2a" + "\x00" * 61
#File containing all IP addresses with NTP port open.
logfile = open('output.txt', 'r')
#Output file used to store all monlist enabled servers
outputFile = open('monlistServers.txt', 'a')
def sniffer():
#Sniffs incomming network traffic on UDP port 48769, all packets meeting thease requirements run through the analyser function.
sniffedPacket = sniff(filter="udp port 48769", store=0, prn=analyser)

def analyser(packet):
#If the server responds to the GET_MONLIST command.
print(len(packet))
if len(packet) > 200:
if packet.haslayer(IP):
print(packet.getlayer(IP).src)
#Outputs the IP address to a log file.
outputFile.write(packet.getlayer(IP).src + '\n')

_thread.start_new_thread(sniffer, ())

for address in logfile:
#Creates a UDP packet with NTP port 123 as the destination and the MON_GETLIST payload.
address=address.strip()
send(IP(dst=address)/UDP(sport=48769, dport=123)/Raw(load=rawData))
print('End')

https://www.ja.meswoolley.co.uk/ntp-amplification-discovery/
https://t.me/SURGEPRO
¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿
今天,还要特别感谢 Officialwhyte22的这篇推文 x.com/Officialwhyte22/status/2025164814180331798
PS C:\Users\Administrator> whoami
desktop-t5qs5ms\administrator
PS C:\Users\Administrator> get-date2026年2月22日 17:28:49PS C:\Users\Administrator> get-netadapter | select-object name,statname Status LinkSpeed---- ------ ---------
OpenVPN TAP-Windows6 Disconnected 1 Gbps
Ethernet0 Up 1 GbpsPS C:\Users\Administrator> get-netipinterface | sort-object interfa
ily,interfacemetric | select-object -first 6InterfaceAliasias AddressFamily interfacemetric----------------- ------------- ---------------
IPv4 25
IPv4 25
IPv6 25
IPv6 25
IPv4 75
IPv6 75PS C:\Users\Administrator> route print | select-string "0.0.0.0" 0.0.0.0 0.0.0.0 192.168.110.1 192.168.110.4
224.0.0.0 240.0.0.0 在链路上 127.
224.0.0.0 240.0.0.0 在链路上 192.168.1PS C:\Users\Administrator> Get-NetTCPConnection -state Established
localaddress,localport,remoteaddress,remoteport,owningprocesslocaladdress : 192.168.110.47
localport : 1541
remoteaddress : 4.145.79.82
remoteport : 443
owningprocess : 68localaddress : 192.168.110.47
localport : 1941
remoteaddress : 117.21.204.18
remoteport : 443
owningprocess : 2140localaddress : 192.168.110.47
localport : 1943
remoteaddress : 2.23.244.9
remoteport : 443
owningprocess : 2140localaddress : 192.168.110.47
localport : 1939
remoteaddress : 117.21.204.18
remoteport : 443
owningprocess : 2140localaddress : 192.168.110.47
localport : 1937
remoteaddress : 117.21.204.18
remoteport : 443
owningprocess : 2140localaddress : 192.168.110.47
localport : 1938
remoteaddress : 117.21.204.18
remoteport : 443
owningprocess : 2140localaddress : 192.168.110.47
localport : 1947
remoteaddress : 2.23.244.9
remoteport : 443
owningprocess : 2140localaddress : 192.168.110.47
localport : 1954
remoteaddress : 72.247.234.254
remoteport : 80
owningprocess : 2140PS C:\Users\Administrator> get-process -id 4Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessNa------- ------ ----- ----- ------ -- -- ---------
2356 0 140 124 71.30 4 0 System
给中国的朋友:
这就是@grok 认为的金玉良言, 我认为这是幼儿园的把戏, 脚本小子都要笑掉大牙.
你为什么要在简介里说自己是道德黑客?你连黑客的门槛都摸不到, 先学点本事再来炫耀吧. 你那套愚蠢的说辞居然还有9.9万查看, 我一边吃饭一边笑的肚子都疼了, 我女朋友还得拍拍我的背安慰我.
执行几个cmdlet把你牛逼的,就像我永远自由一样,你注定永远平庸.