查看: 17510|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ; p4 _1 q2 ~( x
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
      t* [/ T" V! m3 Q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
, i1 y; R  N; ^1 e: xusage: himr <address> <value>. sample: himr 0x80040000 0x09 G. p& Z- D! X) a( s. X

% Y- f# P2 |2 W7 U, P# \4 {- B' r# L6 x; a' w
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?! Q4 @/ X6 R9 L( c2 O6 a1 A0 N: v7 M

( }) B& ]! T9 p+ h补充内容 (2012-3-8 09:42):" `" d, m; y# h+ L/ C9 h" s
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数  t# z, m8 @" f$ L8 G9 W- W  [
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
, e7 e8 z1 N7 g1 E
" G% L1 c) z, q3 Nhimr <address> <value>. sample: himr 0x80040000 0x03 x/ o, D) b8 f
" V4 O% Q# n) q' f
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
% s2 e8 ]+ S3 J2 P6 X% Lhimr 0x80040000 0x00
  q7 q. h" M7 _5 M* o7 v$ ?himr 0x80040001 0x11
- ?' n7 l; M: }2 Vhimr 0x80040002 0x22' @/ o2 B6 M) c1 g  C+ j- F7 ^
himr 0x80040003 0x33- s3 c! i4 e8 G, Q
himr 0x80040004 0x44  a/ o8 }# c: D) S
himr 0x80040005 0x55/ ?, z: ^' u7 L8 e

2 E/ N, v# {; g$ O1 h/ XSN也是类似。
0 A- M- r" i# T# b2 E( f+ U" \) y2 F: \" Z# U
现在主要是,谁告诉我们MAC和SN的地址?
9 [6 e  @7 ~, W0 J9 i
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ! p( ?1 n, a* W
一直想找到运程修改MAC和SN的办法,苦于无解啊
( Y$ V/ ]' {# t- Z1 |+ c' N/ ~
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ' F6 k* t% S) g
4 M% Y8 w6 F/ {/ w7 y2 S
修改的代码早有了。到今天不会编译。0 e" ]+ U8 o" w. A
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ; x) j! _, v6 r4 f
  2. #include <malloc.h>" n9 h& e+ z7 S
  3. #include <sys/types.h>4 W" z, t# x- P# A
  4. #include <sys/stat.h>
    + E5 a: G3 r( P" A# B8 w3 D  }
  5. #include <sys/ioctl.h>
    9 L( F4 ^1 U; r1 G, f, S- O
  6. #include <stdio.h>
    ( k, R% k6 Q. o' y" q% y3 D
  7. #include <string.h>
    ( j2 g( K5 \1 M* x( J, b  c+ X8 O
  8. 1 v+ W/ S; t! V( E
  9. typedef struct {
    , I: e2 l. l1 h4 X7 x
  10.         unsigned int        e2prom_cmd_sub_addr;: m; [8 O; C% B: @+ S# F9 r! L! Z
  11.         unsigned int        sub_addr_count;$ P9 T$ K+ n8 U; z
  12.         unsigned char*        e2prom_cmd_data;
    $ g, [) k, i; p6 _! M5 M0 u, ?
  13.         unsigned int        data_count;! ^4 B1 t/ O. a* L
  14. } e2prom_s_cmd;
    / P3 b6 k7 s5 t, u

  15. + a& e" a2 c+ ~2 c
  16. #define E2PROM_CMD_READ 1
    2 I( D# h( I$ \! d" I, V5 l) |0 V7 V
  17. #define E2PROM_CMD_WRITE 2/ g! i) y9 W- j8 ?6 g( B" e
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    2 U/ F" y6 P" S% C, v  H! N- v

  19. & _; ?, `0 W  C" a. G0 m
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    1 P  g* o9 K8 K4 P- v- V# h
  21. {
    0 E" P; G  Y; U, i; [
  22.         int fd, ret;8 i6 Q1 V9 c- O7 a
  23.         e2prom_s_cmd arg;
      o( K  U7 e3 V9 R: |% u! J' A, K% k
  24.         unsigned char buf[0x18];7 ?+ x$ l/ }& d
  25. 4 v; K7 _0 Y$ {* t" w  W$ ?
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; n2 U" _8 g1 E" T; r8 z
  27.         if (fd  < 0) {
    + ~5 y" s: o2 C; ~' c
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 x  R5 h. S- W+ F: X1 T2 D8 _
  29.                 return -1;
    ) T4 |) s' r- I( @  z% Q- r% d
  30.         }
    + D/ W4 M+ r, s8 A
  31.         arg.sub_addr_count      = 2;9 ?; g6 N* h! h$ D
  32.         arg.data_count          = 0x18;! Q5 L+ }( L5 ?
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    $ t3 o* p( n' t7 c% g* \
  34.         arg.e2prom_cmd_data     = buf;
    $ j4 Z5 r$ J4 c% I
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);# M3 k/ c4 }& \' Y) |5 \
  36.         if (ret != 0) {  l) B9 z+ h# H& K7 w
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ! N$ ]2 v- |3 Y1 p( d6 p) H( P
  38.                 return -1;% E# D8 u/ [0 h, L5 q+ ^
  39.         }
    # G+ L. a" z! E  I& d
  40.         memcpy(mac, buf, 6);
    1 u+ R+ _  V  f3 L6 d5 c
  41.         memcpy(stbid, &buf[6], 18);
    8 q  k9 y; M8 J' d4 I
  42.         stbid[18] = '\0';
    ( H, ?2 u% Y8 B- n/ L! u

  43. 5 X2 G" P# P% Q5 K' z! G
  44.         return 0;) b4 K8 ?5 y# {- |' S
  45. }
    - W1 l( G& T- A0 F( }/ z0 m

  46. * F) O/ d+ t! I
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    9 U* x, e) I- T/ `' O" w
  48. {7 ?* s5 e3 N( o# ~3 W
  49.         int fd, ret;( R4 U/ \2 q2 v" F
  50.         e2prom_s_cmd arg;/ B, }; {- Z2 _  [* C
  51.         unsigned char buf[0x18];2 [. u9 d/ q' x. x

  52. ) T* S2 \, I1 |7 r
  53.         memcpy(buf, mac, 6);0 H' v- y* t& g$ {/ Y, h
  54.         memcpy(&buf[6], stbid, 18);, O- W. C3 \" m: U
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 ]8 t* H: ], q/ I; U
  56.         if (fd  < 0) {
    / P" e" m: Y8 k1 {, d1 b  M, V
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ y; E& b7 C# S- h% @" b
  58.                 return -1;
    ) k. B# w0 S' B; l! Y
  59.         }/ t) k! {+ h. o5 u2 i
  60.         arg.sub_addr_count      = 2;8 O: i6 ~+ a2 k- B; E9 H; H
  61.         arg.data_count          = 0x18;
    $ G. h# E' R, k* h# Y% H
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ( X; q" I- [& `
  63.         arg.e2prom_cmd_data     = buf;
    4 O* r7 W; b4 a: P
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + o6 i7 }( n; O: q% X
  65.         if (ret != 0) {
    3 h& a+ F2 Z0 b6 \
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);7 m5 g. G" ?3 X- e" l* X+ J
  67.                 return -1;
    6 R; Y4 N( C3 r6 I, {3 _, @
  68.         }
    ! a" }6 B) L. x

  69. # y& L5 c( @$ v# c5 c
  70.         return 0;; D' p4 \+ A# |0 Y& ?7 U4 o5 S
  71. }3 q& j3 [8 H) l- }
  72. 8 f# U- Y5 N9 r4 u; Y. k
  73. int main()
    + c( k4 i9 g! H0 y1 e; [
  74. {; W7 V/ c) v  G9 I" u
  75.         char c;
    # G6 g0 p6 U; z
  76.         int i, macs[6];  M7 e4 c& m; }
  77.         unsigned char mac[6];( v: L0 \8 ~2 F" x- f7 c) |
  78.         unsigned char stbid[256];
    : }! l, f/ D  Z3 a, Y# E

  79. 8 V0 ^5 D5 y7 l0 f6 A$ Y! e( u
  80.         if (readparam(mac, stbid) < 0)# h& r7 t* O  W4 ?
  81.                 return 1;
    , J9 j7 @+ K' }  q  A/ ?$ Y
  82. ; H2 R; h' {) l/ w/ `) E; F, h
  83.         printf("Current parameters: \n");; g& m4 D: v) }% b, V
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);$ N) c* m" m& i+ |4 b6 I$ e
  85.         printf("  STBID: %s\n", stbid);
    & @6 m1 a, @. m+ \& Q) J+ G) _
  86.           W& E8 l+ M+ [8 q( _2 q1 h5 z' b
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");+ H" u* ^3 Y: S
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {( Q8 V  w* y- l* x
  89.                 printf("Input MAC error\n");
    : n7 O" s, \1 z* T6 Y  o( y2 `$ ?( s
  90.                 return 1;* M9 p, P6 D  o* b# _" J
  91.         }- J- a3 A3 B! F" ~/ |6 m
  92.         for (i=0; i<6; i++)mac[i] = macs[i];. B6 B6 c' K7 G% O! v. P
  93.         printf("\nPlease input new STBID: ");5 S  g9 ^) s6 Z$ l: G; a
  94.         scanf("%s", stbid);
    / c6 q( ]8 k6 v5 T& C8 ~; {& O1 O9 a
  95.         if (strlen(stbid) != 18) {
    8 W$ y9 T" J, k  G5 T
  96.                 printf("Invalid stbid\n");
    6 U8 ^8 d( v- V  D
  97.                 return 1;1 G2 ~: v4 ]0 `$ |- h, w
  98.         }
    3 w) n) j: I' }7 R# l
  99.         printf("\nNew parameters: \n");3 C0 K7 @% D6 N- ~: T; ^
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / z; a2 ~' t; v6 f
  101.         printf("  STBID: %s\n", stbid);) t  J* O. ^1 r4 H$ B2 J+ b
  102. / N9 z- |. v4 A
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    $ {# N7 ]) a! d  S* @
  104.         for (;;) {+ M' X0 O% U2 F  o8 d
  105.                 c = getchar();
    ) N& b2 Q$ P8 U: D
  106.                 if (c == 'y' || c == 'Y')# d: Q; d1 T+ o0 d5 L
  107.                         break;
    * g" D$ [3 U0 V
  108.                 if (c == 'n' || c == 'N') {% s  W; x  A; V# {) {( A* G3 s
  109.                         printf("\nAborted.\n");4 ^' }/ L. x2 A. y! A
  110.                         return 1;
      y$ `8 {* M& R) l2 F2 Q' }
  111.                 }
    - c9 R0 N+ O7 s$ q( S& P2 Y
  112.         }
      G1 Y& j5 P  y2 P% _
  113.         if (writeparam(mac, stbid) == 0)
    ( e8 G( H* c# A# P' G* D
  114.                 printf("Parameters changed.\n");4 n* e- D' F' Z- x, R5 l, w2 ^1 O

  115. " @7 G! y8 T1 l! p5 Y
  116.         return 0;. W) p- ^  X  W9 f1 x! Z
  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 {, f8 j6 s6 L9 `9 ^在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

( H. ~  P- m9 T6 A" t你用的编译命令行格式是什么?) K; q  S% U4 j( x3 q5 M) s8 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客服返回顶部