реклама на сайте
подробности

 
 
> FTP сервер на STM-ке, подход к верификации данных
Danis
сообщение Nov 19 2014, 15:50
Сообщение #1


Twilight Zone
***

Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990



Привет, коллеги!
Недавно поднял на STM32Fxx FTP сервер и удаленно через Internet пишу файлы во внешнюю flash память. Все неплохо работает, есть вопрос с подходом к верификации данных в принятых файлах. Я использую ftp passive mode, и по сути, аппаратно верифицируются только пакеты пришедшие с Ethernet, можно конечно и проверить пакет после записи на SD. Но этого не достаточно для полного убеждения о целостности файла. Я тут вижу два пути, сначала записать удаленно файл, и скачать обратно, сравнить их Hash (долго, если файл большой). Второй, научить STM-ку считать Hаsh уже записанных файлов по команде (возможно не стандартной) FTP и создавать *.txt файл с Hаsh суммами файлов в текущей директории. После чего можно скачать этот файл и проверить. Но наверняка, есть более красивый и правильный подход, которого я не знаю, так что буду рад подсказке, спасибо!


--------------------
Magic Friend
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Danis
сообщение Nov 20 2014, 09:04
Сообщение #2


Twilight Zone
***

Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990



Коллеги, большое спасибо за идеи и рассуждения. Думаю это полезно не только для меня. Не стал сильно сразу расписывать задачу, чтоб не засорять. Со стороны клиента файлы пока передает человек, это не картинки и не музыка, а созданный пакет файлов, например бинарники и другие форматы подготовленные для обработки удаленной «железкой», поэтому есть свобода, и действительно идея прописать внутрь файла hash мне нравится. После загрузки файла можно сразу ее пересчитать или даже на ходу по блокам после записи и чтения с SD. Тогда можно будет светси к минимуму напряжения оператора, что будет их «заливать» удаленно. И по приему 226 transfer complete можно будет судить, что файл записан и верифицирован.
В примере *.dvc3 это формат шифрованной прошивки для обновления firmware в нашей компании.

Код
Статус:    Соединяюсь с 176.226.243.83:201...
Статус:    Соединение установлено, ожидание приглашения...
Ответ:    220 Welcome to DaNiS FTP Server
Команда:    USER Murena
Ответ:    331 User name okay, need password
Команда:    PASS ******
Ответ:    230 Login successful.
Команда:    SYST
Ответ:    215 UNIX Type: L8 Internet Component Suite
Команда:    FEAT
Ответ:    500 Syntax error, command unrecognized
Статус:    Соединение установлено
Статус:    Получение списка каталогов...
Команда:    CWD /
Ответ:    250 CWD command successful
Команда:    PWD
Ответ:    257 "/" is current directory.
Команда:    TYPE I
Ответ:    200 Switching to Binary mode.
Команда:    PASV
Ответ:    227 Entering Passive Mode (176,226,243,83,0,200)
Команда:    LIST
Ответ:    150 Opening BINARY mode data connection for /bin/ls
Ответ:    226 transfer complete, data port is closed
Статус:    Список каталогов извлечен
Статус:    Начинаю закачивать E:\KTM4_v64_35_test_U3_ftp.dvc3
Команда:    CWD /DanFolder002
Ответ:    250 CWD command successful
Команда:    PWD
Ответ:    257 "/" is current directory.
Команда:    PASV
Ответ:    227 Entering Passive Mode (176,226,243,83,0,200)
Команда:    STOR KTM4_v64_35_test_U3_ftp.dvc3
Ответ:    150 File status okay; about to open data connection.
Ответ:    226 transfer complete, data port is closed
Статус:    Файл передан успешно, передан 263 462 байт в 3 секунды


Простой проверке CRC32 пакетов, что приходят по TCP я не верю, у меня был случай, когда я скачивал дистрибутив Mplab с сайта Микрочип, после скачки установка «падала», когда я скачал этот же дистрибутив с другого места, все стало ОК. Я сравнил эти два одинаковых файла по 105 MB утилитой «file compare» и нашел 9 байт в разных местах, которые отличались, распечатал и «сунул в нос» провайдеру, через неделю извинились и что то поменяли, стало нормально.


--------------------
Magic Friend
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Danis   FTP сервер на STM-ке   Nov 19 2014, 15:50
- - jcxz   CRC32 вполне достаточно в этом случае.   Nov 19 2014, 16:15
- - scifi   Ну да, если файл передаётся через интернет, то кон...   Nov 19 2014, 16:23
|- - Danis   Цитата(scifi @ Nov 19 2014, 19:23) Ну да,...   Nov 19 2014, 17:14
- - AlexandrY   Цитата(Danis @ Nov 19 2014, 17:50) Но это...   Nov 19 2014, 17:48
- - Golikov A.   ЦитатаВот смысла закачки файла с контрольной суммо...   Nov 19 2014, 20:46
|- - Aleksandr Baranov   Цитата(Golikov A. @ Nov 19 2014, 16:46) в...   Nov 19 2014, 21:10
|- - jcxz   Цитата(Golikov A. @ Nov 20 2014, 02:46) Н...   Nov 20 2014, 02:59
- - Golikov A.   ЦитатаА почему нельзя хитрую контрольную сумму пом...   Nov 20 2014, 05:54
|- - jcxz   Цитата(Golikov A. @ Nov 20 2014, 11:54) к...   Nov 20 2014, 07:35
- - Golikov A.   я может ошибаюсь, но вроде бы для распаковки предо...   Nov 20 2014, 07:42
|- - jcxz   Цитата(Golikov A. @ Nov 20 2014, 13:42) Т...   Nov 20 2014, 09:01
|- - jcxz   Цитата(Danis @ Nov 20 2014, 15:04) Просто...   Nov 20 2014, 09:41
- - WitFed   Про TCP я читал очень давно, как там дополнительно...   Nov 20 2014, 10:11
|- - jcxz   Цитата(WitFed @ Nov 20 2014, 16:11) Про T...   Nov 20 2014, 10:21
|- - kolobok0   Цитата(jcxz @ Nov 20 2014, 13:21) ...где ...   Nov 20 2014, 12:12
|- - jcxz   Цитата(kolobok0 @ Nov 20 2014, 18:12) Вы ...   Nov 20 2014, 16:45
- - Golikov A.   На самом деле я что-то тоже в какой-то момент нача...   Nov 20 2014, 12:26
- - Сергей Борщ   Хорошо, в TCP простая сумма. Но этот TCP идет пове...   Nov 20 2014, 13:12
- - Golikov A.   Вот оно откуда воспоминание о CRC32, ведь помнил ч...   Nov 20 2014, 13:58


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 08:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01384 секунд с 7
ELECTRONIX ©2004-2016