Skip to content

Instantly share code, notes, and snippets.

@httpsx
Last active April 17, 2025 06:39
Show Gist options
  • Save httpsx/76a98ea28e6f3a4ffc947e768c0b6c01 to your computer and use it in GitHub Desktop.
Save httpsx/76a98ea28e6f3a4ffc947e768c0b6c01 to your computer and use it in GitHub Desktop.
WireGuard DPI обход РКН - Windows

Для обхода блокировки достаточно отправить 1 любой udp пакет, тем самым нарушим начальное определение протокола WireGuard
Способ с использованием Windows PowerShell. Без скачивания Nmap и подобного софта.

Шаг 0: Отключитесь от всех туннелей.

Шаг 1: Редактируем Клиент конфиг

Добавим в него "ListenPort", это позволит иметь статичный порт на котором будет работать WireGuard
Нажмите ПКМ на нужный "туннель" и выберите "Редактировать выбранный туннель..." Step1

После DNS добавляем новую строку

ListenPort = 56123

Step1-1

Нажимаем сохранить.

Warning

🔴 Важно! Не пытайтесь подключиться к серверу сразу после того как указали порт.

Шаг 2: Открываем "Windows PowerShell"

Необходимо изменить в скрипте данные сервера, к которому вы будете подключаться.
Их можно посмотреть в конфиге, [Peer] -> Endpoint
Как пример:

Step2

В моем примере $wgIP и $wgPort будут следующие:
$wgIP = "154.77.3.272"
$wgPORT = 51820

Script:

$wgListenPort = 56123
$wgIP = "DEST IP ADDRESS"
$wgPORT = DEST PORT

$EndPoints = New-Object System.Net.IPEndPoint([System.Net.IPAddress]::Parse([System.Net.Dns]::GetHostAddresses($wgIP)), $wgPORT) 
$Socket = New-Object System.Net.Sockets.UDPClient $wgListenPort
$SendMessage = $Socket.Send([Text.Encoding]::ASCII.GetBytes(":)"), 2, $EndPoints) 
$Socket.Close() 

После того, как изменили в скрипте $wgIP и $wgPORT, вставляем его в PowerShell и нажимаем Enter. Разрешите доступ Брандмауэру Windows если запросит.

Шаг 3: Подключаемся к WireGuard

Можете подключаться к своему WireGuard.

F.A.Q

  1. Что делать, если я попытался подключиться к серверу без PowerShell Скрипта?
  • Поменять ListenPort в конфиге клиента и поменять в скрипте значение $wgListenPort . Порт должен совпадать.
  • Либо подождать 5-10 минут, пока пройдет время блокировки порта. После этого запускаете сначало скрипт PowerShell - а затем пытаетесь подключиться к WireGuard
  1. Как определить что проблема именно в блокировке протокола WireGuard от РКН ?
  • Если в информации о переданных данных будет статично при подключение: "Получено 92 Б" или "Получено 148 Б" - Значит ваш провайдер заблокировал Handshake Response с протоколом wireguard. Данный гайд помогает обойти эту блокировку.
@mgryaznov
Copy link

Доброго времени суток. И все-таки, как аналогичное реализовать на телефоне с Android?

Сам разобрался. DeepDeek помог) Переписал код на python и запустил его через Termux.

Так покажи чё как

Код на питоне:

import socket

# Настройки (замените на свои!)
SERVER_IP = "x.x.x.x"
SERVER_PORT = xxxxx
LOCAL_PORT = 56123  # Порт из ListenPort

# Создаем UDP-сокет, привязанный к порту 56123
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(("0.0.0.0", LOCAL_PORT))

try:
    # Отправляем "магический" пакет (содержимое не важно)
    sock.sendto(b":)", (SERVER_IP, SERVER_PORT))
    print("[+] UDP-пакет отправлен с порта 56123!")
except Exception as e:
    print(f"[-] Ошибка: {e}")
finally:
    sock.close()

На телефон ставим Termux, запускаем.
В консоли пишем:

pkg update
pkg install python
pip install scapy

Чтобы код можно было вставить извне в Termux:
pkg install termux-api
Копируем код в буфер, затем вставляем в буфер Termux:
termux-clipboard-get
Далее в Termux из буфера вставляем в файл:
termux-clipboard-get > send_udp.py
В дальнейшем исправить порт можно в nano:
nano send_udp.py

Последний этап, посылаем пакет:
python send_udp.py
Запускаем wireguard с добавленным ListenPort.

@kesha-eh
Copy link

kesha-eh commented Apr 4, 2025

Благодарю вас обоих.
Но если можно вас попросить сделать авто скрипт на питоне, который возьмёт конфиг вайра и сделает свой send_udp.py (вместо send_udp будет имя конфига вг.

@sa1tshaker
Copy link

для роутера есть какой то вариант такой? keenetic miktorik или openwrt

@degrodanya
Copy link

для роутера есть какой то вариант такой? keenetic miktorik или openwrt

нашёл что-нибудь?

@sa1tshaker
Copy link

для роутера есть какой то вариант такой? keenetic miktorik или openwrt

нашёл что-нибудь?

пока ничего достойного, какие то костыли

@ropucyka
Copy link

ropucyka commented Apr 8, 2025

Последний этап, посылаем пакет: python send_udp.py Запускаем wireguard с добавленным ListenPort.

О спасибо конечно, но лавочку уже закрыли. По крайней мере местно.

@mgryaznov
Copy link

Последний этап, посылаем пакет: python send_udp.py Запускаем wireguard с добавленным ListenPort.

О спасибо конечно, но лавочку уже закрыли. По крайней мере местно.

МТС Москва работает.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment