查看: 17112|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr! v/ h  |# X: E+ U  V! L
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    0 i, v1 N) [; G
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
* u( e  j7 u0 d9 _$ wusage: himr <address> <value>. sample: himr 0x80040000 0x02 ^3 h1 d5 j8 C/ b) ^3 ?
2 K" C: j- l7 C2 ~; E0 j- O' C: i
/ j3 ]/ A+ A% X& n$ K
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
' {- r: U7 O6 q3 `& n' H5 y. x' D: U: n  o5 t5 h% R
补充内容 (2012-3-8 09:42):5 G, l; ?& K2 D
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数$ B1 Y: t( h$ j* A0 Y* T  a$ a
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。; Y6 }0 ~/ W+ Z, j+ W

/ g% g7 Z0 g  @' {himr <address> <value>. sample: himr 0x80040000 0x0! \- U% U8 b4 t( j) T  {( {

5 B# Z: G- h, D( W) v7 z; B例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* o1 c: V' e% Qhimr 0x80040000 0x007 x/ B! W/ k# E& |. I  A- v
himr 0x80040001 0x11: `1 c+ l( h. v8 D
himr 0x80040002 0x223 Y: M' F6 U3 o. V) e0 q% L
himr 0x80040003 0x33: ?" M* K- C9 |! w5 h
himr 0x80040004 0x44
7 O: l3 y0 I- [, O% f& w6 \himr 0x80040005 0x55( B" m3 E( l2 C: k: Z% g6 c( W( N; d

" U3 ^' q% x: B; tSN也是类似。7 p7 d. r( a) z6 D1 l! n  }
1 j9 K; k& _8 Q: D& o
现在主要是,谁告诉我们MAC和SN的地址?% W& X  R1 X7 P
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
* d' c' `; T3 b/ p6 e一直想找到运程修改MAC和SN的办法,苦于无解啊
4 ], x" W/ j" a8 Q/ M* M
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
9 r7 a+ W- L9 {4 J0 i& W4 L  D/ |8 {1 `9 X, `! `" k
修改的代码早有了。到今天不会编译。
7 s# l  b* z7 l* D需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ; ?6 O' E5 {/ D
  2. #include <malloc.h># R6 g6 ~- j5 z- i! R
  3. #include <sys/types.h>
    4 p- h9 Y, h6 z: d, V
  4. #include <sys/stat.h>+ \* c( A6 `, ^1 k2 n  R8 ?
  5. #include <sys/ioctl.h>$ ]- X* a, j3 A5 O5 ]( e
  6. #include <stdio.h>; p5 f$ t" q) ^& J0 E' j
  7. #include <string.h>
    . }" \1 U  L. h8 ~! a2 f
  8. ! |' Z/ D/ p( |3 C# ~( S  J, H% t
  9. typedef struct {
    # K+ P* r& r" x7 d- B! s- d
  10.         unsigned int        e2prom_cmd_sub_addr;
    1 s% J; P" {5 i9 \1 {
  11.         unsigned int        sub_addr_count;& n4 J( X/ e# V. v! [0 c! x
  12.         unsigned char*        e2prom_cmd_data;+ @, V, ~/ U7 h2 @9 Y
  13.         unsigned int        data_count;8 w3 Z7 H, h. G9 z7 [
  14. } e2prom_s_cmd;2 B9 V6 s4 b1 U5 t) s
  15. . M! G0 u( l1 l5 M& }! \9 }
  16. #define E2PROM_CMD_READ 1
    8 c0 G3 A) P+ f# G6 Y" o
  17. #define E2PROM_CMD_WRITE 2
    6 m, n9 P0 V3 f( g" A  V
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"/ i8 E. H1 Q) a' u/ ?8 r
  19. / d. L+ d7 i0 a# C$ O
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    2 H- k$ u( N, |6 J! v+ i* X
  21. {) o' Z. K7 i& _9 w* `
  22.         int fd, ret;) {% a5 {  Z! a( }
  23.         e2prom_s_cmd arg;
    1 z. n9 }1 P0 g
  24.         unsigned char buf[0x18];
    5 V: ?( }: g  f4 y0 t$ g# E7 _' y
  25.   m" r9 A, D" T2 V$ o2 E
  26.         fd = open(E2PROM_DEVICE, O_RDWR);7 v' |- s4 }& O1 ^# |- U
  27.         if (fd  < 0) {
    + s! C& c) P! h7 f# f8 e7 }- ]
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);, B# n) A0 u. B) p/ u
  29.                 return -1;
    - t$ {, @, o1 j9 s' x
  30.         }
      [; {5 v& T& @
  31.         arg.sub_addr_count      = 2;! `, y+ M/ g, ?
  32.         arg.data_count          = 0x18;
    % P& w3 j/ h( Y- n. Q9 z1 ~
  33.         arg.e2prom_cmd_sub_addr = 0x290;5 O; ?, a/ Y2 n6 U
  34.         arg.e2prom_cmd_data     = buf;) l; }1 M' q8 G4 M3 F2 d, Y
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    7 R& C9 B2 ~( S, j- U2 T* B
  36.         if (ret != 0) {6 a) i1 H- r$ s+ l- Q, O
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    3 h2 D& `( H( W* j/ ~! w/ |5 @
  38.                 return -1;
    $ A6 E+ s; C# s  z- S: s/ T
  39.         }
    1 v  i6 D; E3 j, y: P* S+ Z
  40.         memcpy(mac, buf, 6);3 T5 M2 G" W0 U: @9 m- M4 K
  41.         memcpy(stbid, &buf[6], 18);- k. o5 J; _/ @+ W
  42.         stbid[18] = '\0';* Q& j" ?- B/ g
  43. 1 h, G7 ^" T3 N2 S7 A9 A+ h
  44.         return 0;
    ) I* W5 B% ?3 ~- p7 x1 o
  45. }; \$ C8 s) U8 h% q& h. U4 |. ^

  46. 4 }, g; s/ O+ c  X/ [" Y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)4 X/ G& ?8 A8 N: F/ _4 \# B
  48. {) x& R" z' L, w: _  e! d0 s
  49.         int fd, ret;9 n; X8 i  m! t& i  Z4 x$ u
  50.         e2prom_s_cmd arg;+ d5 p. q& f) q, S. y- z* K
  51.         unsigned char buf[0x18];1 e1 Q0 g) v+ p& O
  52. 8 e, E5 B7 Z4 k1 c+ F* }0 ]
  53.         memcpy(buf, mac, 6);! Q1 V( l  K/ R/ D
  54.         memcpy(&buf[6], stbid, 18);, M: h/ p& Y- r
  55.         fd = open(E2PROM_DEVICE, O_RDWR);5 m! G) F; d0 X
  56.         if (fd  < 0) {9 d1 z$ z! ~8 [
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ w0 o1 T1 J9 n) O
  58.                 return -1;0 @- i8 X- l( w+ ~
  59.         }
    1 ?/ x; @( w: N! V$ y0 _
  60.         arg.sub_addr_count      = 2;' O% Q1 O: |; |$ u
  61.         arg.data_count          = 0x18;8 {, w8 Z1 a$ c6 z; }7 [1 ]
  62.         arg.e2prom_cmd_sub_addr = 0x290;* ^+ W5 T) E: W9 K  R
  63.         arg.e2prom_cmd_data     = buf;8 _, X; c7 g& |! r, o) v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    0 F8 o( L' w  X8 r7 F
  65.         if (ret != 0) {
      J$ T" \: g3 H2 ~/ e: }" X
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    5 v1 o0 @! Y/ N
  67.                 return -1;
    3 J; u$ }! a0 P: {- s
  68.         }
    - e' {  l2 Y! K! U5 @+ j
  69. 0 o; p6 d  S1 X7 e. E
  70.         return 0;
    ' ~# r! G$ x9 r! y2 f  D
  71. }
    0 a/ K. d. ~" `2 O2 M5 L/ \3 E

  72. 3 W1 E) _7 z0 x0 R
  73. int main()+ b. E% g" c1 {+ g7 ~/ `
  74. {
      f2 C" b0 v) e
  75.         char c;! q/ O3 c  N. F2 m. d
  76.         int i, macs[6];9 a4 e1 v& f; r* Y/ s
  77.         unsigned char mac[6];
    6 J* ^9 B/ t; _1 t  ]$ f
  78.         unsigned char stbid[256];1 x1 m0 p% O1 u0 {3 F. V- y' @
  79. 2 [5 c$ @" ?+ T+ ~: ^" B
  80.         if (readparam(mac, stbid) < 0)
    1 M5 J+ K3 s1 Z6 \9 n, k4 H
  81.                 return 1;$ M* F, w* w- L1 N5 w. R" h* u
  82. ) F# m$ p* C0 q# U' _
  83.         printf("Current parameters: \n");
    - L6 S, N" ~4 B5 G3 M
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! B8 G) ^. Z, n1 Q, h9 e2 Y  d. c
  85.         printf("  STBID: %s\n", stbid);; X0 ?" z8 J& K
  86.        
    ) o* g# V: K  f- Y4 z+ T! G% V
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ( t1 I' M* f4 F7 N4 Z- o9 `8 y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    5 F: E) K6 w$ s; \' F. C
  89.                 printf("Input MAC error\n");
    7 {6 i+ E* h( Q! N% M
  90.                 return 1;2 [7 I+ D: g9 H& E* l) f3 ?
  91.         }/ a9 ~8 }( S; k8 \
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    8 J( U" |* v% f  {6 ]3 k( V
  93.         printf("\nPlease input new STBID: ");
    : ]- o2 y  C( q' P
  94.         scanf("%s", stbid);# u9 N  L/ |/ x9 v3 Z# l6 J
  95.         if (strlen(stbid) != 18) {
    5 }, }9 h; _1 k
  96.                 printf("Invalid stbid\n");, E5 U3 a$ P3 v1 _. _* t
  97.                 return 1;! |+ }' v; M9 `1 E1 v8 S: I
  98.         }& I$ _' ^1 t: h1 B; }
  99.         printf("\nNew parameters: \n");
      ~7 R" F9 @) n5 v5 \2 E" f) _
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / l: Z$ u- p( D/ _  q" I
  101.         printf("  STBID: %s\n", stbid);
    ; |5 e8 |0 A7 E! Z* L- L
  102. 2 Z7 e, E( G$ ^. G+ _0 ^. J3 `0 K
  103.         printf("\nDo you want to change paramemters? (y/N) ");8 J6 I' Y$ T5 e8 Z4 b5 E/ T$ I
  104.         for (;;) {) }( @. N$ ~( \1 Z9 d+ M$ z$ j
  105.                 c = getchar();1 R9 P3 L! {% Q4 y7 ]
  106.                 if (c == 'y' || c == 'Y')
    : n0 D3 {4 k6 l/ E' j1 Q
  107.                         break;( T4 v4 R6 k$ c5 }+ p1 K
  108.                 if (c == 'n' || c == 'N') {
    6 O  B$ ]2 z% [+ H$ k+ E! H
  109.                         printf("\nAborted.\n");  o8 D( I% T$ ^$ ^" i$ a. G
  110.                         return 1;8 O- B5 z( O) b! \) u
  111.                 }
    5 A: l' A2 b! I# e; Z5 l
  112.         }
    , G/ _, q) k: s. V: j* U! h
  113.         if (writeparam(mac, stbid) == 0) ! w% B  K9 @6 p( ~3 ^* k* ~
  114.                 printf("Parameters changed.\n");
    2 U) s2 ?, C* _. V
  115. : w" a9 l6 z, @+ |* G# T
  116.         return 0;
    0 o. b- c  k  T, R
  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 1 l; Z! k, u7 R, L9 P
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
5 y5 B7 b4 Z( d3 B3 j
你用的编译命令行格式是什么?
, s" T* m+ f0 t0 D" k
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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