查看: 17425|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ( y5 E+ t8 k/ S+ V
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    % o$ S( P+ `# q  r$ r$ \
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:$ c6 {1 Q0 \+ {
usage: himr <address> <value>. sample: himr 0x80040000 0x08 h$ p4 k8 V, I* h! k  F, Z/ x8 d$ o
4 K* |+ ]  q0 n' s4 V! p, N

  C: ]% k+ w7 b不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?3 [& y9 G" a" b
2 z; u$ I+ a$ e" w( p
补充内容 (2012-3-8 09:42):# j/ @, a$ p- z
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
7 u, h  ~# v' G0 e, {0 a这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
  U  ~8 Y) w4 x3 @  e& }4 X6 R, w6 ?7 n) F7 E
himr <address> <value>. sample: himr 0x80040000 0x06 n, S/ o. L- [4 Z* Y4 B4 K& h
/ x2 W( X0 a8 |: W! w' d
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
; p: ~% v9 T- d+ c, }" n* j% G5 ]himr 0x80040000 0x00
$ f) t0 l( w! \3 `, r1 Z2 xhimr 0x80040001 0x11; V' ~' _9 Q) m" i, G# H& U# R- w; l
himr 0x80040002 0x22
, ?! @) K$ x' k" P2 d* Q/ Fhimr 0x80040003 0x338 c& U: ]4 [! Z- ^1 _8 X
himr 0x80040004 0x44
* N! J; ^& R4 f3 B1 b8 Zhimr 0x80040005 0x553 F8 F) n' \( ^& S7 O2 ^
  \+ r: k9 W9 {8 _' z5 l
SN也是类似。
# e; g7 R/ }6 K7 ?( b% e' f
# G5 J& B6 D: Q! x现在主要是,谁告诉我们MAC和SN的地址?
4 V$ [- }+ u, p' _4 t# _( j/ i
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
- B2 `2 C( g" y$ i3 I一直想找到运程修改MAC和SN的办法,苦于无解啊

% n2 w" i* P" e& @3 u源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 7 Z1 G) W9 T9 F) U8 `; \5 n1 u

/ G+ [$ I; s2 K% R0 Z% M5 v$ U. l修改的代码早有了。到今天不会编译。
$ G* a- r9 a( M! F0 M需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    9 P: ?7 e( g7 V) w/ D/ j9 E
  2. #include <malloc.h>4 c- [5 p3 ^! n: s" K9 [1 a6 r  u
  3. #include <sys/types.h>( s! b' N0 h7 x- `
  4. #include <sys/stat.h>' J/ Z9 I+ C0 p1 E% S5 a6 M( H. A
  5. #include <sys/ioctl.h>
    . l) l$ N' @9 q: u/ u' D. d: F
  6. #include <stdio.h>
    3 s" D# k. c2 I6 |/ g- ?& z
  7. #include <string.h>
    4 ]5 q- {, b- {& Q) A9 k

  8. 3 j, R& z; Y4 N* F1 ]; d* `$ m
  9. typedef struct {9 p4 u$ }' k" l( S6 K) S
  10.         unsigned int        e2prom_cmd_sub_addr;
    * W, L- O5 I9 D7 a7 F  e1 ~# T0 V& \
  11.         unsigned int        sub_addr_count;
    9 I0 s' T5 D1 t! p' y0 u9 P6 S9 R
  12.         unsigned char*        e2prom_cmd_data;1 ^. f# ]1 D* g$ \+ }
  13.         unsigned int        data_count;
    ' R* ^3 Q8 Q2 X8 e
  14. } e2prom_s_cmd;
    + u2 H- G( C5 V' j2 F
  15. * ^: c, Q4 g$ D& H/ r9 q
  16. #define E2PROM_CMD_READ 1; \" I' q: n* \. ], L
  17. #define E2PROM_CMD_WRITE 2
    8 F- c) H% s- o- f9 n* C5 ]' Y# R
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 \5 L" n8 ]0 O( G4 E' L

  19. 3 D  ]6 m9 ^( x4 n" w$ A
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ( `8 [3 ]9 f- P2 m  m
  21. {
    0 a/ c9 n; B9 ~: P" A  _6 {
  22.         int fd, ret;/ ~$ [3 c1 i/ T- R3 q7 [
  23.         e2prom_s_cmd arg;
    7 |2 ]. \2 S  t4 ]; ?' E, y
  24.         unsigned char buf[0x18];
    % A/ d; b! \; a# q+ E
  25. . u* v& a4 r1 o& ?$ t
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    & z+ p  _. R7 y3 U4 E3 `1 N& X* n
  27.         if (fd  < 0) {1 l2 ]: H8 v( ?
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 ?8 L. ~3 w+ v5 e& _7 f6 D% Y; A
  29.                 return -1;
    + ~& N2 E, |( ^
  30.         }& j# D1 }3 H3 H7 F4 X
  31.         arg.sub_addr_count      = 2;
    - N/ g) z, @' m
  32.         arg.data_count          = 0x18;3 p1 i( o  {6 M( E  ^; `8 G
  33.         arg.e2prom_cmd_sub_addr = 0x290;! e7 L' o% Y0 d6 q) s+ ^  m. l
  34.         arg.e2prom_cmd_data     = buf;
    6 l4 [: r) w& x4 S- @6 K9 V
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    0 g( }- z* V, H3 ?6 E3 T
  36.         if (ret != 0) {1 b& ]% h' f0 G9 _& M4 l
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    % t. i* ]  B8 Z+ e
  38.                 return -1;8 ~- i  E: d+ u! f0 z, `9 A( ?& R
  39.         }
    + P5 A) @1 O4 N' }
  40.         memcpy(mac, buf, 6);
    * B1 j/ m8 i" L, b7 a1 c% d1 u
  41.         memcpy(stbid, &buf[6], 18);
      l* L5 f. \4 K' ~3 B7 o6 j
  42.         stbid[18] = '\0';
    ; y4 @7 I( N, X; W7 T
  43. % \5 q2 }% v6 t6 K% U: t6 a% M# [0 Z
  44.         return 0;0 q: L, x8 E, r: o
  45. }2 g+ D" s% Y! o/ u" E7 }/ s! f

  46. 0 V9 i( s. f' E# a+ u
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)2 @8 d; _8 `" A; r& G' L5 S. N
  48. {
    # x7 L+ O! ~+ w, `/ E0 i
  49.         int fd, ret;" X$ c" M9 f) u" i
  50.         e2prom_s_cmd arg;9 w# g0 n" f: N5 H( P
  51.         unsigned char buf[0x18];. m* }9 P& y* Y1 Y

  52. 4 A: @- I8 z3 _( J5 |7 a+ r4 `
  53.         memcpy(buf, mac, 6);/ A' c: S0 P) |! C- v# f6 c
  54.         memcpy(&buf[6], stbid, 18);
    $ C( n  ]5 r5 I6 a, j; c: N
  55.         fd = open(E2PROM_DEVICE, O_RDWR);+ S1 F' s) d% q9 r8 m$ x2 m
  56.         if (fd  < 0) {7 B# \. w& {8 i
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 Z. ^  Q2 }& t# j$ H  R
  58.                 return -1;
    $ H' q. n: W' ?/ R1 q% e  O9 D
  59.         }4 c& M! \5 b6 c7 }! Q. c
  60.         arg.sub_addr_count      = 2;
    4 ?; L4 y% B; p5 u
  61.         arg.data_count          = 0x18;) _( N6 R  G+ `: X/ f$ Y
  62.         arg.e2prom_cmd_sub_addr = 0x290;: w( `: K; q1 p
  63.         arg.e2prom_cmd_data     = buf;
    $ J2 p5 ~- z$ v- I" L+ R: Q  M6 i2 P
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);2 C% C$ e& C" x' Z7 _7 V9 K( q
  65.         if (ret != 0) {
    ! n5 X; x. p/ |5 e' |; `+ x- S
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    , }  T) F( a  ]7 d7 `
  67.                 return -1;
    . X$ P& X: t. o- b
  68.         }' x0 a2 l2 b4 V6 H2 A" j0 x
  69. 3 v8 s7 Q0 y/ S" E& }' s) ?7 O
  70.         return 0;- e# u) q* U. f" }1 ^  w8 V: V
  71. }
    ( D7 s- a, [7 s" Z, ^* s) k

  72. # c2 e& g: L  }9 R* d9 @, o
  73. int main()
    4 H/ Y+ T! O6 Z5 l
  74. {. F" l8 n1 z# N* j3 r7 b4 q) r; j
  75.         char c;: Y! y2 Y& r3 F* I5 @+ _" t
  76.         int i, macs[6];
    5 \2 L$ O! `, b) v- m
  77.         unsigned char mac[6];
    & F& Y$ n  G. |/ k* \
  78.         unsigned char stbid[256];
    * ?: k: i+ f4 [. r( Z

  79. $ x- J. j  h/ n( x4 I* q
  80.         if (readparam(mac, stbid) < 0)
    2 y- @7 G& F% ?5 o
  81.                 return 1;
    $ L: V: i  z* H+ b

  82. 2 ^. J0 N- _+ o& U7 \5 _; O4 o
  83.         printf("Current parameters: \n");
    2 w$ K0 l2 _4 @6 }  P( W5 P
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( r$ \5 `  i2 M( r
  85.         printf("  STBID: %s\n", stbid);2 ?( j& m$ J$ @# {+ c0 Q' ?& s" V
  86.        
    , F  ^6 a2 K8 U0 `
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");% C. r4 g4 r. n5 n" h& c
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    & g# o4 k7 F  R) e, D
  89.                 printf("Input MAC error\n");* C( ?( Y- m1 ~
  90.                 return 1;6 O8 I1 l% f  C- i% L. T
  91.         }0 A# a8 ^% Z. f$ c0 v- p  J
  92.         for (i=0; i<6; i++)mac[i] = macs[i];2 N5 r0 E; l3 K- m% L5 u% c
  93.         printf("\nPlease input new STBID: ");
    ( ]# ~0 T" o7 }8 v
  94.         scanf("%s", stbid);8 s1 P* t2 @# V  C/ ?- w
  95.         if (strlen(stbid) != 18) {
    4 Y8 u1 J$ ]# ?6 B! g
  96.                 printf("Invalid stbid\n");0 Z" ^8 Z% ]& P% {+ c+ s% g* k9 V
  97.                 return 1;
    # W  g8 H- l& Y4 Y8 s: l: a, }
  98.         }2 G8 f  n+ v5 j# b1 l, T' p& O
  99.         printf("\nNew parameters: \n");
    5 |+ O* c' ]' c0 a. i/ {
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 y% d- O: Z+ ^5 p: @: M" Q
  101.         printf("  STBID: %s\n", stbid);
    8 M/ f! r6 O- Y8 b. ^* q# }
  102. 3 H7 \* t4 Q" T" W
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    9 O0 H, L3 e& |& [- t9 q) B
  104.         for (;;) {
    * M6 e' A# u: @0 u5 q
  105.                 c = getchar();) K) G/ M# N  L, g+ h& O$ a
  106.                 if (c == 'y' || c == 'Y')5 V/ b$ W5 W6 G  [4 V
  107.                         break;9 z3 C% D* D3 g% J8 ^1 i0 ]2 P2 D
  108.                 if (c == 'n' || c == 'N') {
    ( e7 Y! ~) b+ D  V6 t% X
  109.                         printf("\nAborted.\n");
    8 H- F* P6 i! e6 W! X* {4 E
  110.                         return 1;, R+ t7 `$ ?1 b; d- a1 {" A* ~
  111.                 }
    / r0 a: V, m: z: S. m: i1 ]
  112.         }# m* t% j! i1 t* H1 W/ e6 q
  113.         if (writeparam(mac, stbid) == 0)
    1 f4 ~2 |* x2 f+ @) R
  114.                 printf("Parameters changed.\n");
    8 h. {6 I" k2 g  |
  115. % F' U1 b* b+ Z; T: r  V
  116.         return 0;
    8 K+ x8 B: i% f
  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 ) t4 G* @2 t9 i: c; B( `: n
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

- I, |1 d: Q$ B- A你用的编译命令行格式是什么?4 d; o% g2 ~2 m
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部