Русский
Русский
English
Статистика
Реклама

Ruvds-статьи

VPS на Linux с графическим интерфейсом запускаем сервер VNC на Ubuntu 18.04

14.07.2020 12:05:49 | Автор: admin

Некоторые пользователи арендуют относительно недорогие VPS с Windows для запуска сервиса удаленных рабочих столов. То же самое можно сделать и на Linux без размещения в датацентре собственного железа или аренды выделенного сервера. Кому-то нужна привычная графическая среда для тестов и разработки или удаленный десктоп с широким каналом для работы с мобильных устройств. Есть масса вариантов применения основанной на протоколе Remote FrameBuffer (RFB) системы Virtual Network Computing (VNC). В небольшой статье мы расскажем, как настроить ее на виртуальной машине с любым гипервизором..

Оглавление:


Выбор сервера VNC
Установка и настройка
Запуск службы через systemd
Подключение к рабочему столу

Выбор сервера VNC


Сервис VNC может быть встроен в систему виртуализации, при этом гипервизор свяжет его с эмулируемыми устройствами и никакой дополнительной настройки не потребуется. Этот вариант предполагает значительные накладные расходы и поддерживается далеко не всеми провайдерами даже в менее ресурсоемкой реализации, когда вместо эмуляции реального графического устройства виртуальной машине передается упрощенная абстракция (фреймбуфер). Иногда VNC-сервер привязывается к работающему X-серверу, но этот способ больше подходит для доступа к физической машине, а на виртуальной он создает ряд технических сложностей. Проще всего установить VNC-сервер со встроенным X-сервером. Он не требует наличия физических устройств (видеоадаптера, клавиатуры и мыши) или их эмуляции с помощью гипервизора, а потому подходит для VPS любого типа.

Установка и настройка


Нам потребуется виртуальная машина с Ubuntu Server 18.04 LTS в конфигурации по умолчанию. В стандартных репозиториях этого дистрибутива есть несколько серверов VNC: TightVNC, TigerVNC, x11vnc и прочие. Мы остановились на TigerVNC актуальном форке не поддерживаемого разработчиком TightVNC. Настройка других серверов выполняется сходным образом. Также нужно выбрать окружение рабочего стола: оптимальным, на наш взгляд, вариантом будет XFCE из-за относительно невысоких требований к вычислительным ресурсам. Желающие могут установить другой DE или WM: тут все зависит от личных предпочтений, однако выбор ПО напрямую влияет на потребность в оперативной памяти и вычислительных ядрах.

Установка окружения рабочего стола со всеми зависимостями выполняется следующей командой:

sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

Дальше необходимо инсталлировать сервер VNC:

sudo apt-get install tigervnc-standalone-server tigervnc-common

Запускать его с правами суперпользователя плохая идея. Создаем пользователя и группу:

sudo adduser vnc



Добавим пользователя в группу sudo, чтобы он мог решать связанные с администрированием задачи. Если такой потребности нет, этот шаг можно пропустить:

sudo gpasswd -a vnc sudo

На следующем шаге нужно запустить сервер VNC с привилегиями пользователя vnc, чтобы создать безопасный пароль и конфигурационные файлы в каталоге ~/.vnc/. Длина пароля может быть от 6 до 8 символов (лишние обрезаются). При необходимости также задается пароль только для просмотра, т.е. без доступа к клавиатуре и мыши. Следующие команды выполняются от имени пользователя vnc:

su - vncvncserver -localhost no



По умолчанию протокол RFB использует диапазон TCP-портов от 5900 до 5906 это т.н. порты дисплея, каждый из которых соответствует экрану X-сервера. При этом порты ассоциированы с экранами от :0 по :6. Запущенный нами экземпляр сервера VNC слушает порт 5901 (экран :1). Прочие экземпляры сервера могут работать на других портах с экранами :2, :3 и т. д. Перед дальнейшей настройкой нужно остановить сервер:

vncserver -kill :1

Команда должна вывести примерно такое сообщение: Killing Xtigervnc process ID 18105 success!.

При запуске TigerVNC выполняет сценарий ~/.vnc/xstartup для настройки параметров конфигурации. Создадим собственный скрипт, предварительно сохранив резервную копию имеющегося, если он существует:

mv ~/.vnc/xstartup ~/.vnc/xstartup.bnano ~/.vnc/xstartup

Сеанс окружения рабочего стола XFCE запускается следующим скриптом xstartup:

#!/bin/bashunset SESSION_MANAGERunset DBUS_SESSION_BUS_ADDRESSxrdb $HOME/.Xresourcesexec /usr/bin/startxfce4 &

Команда xrdb необходима, чтобы система VNC прочитала файл .Xresources в домашнем каталоге. Там пользователь может определить различные параметры графического рабочего стола: рендеринг шрифтов, цвета терминала, темы курсора и т.д. Сценарий необходимо сделать исполняемым:

chmod 755 ~/.vnc/xstartup

На этом настройка сервера VNC завершена. Если запустить его командой vncserver -localhost no (от имени пользователя vnc), можно будет подключиться с заданным ранее паролем и увидеть такую картину:



Запуск службы через systemd


Ручной запуск сервера VNC плохо подходит для боевого применения, поэтому мы настроим системную службу. Команды выполняются от имени root (используем sudo). Для начала создаем новый юнит-файл для нашего сервера:

sudo nano /etc/systemd/system/vncserver@.service

Символ @ в имени позволяет передавать аргумент для настройки службы. В нашем случае он задает порт дисплея VNC. Юнит-файл состоит из нескольких разделов:

[Unit]Description=TigerVNC serverAfter=syslog.target network.target

[Service]Type=simpleUser=vnc Group=vnc WorkingDirectory=/home/vnc PIDFile=/home/vnc/.vnc/%H:%i.pidExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x960 :%iExecStop=/usr/bin/vncserver -kill :%i

[Install]WantedBy=multi-user.target

Затем нужно уведомить systemd о появлении нового файла и активировать его:

sudo systemctl daemon-reloadsudo systemctl enable vncserver@1.service

Цифра 1 в имени задает номер экрана.

Останавливаем сервер VNC, запускаем его как службу и проверяем статус:

# от имени пользователя vnc vncserver -kill :1

# с привилегиями суперпользователяsudo systemctl start vncserver@1sudo systemctl status vncserver@1

Если служба работает, мы должны получить примерно такой результат.



Подключение к рабочему столу


Наша конфигурация не использует шифрование, поэтому сетевые пакеты могут быть перехвачены злоумышленниками. К тому же в VNC-серверах достаточно часто находят уязвимости, так что открывать их для доступа из интернета не стоит. Для безопасного подключения на локальном компьютере нужно упаковать трафик в туннель SSH, а затем настроить клиент VNC. Под Windows можно использовать графический клиент SSH (например, PuTTY). Для безопасности TigerVNC на сервере слушает только localhost и недоступен напрямую из сетей общего пользования:

sudo netstat -ap |more



В Linux, FreeBSD, OS X и прочих UNIX-подобных ОС туннель с клиентского компьютера делается с помощью утилиты ssh (на сервере VNC должен быть запущен sshd):

ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip

Опция -L привязывает порт 5901 удаленного подключения к порту 5901 на localhost. Опция -C включает сжатие, а -N указывает утилите ssh на отсутствие необходимости выполнять удаленную команду. Опция -l задает login для удаленного входа в систему.

После настройки туннеля на локальном компьютере необходимо запустить клиент VNC и установить соединение с хостом 127.0.0.1:5901 (localhost:5901), использовав для доступа к серверу VNC заданный ранее пароль. Теперь мы можем безопасно взаимодействовать через шифрованный туннель с графическим окружением рабочего стола XFCE на VPS. На скриншоте в эмуляторе терминала запущена утилита top, чтобы показать незначительное потребление виртуальной машиной вычислительных ресурсов. Дальше все будет зависеть от пользовательских приложений.



Установить и настроить сервер VNC в Linux можно практически на любом VPS. Для этого не нужны дорогостоящие и ресурсоемкие конфигурации с эмуляцией видеоадаптера или покупка коммерческих лицензий на программное обеспечение. Помимо рассмотренного нами варианта системной службы есть и другие: запуск в режиме демона (через /etc/rc.local) при загрузке системы или по требованию через inetd. Последний интересен для создания многопользовательских конфигураций. Интернет-суперсервер запустит сервер VNC и свяжет с ним клиента, а VNC-сервер создаст новый экран и начнет сессию. Для аутентификации внутри нее можно использовать графический дисплейный менеджер (например, LightDM), а после отключения клиента сессия будет закрыта и все работающие с экраном программы завершены.

Подробнее..

Пишем юзабельную оболочку для FFMPEG на Powershell

28.01.2021 16:20:38 | Автор: admin

Нормальный вывод для ffmpeg

Наверное, вы, как и я, слышали про ffmpeg, но боялись его использовать. Респект таким парням, программа целиком выполнена на C ( си, без # и ++ ).

Несмотря на исключительно высокий функционал программы, ужасный, гигантский вербоуз, неудобные аргументы, странные дефолты, отсутствие автозаполнения и непрощающий синтаксис вкупе с не всегда развернутыми и понятными пользователю ошибками делают эту великолепную программу неудобной.

Я не нашел в интернете готовых командлетов для взаимодействия с ffmpeg, поэтому, давайте доработаем то, что нуждается в доработке и сделаем это все так, чтобы нестыдно было публиковать это на PowershellGallery.

Делаем объект под пайп


class VideoFile {    $InputFileLiteralPath    $OutFileLiteralPath    $Arguments}

Все начинается с объекта. FFmpeg программа достаточно простая, все что нам нужно знать это где находится то, с чем мы работаем, как мы с этим работаем и куда мы все складываем.

Begin, process, end


В Begin блоке нельзя никак работать с пришедшими аргументами, то есть конкатенировать строку по аргументам сходу не получится, в Begin блоке все параметры нули.

Однако тут можно подгружать экзешники, импортировать необходимые модули и инициализировать счетчики для всех файлов, которые будут в обработке, работать с константами и системными переменными.

Думайте о конструкции Begin-Process как о foreach, где begin выполняется раньше, чем вызывается сама функция и задаются параметры, а End выполняется в последнюю очередь, после foreach.

Вот так бы выглядел код, если бы конструкции Begin, Process, End не было. Это пример плохого кода, так писать не надо.

# это begin$InputColection = Get-ChildItem -Path C:\file.txt function Invoke-FunctionName {    param (        $i    )    # это process    $InputColection | ForEach-Object {        $buffer = $_ | ConvertTo-Json     }        # это end    return $buffer} Invoke-FunctionName -i $InputColection

Что нужно класть в Begin блок?


Счетчики, составлять пути до исполняемых файлов и делать приветствие. Вот так выглядит Begin блок у меня:

 begin {        $PathToModule = Split-Path (Get-Module -ListAvailable ConvertTo-MP4).Path        $FfmpegPath = Join-Path (Split-Path $PathToModule) "ffmpeg"        $Exec = (Join-Path -Path $FfmpegPath -ChildPath "ffmpeg.exe")        $OutputArray = @()         $yesToAll = $false        $noToAll = $false         $Location = Get-Location    }

Хочу обратить внимание на строчку, это настоящий лайфхак:

$PathToModule = Split-Path (Get-Module -ListAvailable ConvertTo-MP4).Path

С помощью Get-Module мы получаем путь до папки с модулем, а Split-Path берет входное значение и возвращает папку уровнем ниже. Таким образом, можно хранить исполняемые файлы рядом с папкой с модулями, но не в самой этой папке.

Вот так:

PSffmpeg/ ConvertTo-MP4/    ConvertTo-MP4.psm1    ConvertTo-MP4.psd1    Readme.md ffmpeg/     ffmpeg.exe     ffplay.exe     ffprobe.exe

А еще с помощью Split-Path можно со стилем спускаться на уровень ниже.

Set-Location ( Get-Location | Split-Path )

Как сделать правильный Param блок?


Сразу после Begin идет Process вместе с Param блоком. Param блок сам проводит null чеки, и валидирует аргументы. К примеру:

Валидация по списку:

[ValidateSet("libx264", "libx265")]$Encoder

Тут все просто. Если значение не похоже на одно из списка, то возвращается False, а затем вызывается исключение.

Валидация по диапазону:

[ValidateRange(0, 51)][UInt16]$Quality = 21

Можно валидировать по диапазону, указав цифры от и до. Crf у ffmpeg поддерживает числа от 0 до 51, поэтому тут указан такой диапазон.

Валидация по скрипту:

[ValidateScript( { $_ -match "(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)" })][timespan]$TrimStart

Сложный инпут можно валидировать регулярками или целыми скриптами. Главное, чтобы валидирующий скрипт возвращал true или false.

SupportsShouldProcess и force


Итак, вам нужно пачкой перекодировать файлы другим кодеком, но с тем же именем. Классический интерфейс ffmpeg предлагает пользователям нажимать y/N, чтобы перезаписать файл. И так для каждого файла.

Оптимальным вариантом является стандартный Yes to all, Yes, No, No to all.

Выбрал Yes to all и можно пачками переписывать файлы и ffmpeg не будет останавливаться и лишний раз переспрашивать, хочешь ты заменить вот этот файл или нет.

function ConvertTo-WEBM {    [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'high')]    param ( #все остальные параметры были удалены для наглядности  [switch]$Force     )

Так выглядит голый Param блок здорового человека. С помощью SupportsShouldProcess функция сможет спрашивать, прежде чем выполнять деструктивное действие, а свитч force полностью игнорирует его.

В нашем случае, мы работаем с видеофайлом и перед тем, как перезаписать файл, мы хотим убедиться, что пользователь понимает, что делает функция.

# Если указан параметр Force, то все файлы молча перезаписываются
if ($Force) {
$continue = $true
$yesToAll = $true
}

$Verb = "Overwrite file: " + $Arguments.OutFileLiteralPath # формируем строчку, которую отправим пользователю в слукчае вызова ShouldContinue    # Проверяем, не перезапишем ли мы файл.if (Test-Path $Arguments.OutFileLiteralPath) {    #Если файл вот вот будет перезаписан, срашиваем, перезаписывать ли все файлы в дальнейшем или нет    $continue = $PSCmdlet.ShouldContinue($OutFileLiteralPath, $Verb, [ref]$yesToAll, [ref]$noToAll)            #Если было выбрано А - Да, для всех, то продолжаем игнорируя факт того, что файл уже существует    if ($continue) {        Start-Process $Exec -ArgumentList $Arguments.Arguments -NoNewWindow -Wait                    }    #Если было выбрано Нет - То завершаем работу скрипта    else {        break    }}# Если файл не сущесвует, создаем новыйelse {    Start-Process $Exec -ArgumentList $Arguments.Arguments -NoNewWindow -Wait    }


Делаем нормальный пайп


В функциональном стиле нормальный пайп будет выглядеть так:

function New-FfmpegArgs {            $VideoFile = $InputObject            | Join-InputFileLiterallPath             | Join-Preset -Preset $Preset            | Join-ConstantRateFactor -ConstantRateFactor $Quality            | Join-VideoScale -Height $Height -Width $Width            | Join-Loglevel -VerboseEnabled $PSCmdlet.MyInvocation.BoundParameters["Verbose"]            | Join-Trim -TrimStart $TrimStart -TrimEnd $TrimEnd -FfmpegPath "C:\Users\nneeo\Documents\lib.Scripts\PSffmpeg\ConvertTo-WEBM\ffmpeg\" -SourceVideoPath ([IO.Path]::GetFullPath($InputObject))            | Join-Codec -Encoder $Encoder -FfmpegPath "C:\Users\nneeo\Documents\lib.Scripts\PSffmpeg\ConvertTo-WEBM\ffmpeg\" -SourceVideoPath ([IO.Path]::GetFullPath($InputObject))            | Join-OutFileLiterallPath -OutFileLiteralPath $OutFileLiteralPath -SourceVideoPath ([IO.Path]::GetFullPath($InputObject))             return $VideoFile        }

Но это просто ужасно, все похоже на лапшу, неужели нельзя сделать все чище?
Конечно можно, но нужно использовать для этого вложенные функции. Они могут смотреть в переменные объявление в родительской функции, что очень удобно. Вот пример:

function Invoke-FunctionName  {    $ParentVar = "Hello"    function Invoke-NetstedFunctionName {        Write-Host $ParentVar    }    Invoke-NetstedFunctionName}

Но в тоже самое время, если у вас будет много одинаковых функций, придется копипастить один и тот же код в каждую функцию каждый раз. В случае с ConvertTo-Mp4, ConvertTo-Webp и т.п. легче сделать как сделал я.

Если бы я использовал вложенные функции это все выглядело так:

$VideoFile = $InputObject| Join-InputFileLiterallPath | Join-Preset | Join-ConstantRateFactor | Join-VideoScale | Join-Loglevel | Join-Trim | Join-Codec | Join-OutFileLiterallPath 

Но повторюсь, это сильно сокращает взаимозаменяемость кода.

Делаем нормальные функции


Нам нужно составить аргументы для ffmpeg.exe, и для этого нет ничего лучше пайплайна. Как же я люблю пайплайны!

Вместо интерполяции или стрингбилдера мы используем пайп, который может корректировать аргументы или писать релевантную ошибку. Сам пайп вы видели выше.

Теперь о том, как выглядят самые прикольные функции пайплайна:

1. Measure-VideoResolution

function Measure-VideoResolution {    param (        $SourceVideoPath,        $FfmpegPath    )    Set-Location $FfmpegPath      .\ffprobe.exe -v error -select_streams v:0 -show_entries stream=height -of csv=s=x:p=0 $SourceVideoPath | ForEach-Object {        return $_    }}

h265 экономит битрейт начиная от 1080 и выше, при меньшем разрешении видео он не так важен, поэтому, для кодирования больших видео следует указывать h265 в качестве дефолта.
Return в Foreach-Object выглядит очень странно. Но тут ничего не поделаешь. FFmpeg пишет все в stdout и это самый простой способ выцепить значение из подобных программ. Используйте этот трюк, если вам нужно вытащить что-то из stdout. Не используйте Start-Process, чтобы вытащить stdout нужно вызвать исполняемый файл прямо так, как в этом примере.

Вызвать экзешник по полному пути и при этом получить stdout невозможно иным способом. Нужно конкретно перейти в папку с исполняемым файлом и вызвать его по имени оттуда. Именно для этого, в Begin блоке скрипт запоминает путь, с которого начал, чтобы после завершения своей работы не раздражать пользователя.

  begin {        $Location = Get-Location    }

Эта функция хорошо смотрелась бы как отдельный командлет, пригодилась бы, но это на будущее.

2. Join-VideoScale

function Join-VideoScale {    param(        [Parameter(Mandatory = $true,            ValueFromPipeline = $true,            ValueFromPipelineByPropertyName = $true)]        [ValidateNotNullOrEmpty()]        [SupportsWildcards()]        [psobject]$InputObject,        $Height,        $Width    )     switch ($true) {        ($null -eq $Height -and $null -eq $Width) {            return $InputObject        }        ($null -ne $Height -and $null -ne $Width) {            $InputObject.Arguments += " -vf scale=" + $Width + ":" + $Height            return $InputObject        }        ($null -ne $Height) {             $InputObject.Arguments += " -vf scale=" + $Height + ":-2"             return $InputObject         }        ($null -ne $Width) {             $InputObject.Arguments += " -vf scale=" + "-2:" + $Width             return $InputObject         }    }}
Один из моих любимых приколов вывернутый наизнанку switch. Паттерн матчинга в Powershell нет, но такие конструкции заменяют его, по большей части.
В круглых скобках находится выполняемая функция. И если результат выполнения этой функции равен условию в свитче, то скриптблок в нем выполняется.

3. Join-Trim

function Join-Trim {    param(        [Parameter(Mandatory = $true,            ValueFromPipeline = $true,            ValueFromPipelineByPropertyName = $true)]        [ValidateNotNullOrEmpty()]        [SupportsWildcards()]        [psobject]$InputObject,        $TrimStart,        $TrimEnd,        $FfmpegPath,        $SourceVideoPath    )    if ($null -ne $TrimStart) {        $TrimStart = [timespan]::Parse($TrimStart)    }    if ($null -ne $TrimEnd) {        $TrimEnd = [timespan]::Parse($TrimEnd)    }        if ($TrimStart -gt $TrimEnd -and $null -ne $TrimEnd) {        Write-Error "TrimStart can not be equal to TrimEnd" -Category InvalidArgument        break    }    if ($TrimStart -ge $TrimEnd -and $null -ne $TrimEnd) {        Write-Error "TrimStart can not be greater than TrimEnd" -Category InvalidArgument        break    }    $ActualVideoLenght = Measure-VideoLenght -SourceVideoPath $SourceVideoPath -FfmpegPath $FfmpegPath       if ($TrimStart -gt $ActualVideoLenght) {        Write-Error "TrimStart can not be greater than video lenght" -Category InvalidArgument        break    }     if ($TrimEnd -gt $ActualVideoLenght) {        Write-Error "TrimEnd can not be greater than video lenght" -Category InvalidArgument        break    }     switch ($true) {        ($null -eq $TrimStart -and $null -eq $TrimEnd) {            return $InputObject        }        ($null -ne $TrimStart -and $null -ne $TrimEnd) {                        $ss = " -ss " + ("{0:hh\:mm\:ss}" -f $TrimStart)            $to = " -to " + ("{0:hh\:mm\:ss}" -f $TrimEnd)            $InputObject.Arguments += $ss + $to            return $InputObject         }        ($null -ne $TrimStart) {             $ss = " -ss " + ("{0:hh\:mm\:ss}" -f $TrimStart)            $InputObject.Arguments += $ss            return $InputObject        }        ($null -ne $TrimEnd) {             $to = " -to " + ("{0:hh\:mm\:ss}" -f $TrimEnd)            $InputObject.Arguments += $to            return $InputObject        }    }}

Самая большая функция в пайплайне. Правильно написаная функция должна показывать пользователю на ошибки, приходится вот так раздувать код.
Для простоты было принято решение не инкапсулировать в класс пути до исполняемых файлов, поэтому функции принимают так много аргументов.

Выводим новые объекты


Чтобы этот скрипт можно было встраивать в другие пайплайны, нужно сделать так, чтобы он что-нибудь возвращал. У нас есть InputObject взятый из Get-ChildItem, но поле Name доступно только для чтения, просто поменять имена файлов нельзя.

Чтобы вывод команды был похож на системный, нужно сохранить имена перекодированных объектов и с помощью Get-Chilitem добавить их в массив и вывести его.

1. В Begin блоке объявляем массив

begin {        $OutputArray = @()}

2. В Process блоке заносим перекодированные файлы:

Не забываем про null чеки, даже в функциональном программировании они нужны.

process {       if (Test-Path $Arguments.OutFileLiteralPath) {      $OutputArray += Get-Item -Path $Arguments.OutFileLiteralPath  }}

3. В End блоке возвращаем полученный массив

end {        return $OutputArray    }

Ура, закончили end блок, пора использовать скрипт как надо.

Используем скрипт


Пример 1

Эта команда выберет все файлы в папке, перекодирует их в формат mp4 и тут же отправит эти файлы на сетевой диск.

Get-ChildItem | ConvertTo-MP4 -Width 320 -Preset Veryslow | Copy-Item Destination '\\local.smb.server\videofiles'

Пример 2

Перекодируем все свои игровые видео в указанной папке, а исходники удаляем.

ConvertTo-MP4 -Path  "C:\Users\Administrator\Videos\Escape From Tarkov\" | Remove-Item -Exclude $_

Пример 3

Кодирование всех файлов из папки и перемещение новых файлов в другую папку.

Get-ChildItem | ConvertTo-WEBM | Move-Item -Destination D:\OtherFolder

Заключение


Вот мы и пофиксили ffmpeg, вроде бы ничего критичного не упустили. Но что это получается, ffmpeg нельзя было использовать без нормальной оболочки?
Получается, да.
Но впереди еще очень много работы. Полезно было бы иметь в качестве модулей такие командлеты как Measure-videoLenght, возвращающий длительность видео в виде Timespan, с их помощью можно будет упростить пайп и сделать код компактнее.
Еще, нужно сделать команды ConvertTo-Webp и все в этом духе. Нужно бы еще создавать папку за пользователя, если она не существует, рекурсивно. И проверку доступа на запись и чтение тоже неплохо было бы сделать.

Ну а пока что так, следите за проектом на гитхабе.

Подробнее..

Легендарный трансивер Радио-76

07.05.2021 12:20:51 | Автор: admin

Для многих радиолюбителей первым собственным трансивером стал Радио-76. Радиостанция эта была разработана в лаборатории журнала Радио Б. Степановым (UW3AX) и Г. Шульгиным (UA3ACM). Конструкция трансивера была простой и хорошо повторяемой.

Актуальность трансивера Радио-76 повысилась, когда в августе 1978 года для советских радиолюбителей вновь открыли для работы диапазон 160 метров. Радиолюбительский позывной для работы на этом диапазоне стало возможным получить уже с 14 лет, причём без сдачи экзамена на приём и передачу азбуки Морзе.

Собрать же юным радиолюбителям свою радиостанцию стало гораздо проще, когда в 1980 году Ульяновский радиоламповый завод начал выпуск радиоконструктора Электроника-Контур-80. Стоил набор 64 рубля, содержал собранные на производстве основную плату и плату гетеродинов (без моточных компонентов), и из него можно было собрать малосигнальный тракт трансивера Радио-76.

У меня чудом уцелела основная плата из этого набора. Что же мне помешало добиться от неё в далёком 1984 году идеальной работы на передачу, можно узнать из публикации.


Структурная схема трансивер


Структурная трансивера Радио-76 была опубликована в журнале Радио, 1976, 6, стр. 19.
Трансивер состоит из трёх плат: основной платы, платы гетеродинов и платы усилителя мощности. Антенный переключатель (1) и диапазонный полосовой фильтр (ДПФ) тракта приёма (2) в состав этих плат не входят.

В режиме приёма радиосигнал поступает через антенный переключатель (1) и приёмный ДПФ (2) на первый кольцевой смеситель (3) основной платы. На первый кольцевой смеситель (3) через переключатель гетеродинов (12) подаётся сигнал ГПД (10). Полученный сигнал промежуточной частоты (ПЧ) усиливается первым усилителем ПЧ (4) и проходит через электромеханический фильтр (ЭМФ) на второй УПЧ. Усиленный сигнал ПЧ с выделенной ЭМФ верхней боковой полосой (ВБП) поступает на второй кольцевой смеситель (7), куда через (12) подаётся сигнал генератора опорной частоты (11). Полученный в результате сигнал звуковой частоты поступает на усилитель низкой частоты (УНЧ) (8).

В режиме передачи на балансный модулятор (DSB) (3) поступает сигнал генератора опорной частоты (11) и модулирующий сигнал звуковой частоты с микрофонного усилителя (9). Сигнал с подавленной несущей усиливается первым УПЧ (4), ЭМФ (5) выделяет в сигнале ВБП. После усиления вторым УПЧ (6) сформированный однополосный сигнал поступает на второй кольцевой смеситель (7), куда также подаётся сигнал ГПД (10). Полученный в результате сигнал радиочастоты проходит через ДПФ (13) усилителя мощности (УМ) (14), усиливается УМ (14) и через антенный переключатель (1) поступает в антенну.

Как мы видим, большинство узлов структурной схемы радиостанции используются и при работе в режиме приёма, и при работе в режиме передачи. Поэтому Радио-76 и является трансивером.

Основная плата трансивера


Основную плату из набора Электроника-Контур-80 я обнаружил в коробке на антресолях. Как она пережила несколько переездов, ума не приложу.

Многие конденсаторы типа К10-7 были поломаны, электролитические конденсаторы за тридцать с лишним лет должны были высохнуть, а подстроечный резистор СПО и в восьмидесятые считался хламом.

Керамические конденсаторы К10-7 были заменены на К10-17, электролитические конденсаторы на импортные, а резистор СПО на Bourns. В процессе отладки были внесены ещё несколько изменений, и теперь моя основная плата трансивера Радио-76 выглядит так:


В 1984 году радиостанция из набора заработала на приём буквально сразу: кварцевый генератор и генератор плавного диапазона (ГПД) запустились без проблем, контуры ПЧ были настроены в резонанс, ВЧ-трансформаторы кольцевых балансных смесителей были сфазированы верно.

Проблемы были с передачей, и их было две: сдвиг частоты ГПД на 200 400 Гц при переключении приём-передача и недостаточное подавление несущей на выходе модулятора DSB.

Проблему со сдвигом частоты я решил, собрав ГПД по более сложной схеме. Качественного же подавления несущей мне добиться так и не удалось, и на сообщения о наличии в сигнале несущей я отвечал, что работаю на радиостанции из набора Электроника-Контур-80.

Схемотехника основной платы


Схема электрическая принципиальная основной платы трансивера Радио-76 была опубликована в журнале Радио, 1976, 6, стр. 21.
Реализация платы из набора отличается заменой транзисторов КТ315 на КТ312 и применением вместо ИМС серии К122 их аналогов серии К118 в корпусах DIP-14.

Основным компонентом схемы является электромеханический фильтр Ф1. На фотографии платы это ЭМФ-9Д-500-3В. Этот фильтр предназначен для выделения верхней боковой полосы сигнала на частоте 500 кГц.

На транзисторе Т1 собран первый усилитель промежуточной частоты (УПЧ) на микросхеме МС1 собран второй УПЧ. На вход первого УПЧ подаётся сигнал с первого кольцевого балансного смесителя. С выхода второго УПЧ сигнал подаётся на второй балансный смеситель.

В режиме приёма через выв. 7 и 8 основной платы на первый смеситель (3) подаётся сигнал с приёмного ДПФ (1), а на выв. 7 и 8 сигнал ГПД (10). Усиленный сигнал ПЧ с выделенной верхней боковой полосой поступает во второй смеситель (7), куда также через выв. 12, 13 подаётся сигнал с генератора опорной частоты 500 кГц (11). Сформированный сигнал звуковой частоты через фильтр нижних частот (ФНЧ) поступает на вход УНЧ (8), собранного на МС2, Т3, Т4 и Т5.

В режиме передачи для формирования сигнала ПЧ с подавленной несущей (DSB) на первый смеситель (3) через выв. 7, 8 подаётся сигнал с генератора опорной частоты 500 кГц (11), а также модулирующий сигнал с выхода микрофонного усилителя (9), собранного на МС3. Усиленный сигнал ПЧ с выделенной верхней боковой полосой поступает во второй смеситель (7), куда также через выв. 7, 8 подаётся сигнал ГПД (10). Сигнал радиочастоты с выхода второго смесителя (выв. 14, 15) подаётся на ДПФ усилителя мощности.

На любительских диапазонах 160, 80 и 40 метров работа ведётся нижней боковой полосой, а электромеханический фильтр в тракте ПЧ выделяет верхнюю. Именно поэтому частота ГПД должна быть выше на 500 кГц частоты принимаемого сигнала.

К примеру, при настройке ГПД на частоту 2400 кГц в режиме приёма трансивер будет принимать сигнал с нижней боковой полосой на частоте 1900 кГц, сигнал с верхней боковой полосой по зеркальному каналу на частоте 2900 кГц, а также сигнал с верхней боковой полосой на промежуточной частоте 500 кГц.

В этом же примере в режиме передачи на выходе второго смесителя будут явно присутствовать сигналы с частотами 500, 1900, 2400, 2900 кГц, а также их гармоники.

Напрашивается вывод: в трансиверах супергетеродинного типа требуется применение качественных диапазонных полосовых фильтров. Без них невозможно обеспечить подавление внеполосных помех.

Отладка основной платы


Памятуя, сколько времени я потратил на борьбу с ГПД, я решил плату гетеродинов не восстанавливать. Вместо неё я собрал простенький синтезатор частот на si5351a с управлением по CAT-интерфейсу:


Для отладки тракта ПЧ был использован радиолюбительский векторный анализатор nanoVNA. Выход прибора был подключен параллельно катушке L1, а вход параллельно L4.

Как только оба контура тракта ПЧ были настроены в резонанс, nanoVNA показал такую вот замечательную АЧХ:

После настройки тракта ПЧ началась балансировка модулятора. На первый смеситель был подан сигнал опорной частоты 500 кГц, а на второй смеситель сигнал с частотой 2400 кГц. Модулятор балансировался подстроечным резистором R2 по минимальному уровню несущей на частоте 1900 кГц. Сигнал контролировался на приёмнике SoftRock RX Ensemble II. На картинке ниже показан лучший результат балансировки:


Результат, прямо сказать, неудовлетворительный: уровень несущей сопоставим с уровнем полезного сигнала. Попытаемся разобраться в причинах и устранить их.

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

Фиксируем начальные условия: отключаем от второго смесителя гетеродин, снова подключаем вход nanoVNA параллельно катушке L4 и получаем на приборе такой вот уровень несущей:


В схеме трансивера Радио-76М2, опубликованной в журнале Радио, 1983, 11, стр. 21, была предпринята попытка сбалансировать модулятор подключением второго дросселя. Подключаем дроссель, видим, что уровень несущей упал на 12 dB:


Оказалось, это ещё не предел: в статье В. Меньшова и А. Булатова Улучшение смесителей в Радио-76 и Радио-76М2 из журнала Радио, 1988, 12, стр. 23-24 была опубликована предельно симметричная схема балансного модулятора, которая даже не содержала балансировочный резистор. Резистор этот пришлось вернуть, чтобы добиться подавления несущей ещё на 10 dB:


Подаём на второй смеситель сигнал с частотой 2400 кГц. На контрольном приёмнике SoftRock RX Ensemble II видим на частоте 1900 кГц сигнал с нижней боковой полосой с подавленной несущей на уровне шумовой дорожки:


При этом на зеркальном канале на частоте 2900 кГц мы видим, как и ожидалось в отсутствие ДПФ, сигнал с верхней боковой полосой:


Вот так, спустя 37 лет, и была решена вторая проблема. Простая переделка простой схемы улучшила подавление уровня несущей на целых 22 dB. Если бы молодость знала!

От автора


Влияние трансивера Радио-76 на развитие советского радиолюбительского движения трудно переоценить. Схема трансивера потрясала своей новизной: кольцевые балансные смесители на диодах, применение интегральных микросхем, усилитель мощности на транзисторах, наконец!

Несмотря на новизну, схема трансивера была простой, понятной и легко настраивалась. Проблемы с АРУ и ГПД были вызваны тем, что Радио-76 являлся своеобразным MVP, урезанной версией, трансивера I категории Радио-77. Ирония судьбы проявилась в том, что народную любовь снискал именно Радио-76.

Многие радиолюбители сразу включились в процесс совершенствования узлов Радио-76. В журнале Радио частенько публиковались схемы усовершенствованных ГПД, телеграфных гетеродинов, цепей АРУ. Основная плата трансивера Радио-76 легла в основу нескольких приёмников и трансиверов.

Степанов и Шульгин кардинально переделали схему трансивера в версии Радио-76М2. Структура радиостанции при этом осталась той же: сообщество признало эту архитектуру классической, её до сих пор наследуют многие любительские трансиверы!

Что касается смесителей: и у гениальных разработчиков происходят накладки!
На русском языке тема широкополосных трансформаторов и кольцевых балансных смесителей была раскрыта в переведённой в 1990 году книге Эрика Тарта Реда Справочное пособие по высокочастотной схемотехнике: Схемы, блоки, 50-омная техника. Ни в 1976, ни в 1983 годах ничего подобного в доступе ещё не было.

Главное, что советские радиолюбители получили в своё распоряжение отличную конструкцию, с которой можно было работать в эфире, и которую можно было совершенствовать. Не хватало опыта, не было приборов, некоторые радиодетали приходилось доставать, но это никого не останавливало.

Таким мне и запомнился 1984 год. Это был год, посвящённый отладке моего Радио-76!

Подробнее..

Финал рояля разбираем загадки и подводим итоги

02.06.2021 18:06:54 | Автор: admin
Котика разбили, рояль спасли точнее, наоборот: котика скачали с сервера, роялю поломали ножки, но в целом он бодрячком. И сегодня был последний день, когда все желающие могли попробовать свои силы в скачивании NFT-гифки с танцующим котиком, хотя ноутбук уже пять дней как двинул лапти за печь. А теперь мы вскрываем все карты и рассказываем обо всех загадках и их решениях.

По истории, хозяин ноутбука дал нам его IP-адрес, SSH-ключ и логин. В конфиге SSH был настроен доступ только по ключам, чтобы участники могли не тратить время на подбор пароля. Публичный ключ был таким:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDMyK0W5OMnzJFszo5ClCVbqAQ6s1NWYeast+WjIyWF7

Главная цель была попасть на ноутбук нашего друга и скачать с него NFT-гифку с котиком, пока на ноут не упадёт рояль. Но вскоре, после начала операции по спасению котика, выяснилось, что в ноутбуке уже потоптались хакеры, поэтому участники не могли попасть на ноутбук не подходил приватный ключ. Группа хакеров называла себя sp0rk b4gel


Их интересовал исходный код, принадлежавший компании, где работал герой нашей истории. Код они слили, а вместе с ним случайно и котика прихватили, даже не заметив этого. После этого, хакеры начали шантажировать нашего друга, угрожая опубликовать его наработки, что грозило ему судебным преследованием.

Для надежного сохранения измененного SSH-ключа, хакерская группа разделила его по схеме Шамира на 10 частей, из которых 8 были необходимыми для входа в ноутбук. 9 ключей были распределены среди хакеров, а 10-й, бонусный, мы вставили вне сюжета (об этом ниже). И участникам нужно было решить несколько задач, получая за каждую из них по фрагменту правильного приватного ключа. Сами задания были в виде случайных промашек хакеров.

Поскольку кроме названия хакерской группы у участников не было иных зацепок, то им пришлось обратиться сначала к Google.

В поисковой выдаче они нашли манифест хакеров. Текст манифеста на textbin.net был успешно проиндексирован Google и находился по названию. В конце манифеста указаны ники хакеров, по каждому из которых можно было найти соответствующее задание-подкоп под хакера, ведь просто так они не отдали бы измененный ключ, верно?

Задание 50n1c4h0


Часть ключа:
ssss-01-5dc6284446d3f3ae3d2b9e12167a118708f08686474e6471d178703938e3bc043796c79f72853a2cd77d2e956e41490b9b961a526f4911527bfe14c24f0022ce31a52f5fc118ca1dd1c1f0

Категория задания: crypto, re
Гуглим ник, в итоге находим фотоальбом (проиндексированные во время квеста ссылки на него на Pinterest или Juxtapost) и сайт https://50n1c4h0.netlify.app/ по одной из фотографий в фотоальбоме, рекомендующей использовать этот сайт:


Сайт протектор для защиты конфиденциальных данных. Внутри него доморощенная 16-битная виртуальная машина с байткодом, немного накрытая обфускатором. Программа для этой машины реализация поточного шифра RC4 с ключом 4c524338f5169e91e0cc05971f5b9b6e (hex). На фотографии из фотоальбома показан результат работы протектора над искомой частью ключа (из QR-кода декодируем:

6efb5c8eaf511770715681cac161b49f45ad9c12837ae41b35639653fcbc03e55e16a5d4953ba1fee6f8d4a3606b0751fd6d6a0b8e14200f4ed78943d4553d0bebfabcb8c0e30fa3580ab08899edbadd878b6e7c033febf6679558d1511c74f8d9ca54ef4c646a08f1bfeefe1a3b7884d3f2c94ee14649dcdc11591b8a8b0a005c80a8ce4b7c3dde988d59065ec574ad194fdc204137fc6748994942237e).

Поскольку алгоритм обратим, можно воспользоваться любой реализацией шифра RC4, подставить ключ и получить исходный открытый текст это reverse-путь решения задания.

Можно было пойти и другим, криптоаналитическим путём: заметив, что выходной байт шифротекста зависит только от позиции и значения входного байта и не меняется (например, байт 0x41 на позиции 1 будет всегда преобразован в 0x39, байт 0x42 в 0x5F и т.д.), можно было побайтово подбирать входные данные под известные из QR-кода выходные, таким образом также получив искомую часть ключа, байт за байтом.

Задание GemmadohA


Часть ключа:
ssss-02-8e8425381bc24f44cbdefdae711d91c0a733350e949827f66a0ee00a5301afc3f68aad0a69e1b3d93465e70db0675089dd27fd993efe39bc881ad00b19d6055b856e9853af0b681213cb81

Категория задания: почти pwn
Мы не могли оставить в стороне прошлый квест (подробнее о нём читайте тут) и решили использовать сайт студии Сокол как дань уважения тем участникам, которые дни и ночи пытались спасти деньги из пасти прожорливого шредера.

Заходим на сайт https://ooosokol.ru/ (намёк на этот проект был в сообщении хакеров). Видим, что сайт уже взломал хакер GemmadohA. Также он оставил там веб-шелл (есть в комментарии в странице дефейса, чтобы не забыть). Логин и пароль для веб-шелла:gemmadoha:gemmadoha, почти как классический admin:admin.

Хакер также создал на взломанном сервере себе аккаунт. Приватный ключ от него с сервера не убрал (/home/gemmadoha/.ssh/id_rsa), поскольку генерировал на нём же. Читаем веб-шеллом приватный ключ, заходим на сервер ooosokol.ru по SSH.


Видим, что хакер всё еще висит (подсказка что если хакер всё ещё на сервере, он же только недавно его взломал в Discord) по SSH (с IP 194.87.236.30), что-то копается в файлах. Для него висит сокет агента SSH в /tmp, это можно обнаружить, просто поискав все файлы, владельцем которых является хакер (а чтобы не тратить зря время на попытки повышения привилегий, в Discord была дана подсказка то, что вы ищете не на этом сервере).

При помощи команды:

SSH_AUTH_SOCK=/tmp/ssh-5j3MjI6mby/agent.23577 ssh gemmadoha@194.87.236.30

используем его SSH-агент против него самого (хакаем хакера, в Discord была дана подсказка hack the hacker) и заходим на его же сервер. В домашней папке лежит очередной secret.txt.

Задание thereane777


Часть ключа:
ssss-04-44ed995def2ab783d02fdd783c528a347f29adc494130b65827721002fe47d0b5d3f29cf55620b596c49f23652cb4648cb3c7b5c605d5a9e2f0f3c46f32894c9980d028a7e7b33f8c8c48b

Категория задания: misc
Гуглим ник, попадаем в темы на хакерских форумах, где зарегистрирован этот хакер.

В описании профиля хакера указана ссылка на Яндекс.Диск для полезной информации: https://disk.yandex.ru/d/kQ9MPqO3anRiTA

На диске среди всяких полезных программ (клиенты ICQ) находится запароленный архив icons.zip. Пароль от него: v1pPGOuPS8HXFrS (длинный и неподбираемый). Без знания пароля видно, что в архиве два файла .png (картинки) и интересный файл secret.txt.

Задание решается без знания пароля по малоизвестному, но всё же все еще актуальному методу zip known plaintext attack при помощи программы bkcrack (наследница pkcrack). Именно для реализации этой атаки в архиве лежат две случайные PNG-картинки (их содержимое участникам неизвестно, да это и не требуется, однако найти в интернете их тоже можно), поскольку их заголовок, первые 16 байт которого одинаковы для любого PNG-файла, и является достаточным (там достаточно всего 12 байт, причем даже необязательно последовательных) для проведения атаки.




В результате получаем ZipCrypto-ключ dd8d62b4 83fed681 6761bbc1, при помощи которого открываем архив и получаем содержимое файла secret.txt, в котором лежит искомая часть ключа.

Задание y4n4naby5


Часть ключа:
ssss-05-9b5f9fef9cf5d85d206ed65b4a645888f6409b79c956309a2f1860daa0c4d8cd23113fdcee5fa5575ff7e9398d061eed52c62eee743f77c569c861fb1ade55a2149dc05a9f2e4f2e18bad5

Категория задания: forensics
Гуглим ник, находим (во время проведения квеста находилась) тему на форуме с просьбой о помощи по вскрытию Wi-Fi сети с именем DIR-615 y4n4naby5 (видимо Wi-Fi искомого хакера). В сообщении приложен дамп трафика, который необходим для подбора пароля к Wi-Fi сети (четырёхкратное WPA-рукопожатие).

В теме на форуме выложен дамп трафика Wi-Fi сети, и в дампе информации даже больше, чем необходимо для подбора пароля. Пароль же подбирается по старому, очень известному (он даже включен в самый известный пентестерский дистрибутив Kali Linux) и применяемому при первом же удобном случае при практически любых подборах словарю RockYou. Этот пароль fireheart79 (был успешно подобран участником форума). Подбор займет не более часа на современном процессоре (никакие видеокарты не нужны) при помощи того же hashcat.

Знание пароля также позволит и расшифровать ненужный WiFi-трафик при помощи того же Wireshark, и увидеть, что за данные передавал хакер. Кроме мусора (обмен данными с серверами Alibaba и Google) можно заметить интересное подключение по протоколу FTPS (FTP поверх SSL/TLS) к серверу soclose.numbers.com (такое имя не зарегистрировано, это и не важно, а IP вообще подделан на один из IP Google). TLS, как известно, шифрованный протокол, однако параметры без каких-либо дополнительных специальных настроек (сервером был vsftpd, а клиентом andftp) оказались такими (TLS 1.2 без использования выработки общего секрета по схеме Диффи-Хеллмана), что для расшифровки трафика из дампа нужен лишь приватный ключ сервера (если задействовать схему Диффи-Хеллмана, то это было бы невозможно без дампов памяти клиента или сервера). Параметры ключа сервера (RSA-2048) подобраны так (p и q близки друг к другу), чтобы быть подверженными атаке по методу факторизации Ферма. На это есть намек в имени сервера (so close numbers). Атака выполняется мгновенно при помощи той же RSACtfTool, и дает

p = 133205738301055492415292455053957573761950370019465363197330018804911429748841372623440097998280840848577224963374030102174633719338576372412863025595291812898461741802590180711710007911941796139236802646966981084378380345280502967196789430710224184344783160032007107024729298554505470658071546418304653261811

q = 133205738301055492415292455053957573761950370019465363197330018804911429748841372623440097998280840848577224963374030102174633719338576372412863025595291812898461741802590180711710007911941796139236802646966981084378380345280502967196789430710224184344783160032007107024729298554505470658071546418304653247279

А соответственно и приватный ключ:

-----BEGIN RSA PRIVATE KEY-----MIIEoAIBAAKCAQEAjI7G8TjcvnASyKj8jlnIC8mj2BjCISJRKa91xVC2ATA6dgJQVq12wxCJ/4tvG/GHv4mtTF3T5EASTUD+KSIjGPxakcXFEF13VfNS6C0TwyBH5+yZ/f5AdzTPDqF2ScZQ1J461NVOscZN9eXU5JGO/b+NpP/QZ2Od4E3WBTfP1zpBSAnoVOLs3TjWSAfW1AY6uEBS2NKT0VMRSya2u57ZdPkC2+pH1NG9GW6CR4KR2RVT2vdFCOEyMNSixhklBdVNNIHkZYQH0NMt4FUfY5bE9W6wBvUtzIEVqNXCQv3IC6tmPYIgvy8FquGNln1mFr7+H4TMaoIlz4LYdK2UwtBanQIDAQABAoIBAHTRZT6uh6gu9S2YZO7aZ4yEdYvwZ8eqAdKnZTYssleigbP6kFK5sG7GnCqq9BlBUBU8k69Ye/bD2XIjhhkhqhHmClAFEpdbVwc0R793V2lgtuJmnkWevm1UkpISV4FRNXTAXRzue4z8x2aLMbkV0MXMIij0A30qKdh2WF3V2QOCx9dLjuL5AZ6B4keOYz3mKbp1fzU/xWzEgSaJqBtcf4qZcj/c3Kov+3i3/WDXu4phCYVi/JpBok0zTKiMLFJ+xqISabd8yZJb5hViVSu9YRyu4H1rg3N6a5Ukdgp56F3kW4sur6KsftQmLShdgGctF+SBF7ZiKcfkT9oXtQ0guvECgYEAvbD27ue9r5qmuBX4WdqtbM6tEGm5q914wKnpbTb1ZNp2fzoSU3ticfpUpxvsFQy8P8SB0Lv6sTzC6wfPhGVMnXa4HE5NrZ4jtXdk1dxaC/TvaYGeHpTj/fGARDDRXBlbXVFgnPnC3EOUATWD5obWtaJg5HOSZwMFJB1ehPWc+/MCgYEAvbD27ue9r5qmuBX4WdqtbM6tEGm5q914wKnpbTb1ZNp2fzoSU3ticfpUpxvsFQy8P8SB0Lv6sTzC6wfPhGVMnXa4HE5NrZ4jtXdk1dxaC/TvaYGeHpTj/fGARDDRXBlbXVFgnPnC3EOUATWD5obWtaJg5HOSZwMFJB1ehPWcwy8Cf0Kv9CAJWKZjuDj/gFAWkOGvxyf+A0holAsnsOi0aZELPJ19zPOMbQ+k8h3NszGzSHsimoDHlVq6Acye8lWZR1YUZqWM4cIn1mX1k32b+gw6D/EHoI8fyQd935oZj4DRaU1lTpHhPKAzIdVK+xQQU2uHqoimGNIePbB0osYbkxUCgYBwECTBnNx96pJFvIz8oGjGGA873AnZk7xrrbV+VPKCA2Hv5aG/+et9xFLQanl9Mgngbjn206bVoDzS1slswN+TQvifmE7hm8Qix4clpMj5uVja7r03+eP7OPn6zxBQJZbJOXMnKZJJyA6e7DuhK9WadnRhYjmCa9FUtZkKWYOj9wKBgCzJOfLSMgROqzznGTesCXueTI0NnecG7WvZehtRc0LHEAiC12e9YvCqj7AoJsZBfec+IGk2vX8AunUKvYUZL2J7WfCyp57Kj1YgnEyikTVPsOEwjb5lALK1FwITxTH7xPD8OVIW0eQPvmhczoMKYPQG0mtZk+QkPr9dv0YcvwNB-----END RSA PRIVATE KEY-----

С ним расшифровываем TLS-трафик (снова тем же Wireshark) и получаем содержимое заливаемого по FTPS файла secret.txt, в котором лежит искомая часть ключа. То есть выполняем два шага: взломать WPA и взломать TLS.



Задание m0x143y


Часть ключа:
ssss-06-ad1a38b7f24f17489ef204207f7c3b8cf17032b316d5cb9d123619d209676ad6e7ba567c33ac41376876265a70f45f73a991cb6e9100b0df4b8b102a51a147dc6d641cf8bbbecd07321e0b

Категория задания: forensics
Гуглим ник, находим (во время проведения квеста находилась) тему на форуме с просьбой проверить ошибку при открытии тома TrueCrypt:




В сообщении на форуме написано, что возникает проблема при открытии определенного TrueCrypt-тома. Дан скриншот ошибки и ссылки на файлообменники, на которых лежит сам контейнер и дамп памяти для отладки проблемы. Пароль на контейнер длинный и неподбираемый: uBocLXywprQ9VJ6jxpYP. Однако есть дамп памяти, и, например, при помощи volatility-плагина truecryptmaster можно извлечь мастер-ключ TrueCrypt-а (truecryptsummary выдаст, что том был смонтирован и пути к нему, а truecryptpassphrase не выдаст ничего, потому как дефолтная настройка TrueCrypt не кешировать пароли).

Он будет вот таким:

Container: \??\C:\Users\m0x143y\Documents\encrypted.tcHidden Volume: NoRemovable: NoRead Only: NoDisk Length: 66846720 (bytes)Host Length: 67108864 (bytes)Encryption Algorithm: AESMode: XTSMaster Key0xfffffa801b57f1a8  84 2c 3d a3 24 7d 9a 37 d6 53 7e ac 1f 3c 2c 7f   .,=.$}.7.S~..<,.0xfffffa801b57f1b8  de 61 85 de 81 a9 84 2a 4d 3c d9 57 df 81 c7 29   .a.....*M<.W...)0xfffffa801b57f1c8  8f 56 fc e1 80 4e cf 2a ce 44 5b 9f a6 10 6f 98   .V...N.*.D[...o.0xfffffa801b57f1d8  15 e2 50 1f 49 38 f0 a9 62 a7 96 4a db d3 53 9f   ..P.I8..b..J..S.


Адрес KDBG для volatility 0xf80002a45120, профиль подойдет Win7SP1x64_23418 (т.е. volatility --kdbg=0xf80002a45120 --profile=Win7SP1x64_23418 -f mem.raw truecryptmaster). Затем при помощи, например, MKDecrypt можно по полученному мастер-ключу (без знания пароля, он уже не нужен) дешифровать контейнер в сыром виде. Для чего? Искомый файл secret.docx (сделано так, чтобы он не попал целиком в память в MFT и не сильно упростил решение из-за малого размера) удален из контейнера (подсказка там уже нет ничего важного в рояле), как и обещано в сообщении (и в Discord была дана подсказка а была ли там важная информация?), там лежит только всякий мусор (пентест-программы и пустые кошельки Monero). Однако с сырым расшифрованным контейнером и практически любой программой восстановления данных с FAT-разделов, например, R-Studio, photorec или DMDE, удаленный из криптоконтейнера файл с частью ключа восстанавливается.



Задание 3r1or0l3r


Часть ключа:
ssss-07-7931b90aace8673aa4d6162c3e729b7c89152de5e9bed9ab9fb9ff8eb1fbe8307bd985f728de99123980abee36d0495fbad93cf52d990a9a0fdbb82b62c7b141f3642e051dfa8112b56833

Категория задания: stego
Гуглим ник, находим его творчество: https://textbin.net/hzbmlkhzjg

Текстовая стеганография по методу цепей (о чем была дана подсказка в Discord связанные одной цепью и текст связан, неслучаен, имеет смысл в видео) Маркова: An Approach for Text Steganography Based on Markov Chains (подсказка в Discord 1409.0915). Реализация этой идеи: http://jthuraisamy.github.io/markovTextStego.js/

В текста творчества (первая глава киберпанк-романа) есть очевидным образом находимые имена собственные, например, McCoy Pauley или Bobby Quine, взятые из первой известной книги в этом жанре: Нейромант Уильяма Гибсона. В качестве специфичного корпуса текста для цепей Маркова использована первая глава этой книги (о чем есть намек в названии повести, да и других слов и предложений кроме как из первой главы там нет), свободно доступная здесь.

Вводим текст первой главы Нейроманта в качестве корпуса, вводим текст первой главы творчества хакера в качестве шифротекста и получаем искомую часть ключа. Да, со стеганографией всегда приходится немного погадать и поподбирать варианты.



Задание VenchamoSs


Часть ключа:
ssss-08-6fe2d9b400840e44d5f20e15043cc4739ed97879110790350dd2e5e67f0b56b6e11607bb9e99f0cb1c57ede4d309e9f85363168f2ff1d2f316c9c89a8179110a759140a911075a0547f908

Категория задания: osint
Находим (это же osint) хакера на том же github: https://github.com/VenchamoSs.

На гитхабе указан второй ник a.k.a. welAnty. В понравившихся репах gpg, а значит хакер пользуется и интересуется PGP/GPG-решениями. Находим хакера на keybase.io (известный сайт, где пользователи GPG обмениваются приватными ключами), там есть публичный ключ с email welanty@forexrobotexperts.now.im. А также указание не использовать старый ключ с ID 0xF6B246D4. Если поискать по этому ID на самом известном и старом сайте для обмена ключами, то можно найти тот самый старый ключ с email eukx@forexrobotexperts.com. По нему в утечке ANTIPUBLIC (входит и в Collection #1, самая крупная компиляция утечек за последние несколько лет) есть пароль N4syZRJ843.Заходим по паролю на SSH (единственный открытый на сервере сервис) welanty@forexrobotexperts.now.im, забираем часть ключа.

Задание -velashic-


Часть ключа:
ssss-09-be6c314465393225739da1e65200657df7d4a15e66e606c9619ef51a88d5b4015353ac2f089f3dfcd3f86757e89e404dfc2552fe59218310f94b8834d7a82d47b68669aa31eb0860a95d26

Категория задания: osint, forensics
a href=www.google.com/search?q=%22-velashic-%22>Гуглим ник, находим тему на форуме Cyberforum в разделе про Arduino. Там всё описано: хакер просит помощи, по своей некорректно работающей Arduino и прилагает дамп USB-трафика, поскольку подозревает, что она слишком китайская и при заливке прошивки что-то идет не так. Код прошивки должен играть песню группы Metallica Master of Puppets. В дампе помимо заливки прошивки на Arduino попало также и общение с USB-флешкой (распространенная ситуация, поскольку USB-интерфейсов в Wireshark меньше, чем USB-портов на компьютере, ведь их количество соответствует не портам, а USB-хабам на материнской плате). С флешки считывается файл с той же песней для прослушивания, а также записывается запароленный архив secret.7z. Во время извлечения видим, что происходит запись в NTFS-раздел на флешке, а в NTFS есть концепция fixup, поэтому не забываем поправить (о чем была дана подсказка в рояле) 2 байта по смещению 142 (попали на границу сектора) с 0600 на 708f по таблице USN/USA (Update Sequence Array) FILE-записи. Пароль к архиву угадывается из очевидного интереса хакера группа metallica (также есть и в известном словаре RockYou), в архиве лежит secret.txt с искомой частью ключа.




Задание chyrgerillll


Часть ключа:
ssss-10-132faac795e60a0f9457167c3db3f1b1efd25cdd5049329e68fd43ce884e606d17fb14e70c897bd3308aaa213443952522c95b2e3c29d68dca9611a12e6f3d8a660113370c2f6753fc0643

Категория задания: crypto, re
Находим github-аккаунт с единственным репозиторием: https://github.com/chyrgerillll/mymnemonicgen В репозитории лежит реализация генератора мнемонических фраз, использующихся для запоминания доступа к криптокошелькам в голове по стандарту BIP39. Этот стандарт используется практически во всех криптовалютах и практически во всех реализациях их кошельков, далеко не только в Bitcoin. Генерацию приватных ключей для кошельков из этих мнемофраз описывает стандарт BIP44, также используемый большинством реализаций криптокошельков, о чем есть намек в репозитории. Seed-данные из энтропии, сохраненной в мнемофразе, для него вырабатываются по BIP32 (список всех трёх стандартов в первой подсказке из видео). Пример того, как всё это генерируется, можно увидеть вот здесь: https://iancoleman.io/bip39/ (последняя подсказка, данная в Discord; также подсказан использованный стандартный путь генерации m/44/60/0/0/0).

Там же, в репозитории, есть и адрес кошелька в тестнете Ropsten криптовалюты Ethereum, для приема донатов на продолжение разработки генератора. На нем лежит несколько тестовых эфиров. В репозитории также есть и намек на то, что требуется для выполнения задания: попробовать сломать сгенерированный этой доморощенной реализацией генератора кошелек и дать знать об этом автору (или и вовсе увести тестовые эфиры). Необходимый для связи email хакера (chyrgerillll@rambler.ru) можно узнать, склонировав репозиторий к себе и посмотрев, как он засветился в одном из коммитов (также неочевидная и частая проблема пользователей git).

Генератор использует стандартный питоновский ГПСЧ (вихрь Мерсенна), в качестве seedа к нему текущее время. Оно берётся из транзакции с пополнением средств (и подбирается 30 секунд, поскольку время на компьютере хакера могло быть не идеально правильным, о чем была дана подсказка в Discord всего 60 000 вариантов). Таким образом восстанавливается состояние ГПСЧ (seed 1621586183221, 21.05.2021 08:36:23.221 GMT) и получается искомая seed-фраза try process bubble call spell peanut pear valve boring stumble inject turn, а по ней и приватный ключ (0x702ca34414cc046ed2f63857a098b166541c3f477d7679a19e51de901d0df471), дающий доступ к кошельку.

Если отправить полученные сведения и ключ (как подтверждение того, что генератор действительно уязвим) хакеру по почте, то он предложит сделку: участник не трогает более его кошелек, а в ответ получает искомую часть ключа.


На третий день висения рояля мы дали участникам подсказку, которая помогала решить это задание. Подсказка зашифрована в конце этого видео:


Интересный факт: актриса не собиралась ломать гипсовый череп, но настолько вжилась в роль, что сделала это весьма экспрессивно, удачно оживив видео. Хорошо, что количество черепов по привычке зарезервировали по схеме N+1, и мы смогли записать еще пару дублей.

Так вот, мы решили взять этот забавный момент, зациклить и зашифровать в него подсказку. Закодированное в аудио RTTY-сообщение (на что в Discord были даны подсказки по поводу того, что звук похож на звучание старого модема или даже скорее телетайпа) можно было декодировать например с помощью известной в узких радиолюбительских кругах программы Fldigi:


Сообщение таким образом давало подсказки по заданиям для хакеров 3r1or0l3r и chyrgerillll.

Результат выполнения заданий победителем


Если собрать полученные при решении заданий части ключа в программе ssss (реализует разделение секрета по схеме Шамира, намек на эту программу содержится в тексте всех частей), то участник получает ссылку (зашифрованную pastebin): https://0bin.net/paste/YrFxYqMg#ZVK78BWtOhtncw3-xwJe9dw5rGBOboTBOJhEaop8tge

По этой ссылке находится приватная часть ключа, необходимая для захода на ноутбук.

Бонусный ключ (10-й).


В посте про музыкальные монограммы у нас есть описание одного из алгоритмов шифрования (немецкий метод, 18 век). Задание простое: участнику необходимо набрать на рояле зашифрованную монограмму RUVDS:


На сайте на клавиатуре у нас были такие вот надписи:


Для того, чтобы набрать RuVDS, надо было проиграть на рояле такую вот последовательность:

4 7 1 4 5

Результатом этого будет сообщение, которое приходит в Telegram того, кто проиграл эту мелодию:
Поздравляем! Ты вскрыл одну из 8 частей для раскрытия секрета (SSH-ключа)!
Вот она: ssss-11-2ff9228ea4b6b1fe9361a28e506ca2d35699652cc2a5838d185b075ebe9b60ce4d6e1345f6a0ebe55f5a097218265bb35a3fea2632cc569a5bb6f377591138c0d80daa96420be7150d183a



Отвечая на вопросы участников, да, это был бонусный ключ, его наличие не обязательно для прохождение квеста, поэтому он выбивается из общего сценария повествования квеста (лора).

Хозяйке на заметку: термин лор произошёл от английского слова lore, что в контексте квестов означает знание, предание.

Бонусный ключ мы добавили для того, чтобы дать тем участникам, для которых основной сюжет слишком сложный, попробовать себя и получить хоть какой-то ключ.


Кроме того, мы следили в Discord за тем, как участники проходили квест, и подкинули им дополнительные подсказки. Если участники догадывались проиграть на рояле закодированные ники хакеров, то получали такие сообщения через Telegram-бота:

1 5 5 1 5 1 2 3 (-velashic-, задание 9)

Молодец! Вот тебе подсказка по нику -velashic-:

проверь целостность извлеченного архива.

6 1 3 2 5 4 4 или 6 3 4 (m0x143y)

Молодец! Вот тебе подсказка по нику m0x143y:

Перед выкладыванием в интернет по своей проблеме он ведь сказал что там уже нет приватной инфы



Победители и призы


Мы уже объявили имена победителей, успевших скачать котика. Но после падения рояля у участников было ещё пять дней, чтобы решить все задания, уже только из спортивного интереса. И мы поздравляем еще раз всех, кто не опустил руки и тоже добрался до гифки с котиком!

Добравшиеся до конца
Александр
not-alone
lofarter
Герман
Ильдар

А ещё, по результатам голосования в Discord мы решили наградить участника not-alone за огромную помощь в совместном решении задач: мы дарим ему сертификат на 200 долларов для аренды виртуального сервера в любом из 11 дата-центров RUVDS, а также ящик нашего фирменного пенного Smart Admin.
Всем победителям добравшимся до конца, мы дарим промокод на 50% скидки на Хакер.

За получением призов необходимо обратиться к @Johurn.

И напоследок хотим поделиться некоторыми забавными цитатами участников:







Еще немного забавных картинок из дискорда:



И теперь точно в завершение: помним, любим, скорбим.



Подробнее..

Чем кальциевые аккумуляторы отличаются от гибридных?

21.06.2021 16:11:25 | Автор: admin
Они отличаются тем, что у гибридных (Ca+, Ca/Sb) свинцовый сплав положительных решёток легирован сурьмой, а отрицательных кальцием, тогда как у кальциевых (Ca/Ca) те и другие кальцием. В результате, выделение газов происходит при разных напряжениях заряда, и токи окончания заряда при этих напряжениях тоже разные.

Однако, современные автомобильные аккумуляторы отличаются не только составом металлов, но и плотностью установки пластин в банках, а также сепараторами между пластинами, которые влияют на распределение ионов носителей заряда в электролите, а значит, и потенциалы, и токи при том или ином напряжении на клеммах. Потому случаются казусы, когда кальций ведёт себя как гибрид или гибрид как кальций.


Обманывают ли нас производители, или мы не всегда учитываем влияния конструкции на электрохимические процессы? Проведём серию испытаний пары аккумуляторных батарей (АКБ), изображённых на фото.

В сегодняшнем эксперименте участвует батарея 6СТ-64L Тюмень PREMIUM СаСа 64 А*ч. Кальциевая технология освоена Тюменским аккумуляторным заводом (с лосем на логотипе) в 2019 году.


Аккумулятор полностью разряжен, плотность электролита 1.07 граммов на кубический сантиметр. Ареометр утонул ниже шкалы. (Выводим тюменского лося на чистую воду, шутка для тех, кто знает: электролит полностью разряженного свинцово-кислотного аккумулятора вода, потому что вся кислота в намазках, в виде сульфатов свинца).


Тестер показывает уровень заряженности (state of charge, SoC) 0%, внутреннее сопротивление 9.77 мОм, ток холодной прокрутки (ТХП) 283 из 620 А по стандарту EN, напряжение разомкнутой цепи (НРЦ, оно же электродвижущая сила ЭДС без нагрузки) 11.53 В, и предписывает зарядить аккумулятор.


Заряжать будем зарядным устройством (ЗУ) Кулон-720. Настроим следующие параметры заряда: предзаряд до 12 В 2 А, основной заряд 14.7 В 6.4 А 24 часа, хранение 13.2 В 0.5 А.


Дозаряд у Кулона-912 реализован качелями, так принято называть управление двухпороговым компаратором или компаратором с гистерезисом по напряжению. Когда напряжение на клеммах достигает верхней планки, ЗУ отключает зарядный ток. Когда поляризация релаксирует, напряжение на клеммах снижается, и при касании нижней планки ЗУ возобновляет подачу тока. Продолжаются эти циклы до превышения максимального времени. Установим пороги 15.6 и 14.7 В, ток 3.2 А, продолжительность 16 часов.


Прерывистый дозаряд качелями или моргалкой служит затем, чтобы минимизировать потерю воды на электролиз, и при этом по возможности полнее зарядить АКБ и перемешать электролит. Исторически этот способ сложился применительно к зарядным устройствам (источникам питания), у которых было невозможно оперативно регулировать зарядный ток, и вместо снижения силы тока, его прерывали по таймеру с помощью реле указателей поворота, либо по напряжению с помощью компаратора. Чтобы компаратор не возобновлял заряд моментально после его отключения, а делал паузу, понадобился гистерезис.

Некоторые энтузиасты считают электролиз воды при заряде аккумулятора вообще недопустимым, и устанавливают низкий верхний порог качелей. Дозаряд с такими настройками затягивается надолго, и часто не устраняет расслоения электролита и сульфатации глубинных слоёв намазок. Поверхность пластин при этом может выглядеть идеально: коричневая у положительных и серебристая у отрицательных, но при изгибе материала активных масс (АМ) он хрустит, выдавая присутствие сульфатов в глубине. Разумеется, для проверки пластин на хруст АКБ следует вскрыть и разобрать, потому эти факты не общеизвестные.
Крайне не рекомендуем разбирать любые химические источники тока без адекватной всесторонней подготовки: техники безопасности, оборудованного рабочего места (не на кухне и не в жилом помещении), средств индивидуальной защиты, знания дела и навыков работы, а прежде всего, понимания, зачем это делается. Компоненты химических накопителей энергии по своей природе токсичные, едкие, а часто ещё и пожаровзрывоопасные.

Другие энтузиасты пошли дальше и стали регулировать интегральный ток с помощью широтно-импульсной модуляции (ШИМ, PWM) более высокой частоты, чем доли герца единицы герц, реализовав подачи зарядного тока одной и той же амплитуды пачками импульсов ШИМ. В любом случае, для эффективного заряда свинцово-кислотного аккумулятора, необходимо обеспечить присутствие воды в зоне реакции, т.е. перемешивать электролит, так как при заряде АМ затрачивается вода и выделяется кислота, и потенциал заряжаемого участка АМ должен быть достаточным для преодоления термодинамической ЭДС и осуществления реакции Гладстона-Трайба.


Пошёл предзаряд.


Вскоре ЗУ перешло к этапу основного заряда.


За три с половиной часа залито 22.4 А*ч, напряжение на клеммах 13.3 В. Оставим ЗУ работать на ночь.


На следующий день время заряда составило 19 часов 42 минуты, аккумулятору сообщено 75.3 А*ч. Напряжение дозаряда доходит до установленных 15.6, ток при этом напряжении снизился до 1.2 А.


Алгоритм ЗУ не просто включает и отключает ток, а продолжает заряд некоторое время при максимальном напряжении, отключает, после падения включает сначала заряд постоянным напряжением по нижней уставке, затем по верхней, с ограничением тока не выше установленного.


Плотность электролита уже чуть выше 1.25.


С момента начала заряда прошло 23 часа, залито 77.4 А*ч. Ток при 15.6 В снизился до 1 А.
АКБ продолжает заряжаться, плотность электролита поднялась чуть выше 1.26.


Заряд продолжался 26 с четвертью часов, батарее передано 79.2 А*ч. Ток при 15.6 В не снижается.


Плотность 1.27.


29 с половиной часов от начала заряда, залито 80.9 А*ч. Ток при 15.6 В снизился до 0.9 А. Оставим ещё на ночь.


На утро аккумулятору сообщено 82.6 ампер*часа, ЗУ в режиме хранения. С начала заряда прошло 45 с половиной часов.


Плотность во всех банках 1.28. Нам удалось зарядить эту АКБ после глубокого разряда за один подход.


Однако возникают сомнения в том, что эта АКБ полностью кальциевая. При заряде она повела себя как гибридная. Ca/Ca аккумулятору 16 часов дозаряда, а именно такое максимальное значение можно установить на Кулоне-720, и его мы как раз установили, бывает недостаточно. Приходится перезапускать заряд.

Разряжать будем электронной нагрузкой ZKE EBD-A20H, по ГОСТ током 5% номинальной ёмкости 3.2 А до касания под нагрузкой 10.5 В.


Прибор подключается к ПК по USB и позволяет строить графики напряжения и тока. После начала разряда стабилизированным током напряжение растёт вследствие зависимости сопротивления электролита от концентрации кислоты, затем вскоре начинает плавно снижаться по мере разряда аккумулятора.


Через 8 часов разряда напряжение на клеммах 12.22 В. Слито 26.78 А*ч, 332.45 Вт*ч.


Через 20 с половиной часов разряд продолжается, на клеммах 11.07 В, АКБ отдала 66.86 А*ч, что уже превышает паспортную ёмкость. Как видно из графика, в конце разряда напряжение снижается быстрее, модуль первой производной выше.


На последней минуте график резко пошёл вниз.


Разряд завершён, напряжение после снятия нагрузки начало расти. Время разряда составило 20 часов 44 минуты, отданная ёмкость 67.39 А*ч.


Через 3 минуты после снятия нагрузки напряжение на клеммах выросло до 11.42 В. Подождём ещё час.


Прошёл час с момента завершения разряда, НРЦ 11.63 В.


Плотность электролита ниже 1.10. Ставим на заряд.


Заряд продолжается 26 часов 19 минут, залито 79.2 А*ч. Ток при 15.6 В 1 А.


Плотность уже 1.27. Аккумулятор заряжается очень легко при дозаряде качелями с максимальным напряжением 15.6. Так обычно ведут себя гибридные Ca/Sb, а не кальциевые Ca/Ca аккумуляторы.

Смотрим интенсивность газовыделения в качелях до 15.6. Это также признак гибридной АКБ. В силу более низкого напряжения начала газовыделения, расход воды при эксплуатации у этой АКБ выше, чем у других современных Ca/Ca. Это следует обязательно помнить, не забывать проверять уровень электролита, и своевременно доливать дистиллированную воду.

GIF 7952.5 Кбайт

А так кипит при дозаряде с перенапряжениям вторая участница тестов оригинальная запасная часть LADA 6СТ-62VL производства жигулёвского завода АКОМ, типичная полностью кальциевая Ca/Ca батарея. Для такого газовыделения понадобилось 16.2 вольта при постоянном токе 2% ёмкости, то есть, 1.2 ампера, безо всякого прерывания качелями.

GIF 7597.95 Кбайт

Тесты АКБ Лада объёмны и заслуживают как минимум отдельной статьи, потому здесь приведём только их конечные результаты, нужные для сравнения двух испытуемых образцов.



Показания тестера у Тюмени: здоровье 100%, ТХП 687 из 620 А по EN, внутреннее сопротивление 4.02 мОм, НРЦ 12.96 В. У Лады: EN 722 из 600 A, 3.82 мОм.


Просадка под нагрузочной вилкой 200 А до 10.64 В.


Для сравнения, Лада проседает до 10.90.


Масса тюменского аккумулятора 16.4 кг.


Сведём данные тестирования двух аккумуляторных батарей в одну таблицу:
Фактическая удельная ёмкость на килограмм массы батареи у АКБ Лада на 11.57% выше, чем у Тюмень Премиум, удельный ток холодной прокрутки на 13.69%. Оба этих параметра зависят не от кальция и сурьмы в свинцовом сплаве, а от собственно массы активных масс и их рабочей площади, а также конструкции решёток и тоководов. Получается, действующих активных масс у тюменского аккумулятора меньше, а несуще-токоведущих конструкций больше. Это признаки классической докальциевой технологии, по которой часто производились гибридные Ca/Sb батареи.

Итак, по итогам испытаний двух АКБ типичной современной Ca/Ca Лада производства АКОМ (завод, использующей технологию Exide), и тюменской Premium с маркировкой Ca/Ca и лосем на логотипе, можно сделать следующие выводы:

  1. Оба аккумулятора проявили прекрасные характеристики: ёмкость по ГОСТ и пусковой ток по цифровому тестеру и нагрузочной вилке выше паспортных, однако Лада показывает заметно лучшие параметры, чем Тюмень Premium.
  2. Жигулёвская АКБ АКОМ при заряде ведёт себя как полагается Ca/Ca, тогда как тюменская заряжается как гибридная: рано начинается газовыделение, электролит перемешивается без затруднений, выравнивающий заряд проходит легко и быстро.
  3. Тюменская Премиум изготовлена по более старой технологии, чем жигулёвская Лада. Именно поэтому, несмотря на современный кальциевый сплав и отрицательных, и положительных решёток, тюменская АКБ имеет меньшую плотность упаковки пластин и проявляет свойства, характерные для гибридной, а не Ca/Ca АКБ.

Так мы раскрыли секрет странных аккумуляторных батарей: электрохимические процессы в своей кинетике зависят не только от химии, но и от физики, в частности, геометрии электродов и сепараторов между ними.

В модерновых Ca/Ca батареях кальциевый сплав и компактная конструкция с плотными сепараторами действуют синергично, усугубляя как снижение потери воды, что очень хорошо, так и затруднение перемешивания электролита и дозаряда, и это не то, чтобы плохо, но необходимо учитывать при выборе профиля заряда.

В традиционных батареях, даже если изготовить все решётки по технологии Ca/Ca, внутренняя конструкция более массивная и просторная, заряжать и перемешивать электролит легче и быстрее, но и воды выкипает больше. Это одна из причин, приведших разработчиков свинцовых аккумуляторов к модерновым конструкциям. Экономия свинца, с соответствующим экологическим аспектом, и при этом повышение долговечности, стойкости к вибрации, предотвращение оплывания активных масс и короткого замыкания, другие цели, которые также преследуют модерновые конструкции АКБ.

Следует ли трактовать результаты опытов так, что тюменский аккумуляторный завод лось вводит покупателей в заблуждение, и АКБ Тюмень Премиум плохая АКБ? Категорически нет. Для автомобилей с низким бортовым напряжением Тюмень Премиум прекрасный выбор.

Тюмень Премиум хорошая АКБ, достойно проявившая себя на испытаниях. Она не гибридная, а действительно кальциевая, в плане современного материала решёток пластин. Но конструкция батареи не модерновая плотно упакованная, а традиционная, вследствие чего, при изготовлении затрачивается больше свинца, и газовыделение наступает при меньшем напряжении. И именно поэтому АКБ маркирована не VL, как Лада, что означает очень низкий расход воды, а L низкий расход. Всё честно.

Это необходимо учитывать при эксплуатации: тюменская Ca/Ca под капотом автомобиля теряет воду не как типичная Ca/Ca, а как гибридная Ca+. Нужно своевременно проверять уровень электролита и доливать дистиллированную воду, и пробки для этого завод-изготовитель предусмотрел.

Напоследок сравним Тюмень Премиум с антикварной аккумуляторной батареей 6СТ-60ЭМ из статьи про капсулу времени:
Почти три десятилетия прожиты недаром, и сегодняшний технологический уровень Тюменского аккумуляторного завода позволяет производить батареи с удельной эффективностью по ёмкости на треть, а по пусковому току на две трети более высокой, чем старые сурьмянистые батареи. Потому слова классическая и модерновая применительно к конструкции АКБ не следует понимать превратно. Современные аккумуляторы разных отечественных производителей и марок показывают достойные характеристики и имеют свои области для успешного применения.

Статья написана в сотрудничестве с автором экспериментов и видео Аккумуляторщиком Виктором VECTOR.


Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru