Хакер #305. Многошаговые SQL-инъекции
Любитель ретрокомпьютеров из Сингапура Йео Кхенг Менг (Yeo Kheng Meng), известный тем, что несколько лет назад он создал Slack-клиент для Windows 3.1, представил клиент ChatGPT для MS-DOS, который может работать на старом IBM PC 1984 года выпуска.
«На этот раз я решил попробовать что-то другое и разработал [софт] для еще более старой платформы, бросив вызов сам себе», — пишет энтузиаст в своем блоге.
Благодаря API, которые OpenAI запустила месяц, любой, у кого есть навыки программирования, может интегрировать ChatGPT с собственным приложением. Йео Кхенг Менг доказал, что таким способом ChatGPT можно запустить даже на портативном ПК IBM 5155, выпущенном в 1984 году и работающему на базе процессора Intel 8088 с частотой 4,77 МГц. Также устройство обладает 640 КБ ЗУ, имеет графику CGA ISA и работает с MS-DOS 6.22.
Для создания клиента исследователь использовал современный компилятор Open Watcom C/C++. Для тестов он применял виртуальную машину VirtualBox под управлением DOS 6.22, чтобы упростить процесс разработки, а затем перенес скомпилированный бинарник на целевой ПК с IBM DOS для тестирования.
Однако MS-DOS представляет собой сложную платформу для создания клиента ChatGPT, поскольку ему не хватает сетевых возможностей. Чтобы обойти эту проблему на IBM PC, Йео Кхенг Менг использовал ряд ухищрений. Так, он задействовал Packet Driver API, разработанный в 1983 году, и интегрировал опенсорсную библиотеку MTCP для работы сетевого стека в приложение, предоставляя клиенту сетевые возможности.
Для API ChatGPT был использован Chat Completion API, и исследователь подготовил POST-запрос (и анализировав ответы в формате JSON) вручную на языке C.
Еще одной серьезной проблемой стал тот факт, что API-интерфейсы ChatGPT требуют зашифрованных HTTPS-соединений. Поскольку у MS-DOS нет собственных библиотек HTTPS, Йео создал прокси-сервер HTTP-to-HTTPS на Go, который может работать на современном компьютере и переводить запросы и ответы между клиентом MS-DOS и API ChatGPT, выступая в качестве посредника.
Энтузиаст уже обнародовал свой код (проект получил имя doschgpt) на GitHub, на тот случай, если другие исследователи захотят запустить его, усовершенствовать или расширить.