Before the actual coding part, let’s think for a minute what we need to do:
• start the program in suspended mode
• read the original bytes we are going to patch at the magic address
• write some bytes at the magic address, to make program enter an infinite-loop
• let the program run
• monitor if the program arrived at the infinite-loop (at magic address)
• if previous step is done, suspend the program and sniff the serial from EAX
• restore the original bytes (clear the infinite-loop) and resume the program
# ras-mc-ctl --summary
No Memory errors.
No PCIe AER errors.
No ARM processor errors.
No Extlog errors.
No devlink errors.
Disk errors summary:
0:2048 has 51 errors
0:2064 has 46 errors
0:2080 has 433 errors
0:2096 has 78 errors
0:2112 has 39 errors
No MCE errors.
# ras-mc-ctl --errors
Disk errors
636 2022-03-13 20:15:39 +0300 error: dev=0:2080, sector=54431544, nr_sector=256, error='unknown block error', rwbs='RA', cmd='',
637 2022-03-13 20:15:39 +0300 error: dev=0:2080, sector=54431800, nr_sector=256, error='unknown block error', rwbs='RA', cmd='',
638 2022-03-13 20:15:39 +0300 error: dev=0:2080, sector=51680336, nr_sector=8, error='unknown block error', rwbs='RA', cmd='',
639 2022-03-13 20:15:39 +0300 error: dev=0:2080, sector=51189632, nr_sector=32, error='unknown block error', rwbs='RA', cmd='',
640 2022-03-13 20:15:39 +0300 error: dev=0:2080, sector=9515000, nr_sector=8, error='unknown block error', rwbs='RM', cmd='',
641 2022-03-13 20:15:40 +0300 error: dev=0:2096, sector=-1, nr_sector=0, error='I/O error', rwbs='N', cmd='',
642 2022-03-13 20:15:40 +0300 error: dev=0:2096, sector=-1, nr_sector=0, error='I/O error', rwbs='N', cmd='',
Особенности VPN
Нестандартный способ маршрутизации
В отличие от обычных VPN, осуществляющих перенаправление отдельных IP-адресов или диапазонов средствами маршрутизации ОС, VPN АнтиЗапрета использует маршрутизацию на основе доменных имен, с помощью специального DNS-сервера, созданного для этой цели.
На VPN-сервере запущен специальный DNS-резолвер, устанавливающий отображение (соответствие, маппинг) настоящего IP-адреса домена в свободный IP-адрес большой внутренней подсети, и отдающий запрашиваемому клиенту адрес из внутренней подсети.
У такого подхода есть множество преимуществ:
- Клиенту устанавливается только один или несколько маршрутов, вместо десятков тысяч маршрутов;
- Маршрутизируются только заблокированные домены, а не все сайты на заблокированном IP-адресе;
- Возможность обновления списка заблокированных сайтов без переподключения клиента;
- Корректная работа с доменами, постоянно меняющими IP-адреса, и с CDN-сервисами;
- Корректная работа с провайдерами, блокирующими все поддомены заблокированного домена (блокировка всей DNS-зоны). Пример такого провайдера — Yota.
Но есть и минусы:
- Необходимо использовать только DNS-сервер внутри VPN. С другими DNS-серверами работать не будет.
- Работает только для заблокированных доменов и программ, использующих доменные имена. Для заблокированных IP-адресов необходимо использовать обычную маршрутизацию.
--client-nat snat|dnat network netmask alias
This pushable client option sets up a stateless one-to-one NAT rule on packet addresses (not ports), and is useful in cases where routes or ifconfig settings pushed to the client would create an IP numbering conflict.network/netmask (for example 192.168.0.0/255.255.0.0) defines the local view of a resource from the client perspective, while alias/netmask (for example 10.64.0.0/255.255.0.0) defines the remote view from the server perspective.
Use snat (source NAT) for resources owned by the client and dnat (destination NAT) for remote resources.