查看: 17248|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    + d; u+ H3 w( Y1 z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    , Y' n2 g/ I% j0 D
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
8 @# ]- {  W( f5 [8 J  Q. A3 ~usage: himr <address> <value>. sample: himr 0x80040000 0x0
* @0 W) u( h) o# S% k& J/ y5 R3 q* `* N7 m
* g' T  t# u& @5 l1 H
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?, M. [2 l8 a. s- `6 g

* l! B( k$ I' [& \# `, k$ W补充内容 (2012-3-8 09:42):; J2 C( \, a1 `% }- K; r# X, c
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数  o! r$ b3 u' J! [' _
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
( t/ ~& B$ t  E- z6 u+ x" ]& j- S& r
himr <address> <value>. sample: himr 0x80040000 0x0' r/ l0 X8 r2 c4 j
) G- H% w- R" A! B
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
; X) h( w& K3 W9 }himr 0x80040000 0x007 u/ y7 W  P. G
himr 0x80040001 0x11  t& e* I7 ^) X; u$ K; h
himr 0x80040002 0x22
& N$ h6 g. R6 k; m& ^  Qhimr 0x80040003 0x33  L+ v& Y/ }  P- \
himr 0x80040004 0x44
# E/ k% e- x1 Q! r: m/ k+ Q/ ~himr 0x80040005 0x55
" m9 a2 q' ~$ F% ~7 C. n; u6 H$ a) }2 i5 a- L6 O) _9 B1 s
SN也是类似。9 o% f2 G5 X2 n; d; |- ?

  T: D; e8 N9 [0 r8 ]现在主要是,谁告诉我们MAC和SN的地址?  Z7 n" P9 m8 J. ^' q0 y
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 9 A, P! v! R9 v8 d
一直想找到运程修改MAC和SN的办法,苦于无解啊
0 }5 |8 ^# m( \" r" c. l! R1 A+ |; w
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 % n" }  D0 d" t  |0 E# \

( U1 m( a( J( I: V: P0 a8 F( @修改的代码早有了。到今天不会编译。0 U/ P- S4 E- S4 t0 `
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>2 g# ]( }+ a. d5 S) b: U% j
  2. #include <malloc.h>
    - Q: |! j, h7 v- R- X% a( x* B
  3. #include <sys/types.h>$ m# L: L  ~. L2 O1 p
  4. #include <sys/stat.h>" R* l' F. C  Y' |2 \2 z# t1 B
  5. #include <sys/ioctl.h>
    0 O& a1 e% j  j$ r; M4 f3 z, B- F
  6. #include <stdio.h>
      P. K. f# ]8 o, ~, t# k& u
  7. #include <string.h>
    9 L& {9 |1 f' l$ l/ Z' |& o+ D

  8. ( j% q3 G7 P3 K4 E2 ]2 ?# q
  9. typedef struct {1 v  G/ U/ V* d" R5 p
  10.         unsigned int        e2prom_cmd_sub_addr;
    9 ]- d: P$ Z4 |# @! p8 D* @6 w4 S
  11.         unsigned int        sub_addr_count;' s8 G2 |( v9 ]! p1 j7 d
  12.         unsigned char*        e2prom_cmd_data;
    # f" r- `) k# _4 y
  13.         unsigned int        data_count;
    4 W/ R1 M. Y, I. c+ D# W
  14. } e2prom_s_cmd;
    % y4 s" x1 B: @& F, k1 u; L

  15. ; Z  ~9 r1 R3 i) M2 r4 c5 j% u
  16. #define E2PROM_CMD_READ 1" _% T3 y1 K% P7 J- o
  17. #define E2PROM_CMD_WRITE 2
    & D: F: @# f# S) d" ]. P
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    4 l) H& J- r7 N% G0 a3 A2 r

  19. . d3 v9 y+ F4 y2 h0 Z3 s
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    7 B8 t9 ?: i  P+ y3 O/ |
  21. {* q+ }0 h" `* k: c* K: M9 H+ @  k, o+ Q
  22.         int fd, ret;
    / M' {0 F" {3 [+ V
  23.         e2prom_s_cmd arg;3 F5 {  D% \' Y4 n2 ^
  24.         unsigned char buf[0x18];7 G( x) M3 ^1 I/ ^8 m5 @$ V
  25. ; ~& C; ~$ L3 X. v' Z3 C
  26.         fd = open(E2PROM_DEVICE, O_RDWR);3 r8 s8 p/ D& Q  f5 [: L
  27.         if (fd  < 0) {
    * B. i" ^2 V: e! T
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % Z" s% U8 J( Y/ v& E; b
  29.                 return -1;
    ' C* K5 n( O- q! r" ^$ R
  30.         }
    " P6 q% T, b( e5 O  R' ?% v( k
  31.         arg.sub_addr_count      = 2;0 _* F) w( V' H
  32.         arg.data_count          = 0x18;
    1 k( f" S+ i4 ]$ t
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    & l& D8 J* q9 o' a
  34.         arg.e2prom_cmd_data     = buf;( u5 ~8 ^% ^' u5 j/ n7 v0 L
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    * `5 J1 J$ O8 \8 q* h0 }$ u( u" E3 Y) t
  36.         if (ret != 0) {
    ! i6 Q4 [; e! S! c6 i9 h
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);8 J3 G3 i) ^  _3 A) k/ q) F
  38.                 return -1;
    " x& V9 Z( W+ V
  39.         }, _- S3 s1 g  R, L" q& E! L
  40.         memcpy(mac, buf, 6);0 w) y3 m1 J( a8 z
  41.         memcpy(stbid, &buf[6], 18);
    ; U$ H, @7 I8 P- C4 |, n, u$ c
  42.         stbid[18] = '\0';
      a, o% t" v6 V5 V5 ^, g

  43. * ?& f( Y/ c5 k6 c/ N
  44.         return 0;. w" @; x$ H# [% U& b2 y0 D
  45. }8 |& q; L& m9 m! \" B, x9 {0 W
  46. - c; g( v( ~  B
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
      s* l7 G6 c- g! w" R
  48. {
    - u5 A1 R$ E: m( n4 L7 I* A7 v
  49.         int fd, ret;
    6 W$ u) K9 w5 u+ ]
  50.         e2prom_s_cmd arg;
    ' }: _. |& N, R
  51.         unsigned char buf[0x18];
    5 p) v2 x9 @  F" G/ C* c

  52. + G7 ]4 K$ n$ q& W$ p8 F# A
  53.         memcpy(buf, mac, 6);& \7 P- d! Z/ \5 t4 v
  54.         memcpy(&buf[6], stbid, 18);% N2 c" }; C5 h0 d% U) j/ B
  55.         fd = open(E2PROM_DEVICE, O_RDWR);9 Z" _  q; p' S3 G3 m2 R: ^* @
  56.         if (fd  < 0) {! }! O% b1 v- t, {7 Y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);: G  P0 C2 e6 C" H/ X2 D& ]4 n
  58.                 return -1;, [2 `* P! L4 _2 c5 v
  59.         }
    8 \* R+ W) w- l) j, y5 e* t
  60.         arg.sub_addr_count      = 2;& b) k1 Y/ o" d! ~. ~
  61.         arg.data_count          = 0x18;
    5 e) S% V0 ]: r% M( Y3 A0 `
  62.         arg.e2prom_cmd_sub_addr = 0x290;* g- `0 n- V+ V+ Z9 q
  63.         arg.e2prom_cmd_data     = buf;- V5 S+ [/ Y* n& w: b  a2 Q: T7 G
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    . B' H) s5 o; s  T1 Y- I
  65.         if (ret != 0) {
    - I" D! P. \9 k0 r
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);* V& y. d2 [, q7 f% @
  67.                 return -1;
    ( g( k: p: Q/ c/ J
  68.         }) W3 \0 v5 Y5 x5 s6 N! X2 [) J

  69. ( o" f; O( S: R# p) u
  70.         return 0;
    8 h0 w' z0 w6 ]& O  L7 O5 v) @
  71. }3 h3 g( H& v5 \0 C. O
  72. # n$ J* t2 Z- |
  73. int main()
    ) h' s$ }$ i0 d8 M% \5 ^: y+ t
  74. {! j; n5 a, o! k' Z9 B
  75.         char c;
    4 U! k( |2 M" H) S0 q# ^
  76.         int i, macs[6];2 L% ~. h+ o9 L. Y, x
  77.         unsigned char mac[6];
    ! i7 ]( a8 t& F8 v2 X, H6 k- m
  78.         unsigned char stbid[256];
    ) {- h, h& I1 g7 @

  79. + \: ]3 P6 G3 o% a: m% q
  80.         if (readparam(mac, stbid) < 0)  t4 s6 |" l1 J/ |5 w. h8 s" u) n+ p
  81.                 return 1;7 S' T. _8 K, T) y5 e3 r/ S

  82. $ e. Z8 v8 u2 g) f
  83.         printf("Current parameters: \n");! N3 e# a6 u1 d  Q0 P' y( h
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" ]1 W: H( a$ }* H
  85.         printf("  STBID: %s\n", stbid);
    : O; I# t$ \5 n, z# r9 K# m: Z6 G
  86.         : u4 e* M7 O% _, Z3 n, q4 L" `7 r
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      G. Y/ H" s* C: m! W8 b6 K
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {8 q0 l) Y% x1 S7 c+ @9 g: b
  89.                 printf("Input MAC error\n");
    / L! [1 b6 `1 m! I" H
  90.                 return 1;4 g" d' i6 M& [- o
  91.         }
    $ A) I' f7 g; o9 O. F. p% j
  92.         for (i=0; i<6; i++)mac[i] = macs[i];% O% S* R2 E' `7 v/ X; x( ~* m9 D( l
  93.         printf("\nPlease input new STBID: ");
    . i8 A, w. x% x8 Z! p4 i, X
  94.         scanf("%s", stbid);9 _5 n( `' O' q5 g4 x1 ~6 h+ f) ^
  95.         if (strlen(stbid) != 18) {# p" t3 _  [( |% s% M
  96.                 printf("Invalid stbid\n");7 k# i' f. s3 N8 {/ k
  97.                 return 1;3 V. ~5 L2 b3 n
  98.         }6 j' A4 ]9 A- I% _/ J- p
  99.         printf("\nNew parameters: \n");8 K. t/ Q! T' T) K6 y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 j- N: r' @6 a
  101.         printf("  STBID: %s\n", stbid);
    / @* g! {0 J9 C* t) l+ ~0 O
  102. + i$ e' i! l9 Q+ c# _
  103.         printf("\nDo you want to change paramemters? (y/N) ");0 y" L* p+ }% V
  104.         for (;;) {
    ; p- ^1 o: k) [1 t; V$ F
  105.                 c = getchar();
    3 k& w8 L. V2 k! R5 U3 f
  106.                 if (c == 'y' || c == 'Y')
    $ X- g1 e3 F7 T
  107.                         break;
    # C# ?. l3 C8 L2 s
  108.                 if (c == 'n' || c == 'N') {, i, x$ e6 F6 E4 X; D6 _1 {* o( }
  109.                         printf("\nAborted.\n");3 E! x' t* a+ [. S  o! y7 x) H. W
  110.                         return 1;' R- M- r8 }/ p; Q+ q2 R
  111.                 }& N) G6 |1 P) V/ ~/ G
  112.         }" |- U( U3 @0 |* `
  113.         if (writeparam(mac, stbid) == 0)
    # |' I, ?) Q$ ]
  114.                 printf("Parameters changed.\n");
    3 p& H8 p" h% |% h) v; G
  115. % T6 x/ @$ d+ h7 k+ s* U: a
  116.         return 0;
    * I4 a6 t9 w. q8 f9 s% c
  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
0 H( _8 b7 h+ j7 E2 K# Q在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
4 I% e, k  W/ I6 o. I% _& u
你用的编译命令行格式是什么?- N2 N3 @, d7 X; v  \
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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