查看: 17121|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    " W' E8 Z& m+ B0 u
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig5 F( T( h0 W" [, L, x: E) A2 K
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:# B  g: U2 M) }1 J( Q+ j/ ]
usage: himr <address> <value>. sample: himr 0x80040000 0x0' Y5 V7 a! |  t5 u$ z2 S  v- E' `

& M) ~/ i" H; ?" I) j5 _5 |: h+ e: [
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?4 N; v) `7 ?% D( j. J

0 p* d6 U/ }# ]+ ?% N补充内容 (2012-3-8 09:42):
) I4 ^. v+ p: lhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
8 W$ Y/ ^* |  y5 C0 F8 v& C, y这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
) ]' O2 K0 H  L3 R9 y
" i7 F) m* H, xhimr <address> <value>. sample: himr 0x80040000 0x0; g4 T6 `# m* W8 h0 Q
: a; ^) y7 |+ O) y5 i; O! C4 O
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
6 Z' n7 U- I( q4 O9 s- Mhimr 0x80040000 0x00
1 I; M- Q! k! j& xhimr 0x80040001 0x11
2 ?/ z* y4 Q* t3 {8 thimr 0x80040002 0x22$ O. j, s8 e/ N/ l; C% N! z
himr 0x80040003 0x33) d0 @1 n5 N2 z- M5 v
himr 0x80040004 0x44* }7 n- ]2 l0 `6 U
himr 0x80040005 0x55
, c+ z) e* l2 b1 `9 I2 ?/ t' E3 J+ ^
SN也是类似。4 j: K* a0 K* r# _' W5 r8 A

/ p' c( I8 y( R# I  d: ]现在主要是,谁告诉我们MAC和SN的地址?
! U& [$ D8 A7 k, S; w" P/ P
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
! m$ d0 D/ u4 A: C7 b5 X一直想找到运程修改MAC和SN的办法,苦于无解啊

+ L; \$ L* N# F+ ?7 A+ Q源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
% I7 d6 V; Y# H  c0 N- J9 T, X5 e1 ?4 j) q# a
修改的代码早有了。到今天不会编译。
7 W. [2 [, S3 ]. T: ^# I0 g需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>6 \  a) e8 h5 o& m9 a! }$ t
  2. #include <malloc.h>
    ) s( I7 @) O7 n6 g  K9 P
  3. #include <sys/types.h>* P3 B% K5 i2 r' C$ ]- P
  4. #include <sys/stat.h>8 n4 t5 Z0 Q- W! x( m
  5. #include <sys/ioctl.h>: ^, Y4 w' C! G# B3 ~7 H" N7 I
  6. #include <stdio.h>! X8 P# E  e" t+ _# G% i, J0 i( ^
  7. #include <string.h>/ y. V; W( \8 O4 R& f' \0 P
  8. $ |8 M3 x) j; Y# ^+ V
  9. typedef struct {
    5 x% j  u! }' M; e2 x) }
  10.         unsigned int        e2prom_cmd_sub_addr;
    ' I* ]8 N; O" k. ]& v; X
  11.         unsigned int        sub_addr_count;
    ' K, L  _5 V6 W- \- Q* _2 s$ P
  12.         unsigned char*        e2prom_cmd_data;1 [1 U, r7 K: B' ^
  13.         unsigned int        data_count;
    0 g0 v" F) U1 s( B- I: X3 L' {
  14. } e2prom_s_cmd;
    ( [5 C7 j. n: l9 g: r; U
  15. : s7 L) {/ ?0 Z6 C( T" _9 l
  16. #define E2PROM_CMD_READ 14 X" R; g2 |  u) @- }
  17. #define E2PROM_CMD_WRITE 2
    & Q5 ^& T/ Y9 E  w# T% z1 X
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
      \- ?7 @, H5 D4 e/ H3 ]* g
  19. ! S/ f9 F: R: ^# `0 x
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    & H4 l  t9 L" x& P
  21. {! I8 y9 C* ?- N' a$ h. x# g' G
  22.         int fd, ret;8 }" C7 y% i7 J+ _4 c' b( ?
  23.         e2prom_s_cmd arg;
    1 O' L+ K+ n2 R0 u: g% w7 B5 ^" S8 b
  24.         unsigned char buf[0x18];9 J; Y- s9 d+ n# a" p# E
  25. 2 t) X$ k: `" |8 z+ A
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    . l: H* ^3 i5 Y
  27.         if (fd  < 0) {: R9 j6 q% T8 y, Q  P% U
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 U( @8 y  s8 U0 `
  29.                 return -1;
    1 i; }  ]8 R* a7 [- a! g% q, J
  30.         }+ [3 m, ?+ k* ]! T4 |8 o( q
  31.         arg.sub_addr_count      = 2;# }! P9 j+ M+ h: ?3 t, d
  32.         arg.data_count          = 0x18;
    & [) v# Y5 I( p, ^- q
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    9 E: z+ A) q) }: F7 U
  34.         arg.e2prom_cmd_data     = buf;# H5 r$ ], ?: B. b/ q+ X( g2 l
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);( b2 z1 y2 A. e2 W1 ]+ U* l8 A5 p
  36.         if (ret != 0) {: x1 j& h& O1 `6 {$ h( Q
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    - C3 w+ F% l* Y
  38.                 return -1;
    2 t/ `$ N: J4 y% |9 T4 ^& K. w- ^# |
  39.         }
    8 _: n8 g1 }' I
  40.         memcpy(mac, buf, 6);& o4 U7 p7 I9 ~# P6 c6 g, ~
  41.         memcpy(stbid, &buf[6], 18);
    & `! _8 ~* x+ }* a' \: g; ?- L/ m
  42.         stbid[18] = '\0';
    . t  k+ E6 m  W5 Z) L! G
  43. 5 a" Q3 w' f( ^' m5 y* P
  44.         return 0;- x$ w7 h9 H  Q
  45. }
    & _" m0 _3 f7 D$ Z7 U+ X1 a- ?0 o
  46. - v7 Q$ K6 I3 f8 j5 J
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    % L) a! t+ w- v8 f3 r3 x4 B' ^
  48. {
    8 ~' c' W# A- n" Y# M
  49.         int fd, ret;
    : i& G+ v: Y2 o
  50.         e2prom_s_cmd arg;
    0 L7 T5 C" e8 D, b4 X/ E1 y
  51.         unsigned char buf[0x18];  m1 H% b; N% u$ b. Q" l# {6 b* f- j
  52. 6 q  t4 _% ~5 w7 ^# @  y# |
  53.         memcpy(buf, mac, 6);& Q$ _0 d( A1 S9 M! i
  54.         memcpy(&buf[6], stbid, 18);
    + T: ^; w6 |- f/ n# o6 e" b( M) K
  55.         fd = open(E2PROM_DEVICE, O_RDWR);1 S2 V" C5 B8 x
  56.         if (fd  < 0) {
    1 y1 J; z4 r* t, B
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);: P4 c/ S! T1 u
  58.                 return -1;
    2 [2 Y  F& J& d; l$ ?
  59.         }4 B. G3 X2 G, k; ^" t. F1 N! i
  60.         arg.sub_addr_count      = 2;0 t; m. O# N( S- `' Y: M8 \
  61.         arg.data_count          = 0x18;0 M/ i! C/ t) [) n; ~3 L; I2 u
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ; ~5 f2 ~, C  e
  63.         arg.e2prom_cmd_data     = buf;' d$ J; T8 j; s; J4 ]1 y# y# T% X
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);2 j( T; L1 U6 L% y
  65.         if (ret != 0) {
    " L0 i# D) |0 D( h7 A0 z( O0 ]
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);+ R+ O2 t4 }  k/ a0 e+ W
  67.                 return -1;
    ' ?* Z9 C, A5 y. W
  68.         }( c1 @" y$ L. h7 ]6 j
  69. 8 v8 t6 h3 C' b: _. F
  70.         return 0;
    ( G! {1 U" u  ^  }/ _4 d
  71. }
    4 g" v* Y  D4 m: \5 j1 |3 h. T
  72. 7 d0 F) d; }/ C5 c2 [3 R/ ^
  73. int main()* U/ q, G; ~6 I1 \
  74. {
    4 ]/ J' h" p! r3 ?  R
  75.         char c;
    7 f/ u) {) k7 Z  N3 X: g, E) H
  76.         int i, macs[6];
    , |0 c* Y! \! r) e
  77.         unsigned char mac[6];0 _3 a: ]8 p& n1 k% Z$ M" u
  78.         unsigned char stbid[256];
    ; _4 r, ^% P; }* W3 U7 P/ w

  79. 7 t1 X7 G5 B$ F% y5 p8 y
  80.         if (readparam(mac, stbid) < 0)
    2 `/ |$ u, l: i1 n
  81.                 return 1;
    ( r# ^; f) U! V0 V

  82. 3 f: e' `" P, P& V( Y( q
  83.         printf("Current parameters: \n");( b' O, J2 a% M" }: _6 ?, f; K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 M) {8 C% o, R, b: ^6 @
  85.         printf("  STBID: %s\n", stbid);
    2 r  i8 ]' r; p, T/ s
  86.         7 E. W1 V, f1 V4 ^
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");& a3 y$ o: x( I! N# v( E
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    4 K8 F2 D+ n' ?, G- a
  89.                 printf("Input MAC error\n");- f5 h+ P. `7 t3 X& a
  90.                 return 1;
    $ D: U$ |& i4 I- y% ~+ Z
  91.         }7 Y& R' r* u* s* U: k
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    . W8 h6 z: j! N9 k$ {; H- N3 O# ]" t* B
  93.         printf("\nPlease input new STBID: ");( A: g5 ?+ X1 n! R
  94.         scanf("%s", stbid);
    2 r1 g* M) z0 [6 e4 X
  95.         if (strlen(stbid) != 18) {# g; S. P; `2 R; c  U. Z5 }2 c
  96.                 printf("Invalid stbid\n");
    ! F& [' G: n% C2 a7 M
  97.                 return 1;) ~. H8 @! |! K0 f) n( h
  98.         }
    6 L$ X# J* T4 _0 J
  99.         printf("\nNew parameters: \n");
    9 H1 }! t  m6 e  j: @
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! r) G( v, Q8 Y1 ?
  101.         printf("  STBID: %s\n", stbid);
    . v$ i6 u! m; A3 `, H; x( S- l

  102. - K( j& G* e  X1 d
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    8 _; \1 ~& e; ~  ]; n$ K3 @
  104.         for (;;) {
    8 n) ^( i' G8 ^+ x* W2 ]- o, {
  105.                 c = getchar();) j: V% @. y" z! w5 o! I
  106.                 if (c == 'y' || c == 'Y')) O! u7 @: L/ v; z4 y, d" ?5 q
  107.                         break;! ~. W: M' @" ?$ Y2 R
  108.                 if (c == 'n' || c == 'N') {
    3 V& D% p4 |3 [" |9 R0 T6 ]
  109.                         printf("\nAborted.\n");
      ]3 r3 P5 B9 \/ b
  110.                         return 1;- P/ S3 H, x% |
  111.                 }
    , R6 C0 V' B" y, {) d# X2 |
  112.         }
    1 O' x3 |1 _4 }5 W: U) F5 y$ Y
  113.         if (writeparam(mac, stbid) == 0) . H0 B1 f1 l0 }: f, |% p) {3 Q) x
  114.                 printf("Parameters changed.\n");  Z" r# \: T: X7 G' m& v, T( K
  115. ! T* ]) n0 U5 W
  116.         return 0;
    * e8 u# N) G) u' i
  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 / `- j4 Z0 F0 D- G
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
) e4 f9 E0 s) L2 g+ [' {
你用的编译命令行格式是什么?
% D  L+ g( m5 h" T
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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