找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15511|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    3 I4 H+ b9 x+ |- W8 P& q* R) m6 n  B
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig7 ]# _! h' U) G! G  _
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
8 ~5 ?) D1 n: b2 V# dusage: himr <address> <value>. sample: himr 0x80040000 0x0
0 z, ~9 N. M1 j% o
0 D7 o1 s' T, e! u( y/ ?; `) P7 D' a8 P8 `+ W7 I4 N
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?' K- y+ y# l% X( k

! F1 ~* W4 X; d7 f补充内容 (2012-3-8 09:42):
" n- }0 Z, \* _9 ?http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数3 Z4 F% @% q, t+ \8 S
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
, H# D- M; \7 j( a( m; i
" C) O$ A+ Z; \% L0 ?himr <address> <value>. sample: himr 0x80040000 0x0
! ~8 ~& c) D6 \
4 ?4 P; g) J/ s% T例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
! t( N0 R8 z% a/ Shimr 0x80040000 0x00  |8 O& X( N; X& N+ O" |
himr 0x80040001 0x119 \1 X. Y, U+ u+ Q# s
himr 0x80040002 0x22  i! _* u. f! a6 Y2 {- E* G
himr 0x80040003 0x33
$ S$ Q" E+ o2 |( R. [3 zhimr 0x80040004 0x44
4 w9 a  R; y: L* M3 Lhimr 0x80040005 0x552 {& V5 _1 _! Q. [; ?. A; m1 s

2 t1 ~1 j) _4 n: o. t5 u8 S* ISN也是类似。0 @2 L6 Z5 r- y6 i( X
7 ^7 @1 k, T5 e- ~
现在主要是,谁告诉我们MAC和SN的地址?8 ^& @/ e% s# U
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 2 D: x) z2 q" i. Y* w. W" y
一直想找到运程修改MAC和SN的办法,苦于无解啊
. l4 Y; L$ a$ A
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ' z, Q% V9 }5 X) Y+ F
* N- O% e& Q. c6 G* X& r$ W2 S
修改的代码早有了。到今天不会编译。
0 K" s4 K! w" T, k需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>* O4 r# w4 ^1 _3 C, o- u, s9 L
  2. #include <malloc.h>
    ! ^7 u- s+ h# t9 L8 a. p6 _
  3. #include <sys/types.h>5 }- D" Y9 S  i' O4 J9 l
  4. #include <sys/stat.h>
    % {! ?1 p, {" D$ n0 p. s/ J3 R" R, `
  5. #include <sys/ioctl.h>
    ! W( C6 s) A( Z7 V) A* U( }3 N& k
  6. #include <stdio.h>
    6 _) ~( E' h+ v  Q# P3 @
  7. #include <string.h>
    . n0 q  O9 n# V7 g* k2 k

  8. . G+ _% S  T  n: `) a
  9. typedef struct {" l$ ^9 j, K6 {" ?- W
  10.         unsigned int        e2prom_cmd_sub_addr;
    / @* A; g! o! B7 R3 q$ Q( y2 e7 O1 A
  11.         unsigned int        sub_addr_count;
    4 R/ i5 L/ r" A- b3 a% z* Z
  12.         unsigned char*        e2prom_cmd_data;
    & U2 Y  N! B% q( M2 S" L
  13.         unsigned int        data_count;6 L8 G' F3 c9 F: ?! i, @
  14. } e2prom_s_cmd;
    ; x# d* Z7 B* ~2 s7 g' v- T
  15. - z3 C' {* p" k6 Z, i4 x
  16. #define E2PROM_CMD_READ 1
    " Q% u, Y9 M# l
  17. #define E2PROM_CMD_WRITE 2& K$ t1 b5 B/ W4 Q1 c
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"7 M/ l. e. [) B
  19. 1 I8 B* n8 B5 ~8 `
  20. static int readparam(unsigned char *mac, unsigned char *stbid)+ S8 \4 {# ?5 u6 ~; \- g
  21. {
    & J1 x' o5 x" e' ^4 ], C. t
  22.         int fd, ret;& n, y; I3 E6 v5 {
  23.         e2prom_s_cmd arg;
    3 K6 E% C3 _8 F; Q) B( Z+ L. M$ s
  24.         unsigned char buf[0x18];
    2 ?$ K) T1 M: ^! ^! ^

  25. , w& E) ^( t" Q. q- r# g$ v
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 l4 _( f) [5 Z/ y. q
  27.         if (fd  < 0) {+ D0 x$ m: A7 h
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);( R( w+ H6 r$ I7 ?' ]
  29.                 return -1;  X' L( R$ X" w* d$ \7 F! ~) q4 m
  30.         }' b$ ~- u6 Y+ G  Z2 F4 Q* V% _
  31.         arg.sub_addr_count      = 2;8 M6 ?' Y" L1 U8 R
  32.         arg.data_count          = 0x18;
    " [! v; B: L0 |9 Y- q5 K
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    0 t# ~- ~4 g# x' T7 r
  34.         arg.e2prom_cmd_data     = buf;! {2 L* P& s5 N9 r" l
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    3 \! @) k* Z6 _" _9 N
  36.         if (ret != 0) {  P% o1 u" }& z4 K+ K1 y
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    6 k1 O& [' J6 J/ Z# V. n" k
  38.                 return -1;
    ) G% z" U# e+ `( Y. k$ I
  39.         }
    : e3 R, B6 x7 Q1 d# a! B
  40.         memcpy(mac, buf, 6);
    ' |1 G# z- b+ E0 l2 G' w: {
  41.         memcpy(stbid, &buf[6], 18);
    + ]" K2 @+ M6 n0 v5 V" o: T" Z6 K! d
  42.         stbid[18] = '\0';: f$ y9 }2 z; ^" _) x% @

  43. 2 O4 `) v$ K& @+ D- s2 k# ]5 P9 V" i
  44.         return 0;( y, N2 Z) M7 ~8 `9 d: L
  45. }) K- Q* n+ L0 Q( q

  46. 9 C4 `' t) x* p% G
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    8 |' e7 ]- ?1 A3 g! S" G, }! d
  48. {
    2 f7 @$ o; J1 Y& S. }
  49.         int fd, ret;6 Y) P4 E, j5 K* X) ]
  50.         e2prom_s_cmd arg;( {) p+ I1 x9 u) ]! u: l* P
  51.         unsigned char buf[0x18];
    * x6 L; g( {4 Y9 i

  52. % k5 W+ |& K+ Q
  53.         memcpy(buf, mac, 6);
    3 e* o- H  N* _; O8 C" F) h
  54.         memcpy(&buf[6], stbid, 18);0 ?! f2 K* Q! c; n) i
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 U3 @* d) x% L! j* m' p3 {
  56.         if (fd  < 0) {
    & w( y1 Y0 M- Z& s, r2 B' H) v
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 j% l) Q' j6 h5 y8 Q3 }# W  C
  58.                 return -1;
    $ ?4 T6 _- D$ q9 N2 M7 |1 x0 o5 }
  59.         }
      U/ v9 s2 K8 _* r
  60.         arg.sub_addr_count      = 2;+ j( [* v( g5 N' S
  61.         arg.data_count          = 0x18;
    8 J2 q# v% R' y: w1 `( S
  62.         arg.e2prom_cmd_sub_addr = 0x290;8 N& Q) A7 `$ K% B
  63.         arg.e2prom_cmd_data     = buf;- H$ O9 y; ?! p: L& l
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);% ^! z9 S+ n5 r: A6 ^* }
  65.         if (ret != 0) {
    8 v2 c" K. Z( o4 P, R
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);% a, y% D  A5 H9 ?" p/ X  U' c8 Q
  67.                 return -1;; \' v4 F# j# `) B4 W) l% o: K
  68.         }1 N( `7 _9 R$ f* X8 h

  69. 6 Q' `5 @- L7 V4 R" a
  70.         return 0;% C* k; Q* ^7 {1 `+ c' J
  71. }% S0 b& A! o0 X9 Y( r
  72. 4 ~- K' P. M6 u3 w
  73. int main()! L+ E1 G/ a' K3 |
  74. {
    % K; o; D: L3 ]& B( _
  75.         char c;% V7 ~- K2 `& t
  76.         int i, macs[6];: d+ F, c3 ?4 k9 B/ F
  77.         unsigned char mac[6];
    ( G( z% g9 ?: p$ L8 A8 v0 Y
  78.         unsigned char stbid[256];3 [; k1 v' K* V, g* ^( [
  79. 5 R! A- j6 L% g% e" K
  80.         if (readparam(mac, stbid) < 0)
    ; X' U! `8 H& G' C5 H) e" p$ W
  81.                 return 1;! `2 t2 W& ^9 m1 @) T2 a

  82. + m1 ~% t# V2 L; ^- \
  83.         printf("Current parameters: \n");
    & I& s* t% I. x/ S4 u) Q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 R2 Q# E5 D$ l& `
  85.         printf("  STBID: %s\n", stbid);
    * k- r1 _* B' }' e" D" r
  86.        
    9 _7 q( t# `3 B0 {! X% i/ v7 [5 u
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");7 \7 F' m) T- ^- r
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ' d6 H" R, Q. }7 J- H! i. g
  89.                 printf("Input MAC error\n");
    ; y0 Z4 f" U  I9 E, ?4 ~4 g
  90.                 return 1;; r# Q3 p- y, q. B+ X2 [2 t9 E8 \5 D3 m
  91.         }
    $ C+ H3 X5 Y# m) ?: |2 m/ I
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( h7 n9 O3 D0 `7 ^0 Y- j6 E  N) G. _
  93.         printf("\nPlease input new STBID: ");6 R" f1 y3 @# c: g
  94.         scanf("%s", stbid);9 x$ ^# d5 h  ~+ x; j+ x
  95.         if (strlen(stbid) != 18) {2 s# L" F  f5 h! ?- x" g6 q
  96.                 printf("Invalid stbid\n");4 ?+ E% ?" b4 A1 n& q5 j
  97.                 return 1;. M& \, N: |4 i
  98.         }
    & n+ j4 X0 g+ s: v* P
  99.         printf("\nNew parameters: \n");
    ; h: m1 [" f  d+ @' }  x
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 A- K5 c2 m. ]% G. ]
  101.         printf("  STBID: %s\n", stbid);
    ! o% |2 M1 F' `6 @

  102. 3 l' v: [8 g  h# E
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    : A& `% X: _8 a. s
  104.         for (;;) {
    ) C1 K1 _/ o& G$ o- l' t
  105.                 c = getchar();
    ' j; J/ G% f; y
  106.                 if (c == 'y' || c == 'Y')
    ) s% I/ i" C' F9 i! C! E4 r
  107.                         break;
    & p5 x# D3 E' s; S0 v+ [( U( z0 f$ f
  108.                 if (c == 'n' || c == 'N') {  o7 n7 X0 G- W8 n
  109.                         printf("\nAborted.\n");& W) H2 z; D+ W: L% Z
  110.                         return 1;0 P* c3 b5 l: a( N0 X2 s
  111.                 }
    2 U* t% ]" x& Q
  112.         }: G% v% x4 W  ?* ^& {
  113.         if (writeparam(mac, stbid) == 0) ) J# _/ S0 f7 e5 U5 C' x5 `/ [
  114.                 printf("Parameters changed.\n");/ p. q: d' o' E* M; ^+ U2 B

  115. " B% e) Z- [/ _4 R% b, V2 ]6 Y! Y
  116.         return 0;
    + b0 s; P6 W2 w' r" k9 a4 j* ?
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24 ; U9 x6 Q) ?  Z$ D# X9 n- b
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
9 a$ t; P6 h, i/ V: C
你用的编译命令行格式是什么?! l9 m* x+ I4 k! F0 ~1 h
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-2-13 00:19 , Processed in 0.029199 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表