Add spoof.py

This commit is contained in:
NJL
2026-07-05 15:23:44 +00:00
commit 03ae707578
+130
View File
@@ -0,0 +1,130 @@
import sys
import socket
import ssl
import json
import time
import select
import urllib.request
import os
from scapy.all import IP
from scapy.all import UDP
from scapy.all import Raw
from scapy.all import send
from scapy.all import conf
from aioquic.quic.connection import QuicConnection
from aioquic.quic.configuration import QuicConfiguration
from aioquic.h3.connection import H3Connection
from aioquic.h3.events import HeadersReceived
from aioquic.h3.events import DataReceived
conf.verb=0
cid=os.urandom(8)
p=b"\xc0"+b"\x00\x00\x00\x01"+bytes([len(cid)])+cid+b"\x00\x00\x08"+b"\x00"*8
pkt=IP(src="1.1.1.1",dst=socket.gethostbyname("<domain>"))/UDP(sport=50000,dport=443)/Raw(p)
send(pkt)
time.sleep(0.5)
cfg=QuicConfiguration(is_client=True,alpn_protocols=["h3"])
cfg.verify_mode=ssl.CERT_NONE
cfg.server_name="fingerprint.galaxyfounded.nl"
q=QuicConnection(configuration=cfg)
h3=None
sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sock.bind(("0.0.0.0",0))
sock.setblocking(False)
q.connect((socket.gethostbyname("fingerprint.galaxyfounded.nl"),443),now=time.monotonic())
for d,a in q.datagrams_to_send(now=time.monotonic()):
sock.sendto(d,a)
st=time.monotonic()
while True:
elapsed=time.monotonic()-st
if elapsed>10:
break
timer=q.get_timer()
if timer:
to=timer-time.monotonic()
if to<0:
to=0
if to>0.2:
to=0.2
else:
to=0.05
r,_,_=select.select([sock],[],[],to)
if r:
try:
d,a=sock.recvfrom(65536)
q.receive_datagram(d,a,now=time.monotonic())
except:
pass
if q.get_timer():
if time.monotonic()>=q.get_timer():
q.handle_timer(now=time.monotonic())
ev=q.next_event()
while ev:
if 'HandshakeCompleted' in str(type(ev)):
h3=H3Connection(q)
if h3:
for hev in h3.handle_event(ev):
pass
ev=q.next_event()
for d,a in q.datagrams_to_send(now=time.monotonic()):
try:
sock.sendto(d,a)
except:
pass
sid=q.get_next_available_stream_id()
h3.send_headers(sid,[(b":method",b"GET"),(b":scheme",b"https"),(b":authority",b"fingerprint.galaxyfounded.nl"),(b":path",b"/fp")],end_stream=True)
for d,a in q.datagrams_to_send(now=time.monotonic()):
sock.sendto(d,a)
body=b""
st=time.monotonic()
while True:
elapsed=time.monotonic()-st
if elapsed>12:
break
timer=q.get_timer()
if timer:
to=timer-time.monotonic()
if to<0:
to=0
if to>0.2:
to=0.2
else:
to=0.05
r,_,_=select.select([sock],[],[],to)
if r:
try:
d,a=sock.recvfrom(65536)
q.receive_datagram(d,a,now=time.monotonic())
except:
pass
if q.get_timer():
if time.monotonic()>=q.get_timer():
q.handle_timer(now=time.monotonic())
ev=q.next_event()
while ev:
if h3:
for hev in h3.handle_event(ev):
if 'DataReceived' in str(type(hev)):
body=body+hev.data
ev=q.next_event()
for d,a in q.datagrams_to_send(now=time.monotonic()):
try:
sock.sendto(d,a)
except:
pass
cip=None
try:
j=json.loads(body.decode())
cip=j['endpoint']['ipInfo']['cfConnectingIp']
except:
pass
print(cip)