RT-4D: реверс прошивки, русификация, кастомный UI, флешеры
- Полный RE стока V3.25 (Cortex-M4F) + FM100B: карта памяти, протокол, codeplug, UI-архитектура - Русификация: свой CP1251-шрифт + патч рендера, перевод меню и надписей, ребренд Ru-4D V3.25 - Блюпринт переделки UI + C-тулчейн (clang thumbv7em), доказан инъекцией - Готовые флешеры: WebSerial .html и Windows .exe со вшитой прошивкой - Дамп SPI рации, стоковая прошивка, инструменты сборки Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Этот коммит содержится в:
@@ -0,0 +1,33 @@
|
||||
data = open(r"C:/Users/vikto/Documents/Claude/rt-4d/radio-spi-dump.bin","rb").read()
|
||||
|
||||
def runmap(start, end, minrun=256):
|
||||
# classify each byte: F=0xff, Z=0x00, E=0x80, D=other; emit runs
|
||||
def cls(b):
|
||||
if b==0xff: return 'F'
|
||||
if b==0x00: return 'Z'
|
||||
if b==0x80: return 'E'
|
||||
return 'D'
|
||||
runs=[]
|
||||
i=start
|
||||
cur=cls(data[i]); rs=i
|
||||
i+=1
|
||||
while i<end:
|
||||
c=cls(data[i])
|
||||
if c!=cur:
|
||||
runs.append((cur,rs,i))
|
||||
cur=c; rs=i
|
||||
i+=1
|
||||
runs.append((cur,rs,end))
|
||||
# merge: report runs, collapsing tiny D-noise? Just print runs >= minrun OR mark
|
||||
out=[]
|
||||
for c,s,e in runs:
|
||||
out.append((c,s,e,e-s))
|
||||
return out
|
||||
|
||||
for base,end,name in [(0x198000,0x242000,"BLOB1"),(0x352000,0x3dd000,"BLOB2"),(0x3f0000,0x400000,"BLOB3")]:
|
||||
print("="*70, name, hex(base),hex(end))
|
||||
runs=runmap(base,end)
|
||||
# collapse: print segments where a class dominates for >=1KB
|
||||
for c,s,e,l in runs:
|
||||
if l>=512:
|
||||
print(f" {c} {s:#08x}-{e:#08x} len={l:#x}({l})")
|
||||
Ссылка в новой задаче
Block a user