Перевірте реальний розмір USB-накопичувача


28

Нещодавно я багато читав про фальшиві накопичувачі MicroSD-карт та USB-накопичувачі, які стверджують, що мають багато місця (навіть якщо ви запитаєте комп’ютер), а фізично пропонуєте менше. Нещодавно я придбав USB-накопичувач SanDisk (заявлено 128 ГБ) і хочу перевірити його розмір. Його не купують через ebay чи щось подібне, але я дуже хочу перевірити реальний розмір, перш ніж продуктивно використовувати його.

Я можу просто скопіювати на нього речі, скопіювати їх назад і подивитися, чи файли добре. Я також міг автоматизувати це за допомогою хешей та інших матеріалів. Але я сподівався, що є більш точне рішення. Я читав, що для Windows H2testw робить свою справу. Чи є простий спосіб перевірити це на Ubuntu / Linux? Можливо, спеціалізований, добре працюючий інструмент?

Оновлення: просто для того, щоб було зрозуміло, ідея полягає у тому, щоб перевірити правильність розміру системи, яку отримує Linux система ( тому жодні дані не втрачаються ). Це не так, як я хочу бачити, якщо я отримаю 128 ГБ замість 127,3 ГБ. Я хочу перевірити, чи всі дані, які я запису, будуть читатими знову. На жаль, я можу знайти лише кілька відомостей про це на сайтах англійських технологій. Однак є хороші німецькі джерела. Я фактично шукаю такий додаток, але для Ubuntu / Linux: https://www.raymond.cc/blog/test-and-detect-fake-or-counterfeit-usb-flash-drives-bought-from -ebay-з-h2testw /

Update2: Я намагався зібрати деякі джерела англійською мовою. Я не прочитав їх усіх докладно, через пропущений час.

Update3: Пояснення

Через дивних критиків, наведених нижче, деякі пояснення.

У чому полягає проблема, і чому єдиний Дд не вирішує її?

Це реакція на

"Чітко з’ясуйте, яку проблему ви намагаєтеся вирішити та яке визначення" підроблений привід "."

Здається, деякі люди не розуміють проблеми. Тому я намагаюся детально пояснити це, хоча думаю, що це значно стосується мого питання.

Ємність usb-пристроїв, які надає операційна система або інструменти Unix, може бути помилковою. Це фатально, оскільки ваша ОС регулює, скільки даних ви можете надіслати. Надішліть більше даних, ніж це дійсно може отримати, ви отримаєте втрату даних. Це проблема. Отже, чому це може статися?

Вам не потрібно добре знати USB-протокол, щоб вирішити проблему. Серійні інтерфейси мають загальну властивість: клієнтському пристрою (USB-накопичувачу) потрібно буде повідомити власну потужність через цей послідовний інтерфейс. Це означає, що клієнтському пристрою потрібен власний контролер з деякими знаннями про призначення пристроїв і, в цьому випадку, його ємністю. Він також визначає, що робити, коли отримує команду щось зберігати. Якщо контролер запрограмований таким чином, він може просто проігнорувати команду або переписати щось із даними.

Що це означає? Що б ваші інструменти unix не розповідали про ємність накопичувача: це те, що інструменти запитали накопичувач, нічого більше. Ось для чого був винайдений h2testw: він перевіряє реальний розмір методом, поясненим пізніше, і порівнює його з тим, що говорить накопичувач. Якщо це не те саме, ви можете втратити дані, тому що всі ваші загальні операції зі зберігання даних покладаються на інформацію вашої операційної системи, яка просто запитує контролер. Чому просто просити? Для тестування потрібен час і перезаписані всі дані на накопичувачі. Тож природно, що Операційна система повинна спиратися на цю інформацію.

Щоб перевірити реальну ємність на зразок h2testw, ви дійсно можете використовувати ddдля запису даних на накопичувач, читати їх ще раз і бачити, чи це те саме, що ви написали. Повністю законний. Характер апаратного забезпечення та накопичувача ускладнюють його. Розглянемо, наприклад, кеші запису. Вам потрібно переконатися, що ви не читаєте з кеша. Це лише один приклад того, чому це не так просто, як виглядає. Також подумайте, що просто записування нулів означає низьку ентропію інформації, яку можна реконструювати під час читання. Це просто не так просто в деталях. Ви все одно можете це зробити, звичайно.

Але чому, коли ви можете автоматизувати речі? Чому до роботи? f3, як запропоновано у моїй відповіді нижче, реалізує багато думок багатьох учасників (вважайте, що це вид розширеного h2testw), а також реалізує кілька методів з різними компромісами. Розробник з'ясував хитрощі різних підроблених дисків (також підроблених дисків), які вони мали під рукою . Отже, хоча я розумію теорію та проблему (мабуть, оскільки проблеми добре пояснюються в німецьких технологіях ЗМІ, але не в англомовних ЗМІ), я не претендую на все, що розумію, саме тому я згадував її вище. Це я просто теорія, яку я розумію, і я більше програмний хлопець. Але, будучи студентом інформатики, я розумію це досить добре, щоб побачити проблему.

"Спробуйте зрозуміти основні утиліти Unix"

Насправді я вже відповів на це, але щоб зрозуміти: інструменти Unix просто використовують USB-протокол (звичайно, лише для USB-пристроїв) для збору інформації. Більше цього не має сенсу робити.

Чи допомагає це купувати лише у постачальників ферм?

tl; dr: Це не так.

"Що стосується купівлі товарів, так само, як це стосується будь-якої форми безпеки, подумайте про те, щоб знайти надійного продавця і купувати диски тільки у них".

Безпека (і безпека) НЕ про довіру! Це про перевірку та перевірку! Вибачте, але це так неправильно в багатьох способах.

Припустимо, ви купуєте через надійного продавця. Кілька питань:

  1. Чи постачальник перевіряв обладнання, щоб переконатися у відсутності втрати даних? Чи впізнає, коли він купує підроблені диски та продає їх? Не обов'язково.

  2. Чи можливо він купує речі, які він не знає, є підробкою? Загалом, подивіться на останні підробки "ризен": https://www.pcgamer.com/beware-of-fake-ryzen-processors-selling-on-amazon/ , https://www.heise.de/newsticker/meldung/ Direkt-von-Amazon-Faelschungen-von-AMDs-Ryzen-Prozessoren-im-Umlauf-3772757.html

  3. Якщо я втрачу свою презентацію на диску та накручую презентацію, чи повернеться мій надійний постачальник у часі і врятує мене? Це, ймовірно, замінить привід, оскільки востаннє подорож DeLorean був знищений у 1885 році.

Інші речі

"Це питання, схоже, більше схоже на" промо "для того, що подобається ОП, і здається, що ОП набагато менше зацікавлені в тестуванні накопичувачів".

Це смішно. Я спеціально шукав подібний інструмент h2testw, який також працює на Linux. І так, це я б "хотів", корисна відповідь, так вибачте. Я не здогадувався, що англомовна преса не в курсі таких питань і мені пощастило знайти щось подібне пізніше. Це не промо, але насправді, здається, ви можете використати.


2
Немає сенсу перевіряти це, перегляньте те, що комп'ютер каже, що є, або df --block-size=M. Обмеження в 4 Гб дозволяє припустити, що це лише обмеження розміру файлу FAT32, а не ємність диска. Ви ніколи не отримаєте заявлену повну потужність, це класифікація в середньому просто.
Sir_Scofferoff

6
Те, що комп'ютер говорить, що це доступно, - це саме те, що йому повідомляє контролер usb-накопичувача. Фальшиві приводи брешуть. Якщо вона має 4 Гб, але заявляє, що має 512 ГБ, решта, яку я пишу, буде викинута або старий простір буде перезаписаний, залежно від контролера. Тож справді є сенс у його тестуванні.
verpfeilt

це цікаво. мені навіть в голову не спадало думки про підробку розміру SSD, але мені подобається думка про те, як вони записують дані і читають їх назад у байті, щоб перевірити їх узгодженість. я бачу, як це може бути проблемою, і такий інструмент може бути корисним.

1
FakeFlashCheck також має швидке сканування. Чи є OSALT для цього?
neverMind9

PS: Я вже знайшов f3probe. Дивіться мій коментар нижче.
neverMind9

Відповіді:


34

f3 - Fight Flash Шахрайство

Я знайшов лише одну альтернативу, але, думаю, це навіть краща, ніж оригінальний h2testwінструмент для MS Windows. На щастя, це дуже просто у використанні, навіть з командного рядка. Однак є графічні інтерфейси. На веб-сайті з інструментами також є багато інформації про реалізацію та проблеми з підробленими накопичувачами.

f3 пропонують два методи:

  • метод f3probe: набагато швидше
  • h2testw метод: повільніше. Також перевіряйте продуктивність П / З. Напевно, більш надійний.

Метод f3probe (рекомендується)

f3probeце один із способів тестування накопичувачів, не такий точний, але швидший, оскільки він не пише на весь накопичувач. Детальніше про це можна прочитати на веб-сайті інструментів. Якщо ви хочете бути впевнені на 100%, краще скористайтеся методом h2testw. Як описує розробник на веб-сайті:

f3probe - це найшвидший спосіб визначити підроблені диски та їх реальні розміри.

І:

Нарешті, завдяки тому, що f3probe є безкоштовним програмним забезпеченням, а після того, як f3probe виявиться битвою, f3probe може бути вбудований у смартфони, камери, MP3-плеєри та інші пристрої, щоб зупинитись раз і назавжди розповсюдженням підроблених спалахів.

На веб-сайті також є приклад використання:

Попередження : Це знищить будь-які раніше збережені дані на вашому диску!

$ sudo f3probe --destructive --time-ops /dev/sdb
[sudo] password for michel: 
F3 probe 6.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.

WARNING: Probing may **demolish data,** so it is more suitable for flash drives out of the box, without files being stored yet. The process normally takes from a few seconds to 15 minutes, but
         it can take longer. Please be patient. 

Bad news: The device `/dev/sdb' is a counterfeit of type limbo

You can "fix" this device using the following command:
f3fix --last-sec=16477878 /dev/sdb

Device geometry:
             *Usable* size: 7.86 GB (16477879 blocks)
            Announced size: 15.33 GB (32155648 blocks)
                    Module: 16.00 GB (2^34 Bytes)
    Approximate cache size: 0.00 Byte (0 blocks), need-reset=yes
       Physical block size: 512.00 Byte (2^9 Bytes)

Probe time: 1'13"
 Operation: total time / count = avg time
      Read: 472.1ms / 4198 = 112us
     Write: 55.48s / 2158 = 25.7ms
     Reset: 17.88s / 14 = 1.27s

Зауважте, що він також повертає команду, яка дозволяє використовувати диск з його реального розміру, використовуючи f3fix.

Інструмент f3fix

f3fix створює розділ, який відповідає фактичному розміру підробленого диска. Використовуйте f3probeвихідний результат для визначення параметрів для i3fix

sudo f3fix --last-sec=16477878 /dev/sdb

Метод h2testw / Тестування продуктивності за допомогою f3read / f3write

F3 - це сукупність інструментів, які мають справу з підробленими флешками. Дві з них разом реалізують h2testw-Метод:

f3write [--start-at=NUM] [--end-at=NUM] <PATH>
f3read  [--start-at=NUM] [--end-at=NUM] <PATH>

f3writeзапитає розмір заявленого пристрою та заповнить його згенерованими файлами розміром 1 Гб кожен. f3readпрочитає всі ці файли і побачить, що вони є повними та не зламаними. Як приклад команди, використовувані для тестування мого пальця ~ 128 Гбіт накопичувача:

$ f3write /media/username/1EB8021AB801F0D7/
Free space: 117.94 GB
Creating file 1.h2w ... OK!                           
...
Creating file 118.h2w ... OK!                         
Free space: 0.00 Byte
Average writing speed: 11.67 MB/s

Тепер перевірити, чи правильно зберігаються файли:

$ f3read /media/username/1EB8021AB801F0D7/
                  SECTORS      ok/corrupted/changed/overwritten
Validating file 1.h2w ... 2097152/        0/      0/      0
...
Validating file 118.h2w ... 1979488/        0/      0/      0

  Data OK: 117.94 GB (247346272 sectors)
Data LOST: 0.00 Byte (0 sectors)
           Corrupted: 0.00 Byte (0 sectors)
    Slightly changed: 0.00 Byte (0 sectors)
         Overwritten: 0.00 Byte (0 sectors)
Average reading speed: 32.38 MB/s

Тест на накопичувач такого розміру за допомогою цього методу зайняв близько трьох годин, а іноді спричиняв велике завантаження диска на моєму комп’ютері, але це сказано мені найбільш точно.

Встановити в Ubuntu

На терміналі:

sudo apt install f3

Це принесе вам: f3brew, f3fix, f3probe, f3read, f3writeз їх людиною сторінок.

Ці інструменти є частиною f3пакету, який принаймні доступний на Ubuntu 15.10. За даними веб-сайту, є ще кілька інструментів, які доступні. Щоб знайти їх, подивіться на веб-сайті.
Пакет постачається з короткими, але корисними підручниками, хоча я думаю, що вони пропускають деяку інформацію з веб-сайту про різницю f3read / write та f3probe, наприклад, тому ця відповідь отримала трохи довше.


2
Дякуємо за представлення цього чудового інструменту. Просто хочу додати, що установка з використанням apt-getбуде встановлюватися f3readі fwrite лише як f3probeі f3fixвважається експериментальною. Якщо ви хочете їх використовувати, вам доведеться будувати їх з джерела, використовуючи make experimentalпісля встановлення їх залежність sudo apt-get install libudev1 libudev-dev libparted0-dev. Дивіться github.com/AltraMayor/f3#the-extra-applications-for-linux
Ахмед Ессам

1
"[f3probe] більше не експериментальний, але доступний лише в Linux." github.com/AltraMayor/f3/isissue/78#issuecomment-378599141
verpfeilt

4

Я написав простий інструмент саме для цього, він називається CapacityTester (скріншот), і він має графічний інтерфейс, а також CLI.

Для завантаження доступний попередньо складений двійковий файл для Debian 7 , який, швидше за все, спрацює з коробки в сучасній системі Ubuntu.

Я написав це для особистого використання, оскільки не зміг знайти графічний інструмент для цієї мети. Вам просто потрібно спочатку встановити порожню флешку, вибрати її та розпочати тест. Це дуже тупий інструмент, оскільки все, що він робить, це заповнити диск з файлами, а потім перевірити правильність даних на диску. Він скасує тест на першій помилці (написання чи читання / перевірка). Він повідомить про зміщення фрагмента, який не вдалося записати або перевірити успішно, але це логічне зміщення, тому ця інформація може бути марною, оскільки це залежить від файлової системи, де файли знаходяться на диску. Однак, коли накопичувач заповнився даними і все можна було прочитати та перевірити, слід з впевненістю вважати, що зареєстрована ємність накопичувача є правильною. Як бічна примітка,

Знову ж таки, це дуже просто, оскільки він працює лише з файлами поверх існуючої файлової системи. Отже, є декілька KB (+ 1M буфер), які неможливо перевірити. І це дуже повільно, оскільки він справді заповнює всю файлову систему. F3, безумовно, набагато складніший, а також швидший, але у нього немає графічного інтерфейсу. Єдина причина, що існує у CapacityTester, полягає в тому, що у неї є графічний інтерфейс, щоб його могли використовувати користувачі, які не знайомі з командним рядком або просто віддають перевагу графічному інтерфейсу.

Відгуки оцінені.


Як зазначено на веб-сайті розробників, доступні графічний інтерфейс QT та графічний інтерфейс для OSX (я їх не пробував). Я думаю, що він заснований на QT4. Чому б також не використовувати F3 як бекенд? Це не ускладнить ваш інструмент, і, ймовірно, зробить його більш функціональним / ефективним, використовуючи знання, витрачені на F3.
verpfeilt

-6

Вирішення поведінки ОП та "фальшивий привід"

Я редагую відповідь, щоб правильно вирішити декілька питань, оскільки ОП дуже жорстоко (і, на мій погляд, проти більшості зауважень та відповідей, крім їх власних, які мені здаються підозрілими). Зокрема, існує багато тверджень, що існує "фальшивий привід", але немає чіткого визначення того, що на землі означає насправді. ОП заявило:

Я можу просто скопіювати на нього речі, скопіювати їх назад і подивитися, чи файли добре. Я також міг автоматизувати це за допомогою хешей та інших матеріалів. Але я сподівався, що є більш точне рішення.

Самі ОП визнали, що вони "можуть просто копіювати матеріали" та перевіряти цілісність даних, але були дуже проти всіх інших коментарів та відповідей, що пропонують що-небудь інше, а ОП лише продовжували натискати на F3 як "реальну угоду". Сам питання спочатку розпочав питання про розмір накопичувача, але потім ОП з будь-якої причини згадував хеши, щоб "подивитися, чи файли в порядку", начебто є таємничі накопичувачі, які претендують на один розмір, і дозволяють написати цей розмір, але то дані пошкоджуються. Тому я вважаю це дуже підозрілим і вважаю, що ОП, що рекламують F3, є спам-питанням і відповіддю.

Коли привід насправді підроблений диск

У питанні очевидним є визначення ОП

"..приводи, які стверджують, що мають багато місця (часто переносяться занадто далеко, наприклад, 128 ГБ), а фізично пропонують лише від 0,5 до 4 ГБ."

Іншими словами, згідно з ОП, контролер вимагає X кількості даних, але USB може містити лише щось на кшталт 80-90% менше від заявленого.

Користувач sudodus запропонував у коментарях (наголос додано): "Я виявив, що кілька підвісок USB трохи менше номінального розміру. Я називаю їх низькорозмірними . Я думаю, що підроблені накопичувачі " істотно низькі " (зазвичай половина номінального розміру або менше ) ". Це визначення чудове, проте якщо взяти це, підроблений диск визначається на 50%. Привід, який вимагає 64 Гб, але вміщує лише 32 ГБ, технічно втрачає половину своєї вартості для власника, а власник може лише покласти половину того, що вони планували на накопичувач.

Я пропоную більш просте визначення: пристрій для зберігання підроблених файлів - це той, який, як стверджується, має, Claimed Sizeале він не перевищує 15% (а толерантність - це Claimed Size ± 15 %).

Це ± 15 %дуже розумно. Також слід врахувати, що користувачі, як правило, плутаються між організаціями Unix, IEEE та IEC, які використовують бінарний префікс замість потужності 10 префікса для розміру даних для зберігання даних. Різниця стає 20% на рівні префікса yotta, однак USB-накопичувачів ще немає, тому, можливо, наступні 20 років 15 відсотків є розумним. (Див. Питання askubuntu "Значення" i "у" MiB " та Binary Prefix )

Тестування накопичувача

Ефективно, користувачеві не потрібні спеціальні інструменти, окрім того, що вже поставляється з Ubuntu та більшістю POSIX-сумісних систем Unix. Давайте ще раз підкреслимо та перефразуємо визначення:

Якщо ми не можемо записати кількість даних для керування, і те, що ми пишемо, знаходиться в межах 15% допуску, значить, з диском все в порядку

це простий спосіб зробити це dd, просто перезаписати пристрій нулями (і звичайно пам'ятайте, щоб зберегти свої файли, перш ніж це зробити).

sudo dd if=/dev/zero of=/dev/sdb1 iflag=nocache oflag=direct bs=1                        

Зверніть увагу на bs=1розмір блоку в 1 байт. ddКоманда , як правило , дає звіт про те, як багато написано.

$ dd if=/dev/zero of=/dev/null bs=1 count=1024
1024+0 records in
1024+0 records out
1024 bytes (1.0 kB, 1.0 KiB) copied, 0.00261981 s, 391 kB/s

Ми попросили його написати 1024 байти, він записав 1024 байти.

Більш точним переліком кроків, що дотримуються визначення, буде:

  • З'ясуйте, скільки даних вимагає накопичувач (припускаючи, що ви підозрюєте, dfщо "помилилися"). У цьому прикладі, припустимо, /dev/sdb1це мій файл пристрою для USB-накопичувача:

    $ df -P /dev/sdb1 | awk 'NR==2{print $2}'
    115247656
    

    Зауважте, що -Pпрапор призначений для перенесення POSIX, що означає, що розмір блоку даних становитиме 1024 байти, а це означає, що на цьому диску є 115247656 * 1024 байти.

  • З'ясуйте, що на 15% допуск нижче, ніж заявки на диск (115247656), можливо, використовуйте утиліту, яка підтримує обчислення плаваючої точки, наприклад awk:

     $ awk 'BEGIN{printf "%d\n",115247656*(1-0.15)}'
     97960507
    
  • Створіть випадкові дані на жорсткому диску того ж розміру, що й накопичувач на попередньому кроці, щоб використовувати його як орієнтир: dd if=/dev/urandom of=./mytestfile.random bs=1024 count=97960507

  • Тепер запишіть дані dd if=./mytestfile.random of=/dev/sda1. Якщо накопичувач може вмістити стільки, це "реально". Ви також можете прийняти md5sumабо sha1sumз ./mytestfile.randomі порівняти з /dev/sda1компанією. Ще кращим вдосконаленням було б написання точки mytestfile.randomдо місця кріплення файлу, тим самим зберігаючи файлову систему на диску та змінюючи розділення диска, іншими словами

    dd if=./mytestfile.random of=/mountpoint/for/usb/drive/testfile.random
    
  • Для цілісності то, що ви можете просто зробити будь-яку перевірку hashsum, такі як md5sum, sha1sum, sha256sumабо інші. Наприклад

    md5sum ./mytestfile.random  /mountpoint/for/usb/drive/testfile.random
    

    Ключовим моментом тут є те, що якщо кількість записаних даних перебуває в межах допуску і виробляє правильну контрольну суму до і після запису - накопичувач, ймовірно, добре.

Все це можна зручно скласти для приємного сценарію, якщо бажаєте.

Висновок

Це питання, схоже, більше схоже на "промо" для того, що подобається ОП, і здається, що ОП набагато менше зацікавлені в тестуванні накопичувачів. Крім того, саме питання є більш людським, ніж питання "драйву". У коментарях самі ОП заявили, що насправді не розуміють поведінку USB, але злими звинувачують "контролер". Я залишу це питання з 3 балами:

  • Чітко з’ясуйте, що є проблемою, яку ви намагаєтеся вирішити, і яке визначення "підроблений привід".
  • Спробуйте зрозуміти основні утиліти Unix
  • Що стосується купівлі товарів, так само, як це стосується будь-якої форми безпеки, подумайте про те, щоб знайти надійного продавця і купувати диски тільки у них.

1
Дякую, але я не впевнений, чи визначив би DD справжній розмір, тому що контролер підробив, що у нього стільки місця. Я думаю, вам потрібно записати у файл (або більше файлів) і перевірити, чи зможете ви його повністю повернути. Здається, є причина, чому існують спеціальні інструменти для тестування, на жаль, це лише вікна. Здогадуюсь, мені доведеться використовувати VM. Ну, це було досить велике в новинах в Німеччині деякий час тому. (Німецьке джерело на тему: heise.de/ct/ausgabe/… )
verpfeilt

1
@verpfeilt Добре, я не розмовляю німецькою мовою, тому стаття повинна бути чимось узагальнена, або перекладена. Як контролер підробив, що у нього однакова кількість місця? ddзвітує про кількість записаних / наданих на пристрій даних, я не бачу, як це можна підробити.
Сергій Колодяжний

2
Ну ви можете все написати, але це не говорить про те, що клієнт usb зберігатиме це. Якщо я правильно зрозумів, проблема полягає безпосередньо в архітектурі usb. Ви не можете просто прикріпити до нього флеш-пам’ять, але для цього потрібен чіп, який виконуватиме протокол. Як і заглушка ( en.wikipedia.org/wiki/Method_stub ), це дозволяє створювати пам'ять лише для запису (однак на накопичувачі є невелика кількість пам'яті для зберігання невеликих файлів). Ось чому такі інструменти, як h2testw, існують. Ось щось англійською мовою: myce.com/news/…
verpfeilt

1
@SergiyKolodyazhnyy, я виявив, що кілька підвісок USB трохи менше номінального розміру. Я називаю їх непомірними . Я думаю, що підроблені накопичувачі "істотно занижені" (як правило, половина номінального розміру або менше). Я думаю, що писати щось на диску ddта після перевірки md5sum слід перевірити, наскільки можна записати та прочитати правильно. (Я думаю, що спеціальні інструменти у відповіді @ verpfeilt виглядають привабливіше, але я їх не перевіряв. У мене є багато USB-підвісок і карт пам'яті; я не думаю, що я ще придбав підробку.)
sudodus

1
@SergiyKolodyazhnyy, я погоджуюся з вашим оновленим визначенням: "Підробний накопичувальний пристрій - це той, який стверджує, що має заявлений розмір, але він не перевищує 15% допуску (а допуск - заявлений розмір ± 15%)". - Дякую за чудове оновлення вашої відповіді :-)
sudodus
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.