Как сделать словарь на сайте
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Продвинутые техники создания словарей
Оглавление
В этой статье собраны возможные ситуации генерации словарей, с которыми можно столкнуться на практике, но которые ещё не описаны в других статьях. Некоторые примеры взяты из вопросов в комментариях или на форуме, с некоторыми задачами я сталкивался сам.
Поскольку здесь не будут описываться основы генерации словарей, то начнём с перечня источников, где вы можете прочитать эти самые основы. Рекомендуется прочитать их, если вы ещё не сделали этого.
Азы генерации словарей
Атака на основе правил
Атака на основе правил в John the Ripper намного мощнее чем в hashcat, для данной атаки из этих двух программ рекомендую выбирать именно John: Полное руководство по John the Ripper. Ч.5: атака на основе правил
Генерация словарей на основе информации о человеке
Именно эту проблему решает утилита CUPP.
Установка CUPP в Kali Linux
Установка CUPP в BlackArch
Запустите программу в интерактивном режиме и введите известные данные пользователя:
Пример сгенерированных паролей:
Если вам нужен перевод задаваемых вопросов, то вы найдёте его на странице карточки программы.
Составление списков слов и списков имён пользователей на основе содержимого веб-сайта
Установка CeWL в Kali Linux
Программа предустановлена в Kali Linux.
В минимальных версиях программа устанавливается следующим образом:
Установка в BlackArch
Примеры запуска CeWL
Запуск сбора слов со страниц сайта https://site.ru, используя только страницы, ссылки на которые будут найдены на указанном адресе (-d 1), для составления словаря, который будет сохранён в файл dic.txt (-w dic.txt):
Запуск сбора слов со страниц сайта https://site.ru, используя страницы, ссылки на которые будут найдены на указанном адресе, а также на скаченных страницах (-d 2), для составления словаря, который будет сохранён в указанный файл (-w dic.txt), при этом для каждого слова будет показана частота, с которой он встречается (-c), также будет составлен список найденных email адресов (-e), которые будут сохраняться в указанный файл (—email_file emails.txt) и будет создан список на основе информации найденной в метатегах документов (-a), этот список будет сохранён в указанный файл (—meta_file meta.txt):
Запуск FAB, при котором будут проверены все документы *.doc в директории /home/mial/Downloads/, из метаинформации этих документов будет извлечено поле, содержащее имя автора документа, данные будут выведены на экран:
Как создать словарь по маске с переменной длиной
Рассмотрим генерацию списков слов различной длины на примере Hashcat и maskprocessor.
Удлиняющиеся пароли в Hashcat
Для того, чтобы генерировались пароли различной длины, имеются следующие опции:
Опция -i является необязательной. Если она используется, то это означает, что длина кандидатов в пароли не должна быть фиксированной, она должна увеличиваться по количеству символов.
Опция —increment-min также является необязательной. Она определяет минимальную длину кандидатов в пароли. Если используется опция -i, то значением —increment-min по умолчанию является 1.
И опция —increment-max является необязательной. Она определяет максимальную длину кандидатов в пароли. Если указана опция -i, но пропущена опция —increment-max, то её значением по умолчанию является длина маски.
Правила использования опций приращения маски:
Итак, команда запуска для генерации паролей, которые имеют длину от шести до десяти символов:
Удлиняющиеся пароли в maskprocessor
В maskprocessor имеется следующая опция приращения:
Следующая команда составит словарь из чисел от 1 до 9999:
Когда о пароле ничего не известно (все символы)
Про нюансы я уже писал, здесь только примеры команд.
Если нужно запустить полный перебор, когда в пароле могут быть большие и маленькие латинские буквы, а также цифры и длина пароля от 1 до 12, то нужно использовать следующие опции и маску:
Чтобы вывести все кандидаты в пароли или сохранить их в словарь:
и длина пароля от 1 до 12, то нужно использовать следующие опции и маску:
Чтобы вывести все кандидаты в пароли или сохранить их в словарь:
Создание словарей, в которых обязательно используется определённые символы или строки
Рассмотрим несколько примеров.
Предположим, известно, что в пароле, состоящим из любых символов (большие и маленькие буквы, а также цифры), обязательно присутствует слово «Alexey», которое может быть в любом месте пароля и в любом регистре. Для решения этой задачи вместо того, чтобы создавать безумное количество правил, можно создать словарь со всеми вариантами и просто отфильтровать слова, в которых есть искомая строка, например:
Как создать словарь, обязательно содержащий символы «e», «g», «D» и «t»? Для этого используйте команду вида:
В ней вы можете добавлять цепочку из grep и отфильтровывать пароли с любым количеством необходимых символов.
Как создать словарь, в котором пароли в любом месте и в любом регистре содержат слово «Alexey» или слово «MiAl»? Используйте команду вида:
Количество искомых строк может быть любым:
Пример команды, создающий словарь, в котором кандидаты в пароли состоят только из цифр, но в пароле обязательно должна быть последовательность «12345» расположенная в любом месте:
Как создавать комбинированные словари
Комбинированными словарями обычно называют словари, включающие одновременно имя пользователя и пароль, разделённые определённым символом (обычно двоеточие или символ табуляции). Но в данном случае я имею в виду словари, которые составлены из слов разных словарей, путём объединения. Но и к «нормальным» комбинированным словарям мы ещё вернёмся.
Это называется комбинаторной атакой, её подробное описание: https://hackware.ru/?p=283#combinator_attack
Суть в том, что к каждому слову из первого словаря, добавляется каждое слово из второго словаря.
Словарь 1 (dict1.txt)
Словарь 2 (dict2.txt)
Запуск комбинаторной атаки (-a 1):
Мне почему-то казалось, что слова должны объединятся ещё и в обратном порядке (то есть первым идёт слово из второго словаря), но как вы можете убедиться, это не происходит. Поэтому для получения описанного эффекта, нужно запустить атаку ещё раз, поменяв словари местами:
Как комбинировать более двух словарей
Как комбинировать подобным образом 4 и более словарей? Мне трудно представить, что это может пригодиться в реальной ситуации, но для этого скорее всего придётся писать свой скрипт для автоматизации показанного выше алгоритма. Если вы знаете программы, которые умеют это делать, то пишите в комментариях.
И… в этом месте я вспомнил о программе combinator3. Она поставляется в пакете hashcat-utils. Эта команда служит для комбинации трёх словарей (для комбинации двух словарей используйте combinator).
Чтобы получить все возможные комбинации из трёх слов в любом порядке, то нужно использовать следующие команды:
Как создать все возможные комбинации для короткого списка строк
Утилита combipow создаёт все “уникальные комбинации” из короткого списка ввода. Эта программа также включена в hashcat-utils.
Пример содержимого словаря с именем wordlist:
Запуск combipow с этим словарём:
Даст следующие результаты:
Комбинирование по алгоритму PRINCE
Программа princeprocessor реализует алгоритм PRINCE. Подробнее об этом алгоритме вы можете узнать на странице карточки программы. Там же описана суть работы программы и её опции.
Примеры использования princeprocessor.
Чтобы создать все возможные цепи из содержимого файла dict1.txt:
Используя слова из указанного словаря (dict1.txt) составить цепи минимальной длиной 2 элемента (—elem-cnt-min=2) и максимальной длиной 2 элемента (—elem-cnt-max=2), то есть в каждой цепи будет только по 2 слова:
Если ваш example.dict содержит:
генерируют следующие кандидаты в пароли:
Это работает и в противоположную сторону!
генерируют следующие кандидаты в пароли:
Как создать комбинированный словарь, содержащий имя пользователя и пароль, разделённые символом
Теперь возвращаемся к комбинированным словарям, содержащим одновременно имя пользователя и пароль.
А это пример комбинированного словаря, в котором имя пользователя и пароль разделены двоеточием:
Чтобы создать комбинированный словарь, используйте команду вида:
Например, в следующей команде разделителем является двоеточие:
Кстати, если в качестве разделителя нужно вставить символ табуляции, то нажмите Ctrl-v + Tab:
Кстати, если вы попытаетесь разобраться в приведённой выше команде hashcat, то выясните, что одновременно используется Комбинаторная атака и добавлено правило из Атаки на основе правил.
Рассмотрим частный случай: как создать файл парный словарь логинов и паролем такого типа: логин всегда постоянный, затем табуляция и пароль.
Если не хотите создавать новый файл, а хотите изменить имеющийся, то уберите перенаправление и добавьте опцию -i:
Как извлечь имена пользователей и пароли из комбинированного словаря в обычные словари
Если из комбинированного словаря нам нужно извлечь только имена пользователей и/или только пароли. Для этого мы воспользуемся (тоже мощнейшей) программой awk.
Смотрите также: Уроки по Awk
Для извлечения имён пользователей:
Для извлечения паролей:
В принципе, команды только различаются в $1 (первое поле до разделителя) и $2 (второе поле после разделителя).
Как при помощи Hashcat можно сгенерировать словарь хешей MD5 всех шестизначных чисел от 000000 до 999999
Hashcat может делать радужные таблицы, но только для Wi-Fi.
Зато с помощью PHP эту задачу можно решить несколько строк:
Время выполнение — 1-4 секунды. За это время будут сгенерированы все md5 хеши для строк 000000…999999.
Сохраните приведённый выше код в файл md5-rb-gen.php, запускать так:
Чтобы сохранить полученные хеши в файл:
Интересное наблюдение о скорости достижения задачи.
Следующие две команды делают ровно то же самое:
Но на среднем компьютере выполнение команд займёт до часа. PHP оказался быстрее, чем нативные Linux команды…
Удвоение слов
Как создать словарь 12 символьных слов, состоящих только из десятичных цифр (?d) формата abcdefabcdef, т.е шестизначное число написано два раза?
Можно использовать Атаку на основе правил, а можно написать небольшой скрипт Bash (все слова в из файла user.txt пишутся по 2 раза):
Применительно к нашему заданию — удвоение шестизначных чисел, можно использовать следующую команду, которая сгенерирует числа из шести цифр и дважды запишет каждое число:
Как создать словарь со списком дат
Как создать список дат по шаблону ДД-ММ-ГГГГ, то есть соответствущий маске ?d?d-?d?d-?d?d?d?d но чтобы перебор был не в диапазоне 00-99, а 01-31, 01-12 и 1900-2021 соответственно?
Такие словари умеет создавать программа pydictor.
Но ещё проще словарь сделать следующим образом (он будет сохранён в файл dates.txt):
Если хотите обойтись без создания словаря, то передавайте вывод предыдущие команды на стандартный ввод hashcat:
Заключение
Также можете задавать ваши вопросы, связанные с генерацией словарей, учитывающих определённые условия.
Персональные словари
Создание личных словарей
Сервис прежде всего адресован людям, изучающим языки. Вы создаете свои словари, добавляете в них слова и фразы и изучаете с помощью встроенного тренажера.
К словам, помимо перевода, можно добавить примеры и заметки, что значительно упрощает запоминание слов.
Помощь при добавлении слов
Когда вы добавляете слова или фразы в словарь, система автоматически создает перевод. Вы можете его скорректировать прямо во время добавления.
Тренажер для заучивания слов
В него включено 6 упражнений, которые можно использовать на свое усмотрение.
Интервальное повторение слов
Это режим, необходимый для того, чтобы повторять уже выученные слова через определённые интервалы времени.
Функция интервального повторения автоматически отмечает даты в календаре, когда вы должны повторить слова, и отображает соответствующие уведомления в интерфейсе.
Кроме этого, режим интервального повторения следит за тем, чтобы все слова были повторены и ни одно из них не затерялось.
Ещё много возможностей для удобного создания словарей и изучения слов
Упорядочивание словарей по тегам
Каждому словарю можно присвоить несколько меток (тегов), для того чтобы по этим меткам можно было легко найти нужный словарь в списке.
Возможность поделиться словарем
К созданным вами словарям можно предоставить доступ другим людям. Для этого нужно включить общий доступ в настройках словаря и передать ссылку.
Заучивание в таблице
В интерфейсе словаря предусмотрены функции, которые позволяют скрывать перевод или оригинал слова. С их помощью удобно заучивать слова прямо в списке слов.
Готовые подборки слов
Для удобства заполнения словарей, мы создали и продолжаем заполнять, специальную коллекцию слов, разделенную по темам.
Вы можете выбрать любую подборку и скопировать её в свои словари.
Стоимость
Весь основной функционал доступен бесплатно.
Ограничения действуют только на размер хранилища.
Наша подписка называется Student Pack.
Создание и нормализация словарей. Выбираем лучшее, убираем лишнее
Использование подходящих словарей во время проведения тестирования на проникновение во многом определяет успех подбора учетных данных. В данной публикации я расскажу, какие современные инструменты можно использовать для создания словарей, их оптимизации для конкретного случая и как не тратить время на перебор тысяч заведомо ложных комбинации.
Инструменты
Пожалуй, один из самых известных инструментов для быстрого создания словарей. Он по умолчанию входит в популярный дистрибутив для проведения пентеста Kali Linux.
Инструмент работает в нескольких режимах:
Создание словаря, состоящего из перечисленных символов, например чисел
Создается словарь длиной от четырех до пяти цифр.
Создание словаря по шаблону
Словарь состоит из всех возможных комбинаций слов Alex, Company и Position.
Подробнее изучить инструмент можно через стандартные man страницы, они достаточно подробные.
Иногда требуется указать не только наборы под конкретный тип символов, а вообще свой набор, включающий и буквы, и цифры, и спецсимволы. В этом случае можно воспользоваться утилитой maskprocessor от брутфорсера hashcat. Скачать ее можно с официального гитхаба hashcat.
Вы можете задать до четырех собственных наборов символов и использовать готовые наборы
Или можно задать набор из цифр, но добавить к нему еще несколько спецсимволов так
Получаем такой результат
Вот так выглядит стандартное правило, используемое для взлома NTLM хэша
В первой строчке сказано, что нужно изменить регистр символа на нулевой позиции (T0), символ Q позволяет не допустить дубликатов в результирующем словаре. Во второй строке символ на первой позиции меняет свой регистр, затем скобки задают препроцессор, чтобы были сгенерированы пароли и с измененным нулевым символом и так далее.
Предположим, вы успешно провели брутфорс LM хэша и получили значение QWERTY123, так как для LM регистр не важен.
Но для авторизации вам нужно провести брутфорс NTLM хэша, где регистр имеет значение. Воспользовавшись правилом, описанным выше, можно получить следующий словарь
JTR по умолчанию содержит множество готовых правил, но можно написать и свои, либо взять за основу уже написанное и скорректировать под текущую ситуацию.
Подробно про синтаксис правил можно почитать здесь.
Еще одним полезным инструментом является набор утилит от популярного брутфорсера hashcat.
Рассмотрим некоторые их них. Описания всех утилит на английском языке можно найти тут.
combinanor.bin — позволяет генерировать словарь из слов, входящих в два других словаря.
combinanor3.bin делает то же самое, но на вход принимает три файла, вместо двух.
cutb.bin — обрезает слова в словаре до указанной длины. Можно указывать смещение (offset)
expander.bin — получает на ввод слова, разбирает их на символы, комбинирует и отправляет в STDOUT
permute.bin — создает словарь, который используется hashcat при атаке типа Permutation attack. Перед использованием словарь нужно пропустить через утилиту prepare.
gate.bin — разбивает словарь на несколько частей для параллельной обработки несколькими ядрами или несколькими машинами. В примере ниже мы разбиваем стандартный словарь JTR на две части. В первую часть попадают слова под номером 0, 2, 4, 6,…. Во вторую 1, 3, 5, 7,…
len.bin — оставляет в словаре только слова определенной длины от min до max
mli2.bin — объединяет два словаря.
req-include.bin — крайне полезный инструмент, который убирает из словаря все, что не подходит под заданные правила. Например, вы знаете, что по парольной политике в пароле обязательно присутствует буква в верхнем регистре, цифра и спецсимвол.
Число выбрано исходя из таблицы
Если таким образом нормализовать известный словарь rockyou, то можно сократить его размер в 270 раз! и не тратить ресурсы на заведомо ложные комбинации.
req-exclude.bin делает то же самое, что req-include, но с точностью до наоборот.
rli.bin — эта утилита удаляет значения из первого словаря, если они встречаются во втором. Полезно использовать, если вы создаете один словарь из нескольких.
Когда под рукой нет утилит
Может оказаться так, что воспользоваться набором hashcat-utils или crunch нет возможности, а нужно срочно создать словарь или нормализовать его. Некоторые алгоритмы довольно сложны в реализации, но базовые операции можно выполнить просто в командной строке.
Простой словарь с датами можно создать серией подобных команд
Если нужно разбить словарь на части для параллельной обработки, можно воспользоваться командой split
Быстро объединить два словаря можно так
Чтобы сделать заглавной первую или последнюю буквы в каждом слове, нужно выполнить, соответственно, команды
Для перевода регистра в нижний нужно заметить «u» на «l»
Дописать что-то в начало каждого слова из словаря можно так
А так можно дописать слово в конец
Следующей командой можно добавить в начало число от 0 до 99 к каждому слову в словаре
Можно очистить словарь от значений, в которых не присутствует хотя бы 2 числа так
Это лишь некоторые примеры. Можно писать более сложные обработки на Python и других скриптовых языках. Но всегда нужно помнить, что создание качественного словаря и его нормализация под целевой протокол — важный этап при проведении тестирования на проникновение.
Создать свой онлайн словарь
Не знаю, чего заминусили автора. Сам сейчас искал подобное. Anki не подходит. Как приложение для андроида нашёл «Мой Словарь: полиглот» некоего kataykin’a. Под мои задачи подошёл более чем (хотел составить свой словарь технического английского). Пост нашёл через гугл. Кто пришёл за тем же, плюсаните ТС’а.
Попробуй Anki. Бесплатно, есть приложение под Android
Evgeniy23, Нашёл ответ на свой вопрос?
Пользуюсь quizlet. Очень удобно, что можно не просто слова записывать, но и отрабатывать
Спасибо, именно то, что искал.
Можно воспользоваться словарем с сайта Полиглот16 https://poliglot16.ru/slova/
Можно добавлять слова из списка готовых можно свои слова добавлять и раскидывать их по группам.
Ограничение там тоже есть, но 3000 слов, но главный плюс можно свои фразы еще создавать
А почему excel не подходит? я там веду. все равно перевод берете из нескольких проф. словарей типа оксфордского, макмиллан, кэмбридж. И потом работать удобо с ними.
Если еще нужно. Я пользуюсь mocowords, вроде никаких лимитов не нашел, но там только сайт
Все реально
Как я закончил школу с 5-й по инязу
И вот переехал, сменил школу и там продолжилось все то же самое. Как так-то? Может старая школа переправили со мной мою хар-ку по всем предметам?! XD По сути новая училка придиралась к моему произношению. И, как я помню, исключительно из-за произношения у меня была бы 4-ка под конец 11-го класса если бы не районная (а может муждугородняя, не разбираюсь) олимпиада.
И вот, Марья Николаевна объявила в классе новость, сказала что отличники точно поедут, но может и еще кто-то. Никто не захотел кроме меня. Так что меня взяли без вопросов.
Из мелкого городишка приехали в соседний город, началась олимпиада. Она включала несколько этапов: тест, прослушивание аудиозаписи и ответы на вопросы по аудиозаписи. Может еще что-то, не помню, но как-то так.
Прослушали, ответили, вернулись.
Позже пришли результаты: отличники набрали около 160-200 баллов, я под 800 из 1000.
В итоге я все же получил 5-ку от удивленной училки, да и она как-то смотрела после этого на меня странно. Типа как же так?!
Ответ на пост «Ландан из Дзэ Кэпитал Оф Грэйт Брытн»
По идее башкирам легче дается английский язык, т.к. все адские звуки уже есть в алфавите:
Картавые люди не подозревают о том, что знают букву: Ғғ
Из немецкого похоже что-то такое:
Ландан из Дзэ Кэпитал Оф Грэйт Брытн
Английский с нуля. Не скрываем боль. Урок 51 из 60
Как спросить “Что у вас болит”? Как ответить где болит, учитывая характер боли. Переносный смысл слов ache, pain. Пройдем фразу to cross one’s mind.
Видео взяты из мобильного приложения Английский с Анной, в нем в дополнение к теории есть еще много практических упражнений.
P.S. Я стараюсь улучшить качество подачи материала, сам материал, примеры в приложении. Спасибо, что поддерживаете плюсами и учитесь по моим урокам)
Хочу учиться
Всем привет, хочу за пару лет освоить английский язык на среднем уровне, чтобы свободно говорить, правильно писать и развиваться в этом направлении дальше. Сейчас я учу в приложении duolingo, но может кто знает какие нибудь хорошие учебники или самоучители? У меня нет денег на преподовптеля и курсы, поэтому только самостоятельное изучение. Я готов каждый день просыпаться на час раньше, чтобы этот час посвятить именно учебе английского языка. Может кто подскажет какие то сервисы или типо того? Учебники, советы и всему в этом духе буду очень рад, спасибо)
Всем большое спасибо за отклик.
Ловушка знаний или как ускорить обучение в несколько раз
Есть три уровня освоения:
1. Знание. Когда мы что то узнали, нам объяснили. Практики мало. Уровень концентрации внимания при применении самый высокий. Примем за 90%. Конечно есть разброс, в зависимости от материала, который осваиваешь. В своих примерах я исходил из того, что ученик(или же преподаватель) захочет использовать свои возможности по максимуму.
2. Умение. Нам объяснили и мы довольно долго практиковали. Есть серьезный опыт. Но все еще нужно контролировать процесс применения. Уровень концентрации внимания 50%.
3. Навык. Мы узнали или нам объяснили что-то. Количество практики очень большое. Практически не концентрируемся при применении. Уровень концентрации внимания 10%.
Совершенно очевидно, что чем больше осознанной практики, тем меньше нужно концентрироваться при применении.
1. Последующие темы основываются на предыдущих(включают их). Поэтому окружности нарисованы внутри друг друга. Не все и не всегда. Но в целом принцип соблюдается.
2. Освоение идет от простого к сложному. Концентрация внимания в каждой следующей теме повышается на 10%.
Последствия приоритета “знания” в обучении.
При таком подходе текущие микронавыки не тестируются. У упражнений нет количественной оценки(например время выполнения). Программа не корректируется в зависимости от уровня выполнения упражнений.
Если мы осваиваем материал только до уровня знания, то при переходе от одной темы к другой рано или поздно мы достигаем уровня концентрации внимания, который превышает наши физические возможности.
Память ненадежна и невозможно удержать в ней весь материал без его понимания. А значит даже такое кривое “освоение” материала становится чудовищно медленным.
Общие выводы для освоения через “знания”.
Освоение через знания дает выигрыш по времени, но только в начале процесса. Через некоторое время мы неизбежно начинаем тупить и скорость освоения скатывается почти в ноль. Чем дальше учимся тем сложнее и сложнее, пока не попадем в тупик. Из которого без посторонней помощи выбраться уже сложно. Такова школьная и вузовская система.
Приоритет “навыка” в обучении.
Если же мы осваиваем материал на уровне навыка, то получается очень интересный парадокс.
С одной стороны да, на самых базовых темах(в данном примере это тема 1) придется проделать большую работу. Чтобы дойти до уровня навыка в базовых темах придется изрядно попотеть. Но это окупится сторицей. Как только мы доведем базу до уровня навыка, сразу получим следующие преимущества:
2. Дельта при доведении всех последующих тем до уровня навыка всего 10%. А в реальности будет еще меньше. Потому что в реальности чем дальше мы двигаемся в предмете, тем меньше принципиально нового материала встречаем.
1. Переходить к следующей теме только если замеры показывают что уровень навыка достигнут. Если сравнивать со школой или вузом, то в начальных классах школы длительная отработка есть, но без каких либо замеров. Просто потому, что так составлена программа. А дальше на каждую тему строго отведенное время и тут уж не до отработок и замеров.
2. Тщательно подходить к самой технологии замера, тестирования. Внутри каждого упражнения уже должны содержаться критерии выполнения его на уровне навыка. Остается только фиксировать достижение этих критериев. При таком подходе замеры вообще не отнимают дополнительного времени.
Общие выводы для освоения через “навык”.
Освоение через навыки на начальных этапах требует очень большого расхода времени. Будет казаться, что безнадежно отстаешь. Все уже 10 тем прошли, а ты еще на первой-второй топчешься. Но в более долговременной перспективе дает просто нереальное ускорение! И несравненно более высокий уровень компетентности.
Проиллюстрировать разницу в скорости освоения в начале и в середине обучения с использованием такого подхода можно таким мемом:
Пример из личной практики.
Шёл 1997 год, март месяц. Я поступаю в вуз, хожу на курсы. Но из за того, что был по уши влюблен, на курсы забивал. Результат средняя оценка между 2 и 3 по физике и математике. Конкурс тогда был очень серьёзный.
Результат применения этой технологии в течении двух с половиной месяцев по 1,5 часа в день:
Как конкретно я делал в случае с физикой и математикой:
1. Отсек все лишнее, писал только вычисления и расчеты.
2. Создавал позитивное подкрепление. Фигачил под свой любимый хард рок.
Сейчас я использую этот принцип(но не только его) при разработке своих марафонов по обучению английскому.