0

I'm trying to extract data from a firmware file.

I used binwalk on the firmware, which found a single chunk of Zlib compressed data. I uncompressed this data, and used strings on the result, which produced output whose structure looks a lot like a mix of file paths, source code, and human-readable text. Here's a small sample:

32107654ba98fedc
32107654BA98FEDC
,8UBEDSA GTRESiaF :del
 elifs% :l
0`YhaGp`a9
I&N'H&M(L'
CJLLKIMHL`+#
J!H!!=L"N!
GE6420><:8QOMKYWUS
-NAL@x!xcx
<+,I+K*H&x
-K\M[L\x/x#x
./..il/.eh/b-xilmmocm/nos/ucerahrs/drd/crevicpi/
c../..il/.eh/b-xilmmocm/nos/ucerahrs/drd/creviCiu/.mmo
c./..il/.eh/b-xilmmocm/nom/uc_nias/4md/creviriu/rCpsI.mmo
./..il/.eh/b-xilmmocm/nom/uc_nias/4md/creviriu/rUpsItadp
?cnySnorhdezi
cnySnorhdezi
cnySnorhdezi
0tinImoC telp
d% C862 95341 86
62 W5348 8694201
./..il/.OP/balPDhs/yderacrs/ird//revCIPS.mmo
cORRES :R%[IP :]d toGinapni cacid!rot:CP 0%x0
X8[IPS ]d%eteDdetc XR revowolfd%( 
) IPSe xrrorrd% :
f oN eer IPSp xrekca
tseborrE=! rFx0 FFFF
FFF./..il/.eh/b-xilmmocm/nos/ucerahrs/drd/crevirau/
./..il/.OP/balPDcm/yrs/urd/creviips/
NY./..il/.OP/balPDcm/yrs/urd/crevimds/c.cm
./..il/.OP/balPDcm/yrs/urd/crevimds/eDcm
./..il/.OP/balPDcm/yrs/urd/crevipsd/
./..il/.eh/b-xilmmocm/nom/uc_nias/4md/crevirop/r
./..il/.eh/b-xilmmocm/nom/uc_nias/4md/crevirep/r.lad
./..il/.eh/b-xilmmocm/nom/uc_nias/4md/crevirim/riDid
c.n./..il/.eh/b-xilmmocm/nom/uc_nias/4md/crevir6l/rkniLc.CB
./..il/.eh/b-xilmmocm/nom/uc_nias/4md/crevir6l/rkniL
./..il/.eh/b-xilmmocm/nom/uc_nias/4md/crevirav/rxair
c../..il/.eh/b-xilmmocm/nom/uc_nias/4md/crevirid/ratigduAloIoi
c.-tve di>EH <CXILRTNOE_LOTNEV_DI_NUOC
Tipg!er_ouOdatuptLEH(OCXIORTNER_L_TESTROPEH ,CXILRTNOR_LOTESENIP_&& )pg! r_oiOdaeuptuEH(tCXILRTNOB_LO_TOOTROPEH ,CXILRTNOB_LO_TOO)NIP
Y< diLEH OCXIORTNVE_L_TNEC_DITNUO
 bc(N =!)LLU && -bc(nuf>oitc=! nLUN 
)LcaPp tekN =!
LLUtyb(uoCe= tn)0 = || yb((oCet tnu)0 > && aDp(! atUN =))LL
S_SIECCUr(SS
)seleHgoCxiortnIsIlitinzila
deS_SIECCUr(SSaVte
ers/.rd/crevileh/oCxiortneh/lCxilrtnoc.lo
rs/.rd/crevileh/oCxiortneh/lCxilrtnoELlo
c.Drs/.rd/crevileh/oCxiortneh/lCxilrtnocSlobbirCLel
c.DLrtstgne=< hxam eziStSfOgnir
rs/.rd/crevileh/oCxiortneh/lCxilrtnoaMloCLni
c.Drs/.rd/crevileh/oCxiortneh/lCxilrtnoiUlonevE
c.tPcHpekcaEiUttnevwS>-hcti di.EH <CXILRTNOP_LOEKCAIU_TNEVEWS_THCTI_DI_NUOC
TPcHpekcaEiUttnevwS>-hctiats.< etLEH OCXIORTNAP_LTEKCEIU_TNEVIWS__HCTTATSDI_EUOC_
TNVEIU_TNEULAVNI_Ep*(TvEiUDtnercseotpi! )rIU =NEVEAV_T_EULLLUN
PcHpekcaEiUttnevep>-.lad< diLEH OCXIORTNAP_LTEKCEIU_TNEVDEP_I_LAOC_D
TNUPcHpekcaEiUttnevep>-.ladulav=< e0.1 
rs/.rd/crevileh/oCxiortneh/lCxilrtnosIlomoCp
c.m-tve di>EH <CXILRTNOI_LOU_PSTADPVE_E_TNEP_DIECORC_SSTNUO
rs/.rd/crevileh/oCxiortneh/lCxilrtnosIlodpUp.eta
c< diLEH OCXIORTNSI_LPU_PETADEVE_I_TNRP_DSECOOC_S
DN./..il/.eh/b-xilmmocm/nom/uc_nias/4md/crevirce/rrDmo
|FUI$N#F0h3G
./..il/.OP/balPDcm/yrs/usd/csd/pnaMprega
c.essartSt maeN =!
./..il/.OP/balPDcm/yrs/usd/csd/pnoCplorteilCc.tn
./..il/.OP/balPDhs/yderacrs/sys//mettSOImaer
h.W_SI_DROEZISILA_DENGzis(
)eW_SI_DROEZISILA_DENGfub(
)zSW_SI_DROEZISILA_DENGlav(uBeu)zSf
./..il/.OP/balPDcm/yrs/usd/csd/pnoCplorteilCM_tnoPgsc.tr
./..il/.OP/balPDcm/yrs/usd/csd/polSp
./..il/.OP/balPDcm/yrs/usd/csd/pnoCptxet
./..il/.OP/balPDcm/yrs/usd/csd/pteMpnaMarega
./..il/.OP/balPDcm/yrs/usd/csd/pteMpmySaslob
./..il/.OP/balPDcm/yrs/usd/csd/pseRpcruonaMerega
UedniEnIxyrtnlbaT < en>-csUmunEdeeirt
se>-cirtni[sexednnEnITyrtelbaer.] DIsr ==DIse
./..il/.OP/balPDcm/yrs/usd/csd/pseRpcruocaCec.eh
./..il/.OP/balPDcm/yrs/uht/cdaeruM/s.xet
?6~j?p?j?&
AH?kc7?ei&?
M?O?^?QKf?gff?
V+?ov-?yV%?
o>aUq>y_q>1
gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?gff?eff
4>13;>afB>
X>13_>aff>
%?gf'?33)?
.?gf0?332?
7?gf9?33;?
@?gfB?33D?
I?gfK?33M?
R?gfT?33V?
[?gf]?33_?
R?iNK?uuC?;>;?9
k?cRf?Q]`?
r??%t?aIu?
dv?aIu??%t?
r?ytm?QGh?U
=A_->)Ki>5
P?WBM?OpI?%
@<e5F<7F7<
b:b{JW#$F8`
tluM1( i,"4/RLX iD ,atigU ,l1 BS
igiD latP/S(,FIDSEA UBE/ro , 6L KNIL
tluMG( iatiuA ,r ,xuiraV
iraVM xaengascit
igiD latP/S( FIDA roE/SE
tluMG( iatiuA ,r ,xuiraV
iraVM xaengascit
igiD latP/S( FIDA roE/SE
tluM1( i,"4/RLX iD ,atigU ,l1 BS
igiD latP/S(,FIDSEA UBE/ro , 6L KNIL
( ittiuG ,ra,xuAraV )xai
 xaingaMcite
( it"4/1LX ,D ,Rtigi ,la BSU)2/1
lati/S( FIDPEA ,BE/So ,U6L rNIL 
kcaP stetnes   :    
kcaP steecerdevi   :    
   orrE :sr        
-:2LD--- DP
---ileHoC xortnd :locsicenn
detileHoC xortnc :lennodetc
   ileHoC xortne :lemunetar
  dV WFisre :no---v---.---.
"`F!`l`,Hm`
KlNk`4JlF!p
HhIgp,p4MhNgp
xdi( => & )0i( &< xdDIU LPSIL_YAI_DEOC_D)TNU
cLch dIdEH <CXILRTNOP_LOEKCACS_TBBIRL_ELI_DCOC_D
TNUrs/.iu/cDiu/lpsic.ya
^./..il/.eh/b-xilmmocm/nom/uc_nias/4mu/crrg/iihpag/schparMsciganac.re
4./..il/.OP/balPDcm/yrs/uiu/carg/cihprg/sihpaeMscaMategan
p./..il/.OP/balPDcm/yrs/uiu/carg/cihprg/sihpaeRscruosaMecegan
JNHMNOINMPOO#
tadep < lADEPDI_LUOC_
TNnevei>-t== dLEH OCXIORTNVE_L_TNEU_DIEVEI
nwoEiUgtnevksaTnuRsgnin
./..il/.eh/b-xilmmocm/nom/uc_nias/4mu/criu/inevE
./..il/.eh/b-xilmmocm/nom/uc_nias/4mu/crrg/iihpat/sc.txe
./..il/.eh/b-xilmmocm/nom/uc_nias/4mu/crrg/iihpag/schparOscicejbiu/tgamI
E./..il/.eh/b-xilmmocm/nom/uc_nias/4mu/crrg/iihpag/schparOscicejbiu/tgdiWc.te
l/..m/biapgss/kco/crcejbc.ct
:TREOOP si Lard deni
:TREmem _rgmollaSI cTUO  FO OMEM!!YR
HkMjC4IkKk
NiF)F(p=p%p
wsileHoC xortn - lmunEtare
deileHoC xortn - ledlOev roisred ntcet
deileHoC xortn - leweNev roisred ntcet
deileHoC xortn - lernUngocdezi wf eteddetc
./..il/.OP/balPDcm/yrs/uht/cdaerhT/sdaer
h.rs/.pa/cpa/p
col(oita! )nUN =
LLsed(pirc)rot =! LLUN
olb( )kcN =!
LLUter(IjbO! )DUN =
LLrs/.pa/cpa/ppsDp
c.RELAI :Tlavnf diIwold% d
uos(Iecr! )DUN =
LLnis()DIk =! LLUN
Ijbo=! DLUN 
LZterSeno eziN =!
LLUwolf =! LLUN
H !F1Q`F 3
PedniZnIx enoeg <xaMtenoZeziSnoz(
)eolf(! )wUN =
LLacolnoit =! LLUN
acolnoitni>-IxednoZn=> e
0 acolnoitni>-IxednoZn < eMtegoZxaiSenz(ez)eno
edniZnIx enoPA <SD_PLF_PM_WOB_XAKCOLEP_SOZ_R
ENeppuziSr== ePPA PSD_OLF_AM_WLB_XSKCOREP_NOZ_
Etgt(wolFrp>-ziSe + eFtgt-wolppu>iSre )ezA =<D_PPF_PS_WOL_XAMCOLBP_SKZ_RE
ENOtgt(wolFrp>-ziSe + eFtgt-wolppu>iSre+ eztgt wolFop>-iSts )ezA =<D_PPF_PS_WOL_XAMCOLBP_SKZ_RE
ENOenozeziS => 
0Serp ezi0 ==
wolfrp>-ziSe + ewolfpu>-Srep ezilf +>-wotsopeziS =< _PPA_PSDWOLFXAM_OLB__SKC_REPENOZ
ewoluoCr! tn
0 =potspooL :rearapoN moF t dnu
ewoluoCr= tn
0 =ovipdnIt> xe
0 =ovipdnIt< xeteg ZxaMSeno(ezienoz
)enoz =! LLUN
rs/.pa/cpa/ppsDpwolF
c.enozeziS =< _PPA_PSDWOLFXAM_OLB__SKC_REPENOZ
edniZnIx eno0 =>
ruosnIec xed0 =>
ruosnIec xedPA <SD_PLF_PM_WOB_XAKCOLEP_SOZ_R
ENgratnIte xed0 =>
gratnIte xedPA <SD_PLF_PM_WOB_XAKCOLEP_SOZ_R
ENbmunfOrecolB> sk
0 =bmunfOrecolB< skPA =SD_PLF_PM_WOB_XAKCOLEP_SOZ_R
ENuos_Iecrxedn => 
0rat_Itegxedn => 
 :RtuorSgni-tolrap>Ztne enoN =!

There's also some ASCII art later in the output, which I believe is used to control the ouput of some small LCD displays on the device:

%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JR%)%)%)%)%)%)%)%)JR%)JRJRJRJRJRJRJRJR%)%)%)%)%)%)%)%)%)%)%)%)%)JR%)%)%)%)%)%)%)%)%)%)%)%)JR%)JRJRJRJR%)%)%)%)%)%)%)%)JRJRJRJRJRJRJRJRJRJRJRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JR%)%)JR%)%)%)%)%)%)%)%)JR%)JRJRJRJRJRJRJRJRJRJR%)%)%)%)%)%)%)%)JR%)JRJR%)%)%)%)%)%)%)%)%)%)JR%)JRJRJRJRJRJRJRJR%)%)%)%)%)%)JRJRJRJRJRJRJRJRJRJRJRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JRJR%)JR%)%)%)%)%)%)%)%)JR%)%)JR%)%)%)%)JR%)JRJR%)JR%)%)%)%)%)%)JR%)JRJR%)%)%)%)%)%)%)%)%)%)JRJRJRJR%)%)%)%)JRJR%)JR%)%)%)%)JRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JR%)JRJR%)JR%)%)%)%)%)%)%)%)JR%)%)JR%)%)%)%)%)%)JR%)%)JR%)%)%)%)%)%)JR%)JR%)%)%)%)%)%)%)%)%)JR%)JRJR%)%)%)%)%)%)JR%)%)JR%)%)%)%)JRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JRJRJRJR%)JR%)%)%)%)%)%)%)%)JR%)%)JR%)%)%)%)%)%)%)%)JRJR%)%)%)%)%)%)JRJRJR%)%)JR%)%)%)%)%)%)JR%)%)JR%)%)%)%)%)%)%)%)JRJR%)%)%)%)JRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JR%)JRJRJRJR%)JR%)%)%)%)%)%)%)%)JR%)%)JR%)%)%)%)%)%)%)%)JRJR%)%)%)%)%)%)JRJRJR%)%)JR%)%)%)%)%)%)JRJR%)JR%)%)%)%)%)%)%)%)JRJR%)%)%)%)JRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JRJRJRJRJRJR%)JR%)%)%)%)%)%)%)%)JR%)%)JR%)%)%)%)%)%)%)%)JRJR%)%)%)%)%)%)%)JR%)%)%)JR%)%)%)%)%)%)JRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JR%)JRJRJRJRJRJR%)JR%)%)%)%)%)%)%)%)JR%)%)JR%)%)%)%)%)%)%)%)JRJR%)%)%)%)JR%)%)JR%)%)JRJR%)%)%)%)%)%)JRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JRJRJRJRJRJRJRJR%)JR%)%)%)%)%)%)%)%)JR%)%)JR%)%)%)%)%)%)JR%)%)JR%)%)%)%)JR%)%)JR%)%)JRJR%)%)%)%)%)%)JRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JR%)JRJRJRJRJRJRJRJR%)JR%)%)%)%)%)%)%)%)JR%)%)JR%)%)%)%)JR%)JRJR%)JR%)%)%)%)JR%)%)%)%)%)JR%)%)%)%)%)%)%)JRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JRJRJRJRJRJRJRJRJRJR%)JR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JRJRJRJRJRJRJRJRJRJR%)JR%)%)%)%)%)%)%)%)JR%)JRJRJRJRJRJRJRJRJRJR%)%)%)%)%)%)JRJR%)%)%)%)JR%)%)JR%)%)%)%)JRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JRJRJRJRJRJRJRJRJRJR%)JR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JR%)JRJRJRJRJRJRJRJR%)JR%)%)%)%)%)%)%)%)JR%)JRJRJRJRJRJRJRJR%)%)%)%)%)%)%)%)JRJR%)%)%)%)JR%)%)JR%)%)%)%)JRJR%)%)%)%)%)%)JRJRJRJRJRJR%)JR%)%)JRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JRJRJRJRJRJRJRJR%)JR%)%)%)%)%)%)%)%)JR%)%)JR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JR%)%)%)%)%)%)%)JR%)%)%)%)JRJR%)%)%)%)%)%)JRJRJRJRJRJR%)JR%)%)JRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JR%)JRJRJRJRJRJR%)JR%)%)%)%)%)%)%)%)JR%)%)JR%)%)%)%)%)%)%)%)%)%)%)%)JR%)%)JR%)%)%)%)%)%)JRJR%)%)%)%)JRJR%)%)%)%)%)%)%)%)%)%)JR%)%)JR%)%)JRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JRJRJRJRJRJR%)JR%)%)%)%)%)%)%)%)JR%)%)JR%)%)%)%)%)%)%)%)%)%)%)%)JR%)JRJRJRJRJRJRJRJRJRJR%)%)%)%)JRJR%)%)%)%)%)%)%)%)%)%)JR%)%)JR%)%)JRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JR%)JRJRJRJR%)JR%)%)%)%)%)%)%)%)JR%)%)JR%)%)%)%)%)%)%)%)%)%)%)%)JR%)JRJRJRJRJRJRJRJRJRJR%)%)%)%)JRJR%)JR%)%)%)%)%)%)%)%)JR%)%)JR%)%)JRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JRJRJRJR%)JR%)%)%)%)%)%)%)%)JR%)%)JR%)%)%)%)%)%)%)%)%)%)%)%)JRJR%)%)%)%)%)%)%)%)JR%)%)JR%)%)JR%)%)JR%)%)%)%)%)%)%)%)JR%)%)JR%)%)JRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JR%)JRJR%)JR%)%)%)%)%)%)%)%)JR%)%)JR%)%)%)%)%)%)%)%)%)%)%)%)JRJR%)%)%)%)%)%)%)%)JR%)%)JR%)%)JR%)JRJR%)%)%)%)%)%)%)%)JR%)%)JR%)%)JRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JRJR%)JR%)%)%)%)%)%)%)%)JR%)%)JR%)%)%)%)%)%)%)%)%)%)%)%)%)JR%)%)%)%)%)%)%)%)%)%)%)JR%)%)%)%)JRJRJRJR%)%)%)%)JR%)JRJR%)JR%)%)JRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JR%)%)JR%)%)%)%)%)%)%)%)JR%)%)JR%)%)%)%)%)%)%)%)%)%)JR%)%)JR%)%)%)%)%)%)%)%)%)%)JRJR%)%)%)%)JR%)JRJRJRJRJRJRJRJR%)JR%)%)%)%)JRJRJRJRJRJRJRJRJRJRJRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)JR%)%)%)%)%)%)%)%)JR%)%)JR%)%)%)%)%)%)%)%)%)%)JR%)%)JR%)%)%)%)%)%)%)%)%)%)JRJR%)%)%)%)%)%)JR%)JRJRJRJR%)JR%)%)%)%)%)%)JRJRJRJRJRJRJRJRJRJRJRJR%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B
%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)B

Given that the ASCII art remains mostly intact, I think it's likely that whatever means of obfuscation this firmware is using is fairly weak. But I'm new to firmware analysis, so I'm not sure if that's a logical conclusion.

Is this file using a substitution cipher of some kind? Or perhaps another kind of simple obfuscation?

1 Answer 1

3

The first two lines suggest a string containing all hexadecimal digits, first line lower case, second line upper case. If this assumption holds, then the two lines read

0123456789abcdef

0123456789ABCDEF

The construction principle then would be: Take four characters, arrange them in reversed order, go to the next four characters etc.

Doing this with the line

./..il/.eh/b-xilmmocm/nos/ucerahrs/drd/crevicpi/

results in

../../lib/helix-common/muc/shared/src/driver/ipc, which makes sense.

This works but not always. For instance the line

cnySnorhdezi ==> Synchronized, but the line

?cnySnorhdezi ==> ?cnyronSzedhi, which is obviously nonsense. I am pretty sure it "deobfuscates" also to Synchronized.

One could now assume some secret hidden additional algorithm for the non-working lines, but for me this sounds not realistic, given the simple construction principle in many cases.

From the examples presented I assume that your snippet is not obfuscated at all, but not correctly decompressed. Maybe when you try with different zip algorithms with slightly different parameters, you end up with the clear text. With the principle I have been using it should be possible to get some more amount of perfectly reasonable clear text parts, which possibly could be used as a help to find the correct decompressor.

There might be another, more promising possibility to decompress:

I assume you have the (compressed) code of your firmware. There should be somewhere a stub in this code containing the decompressor. If you are able to find it, you could reverse it, perhaps also from static code and make a working C-code on your PC, thus enabling you to decompress.

2
  • Based on your answer, and a friend's suggestion, I was able to figure out that it was simply the endianness of the data. Flipping the endianness using a 4-byte word size produces the desired result. Jul 5, 2018 at 11:20
  • Great! Glad I could help!
    – josh
    Jul 5, 2018 at 13:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.