Друзья подкинули флешку на 32Гб, которая определялась на винде как 8Мб. Несколько часов с ней ковырялся, что только не делал: и форматировал, и таблицу разделов перетирал, и с помощью dd в нули все переписывал, клонировал таблицу разделов с рабочей флешки, перепробовал кучу утилит, которые на самом деле делали одно и то же, даже использовал фирменную утилиту от производителя для "восстановления" флешки. Ничего не помогало, даже на самом низком уровне размер флешки определялся как 8 Мб.

Потом я решил сделать ход конем: включить мозги. Как определяется размер флешки? Есть два возможных способа — либо по VID/PID, либо флешка говорит о нем сама. Поскольку моделей флешек миллиард, то верен второй вариант. Значит, надо что-то сделать с контроллером на самой флешке. В общем, мозги иногда полезно включать, всем рекомендую:)

После этого я смог сделать правильный запрос и найти программу по перепрошивке по VID/PID. Набор приложений, сделанных под MFC (эх, помню лабу на первом курсе про такое), ноль UX, и ничего не понятно, благо, хоть инструкцию можно найти. После нескольких тыков флешка перепрошита и работает как надо. А потом и статья на Хабре нашлась про это.

Работает программа перепрошивки только на винде — шах и мат, линуксоиды!