Имя: Пароль:
1C
 
Кто хвастался ИИ, помогите с расшифровкой файлов POI
0 Garykom
 
гуру
13.04.26
11:07
Кто хвастался ИИ, помогите с расшифровкой файлов POI

По ссылке находятся файлы DATABASE.BIN содержащие базы камер контроля скорости для автомобильных видеорегистраторов с GPS разных моделей на чипсете NTK96670.
Для некоторых видеорегистраторов эти базы давно не обновляются.

Есть разные проекты/сайты откуда можно скачать обновление базы камер.
Но проблема в совместимости форматов, требуется конвертер.

Готового конвертера из открытых форматов (типа Навител) в формат DATABASE.BIN (идентификатор в начале файла 0E 1C 98 3E) не нашел.
Хочу написать свой, но проблема разобраться с форматом файла и кодированием координат, направления камеры, ограничения скорости, типа камеры и т.д.

Что известно на данный момент:

1. В начале файлов идет шапка-заголовок длиной от 18 до 24 байт (18h)
Пример заголовка в hex-кодах
0E 1C 98 3E 70 9F 98 AF BE 83 99 98 B0 94 98 98 98 98 84 97 05 84 5C CB

Он содержит в самом начале идентификатор типа файла/формата 0E 1C 98 3E ..
Далее в заголовке скорее всего есть (закодирована) дата файла/базы.
Возможно количество записей камер (их порядка 20000).
Возможно нечто еще, например сколько байт в конце файла занимает подвал.


2. После шапки подряд идут записи камер, каждая занимает 72 байта (48h)
Для примера первые три записи в hex-кодах
AB 7B 96 84 9E 82 97 DC EE 84 96 84 F7 14 A6 94 78 15 64 07 A6 07 AE 01 A7 AB DE 07 A6 07 89 3D 7B 00 B4 38 C1 FF E8 00 E0 09 E9 69 64 00 E8 00 7A 0F 6C D9 00 1E C2 4E 00 26 08 2F 01 29 8C 26 00 26 A9 F6 04 84 54 75 AB 7B 96 84 9E 82 97 E0 C6 84 96 84 A3 74 A6 95 76 38 64 07 A6 07 AE 01 A7 0A F6 07 A6 07 A1 3D 7B 00 E4 52 D4 FF E8 00 E0 09 E9 24 64 00 E8 00 27 1A 6C D9 00 74 C2 2B 00 26 08 2F 01 58 8C 26 00 26 F7 21 04 84 E8 83 AB 7B 96 84 9E 80 97 A5 EE 84 96 84 5E A3 A6 95 27 66 64 07 A6 07 AE 01 A7 7C DE 07 A6 07 B7 3D 7A 00 F4 62 F0 FF E8 00 E0 09 E9 94 64 00 E8 00 32 3E 6D D9 00 44 C2 06 00 26 08 2F 01 1C 8C 26 00 26 F0 64 04 84 54 9E

Чтобы это понять достаточно открыть любой файл в HxD и выставив ширину 72 обратить внимание на декодированный текст, как ровно выстраиваются колонки.

Каждая запись обязательно должна содержать
1. Тип камеры
2. Координаты камеры, ее долгота и широта
3. Контролируемое ограничение скорости, обычно кратно 5 или 10
4. Направление камеры, обычно в градусах на 360
5. Тип направления камеры (в одну сторону, двухсторонняя и т.д.)
Еще могут быть дополнительные данные
6. Номер, индекс или же ID камеры
7. Дополнительная информация, возможно в виде текста


3. В конце после записей камер часто (но не обязательно) идет подвал.
Предположительно он содержит коды регионов и прочее.
Т.е. чтобы не грузить все записи камер устройство определяет по координатам в каком регионе сейчас находимся и сразу переходит к нужному блоку записей камер.


Ссылка на шифрованные базы камер и текстовый файл обновления базы в формате Навител
https://cloud.mail.ru/public/vMqD/T9GjMK3gF

Загрузку нужно будет написать из формата Навител
IDX,X,Y,TYPE,SPEED,DIRTYPE,DIRECTION
177,27.826138,54.185782,101,60,1,207
178,27.823847,54.205898,101,60,1,318
179,27.852096,54.207138,102,40,2,171
350,27.791065,53.833514,104,20,1,247
351,27.791231,53.83391,104,30,1,350
352,27.773153,53.82692,102,30,1,237
353,27.769071,53.825489,102,30,2,66
1 Волшебник
 
10.04.26
18:26
Может проще скорость соблюдать?
2 Garykom
 
гуру
10.04.26
18:30
(1) Вот для этого и нужна база
Там не только камеры но и просто ограничения скорости и опасные участки
Очень удобно когда регик тебе пиликает что превышаешь случайно
3 Garykom
 
гуру
10.04.26
18:30
(2)+ Можно свои ограничения и прочее добавить, в этом тоже цель
4 PLUT
 
гуру
10.04.26
18:34
(2) HUD дисплей за 2 круб с алибазара и будет тебе проекция скорости на лобовое

а так, знаки еще вдоль дороги. ну и когда по одним и тем же маршрутам часто ездить - все ограничения уже наизусть

у меня вот кетайский регик с ума сходит регулярно, т.к. с GPS непонятки часто. иногда такие маршруты в памяти показывает - что я двигался со скоростью 1800 км/ч и обратно, или круги где-то нарезал
5 Garykom
 
гуру
10.04.26
18:37
(4) >когда по одним и тем же маршрутам часто ездить - все ограничения уже наизусть
Угу
Уже на автопилоте едешь а потом упс - там новый знак поставили
Или что хуже в потоке идешь и не замечаешь что все дружно превысили
6 PLUT
 
гуру
10.04.26
18:39
(5) > Уже на автопилоте едешь а потом упс - там новый знак поставили

кирпич

ну так внимательнее надо быть за рулём!

а то вот так на автопилоте не заметите новый пешеходный переход

или все пешеходные переходы и осторожно дети и лоси/коровы тоже в базу "автопилота" внесёте?
7 Garykom
 
гуру
10.04.26
18:41
(6) По своему региону запросто внесу
При выезде в другой можно будет обновлять
8 PLUT
 
гуру
10.04.26
18:42
(5) > Или что хуже в потоке идешь и не замечаешь что все дружно превысили

у меня HUD кетайский на лобаш цифру скорости с бортового компутера показывает + температуру охлаждающей жуткости

ну и привычка от разрешенной + 10 км, даже на трассе
9 Garykom
 
гуру
10.04.26
18:45
(8) У меня пиликает сча когда +5 км от разрешенной, очень удобно
Но не везде а только что есть в базе в регике
Хочу чтобы везде, уже нашел откуда дернуть
10 PLUT
 
гуру
10.04.26
18:46
(9) и не забывать ваш регик обновлять

и ваших ибенях походу GPS не глушат
11 Garykom
 
гуру
10.04.26
18:48
(10) Глушат но мало где, обычно около важных объектов типа мосты, аэропорты и т.д.
При обычной езде по трассе или в городе навигация работает
12 Garykom
 
гуру
10.04.26
18:51
(10) И да регик он с wifi, уже отснифил приложение и как базу обновлять не через карту памяти
С мобильного будет само обновляться
13 timurhv
 
10.04.26
19:47
(0) Так в зашифрованной базе что-то экслюзивное по координатам? Типа платный контент?

OpenSpeedcam - это же выгрузка данных из OSM (люди сами сидят энтузиасты и указывают точки + подтверждение участников) а OpenSpeedcam - по-сути отбор на данные таблиц OSM.
Запросом можно из данных OSM выдернуть с помощью QGIS + PostgreSQL (с аддоном OSM) + скачать все данные карты по РФ и загрузить в слона.

Фильтры дб в Wiki OpenSpeedcam указаны. Я так координаты железных дорог выгружал и границы областей, субъектов.

Если выгрузка OSM подойдет - вспомню, накидаю ссылок как оттуда вытаскивать данные и где выгружать полные данные по РФ.
14 timurhv
 
10.04.26
19:54
А ну хотя, OpenSpeedcam разрешает OSM использовать свои данные.
https://community.openstreetmap.org/t/openspeedcam-osm/89999/15
15 Garykom
 
гуру
10.04.26
20:03
(13) (14) Мне надо из формата например Навител (да выгрузка из OpenSpeedcam в данном примере, забыл убрать) но есть и другие источники
Перевести в специфичный бинарный формат, который понимает регик с GPS

Короче мне не нужен конвертер из их проприетарного формата
Нужен только обратный из открытого Навител в их проприетарный DATABASE.BIN
16 Garykom
 
гуру
10.04.26
20:03
(13) Скорее всего в файла DATABASE.BIN те же выгрузки с открытых источников
Но возможно так же иных уже платных

Один из вариантов расшифровки это брать известные камеры с их координатами (которые уже были на дату файла) и пытаться найти их записи в DATABASE.BIN

Все файлы DATABASE.BIN что закинул в облако содержат камеры РФ и возможно нечто еще, например Беларусь
17 timurhv
 
10.04.26
20:05
(16) Правильно понимаю, что:
Фирма1 регистратора на чипсете NTK96670 требует другой BIN, отличный от Фирма2 на этом же чипсете (данные идентичны условно по координатам)?
18 Garykom
 
гуру
10.04.26
20:06
(17) Не совсем
Многие регистраторы успешно принимают файлы от другой марки
Если магическое число в начале DATABASE.BIN у файлов совпадает

Но есть на этом же чипсете NTK96670 с другим, несовместимым форматом баз камер
19 timurhv
 
10.04.26
20:07
(17) а хотя понял, что с 0E 1C 98 3E проблема
20 Garykom
 
гуру
10.04.26
20:10
Самые свежие файлы выкладывает Roadgid, сейчас обновляю свой 490GPS ими, принимает не ругается
Но хочу обновлять сам, своими данными
21 timurhv
 
10.04.26
20:52
(20) лучше наверное на 4pda спросить, поковырялся, поискал - сущий ад какой-то для меня
https://4pda.to/forum/index.php?showforum=820

А база Roadgid не устраивает что тоже могут отвалиться с обновлением?
22 Garykom
 
гуру
10.04.26
21:08
(21) И не устраивает, свою хочу
И запросто отвалятся с обновлением в будущем
23 Кирпич
 
10.04.26
22:50
Я думал эта вся кухня померла лет 15 назад. А оно, гля, существует. Сам лет 15 по яндекс-навигатору в телефоне езжу.
24 Кирпич
 
10.04.26
22:52
а базы наверно зашифрованые. так что хрен ты там чо расковыряешь. забей.
25 Garykom
 
гуру
10.04.26
23:52
(24) Зашифрованные но очень просто
Ну типа банального XOR по 0x98
27 trdm
 
11.04.26
10:26
(2) Очень удобно когда регик тебе пиликает что превышаешь случайно
+100
28 Garykom
 
гуру
13.04.26
11:06
Есть некоторый прогресс.
1. Понял что заголовок может быть не 24 байта а от 18 до 24 байт.
2.  Научился читать дату из заголовка
Подробности
import os
import datetime

def decode_val(b1, b2):
    # XOR 0x9898 в формате Little Endian
    return (b1 | (b2 << 8)) ^ 0x9898

def truncate_path(path, max_len=60):
    if len(path) <= max_len:
        return path
    # Оставляем начало (примерно 1/4) и конец (примерно 3/4)
    part_len = (max_len - 3) // 2
    return path[:part_len] + "..." + path[-part_len:]

def process_database_files(root_dir):
    magic = b'\x0E\x1C\x98\x3E'
    col_path_width = 60
    
    print(f"{'Путь к файлу':<{col_path_width}} | {'Дата файла':<12} | {'Создан (ОС)'}")
    print("-" * (col_path_width + 30))

    for root, _, files in os.walk(root_dir):
        for file in files:
            if not file.lower().endswith('.bin'):
                continue
                
            path = os.path.join(root, file)
            try:
                with open(path, 'rb') as f:
                    data = f.read(24)
                    
                    if data.startswith(magic) and len(data) >= 14:
                        # Расшифровка года (5-6 байты, индекс 4-5)
                        year = decode_val(data[4], data[5])
                        
                        # Расшифровка дня/месяца (13-14 байты, индекс 12-13)
                        dm_raw = decode_val(data[12], data[13])
                        day = dm_raw // 100
                        month = dm_raw % 100
                        
                        # Проверка корректности (на случай мусора)
                        if 2000 < year < 2100 and 1 <= month <= 12:
                            file_date = f"{day:02d}.{month:02d}.{year}"
                        else:
                            file_date = "Ошибка данных"
                        
                        # Системная дата
                        stat = os.stat(path)
                        os_date = datetime.datetime.fromtimestamp(stat.st_ctime).strftime('%d.%m.%Y %H:%M')
                        
                        # Форматированный вывод
                        display_path = truncate_path(path, col_path_width)
                        print(f"{display_path:<{col_path_width}} | {file_date:<12} | {os_date}")
            except Exception as e:
                pass # Пропускаем файлы с ошибкой доступа

# Запуск в текущей директории
process_database_files('M:\\Public\\Базы камер (DATABASE.BIN) для расшифровки')

Путь к файлу                                                 | Дата файла   | Создан (ОС)
------------------------------------------------------------------------------------------
M:\Public\Базы камер (DATABA...PS_CND-DVR40GPS\DATABASE.BIN  | 31.12.2024   | 31.12.2024 11:41
M:\Public\Базы камер (DATABA...470GPS_RR490GPS\DATABASE.BIN  | 31.12.2024   | 30.12.2024 17:38
M:\Public\Базы камер (DATABA...Go 4\2026_04_04\DATABASE.BIN  | 03.04.2026   | 04.04.2026 02:59
M:\Public\Базы камер (DATABA...Go 4\2026_04_10\DATABASE.BIN  | 10.04.2026   | 10.04.2026 17:17
M:\Public\Базы камер (DATABA...COB 2S WiFi GPS\DATABASE.BIN  | 13.02.2026   | 01.04.2026 03:44
M:\Public\Базы камер (DATABA...N City GPS  Duo\DATABASE.BIN  | 13.02.2026   | 01.04.2026 03:29
29 Галахад
 
гуру
13.04.26
11:21
Вроде приложения для смартов норм работают. Едешь и слушаешь: муляж камеры, метео...
30 Fish
 
гуру
13.04.26
11:34
(29) +100 Вот тоже непонятно, зачем все эти извращения, когда в любом смарте есть навигаторы, которые тебе и скорость говорят и про камеры и ещё и про аварии впереди сообщают.
31 Garykom
 
гуру
13.04.26
12:06
(29) (30) С белыми списками их мало кто работает
И не везде интернет есть когда по области ездишь, обычно только возле населенных пунктов появляется или на заправках

Нет уж, оффлайн да еще на регике надежней
И смартфон не надо доставать, батарейку с инетом расходовать
32 PLUT
 
гуру
13.04.26
12:14
(30) чтобы оставить зависимость регистратора только от ЖыПиЭс (текущие координаты ТС) и не зависеть от инторнета в дороге

но один фиг, в Мытищщщщи ездил 11.04.2026, GPS глючило и интернет временами. так что нужно знать свой маршрут, а не надеяться на нафигатор

(локальные карты в смарт загружены, без инторнетов маршрут по местным ебеням строит, но вот когда GPS сбоит - весело: "маршрут перестоен, поверните налево, развернитесь")
33 Fish
 
гуру
13.04.26
12:13
(31) (32) Ну так любой смартфон умеет ЖПС и без интернета определять. И оффлайн-карты скачать - тоже не проблема.
34 Garykom
 
гуру
13.04.26
12:15
Плиз минимум оффтопика
Лучше про ИИ

Вот не люблю я Питон, но ИИшки на нем лучше всего пишут заразы
На Голанг тоже неплохо могут и даже весьма сложное

Как вытащить дату - это ИИ от Гугла сумел
Но все прочее пока никак или "цифры подгоняет" под результат
35 PLUT
 
гуру
13.04.26
12:15
(33) проблема только в глушилке GPS :))) а так да, проблем нет
36 Fish
 
гуру
13.04.26
12:18
(35) Ну так глушилка GPS тебе любой GPS заглушит/собьёт. Что на смарте, что в навигаторе, который без инета.
37 PLUT
 
гуру
13.04.26
12:22
(33) для пешеходов и курьеров фича новая есть: "степ бай степ" в яндекс и 2Гис завезли

дома заранее при нормальном тырнете стоится маршрут

https://t-j.ru/news/2gis-shagzashagom

"следуй за белым кроликом"

для водителя такая фича неудобна

почувствуй себя участником ралли-рейда (нужен штурман, который будет кнопки "Далее" нажимать и говорить следующий маневр и дистанцию до него)
38 Garykom
 
гуру
13.04.26
12:37
(37) Уже писал, в нашей деревне пока с этим нет особых проблем
Там где спутниковая навигация не работает - не заблудишься ибо некуда с моста свернуть или аэропорт это конечная
Вот когда в Питер ездил - сильно матерился на развязках и съездах
39 PLUT
 
гуру
13.04.26
12:57
(38) в незнакомой локации жутко неудобно, если понадеялся на нафигатор, а он тебя "за нос" начинает водить... искать место для остановки и "млять где я" и изучать карту и запоминать хотя бы примерно следующие маневры по маршруту (как раньше без нафигаторов по бумажным картам ездили)
40 Garykom
 
гуру
13.04.26
13:49
(39) https://mobismart.ru/inercialnaja-navigacionnaja-sistema-x36d/
Еще немного и подешевеет
Технически смартфоны уже сами могут но точность низковата
41 PLUT
 
гуру
13.04.26
13:54
(40) что-то на богатом

подожду, когда ИИчки смогут с камеры определять местоположение и "еще немного и подешевеет"

у кетайцев уже и проекция и чтение дорожных знаков есть
42 Garikk
 
13.04.26
13:54
(39) <изучать карту и запоминать хотя бы примерно следующие маневры по маршруту (как раньше без нафигаторов по бумажным картам ездили)>

только так и езжу. вообще последнее дело навигатору верить бездумно, а потом новости "барышня повернула на набережной в реку, потому что навигатор сказал поверните направо"
43 Garykom
 
гуру
13.04.26
14:28
(42) Меня однажды навигатор привел к пандусу для фур в ТЦ
Точнее даже заезду внутрь (аля подземный паркинг но на одном уровне), где пандус для выгрузки
Вместо нормальной парковки с другой стороны ТЦ ))
44 Garykom
 
гуру
13.04.26
14:31
Правильно понимаю что никто не пытался по моей задаче промпт через разные ИИ прогнать?
Лично я пробовал большие онлайновые только 3 штуки.
И еще несколько слабых локальных.

Что интересно локальные типа слабенькие тоже типа в тему отвечают, почти как и большие онлайновые.
Но платных подписок у меня нет.
45 АгентБезопасной Нацио
 
13.04.26
14:33
(44) а "зашифрованные базы" соответствуют приведенному "файлу загрузки"?
46 PLUT
 
гуру
13.04.26
14:37
(43) ну так то, когда маршрут прокладываешь, удобно включить режым "P" (парковки, если яндекс) и прям пальцем ткнуть место финиша

а то ко мне по нафигатору доставщики как-то х.з. куда уезжали. в Москве есть Дубининская и Дубнинская улицы :)
47 Garykom
 
гуру
13.04.26
14:48
(45) Уточни, не понял?

Если про формат Навител - то возможно эти камеры в них есть
Но не факт, камеры могут не совпадать, меняются же.
Один из вариантов дешифровки записей - это попытаться найти заведомо известную камеру(ы) в файлах DATABASE.BIN
Пробовал такое, ИИ там находит все что угодно но для одной камеры, но когда выводишь для всех то в прочих криво - не то берем.
48 АгентБезопасной Нацио
 
13.04.26
14:42
(47) по ссылке - несколько баз (для разных нафигаторов), и один файл навител. Данные в них всех - одинаковые?
49 Garykom
 
гуру
13.04.26
14:43
(48) Нет конечно
Но думаю пересекаются значительно
Индексы понятно другие как и порядок
50 Garykom
 
гуру
13.04.26
15:14
(48) Идея неплоха
Тупо по всем .BIN поискать одинаковые цепочки байт
Если кодировка совпадает и те же камера - они будут пересекаться, в части без индексов/номеров
51 Garykom
 
гуру
13.04.26
18:29
Находит
Пришлось выбить очередной скрипт из ИИ
52 Garikk
 
13.04.26
19:13
(43) однажды навигатор фуру привел к дому моей тёщи
вот метров 100 по этой дороге на фотке

Как он оттуда обратно выеззжал задом, груженый, это был цирк с конями

а фокус в том что на этой улице находится торговый центр X5 и терминал выгрузки, а сама улица не сквозная...и типа нумерация д.5, 6, 7... 6 - дом тёщи, а 7 это разгрузочный терминал через полкилометра промзоны и лесок...и между ними когдато еще в советские времена была грунтовка...а теперь даже тропинки нет..но их (и навигатор и водителя) это совершенно не смутило


====
<Но платных подписок у меня нет.>
сходи на ботхаб, там очень занедорого можно полноценную ИИ юзать и оплата нормальная
53 Fish
 
гуру
14.04.26
09:15
(52) "Центр страхования" - Там страхуют тех, кто решится заехать на эту грунтовку?
54 АгентБезопасной Нацио
 
14.04.26
11:56
(51) У тебя совпало 85 байт. Что противоречит упомянутой выше длине записи 72 байта.
Я б для начала посчитал автокорреляцию (бинарную), посмотрел бы на регулярность максимумов и уточнил длину записи. Потом порезал на записи посимвольно, провел частотный анализ по символам (судя по всему, у дирекшн значений два, 1 и 2, у спеед - тоже немного (30-40-60-80-90)), ну и у типа тоже немного. выщемил бы эти поля.

потом обрезал бы бин до одной записи, загрузил и посмотрел координаты и реквизиты появившейся камеры. И по оставшимся полям уже медитировал, вязал с координатами
55 Garykom
 
гуру
14.04.26
12:53
(54) Не, все ок
Там большой блок записей подряд совпал, на 640 байт

Заголовок все же только 18 байт
Или аж 72 байта и по сути 0-я запись
56 Garykom
 
гуру
14.04.26
12:18
(55)+ Больше всего совпадающих блоков в этих двух файлах оказалось по 55 байт
И несколько побольше, а самый большой 640 байт
57 Garykom
 
гуру
14.04.26
12:35
Пока базу для анализа накапливаю
Путь к файлу                                                                                         | Дата файла   | Создан (ОС)
----------------------------------------------------------------------------------------------------------------------------------
M:\Public\Базы камер (DATABASE.BIN) для расшифро... по датам для анализа\DATABASE_KZ_2026_04_10.BIN  | 10.04.2026   | 11.04.2026 01:10
M:\Public\Базы камер (DATABASE.BIN) для расшифро... по датам для анализа\DATABASE_KZ_2026_04_11.BIN  | 11.04.2026   | 11.04.2026 21:45
M:\Public\Базы камер (DATABASE.BIN) для расшифро... по датам для анализа\DATABASE_KZ_2026_04_12.BIN  | 12.04.2026   | 13.04.2026 11:09
M:\Public\Базы камер (DATABASE.BIN) для расшифро... по датам для анализа\DATABASE_KZ_2026_04_13.BIN  | 13.04.2026   | 14.04.2026 12:21
M:\Public\Базы камер (DATABASE.BIN) для расшифро...о датам для анализа\DATABASE_RURB_2026_04_10.BIN  | 10.04.2026   | 11.04.2026 01:10
M:\Public\Базы камер (DATABASE.BIN) для расшифро...о датам для анализа\DATABASE_RURB_2026_04_11.BIN  | 11.04.2026   | 11.04.2026 21:53
M:\Public\Базы камер (DATABASE.BIN) для расшифро...о датам для анализа\DATABASE_RURB_2026_04_12.BIN  | 12.04.2026   | 13.04.2026 11:09
M:\Public\Базы камер (DATABASE.BIN) для расшифро...о датам для анализа\DATABASE_RURB_2026_04_13.BIN  | 13.04.2026   | 14.04.2026 12:20
58 АгентБезопасной Нацио
 
14.04.26
12:40
Я корреляционный анализ накидал - да, пики корреляции с периодом 72. Только первый пик почему-то (для базы которая размером 986К) на 72, как будто заголовка нет.
59 Garykom
 
гуру
14.04.26
12:43
(58) Так и я о чем
Заголовок или 18 или 72
Но он точно есть, тяну из него дату и еще непонятное число (между годом и день/месяц)
Это непонятное никак не коррелирует с количеством записей или размером подвала
Возможно некая версия сборки или хеш-подпись файла
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс