查看: 17450|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ! u; `9 I: e( h& L8 ~6 ?
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    5 j' Y, c/ V, H% t  a
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:0 q. m! e7 A- t0 i% P4 P; h
usage: himr <address> <value>. sample: himr 0x80040000 0x0
  c% \' s! X0 v$ W5 O; Z
, v. D& L8 b& K
' z! x4 F1 J! }8 a不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
1 G: D6 T, t& h6 v) c1 R& [7 D+ j; W) ~6 T+ \
补充内容 (2012-3-8 09:42):
1 g- w7 B% Q' f+ @3 _http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数- |/ A: K7 \; |) Q" O; l
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
# L: e8 Y6 I: b+ |! r  z7 m  `
% J% T, Q2 m4 Y0 G  ohimr <address> <value>. sample: himr 0x80040000 0x0
$ ]% D% j7 f) i; S% c0 s1 r% S
# n- ?! ]7 I, F. P: a例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
& N; x! \" {  Hhimr 0x80040000 0x00
" h; r; M* J5 D7 t5 u( E0 rhimr 0x80040001 0x11
6 J# M9 y) e% |himr 0x80040002 0x224 u& v4 z& [% m9 @6 z( g
himr 0x80040003 0x33# w9 K8 x0 O' Z* x; q$ A
himr 0x80040004 0x44
, j$ x9 Q# C: C8 o5 q1 r, Zhimr 0x80040005 0x55; ~$ ^7 A& s) |! N

/ B' F) y! n" X' w. b% v+ m* MSN也是类似。
0 {; C$ d1 }5 Z% M. k; ~. F7 W9 J5 A, }/ B
现在主要是,谁告诉我们MAC和SN的地址?
: U- x; |4 J1 b, f+ }
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 * S0 c2 X% l6 u: t
一直想找到运程修改MAC和SN的办法,苦于无解啊

: T: S" U; c; d* L5 Q源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 + p' N, w0 I- e4 B/ W! r
# a: w% {! a9 t8 x8 ~
修改的代码早有了。到今天不会编译。3 ?+ P) M% \. q8 O9 V& S
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>  I$ o* K6 q& e% H; T  W) G
  2. #include <malloc.h>
    4 ^  E- v  ~# J
  3. #include <sys/types.h>
    $ k  Z3 B! o* A. B  V) w
  4. #include <sys/stat.h>$ m0 r* d+ V+ u/ ?
  5. #include <sys/ioctl.h>
    , V6 \9 W1 `3 L8 M- o
  6. #include <stdio.h>$ `' p( p- }+ i% _9 Z
  7. #include <string.h>
    ( F! o1 w" }" w, Z+ V
  8. % |3 Q( f' n& p; z) P1 Z2 s4 [
  9. typedef struct {
    ! i" s& R* w" Q5 n) B# b9 E5 v
  10.         unsigned int        e2prom_cmd_sub_addr;/ U- Q* }2 m: {/ U3 i
  11.         unsigned int        sub_addr_count;/ ^2 ]( g5 w: f
  12.         unsigned char*        e2prom_cmd_data;
    & y3 h) S0 Q3 n9 f
  13.         unsigned int        data_count;
    2 W9 Q+ n6 j% x. U/ M+ v- o
  14. } e2prom_s_cmd;
    $ v! n/ Z4 M/ W

  15.   m0 L$ _5 F) X+ M
  16. #define E2PROM_CMD_READ 1) a% m! B/ I0 S0 T
  17. #define E2PROM_CMD_WRITE 27 v) L2 g; \8 r- e0 e
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    3 p% @  i! K1 g9 U9 h1 V* M$ F
  19. / }5 G& `) m6 f  n1 z% o5 H
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    $ V9 z2 f; V1 _
  21. {0 A  z0 o# `" ~; P! J
  22.         int fd, ret;
    1 Z1 y6 D' T2 p& h" h
  23.         e2prom_s_cmd arg;
    ! K8 }6 W, V) L7 ?# c7 ~
  24.         unsigned char buf[0x18];' v! y8 G$ |# ^: R

  25. 9 w% `$ @+ v% e& L
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 I1 Y+ Y0 r( y. L0 [: b
  27.         if (fd  < 0) {
    " K; l1 ]' W5 V7 P) e
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);; X; N! P6 A6 Q
  29.                 return -1;' ?( W; U! r% X" L! i# g
  30.         }
    & u* b2 Y/ G5 b- x* [- }& F: ?
  31.         arg.sub_addr_count      = 2;
    % K8 X+ u! W2 W6 A
  32.         arg.data_count          = 0x18;4 ]1 i9 x% E0 s  t- ?' Z# C. t; M7 r( J
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    1 s- k2 o7 E& H( K
  34.         arg.e2prom_cmd_data     = buf;
      ^3 T# w4 Y/ g" U$ e7 e
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);2 I/ p6 W9 V9 o/ A: ]
  36.         if (ret != 0) {) T  b8 d) v" i  Z& f4 y' }, [
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);5 ]6 f( ]. D. }- f
  38.                 return -1;" b4 ?6 D5 \7 t
  39.         }9 p1 `0 [# z8 e# d1 z
  40.         memcpy(mac, buf, 6);0 ^+ _. t7 w/ h9 ~$ q2 v; l
  41.         memcpy(stbid, &buf[6], 18);$ z/ q( T& L. |# v/ C7 ^
  42.         stbid[18] = '\0';
    * @0 D; e. E/ F, N* D

  43.   h: `' f6 a' ]7 \  S
  44.         return 0;
    ) w' @; m- @0 _: `$ d9 p8 G. `3 T
  45. }' E( f, _5 g& s% G3 ^

  46. ' I7 \( g* `$ t% {  B& o( P% w) A
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)9 s1 d6 H3 J" j! S2 m
  48. {2 I# W- `1 e! Y; t2 x. W
  49.         int fd, ret;; v+ n3 i( k; f) ?/ B9 G) [
  50.         e2prom_s_cmd arg;
    . y1 h6 w6 ~! x7 g$ ?
  51.         unsigned char buf[0x18];2 @: v% ?8 D2 c' z. l' c2 B; T

  52. # }2 z% N& w% ^- J: p
  53.         memcpy(buf, mac, 6);
      D! P$ R& f' [7 ?+ f% B  |2 r
  54.         memcpy(&buf[6], stbid, 18);8 y6 |% p* Z" b1 q0 H
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    % e# F* k) I8 m1 T/ t* f
  56.         if (fd  < 0) {& h1 l- X2 D1 x+ {
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      q6 ~# s9 T. \7 a
  58.                 return -1;
    ( _! D/ p$ ^" a# w
  59.         }
    " W8 t% M+ r2 F
  60.         arg.sub_addr_count      = 2;# ]( r7 J( c( g3 H; m! F0 {$ _
  61.         arg.data_count          = 0x18;
    7 b. s1 E% x  a' w+ Q; t0 G
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    % G2 P- J3 o8 h5 N( G% ]- W, |8 b% l
  63.         arg.e2prom_cmd_data     = buf;# S. |" q4 l0 R; M  b
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + j' u# k- S1 @, Z6 i8 x
  65.         if (ret != 0) {
    : e7 [- Z9 _0 b- E
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    + c4 k/ P- R6 `$ s3 e+ h
  67.                 return -1;
    8 p" @/ ?0 s8 R/ N
  68.         }
    9 D0 D5 B  f+ }/ W/ d
  69. ' z9 j9 A6 ?; U
  70.         return 0;, Q2 }2 W9 j! A/ |
  71. }
    4 v. _- `! V( }/ G: _/ \( l# G% \6 [; t
  72. - A/ t- |, x3 T2 b" R
  73. int main(). _0 ]( ^% }) N0 ^, B
  74. {
    ! C2 k5 b8 u5 _8 C' Y
  75.         char c;
    7 t5 F+ _5 @  b
  76.         int i, macs[6];; f+ D# r/ a5 f
  77.         unsigned char mac[6];+ _. c6 w# R; K/ y2 v0 \" J
  78.         unsigned char stbid[256];
    ; F9 P- q+ m+ F% I3 Y. {- g$ z
  79. 6 N% c! i6 A2 o. _0 M3 o* v$ W
  80.         if (readparam(mac, stbid) < 0)- u% k; p8 ^* _  `: d3 B. w' Q
  81.                 return 1;
    4 J. N# d$ r' I, S1 q

  82. % Y( \( V0 O) E3 L$ K) x$ ^% ?
  83.         printf("Current parameters: \n");
    ' }# ?7 i" Y. O, S/ ?* M1 Z( i
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " R! p/ g" k8 e2 I9 p7 P
  85.         printf("  STBID: %s\n", stbid);
    8 d: q8 Q/ F3 X' B5 V8 e* E+ G
  86.        
    / p1 I. D0 i0 p' C
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    : e# L+ I! e8 K* I1 A1 g
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ; l/ [! a0 k+ j6 K
  89.                 printf("Input MAC error\n");
    1 O3 Q& @1 ^$ Y" l
  90.                 return 1;* z( T* S3 E$ y3 |
  91.         }* e$ T9 U' J& r: q& ?
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ) g2 V+ X5 c$ O+ v$ c
  93.         printf("\nPlease input new STBID: ");7 R  m! [3 d* Q+ ]* r
  94.         scanf("%s", stbid);7 W+ X" ^2 C9 x* i, A/ l. ?% X
  95.         if (strlen(stbid) != 18) {
    3 o' g7 {8 i: v
  96.                 printf("Invalid stbid\n");
    + Q7 J5 p: R1 O7 Z+ o+ p! {, T
  97.                 return 1;
    " u/ H; u: ~% e2 O" h+ z3 [, ^
  98.         }9 ]3 c7 b5 L# g
  99.         printf("\nNew parameters: \n");. s- [1 w% R, `
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : x* @- H% S* g( v: p
  101.         printf("  STBID: %s\n", stbid);
    ; f0 u& p8 K$ g- r% \

  102. ) J* m% O8 A' I; N1 t. _! e
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    - ]2 O# R* k) v6 L: ^( p; x2 `
  104.         for (;;) {
    " I8 w- q, a8 J; n
  105.                 c = getchar();, X* n8 R: L+ I9 M& @6 u
  106.                 if (c == 'y' || c == 'Y')1 I* ?( U+ z3 K, T; R) L2 U! t
  107.                         break;
    3 a& B8 k+ w  i1 ^8 x9 t. ^! V" E
  108.                 if (c == 'n' || c == 'N') {! b: C6 D" t  [% s2 d
  109.                         printf("\nAborted.\n");9 V0 M# B5 g1 U3 N# B  v+ v5 u4 a
  110.                         return 1;* i3 x& F1 R, M/ Q2 }8 @
  111.                 }4 W0 L- l% E! Q
  112.         }
    5 o+ R' x0 z" M3 r
  113.         if (writeparam(mac, stbid) == 0)
    ( _  i- s1 a/ z7 `# O1 J. h0 s
  114.                 printf("Parameters changed.\n");
    : U. i5 x9 l+ ?4 r; _

  115. - _% c1 K$ l6 j9 t- {$ Y
  116.         return 0;1 |6 Y: Z4 T/ N* m9 a2 q9 G
  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
2 Y* O' T% l' j6 h% U! i1 l# w在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

3 ?' d- ~: Z- c" l你用的编译命令行格式是什么?
5 |( f5 A; E, e$ \' e. q
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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