Thursday, September 3, 2026

 CYD ES32-2432S028

Wireless Wizard Link -> https://wirelesswizard.net/

this assumes you know what you are doing, if not, do more google searches, tunes out I was use the USB for power and that will cause issues with the data lines.

Board 


Amazon = https://www.amazon.com/dp/B0D8W9DSYZ?ref=ppx_yo2ov_dt_b_fed_asin_title

GPS Unit
Amazon = https://www.amazon.com/dp/B09LQDG1HY?ref=ppx_yo2ov_dt_b_fed_asin_title


Board layout


to get the PGS to work I connected CN1 GND and 3.3V for power
note if the red light on the GPS module is not flashing, you are not connected to any satellites 
 
CN1
GND
IO22
IO27
3.3V

for data I connected TX to IO22 and RX to IO21

next boot into wireless wizard
Tap settings
Tap next three times
Tap GPS Config

make sure you have these settings
Baud Rate = 9600
RX PIN (GPIO) = 22
TX PIN (GPIO) = 21
Tap Save 

Run test and you should see some data

once you have verified your connections and tested, now you get to make a cable, have fun




Thursday, August 27, 2026

Windows Technical Maintenance Cheat Sheet



Update appswinget upgrade --all
Repair system filessfc /scannow
Repair component storeDISM /Online /Cleanup-Image /RestoreHealth
Battery reportpowercfg /batteryreport
DNS cacheipconfig /displaydns
Clear DNSipconfig /flushdns
MAC addressesgetmac /v
Network configipconfig /all
Connections/portsnetstat -ano
System informationsysteminfo
Current userwhoami /all
User sessionsquery user
Defender statusGet-MpComputerStatus
Network adaptersGet-NetAdapter

Sunday, July 26, 2026

 Monitor DNS and SNI


Wireshark

tls.record.content_type==22


DNS Monitor

# IMPORTANT: This script was created used ChatGPT. Use at your own risk.


from scapy.all import sniff

from scapy.layers.dns import DNS, DNSQR

from datetime import datetime


LOG_FILE = "dns_log.txt"


# Optional: domains you want highlighted

BLOCKLIST = [

    "adult",

    "porn",

    "gambling",

    "casino",

]


seen = set()


def process_packet(packet):

    if packet.haslayer(DNSQR):

        try:

            domain = packet[DNSQR].qname.decode("utf-8").rstrip(".")


            # Avoid duplicate spam

            now_minute = datetime.now().strftime("%Y-%m-%d %H:%M")

            unique_key = f"{now_minute}:{domain}"


            if unique_key in seen:

                return


            seen.add(unique_key)


            timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")


            warning = ""

            for word in BLOCKLIST:

                if word.lower() in domain.lower():

                    warning = " [POTENTIALLY INAPPROPRIATE]"

                    break


            log_entry = f"[{timestamp}] {domain}{warning}"


            # Print to screen

            print(log_entry)


            # Save to file

            with open(LOG_FILE, "a", encoding="utf-8") as f:

                f.write(log_entry + "\n")


        except Exception as e:

            print(f"Error processing packet: {e}")


print("DNS monitor started...")

print(f"Logging to: {LOG_FILE}")

print("Press CTRL+C to stop.\n")


# Sniff DNS traffic (UDP port 53)

sniff(filter="udp port 53", prn=process_packet, store=False)


SNI Monitor


# IMPORTANT: This script was created used ChatGPT. Use at your own risk.


from scapy.all import sniff, TCP, Raw

from datetime import datetime


LOG_FILE = "sni_log.txt"


def extract_sni(payload):

    try:

        data = bytes(payload)


        # TLS Handshake check

        if len(data) < 5:

            return None


        # TLS Handshake record

        if data[0] != 0x16:

            return None


        pos = 43


        # Session ID

        session_id_length = data[pos]

        pos += 1 + session_id_length


        # Cipher Suites

        cipher_suites_length = int.from_bytes(data[pos:pos+2], 'big')

        pos += 2 + cipher_suites_length


        # Compression Methods

        compression_methods_length = data[pos]

        pos += 1 + compression_methods_length


        # Extensions

        extensions_length = int.from_bytes(data[pos:pos+2], 'big')

        pos += 2


        end = pos + extensions_length


        while pos + 4 <= end:

            ext_type = int.from_bytes(data[pos:pos+2], 'big')

            ext_length = int.from_bytes(data[pos+2:pos+4], 'big')

            pos += 4


            # SNI Extension

            if ext_type == 0x0000:

                sni_data = data[pos:pos+ext_length]


                # Skip list length + name type

                server_name_length = int.from_bytes(sni_data[3:5], 'big')

                server_name = sni_data[5:5+server_name_length]


                return server_name.decode(errors="ignore")


            pos += ext_length


    except Exception:

        return None


    return None


def packet_callback(packet):

    if packet.haslayer(TCP) and packet.haslayer(Raw):

        payload = packet[Raw].load

        sni = extract_sni(payload)


        if sni:

            timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

            line = f"[{timestamp}] {sni}"


            print(line)


            with open(LOG_FILE, "a") as f:

                f.write(line + "\n")


print("Listening for TLS SNI traffic...")

sniff(filter="tcp port 443", prn=packet_callback, store=False)