Reverse engineering: различия между версиями
Dios22 (обсуждение | вклад) Нет описания правки |
Dios22 (обсуждение | вклад) |
||
| (не показано 9 промежуточных версий этого же участника) | |||
| Строка 4: | Строка 4: | ||
# Любое неаккуратное изменение приложение или прошивки может привести к бану | # Любое неаккуратное изменение приложение или прошивки может привести к бану | ||
# Самое простое решение, | # Самое простое решение, чтобы заработала телеметрия - перепаять esim и поставить слот для обычной сим. При этом нужно конфигурить модем АТ командами. | ||
# Самое интересное решение - слушать CAN и сделать свою "коробочку" вместо модема ninebot | # Самое интересное решение - слушать CAN и сделать свою "коробочку" вместо модема ninebot | ||
# Самое сложное решение - сделать свою прошивку | # Самое сложное решение - сделать свою прошивку | ||
# Самое правильное решение - добиться официального импорта в РФ и РБ и получить готовое работающее приложение от производителя | # Самое правильное решение - добиться официального импорта в РФ и РБ и получить готовое работающее приложение от производителя | ||
=== Что надо узнать и что уже знаем === | |||
==== Полный разбор протокола BLE (лучшая на сегодня статья) ==== | |||
https://nootnooot.codeberg.page/segway-ninebot-ble/ | |||
==== Куда, как и каким образом модем отправляет данные телеметрии. ==== | |||
https://steeldust.ninebot.com https://steeldust-os.ninebot.com | |||
==== Маппинг кана ==== | |||
· 0x100-0x1FF:电机控制相关 - МК | |||
· 0x200-0x2FF:电池管理相关 - Батарея / BMS | |||
· 0x300-0x3FF:车辆状态相关 - Общее состояние скута | |||
· 0x400-0x4FF:诊断和维护 - Диагностика и ТО | |||
==== Зависимость и привязка модулей (даш, модем, контроллер) по серийнику ==== | |||
==== Как вытищать код привязки BLE из Android ==== | |||
==== Где искать информацию ==== | |||
https://csdn.net | |||
https://baidu.com :) | |||
=== Всякая всячина не разобранная === | |||
==== API первый уровень ==== | |||
<blockquote>https://cn-cbu-gateway.ninebot.com/ | |||
"ApiList": [ | |||
"/app-api/survey/v1/info", | |||
"/app-api/ad/v1/list", | |||
"/app-api/system-time/v1/get-time", | |||
"/app-api/settings/v1/set-pushid", | |||
"/app-api/settings/v1/set-deviceinfo", | |||
"/app-api/privacy-policy/v1/latest", | |||
"/app-api/app-version/v1/check", | |||
"/app-api/device/bind/is-binding", | |||
"/app-api/device/bind/my-vehicle", | |||
"/app-api/common-user/get-invited-list", | |||
"/app-api/common-user/user-accept", | |||
"/app-api/common-user/common-vehicle-info", | |||
"/app-api/common-user/user-refuse", | |||
"/sun-portal/api/circle/v1/tab-config/list-tab", | |||
"/sun-portal/api/circle/v1/tab-config/get-tab-config", | |||
"/sun-portal/api/circle/v1/tab-config/get-search-config", | |||
"/sun-portal/api/circle-label/v1/label-detail", | |||
"/sun-portal/api/circle-label/v1/search-label-list", | |||
"/app-api/road-book/participate/v1/status", | |||
"/app-api/offline-activity/v1/pre-check", | |||
"/app-api/offline-activity/user/v1/check", | |||
"/app-api/offline-activity/theme/v1/list", | |||
"/app-api/system-config/v1/detail", | |||
"/app-api/task-center/v1/finish", | |||
"/app-api/circle/v1/get-short-url", | |||
"/app-api/circle/v1/share-callback", | |||
"/app-api/circle/v1/circle/set-top", | |||
"/app-api/circle/v1/circle/cancel-top", | |||
"/app-api/circle/v1/circle/hide", | |||
"/app-api/circle/v1/circle/cancel-hide", | |||
"/app-api/circle/home/v1/list" | |||
]</blockquote> | |||
==== Сервера, endpoints ==== | |||
"server": { | |||
"inland": { | |||
"php": { | |||
"dev": "<nowiki>https://api-jhcx-v6-dev-bj.ninebot.com</nowiki>", | |||
"test": "<nowiki>https://api-jhcx-v6-dev-bj.ninebot.com</nowiki>", | |||
"release": "<nowiki>https://api-jhcx-v6-release-bj.ninebot.com</nowiki>", | |||
"migrate_cloud": "<nowiki>https://api6-bj-pre-test.ninebot.com</nowiki>", | |||
"production": "<nowiki>https://api-jhcx-v6-bj.ninebot.com</nowiki>" | |||
}, | |||
"java1": { | |||
"dev": "<nowiki>https://cn-dev-oms-gateway.segwaydiscovery.com</nowiki>", | |||
"test": "<nowiki>https://cn-test3-oms-gateway.segwaydiscovery.com</nowiki>", | |||
"release": "<nowiki>https://cn-grey-oms-gateway.segwaydiscovery.com</nowiki>", | |||
"migrate_cloud": "<nowiki>https://cn-cbu-nc-gateway.ninebot.com</nowiki>", | |||
"production": "<nowiki>https://cnnx-omsgw.ninebot.com</nowiki>" | |||
}, | |||
"java2": { | |||
"dev": "<nowiki>https://cn-test3-oms-gateway.segwaydiscovery.com</nowiki>", | |||
"test": "<nowiki>https://cn-test3-oms-gateway.segwaydiscovery.com</nowiki>", | |||
"release": "<nowiki>https://cn-test3-oms-gateway.segwaydiscovery.com</nowiki>", | |||
"migrate_cloud": "<nowiki>https://cn-cbu-nc-gateway.ninebot.com</nowiki>", | |||
"production": "<nowiki>https://cn-cbu-gateway.ninebot.com</nowiki>" | |||
}, | |||
"steeldust": { | |||
"dev": "<nowiki>https://steeldust-test.ninebot.com</nowiki>", | |||
"test": "<nowiki>https://steeldust-test.ninebot.com</nowiki>", | |||
"release": "<nowiki>https://steeldust-release.ninebot.com</nowiki>", | |||
"migrate_cloud": "<nowiki>https://steeldust-dev.ninebot.com</nowiki>", | |||
"production": "<nowiki>https://steeldust.ninebot.com</nowiki>" | |||
}, | |||
"ebike": { | |||
"dev": "<nowiki>https://ebike-test.ninebot.com</nowiki>", | |||
"test": "<nowiki>https://ebike-test.ninebot.com</nowiki>", | |||
"release": "<nowiki>https://ebike-release.ninebot.com</nowiki>", | |||
"migrate_cloud": "<nowiki>https://ebike-dev.ninebot.com</nowiki>", | |||
"production": "<nowiki>https://ebike.ninebot.com</nowiki>" | |||
}, | |||
"assisted_ebike": { | |||
"dev": "<nowiki>https://cn-test3-oms-gateway.segwaydiscovery.com</nowiki>", | |||
"test": "<nowiki>https://cn-test3-oms-gateway.segwaydiscovery.com</nowiki>", | |||
"release": "<nowiki>https://cn-test3-oms-gateway.segwaydiscovery.com</nowiki>", | |||
"migrate_cloud": "<nowiki>https://cn-cbu-nc-gateway.ninebot.com</nowiki>", | |||
"production": "<nowiki>https://cnnx-omsgw.ninebot.com</nowiki>" | |||
}, | |||
"web_url_v1": { | |||
"dev": "<nowiki>https://api5-h5-app-test-bj.ninebot.com</nowiki>", | |||
"test": "<nowiki>https://api5-h5-app-test-bj.ninebot.com</nowiki>", | |||
"release": "<nowiki>https://api5-h5-app-test-bj.ninebot.com</nowiki>", | |||
"migrate_cloud": "<nowiki>https://api5-h5-app-bj-nc.ninebot.com</nowiki>", | |||
"production": "<nowiki>https://api5-h5-app-bj.ninebot.com</nowiki>" | |||
}, | |||
"web_url_v2": { | |||
"dev": "<nowiki>https://h5-test-bj.ninebot.com</nowiki>", | |||
"test": "<nowiki>https://h5-test-bj.ninebot.com</nowiki>", | |||
"release": "<nowiki>https://h5-test-bj.ninebot.com</nowiki>", | |||
"migrate_cloud": "<nowiki>https://h5-bj-nc.ninebot.com</nowiki>", | |||
"production": "<nowiki>https://h5-bj.ninebot.com</nowiki>" | |||
}, | |||
"web_url_service": { | |||
"dev": "<nowiki>https://test-mobile-service.ninebot.com</nowiki>", | |||
"test": "<nowiki>https://test-mobile-service.ninebot.com</nowiki>", | |||
"release": "<nowiki>https://test-mobile-service.ninebot.com</nowiki>", | |||
"migrate_cloud": "<nowiki>https://support-m-nc.ninebot.com</nowiki>", | |||
"production": "<nowiki>https://support-m.ninebot.com</nowiki>" | |||
} | |||
}, | |||
"overseas": { | |||
"php": { | |||
"dev": "<nowiki>https://api6-sg-test.ninebot.com</nowiki>", | |||
"test": "<nowiki>https://api6-sg-test.ninebot.com</nowiki>", | |||
"release": "<nowiki>https://api6-sg-release.ninebot.com</nowiki>", | |||
"migrate_cloud": "<nowiki>https://api6-sg-test.ninebot.com</nowiki>", | |||
"production": "<nowiki>https://api-jhcx-v6-%@.ninebot.com</nowiki>" | |||
}, | |||
"java1": { | |||
"dev": "<nowiki>https://sg-test1-oms-gateway.segwaydiscovery.com</nowiki>", | |||
"test": "<nowiki>https://sg-test1-oms-gateway.segwaydiscovery.com</nowiki>", | |||
"release": "<nowiki>https://sg-grey-oms-gateway.segwaydiscovery.com</nowiki>", | |||
"migrate_cloud": "<nowiki>https://sg-test1-oms-gateway.segwaydiscovery.com</nowiki>", | |||
"production": "<nowiki>https://eu-oms-gateway.ninebot.com</nowiki>" | |||
}, | |||
"java2": { | |||
"dev": "<nowiki>https://sg-test1-oms-gateway.segwaydiscovery.com</nowiki>", | |||
"test": "<nowiki>https://sg-test1-oms-gateway.segwaydiscovery.com</nowiki>", | |||
"release": "<nowiki>https://sg-test1-oms-gateway.segwaydiscovery.com</nowiki>", | |||
"migrate_cloud": "<nowiki>https://sg-test1-oms-gateway.segwaydiscovery.com</nowiki>", | |||
"production": "<nowiki>https://%@-oms-gateway.ninebot.com</nowiki>" | |||
}, | |||
"steeldust": { | |||
"dev": "<nowiki>https://os-st-test.ninebot.com</nowiki>", | |||
"test": "<nowiki>https://os-st-test.ninebot.com</nowiki>", | |||
"release": "<nowiki>http://os-st-release.ninebot.com</nowiki>", | |||
"migrate_cloud": "<nowiki>https://os-st-test.ninebot.com</nowiki>", | |||
"production": "<nowiki>https://steeldust-os.ninebot.com</nowiki>" | |||
}, | |||
"ebike": { | |||
"dev": "<nowiki>https://os-eb-test.ninebot.com</nowiki>", | |||
"test": "<nowiki>https://os-eb-test.ninebot.com</nowiki>", | |||
"release": "<nowiki>http://os-eb-release.ninebot.com</nowiki>", | |||
"migrate_cloud": "<nowiki>https://os-eb-test.ninebot.com</nowiki>", | |||
"production": "<nowiki>https://ebike-os.ninebot.com</nowiki>" | |||
}, | |||
"assisted_ebike": { | |||
"dev": "<nowiki>https://sg-test1-oms-gateway.segwaydiscovery.com</nowiki>", | |||
"test": "<nowiki>https://sg-test1-oms-gateway.segwaydiscovery.com</nowiki>", | |||
"release": "<nowiki>https://sg-test1-oms-gateway.segwaydiscovery.com</nowiki>", | |||
"migrate_cloud": "<nowiki>https://sg-test1-oms-gateway.segwaydiscovery.com</nowiki>", | |||
"production": "<nowiki>https://eu-oms-gateway.ninebot.com</nowiki>" | |||
}, | |||
"web_url_v1": { | |||
"dev": "<nowiki>https://api5-h5-app-test-sg.ninebot.com</nowiki>", | |||
"test": "<nowiki>https://api5-h5-app-test-sg.ninebot.com</nowiki>", | |||
"release": "<nowiki>https://api5-h5-app-test-sg.ninebot.com</nowiki>", | |||
"migrate_cloud": "<nowiki>https://api5-h5-app-test-sg.ninebot.com</nowiki>", | |||
"production": "<nowiki>https://api5-h5-app-%@.ninebot.com</nowiki>" | |||
}, | |||
"web_url_v2": { | |||
"dev": "<nowiki>https://h5-test-sg.ninebot.com</nowiki>", | |||
"test": "<nowiki>https://h5-test-sg.ninebot.com</nowiki>", | |||
"release": "<nowiki>https://h5-test-sg.ninebot.com</nowiki>", | |||
"migrate_cloud": "<nowiki>https://h5-test-sg.ninebot.com</nowiki>", | |||
"production": "<nowiki>https://h5-%@.ninebot.com</nowiki>" | |||
}, | |||
"web_url_service": { | |||
"dev": "<nowiki>https://test-mobile-service-os.ninebot.com</nowiki>", | |||
"test": "<nowiki>https://test-mobile-service-os.ninebot.com</nowiki>", | |||
"release": "<nowiki>https://test-mobile-service-os.ninebot.com</nowiki>", | |||
"migrate_cloud": "<nowiki>https://test-mobile-service-os.ninebot.com</nowiki>", | |||
"production": "<nowiki>https://service-m.segway.com</nowiki>" | |||
} | |||
} | |||
} | |||
Текущая версия от 16:43, 21 сентября 2026
Это специальный раздел, где будет собираться вся информация о возможностях и попытках создать что-то свое или изменить в софте Ninebot и "мозгах" скутеров.
Куда копать
- Любое неаккуратное изменение приложение или прошивки может привести к бану
- Самое простое решение, чтобы заработала телеметрия - перепаять esim и поставить слот для обычной сим. При этом нужно конфигурить модем АТ командами.
- Самое интересное решение - слушать CAN и сделать свою "коробочку" вместо модема ninebot
- Самое сложное решение - сделать свою прошивку
- Самое правильное решение - добиться официального импорта в РФ и РБ и получить готовое работающее приложение от производителя
Что надо узнать и что уже знаем
Полный разбор протокола BLE (лучшая на сегодня статья)
https://nootnooot.codeberg.page/segway-ninebot-ble/
Куда, как и каким образом модем отправляет данные телеметрии.
https://steeldust.ninebot.com https://steeldust-os.ninebot.com
Маппинг кана
· 0x100-0x1FF:电机控制相关 - МК
· 0x200-0x2FF:电池管理相关 - Батарея / BMS
· 0x300-0x3FF:车辆状态相关 - Общее состояние скута
· 0x400-0x4FF:诊断和维护 - Диагностика и ТО
Зависимость и привязка модулей (даш, модем, контроллер) по серийнику
Как вытищать код привязки BLE из Android
Где искать информацию
Всякая всячина не разобранная
API первый уровень
https://cn-cbu-gateway.ninebot.com/
"ApiList": [
"/app-api/survey/v1/info",
"/app-api/ad/v1/list",
"/app-api/system-time/v1/get-time",
"/app-api/settings/v1/set-pushid",
"/app-api/settings/v1/set-deviceinfo",
"/app-api/privacy-policy/v1/latest",
"/app-api/app-version/v1/check",
"/app-api/device/bind/is-binding",
"/app-api/device/bind/my-vehicle",
"/app-api/common-user/get-invited-list",
"/app-api/common-user/user-accept",
"/app-api/common-user/common-vehicle-info",
"/app-api/common-user/user-refuse",
"/sun-portal/api/circle/v1/tab-config/list-tab",
"/sun-portal/api/circle/v1/tab-config/get-tab-config",
"/sun-portal/api/circle/v1/tab-config/get-search-config",
"/sun-portal/api/circle-label/v1/label-detail",
"/sun-portal/api/circle-label/v1/search-label-list",
"/app-api/road-book/participate/v1/status",
"/app-api/offline-activity/v1/pre-check",
"/app-api/offline-activity/user/v1/check",
"/app-api/offline-activity/theme/v1/list",
"/app-api/system-config/v1/detail",
"/app-api/task-center/v1/finish",
"/app-api/circle/v1/get-short-url",
"/app-api/circle/v1/share-callback",
"/app-api/circle/v1/circle/set-top",
"/app-api/circle/v1/circle/cancel-top",
"/app-api/circle/v1/circle/hide",
"/app-api/circle/v1/circle/cancel-hide",
"/app-api/circle/home/v1/list"
]
Сервера, endpoints
"server": {
"inland": {
"php": {
"dev": "https://api-jhcx-v6-dev-bj.ninebot.com",
"test": "https://api-jhcx-v6-dev-bj.ninebot.com",
"release": "https://api-jhcx-v6-release-bj.ninebot.com",
"migrate_cloud": "https://api6-bj-pre-test.ninebot.com",
"production": "https://api-jhcx-v6-bj.ninebot.com"
},
"java1": {
"dev": "https://cn-dev-oms-gateway.segwaydiscovery.com",
"test": "https://cn-test3-oms-gateway.segwaydiscovery.com",
"release": "https://cn-grey-oms-gateway.segwaydiscovery.com",
"migrate_cloud": "https://cn-cbu-nc-gateway.ninebot.com",
"production": "https://cnnx-omsgw.ninebot.com"
},
"java2": {
"dev": "https://cn-test3-oms-gateway.segwaydiscovery.com",
"test": "https://cn-test3-oms-gateway.segwaydiscovery.com",
"release": "https://cn-test3-oms-gateway.segwaydiscovery.com",
"migrate_cloud": "https://cn-cbu-nc-gateway.ninebot.com",
"production": "https://cn-cbu-gateway.ninebot.com"
},
"steeldust": {
"dev": "https://steeldust-test.ninebot.com",
"test": "https://steeldust-test.ninebot.com",
"release": "https://steeldust-release.ninebot.com",
"migrate_cloud": "https://steeldust-dev.ninebot.com",
"production": "https://steeldust.ninebot.com"
},
"ebike": {
"dev": "https://ebike-test.ninebot.com",
"test": "https://ebike-test.ninebot.com",
"release": "https://ebike-release.ninebot.com",
"migrate_cloud": "https://ebike-dev.ninebot.com",
"production": "https://ebike.ninebot.com"
},
"assisted_ebike": {
"dev": "https://cn-test3-oms-gateway.segwaydiscovery.com",
"test": "https://cn-test3-oms-gateway.segwaydiscovery.com",
"release": "https://cn-test3-oms-gateway.segwaydiscovery.com",
"migrate_cloud": "https://cn-cbu-nc-gateway.ninebot.com",
"production": "https://cnnx-omsgw.ninebot.com"
},
"web_url_v1": {
"dev": "https://api5-h5-app-test-bj.ninebot.com",
"test": "https://api5-h5-app-test-bj.ninebot.com",
"release": "https://api5-h5-app-test-bj.ninebot.com",
"migrate_cloud": "https://api5-h5-app-bj-nc.ninebot.com",
"production": "https://api5-h5-app-bj.ninebot.com"
},
"web_url_v2": {
"dev": "https://h5-test-bj.ninebot.com",
"test": "https://h5-test-bj.ninebot.com",
"release": "https://h5-test-bj.ninebot.com",
"migrate_cloud": "https://h5-bj-nc.ninebot.com",
"production": "https://h5-bj.ninebot.com"
},
"web_url_service": {
"dev": "https://test-mobile-service.ninebot.com",
"test": "https://test-mobile-service.ninebot.com",
"release": "https://test-mobile-service.ninebot.com",
"migrate_cloud": "https://support-m-nc.ninebot.com",
"production": "https://support-m.ninebot.com"
}
},
"overseas": {
"php": {
"dev": "https://api6-sg-test.ninebot.com",
"test": "https://api6-sg-test.ninebot.com",
"release": "https://api6-sg-release.ninebot.com",
"migrate_cloud": "https://api6-sg-test.ninebot.com",
"production": "https://api-jhcx-v6-%@.ninebot.com"
},
"java1": {
"dev": "https://sg-test1-oms-gateway.segwaydiscovery.com",
"test": "https://sg-test1-oms-gateway.segwaydiscovery.com",
"release": "https://sg-grey-oms-gateway.segwaydiscovery.com",
"migrate_cloud": "https://sg-test1-oms-gateway.segwaydiscovery.com",
"production": "https://eu-oms-gateway.ninebot.com"
},
"java2": {
"dev": "https://sg-test1-oms-gateway.segwaydiscovery.com",
"test": "https://sg-test1-oms-gateway.segwaydiscovery.com",
"release": "https://sg-test1-oms-gateway.segwaydiscovery.com",
"migrate_cloud": "https://sg-test1-oms-gateway.segwaydiscovery.com",
"production": "https://%@-oms-gateway.ninebot.com"
},
"steeldust": {
"dev": "https://os-st-test.ninebot.com",
"test": "https://os-st-test.ninebot.com",
"release": "http://os-st-release.ninebot.com",
"migrate_cloud": "https://os-st-test.ninebot.com",
"production": "https://steeldust-os.ninebot.com"
},
"ebike": {
"dev": "https://os-eb-test.ninebot.com",
"test": "https://os-eb-test.ninebot.com",
"release": "http://os-eb-release.ninebot.com",
"migrate_cloud": "https://os-eb-test.ninebot.com",
"production": "https://ebike-os.ninebot.com"
},
"assisted_ebike": {
"dev": "https://sg-test1-oms-gateway.segwaydiscovery.com",
"test": "https://sg-test1-oms-gateway.segwaydiscovery.com",
"release": "https://sg-test1-oms-gateway.segwaydiscovery.com",
"migrate_cloud": "https://sg-test1-oms-gateway.segwaydiscovery.com",
"production": "https://eu-oms-gateway.ninebot.com"
},
"web_url_v1": {
"dev": "https://api5-h5-app-test-sg.ninebot.com",
"test": "https://api5-h5-app-test-sg.ninebot.com",
"release": "https://api5-h5-app-test-sg.ninebot.com",
"migrate_cloud": "https://api5-h5-app-test-sg.ninebot.com",
"production": "https://api5-h5-app-%@.ninebot.com"
},
"web_url_v2": {
"dev": "https://h5-test-sg.ninebot.com",
"test": "https://h5-test-sg.ninebot.com",
"release": "https://h5-test-sg.ninebot.com",
"migrate_cloud": "https://h5-test-sg.ninebot.com",
"production": "https://h5-%@.ninebot.com"
},
"web_url_service": {
"dev": "https://test-mobile-service-os.ninebot.com",
"test": "https://test-mobile-service-os.ninebot.com",
"release": "https://test-mobile-service-os.ninebot.com",
"migrate_cloud": "https://test-mobile-service-os.ninebot.com",
"production": "https://service-m.segway.com"
}
}
}