Код в фильмах: Новичок (Amateur) 2025
В этом фильме мало прямых заимствований. Весь код и его подобие, похоже, создавались специально для фильма. Одни и те же фрагменты кода повторяются в разных сценах. Такие повторы буду пропускать.
05:08 (здесь и далее - время от начала фильма)
В сцене разглядывания спутниковых снимков слева виден интерфес с именами программных файлов:
Editor 01
- exe_VideoComm...
- FindOptionsWid...
- Contribution.md
- DDI_usr.txt
- Package.json
Editor 02
- DDI_Compiler.js
- .metntion.bot
- .travis.yml
- .yarnrc
- Licence Plate Te...
- Contribution.md
- DDI_usr.md
- video_fileSource...
- .gulpfile.js
- package.json
- contentmenu.ts
- FindOptionsWid...
- Contribution.md
- Developer.txt
- dddos.Tools.ys
Выглядит, как какой-то проект на Тайпскрипте. Но ничего конкретного тут нет, и, вероятно, допущены опечатки: должно быть package.json
, а не Package.json
, опечатка в слове metntion
(mention
?), и расширение файла, вероятно, должно быть не .ys
, а скорее .ts
(клавиша t
находится рядом с y
).
Вот это сокращение “DDI
” в начале файлов дальше будет мелькать весь фильм. Какого-то внятного объяснения, что это может значить, нет. Инициалы технического консультанта?
05:11
А тут вполне понятные команды установки связи. С логичным отображением процесса.
# Initializing Secure Satellite Network Connection...
$ ./initiate_secure_link.sh --satellite SAT-47 --encryption AES-256
# Authentication Required
Enter Access Key: ************
Enter Biometric Verification: [Verified]
Access Granted
Secure Uplink Established
Connected to CIA-SAT-47 at Lat: 34.0535° N, Long: -118.2449° W
Initializing Encrypted Communication Channels...
Encryption Protocol: AES-256-GCM
Session ID: 8FA79C90-20BE-4A38-AF18-349C12A6F4A7
Handshake Successful
# Loading Satellite Control Interface...
05:16
Фрагмент кода, вычисляющий орбитальный период спутника Земли, в секундах, по формулам Ньютона и Кеплера. Уж не знаю, зачем такое может понадобиться рядовому работнику, который смотрит на спутниковые картинки, но код рабочий.
import numpy as np
def orbital_period(a):
G = 6.67430e-11
M = 5.972e24
mu = G * M
T = 2 * np.pi * np.sqrt(a**3 / mu)
return T
И сразу же пример вызова этого кода. Видимо, тестировали корректность его работы:
a = 7000000
period = orbital_period(a)
06:27
По сюжету Чарльз пытается открыть зашифрованный файл, который ну никак не хочет открываться. Но картинка выглядит так, как будто открыли самый обычный вордовый “.doc” в текстовом редакторе, типа блокнота.
07:37
Только что у нас были зашифрованные документы, а теперь мы почему-то пытаемся расшифровать outright-libdes-dev-1_1-s_rh.bin
. Интересно, откуда он взялся? В изначальном листинге файлов такого нет.
08:56
Но, видимо, мощности ноутбука не хватает, и Чарльз идёт в бункер к мощному компьютеру.
Запускает его и появляется код. Странный:
Тут намешан синтаксис нескольких языков программирования: Java
(System.out.println
), JavaScript
(document.write
), макрос или прагма (#execute
), Windows-путь? (E:admin 851212118/bin.files
), строчка Linux-шелла? ({ (VAULT_user_851212518@DDI_terminal):~$
)
Никакого смысла в этом фрагменте нет. Просто наброс команд.
09:25
И вот пароль подобран, файлы расшифрованы, и в мелькающих фрагментах мешанины из разных языков добавляются фрагменты на C
:
В них содержатся намёки на софт для камер наблюдения (CONFIG_CCTV
), фрагменты из кода ядра Линукса, из подсистемы работы с таймерами для чипов picoXcell
, предназначенных для использования в небольших и компактных устройствах (dw_apb_timer_of.c
)
Этот фрагмент далее будет мелькать в разных сценах и окошках.
19:44
Чарльз не доверяет никому и начинает самостоятельное расследование. Опять какая-то мешанина из Java
с непонятно чем:
20:49
А тут пошёл креатив. Взяли фрагмент кода из упомянутого выше ядра Линукса dw_apb_timer_of.c
и перемешали строки с JavaScript
-примером из совета на StackOverflow
goto try_clock_freq;
switch (num_called) {
for (let i = 0, k; i < str.length; i++) {
h1 = h2 ^ Math.imul(h1 ^ k, 597399067);
function cyrb128(str) {
for (let i = 0, k; i < str.length; i++) {
pr_debug("%s: found clockevent timer\n", __func__);
21:27
Когда Чарльз готовит для демонстрации начальству 3D-модель уличной сцены, кто-то (он сам?) пишет код на Three.js - JavaScript
-библиотеке для создания 3D-графики в браузере.
Он что, в браузере делает презентацию?
if (j > 0) geometry.faces.push(new THREE.Face3(0, j, j + 1));
const material = new THREE.MeshBasicMaterial({ color: 0xff0000 });
const mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
{
import_3D MODELER
media_source == collate_media_sources
И тут не обошлось тут без включения абсолютно чужеродного фрагмента про import_3D_MODELER
.
Вот такое он в браузере намоделировал, получается:
Неплохо!
26:34
Опять мелькают два якобы редактора кода, но на этот раз на экране код на C
под Windows
, который является фрагментом драйвера, который скрывает рабочие процессы в Windows
. В основном этот трюк используется вирусами и прочими малварями. Но и без творческого исправления тут не обошлось: в коде системные префиксы заменены на те самые “DDI
”.
И оно вполне соответствует сюжету: в этой сцене Чарльз готовит разные отвлекающие штуки для слежения за коллегами и маскировки.
27:16
Фрагмент редактирования файла DDI_buildfile.py
. Тут небольшой скрипт, которые использует библиотеку OpenCV
для распознавания объектов на видео. Видимо, проиллюстрирован процесс отладки программы, которая будет следить за коллегами.
cap = cv2.VideoCapture('object_tracking_video.mp4')
tracker = cv2.TrackerKCF_create()
success, frame = cap.read()
bbox = cv2.selectROI(frame, False)
tracker.init(frame, bbox)
while cap.isOpened():
ret, frame = cap.read()
1:27:08
Чарльзу с подругой приходится убегать от преследователей, а на фоне запущен процесс удаления улик. И тут много чего удалятельного мелькает на экране. Каждый кадр удаляется что-то новое.
Повторения приводить не буду, перечислю только уникальные строчки:
- Удалим записи из логов, но почему-то только устаревшие. Свежие оставим
DELETE FROM system_logs WHERE timestamp < 2023-02-12;
- Удаляем всю директорию логов
rm -rf /var/logs/*
- И безопасно удалим какой-то один очень-очень важный файлик
shred -u /path/to/sensitive_file
- Удаляем записи из логов ошибок, но только записи с низким приоритетом. Всё важное оставляем
DELETE FROM error_logs WHERE severity = 'low';
- И грохнем таблицу с записями об активных сессиях пользователей
TRUNCATE TABLE user_sessions;
- И что-то удаляем кодом (на
Java
?JavaScript
?)db.systemData.remove({ ... });
- И удаляем кеш скачанных
deb
-пакетовsudo apt-get clean
- И удаляем файлики логов через поиск
find /path/to/directory -type f -name "*.log" -exec rm -f {}
- И удаляем таблицу со старыми бэкапами
DROP TABLE IF EXISTS old)_backup_data;
- А! Так это PostgreSQL тут у вас
VACUUM FULL;
- Затираем записи в
syslog
echo "" > /var/log/syslog
- А теперь удалим из базы временные файлы, причём, только обработанные
DELETE FROM temp_files WHERE status = 'processed';
- И очередь отправки писем почистим. Удалим из очереди те, что уже были отправлены. Неотправленные оставим
DELETE FROM email_queue WHERE sent = true;
- И, традиционно, микс из разных языков,
SQL
+JavaScript
DELETE FROM db.temporary.remove({});
- И
SQL
+shell
LOG ROTATE --delete-system-files
- Удалим информацию о временных файлах
TRUNCATE TABLE temporary_files;
- И сами временные файлы
rm -rf /var/tmp/*
Очень похоже на то, что авторы загуглили как удалить информацию и нашли кучу примеров на разных языках об освобождении места на диске и в БД, и всё подряд добавили в фильм.
Почистили, смотрю, в основном только кеши, временные файлы и всё несерьёзное. Всю важную информацию при этом оставили нетронутой.
1:30:49
И, напоследок, сцена прошивки джейлбрейкнутого телефона, который за минуту до этого был куплен в уличной лавочке.