查看: 16576|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    : c$ @  N, `  J# R: I
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig  C* b7 {9 m4 Q( j
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:4 N/ ~/ n' X8 m0 y
usage: himr <address> <value>. sample: himr 0x80040000 0x0" o! a% |/ d6 d& ]( q/ `, r3 u
$ Y$ J! m& W0 c9 z6 y. N- q

2 S& z) W$ Y, m1 Q不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
) K4 y5 t+ e) q$ m7 F* M# U
. C( X+ c1 Y+ }9 E3 q" b补充内容 (2012-3-8 09:42):/ S4 J) b9 N: \  F8 [  f+ e  m0 `
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
1 I( ~" q  h+ d( f0 x/ I& L6 Y8 W这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。2 _# u- S; l3 S
: R$ C+ i/ e3 M5 o$ _3 L
himr <address> <value>. sample: himr 0x80040000 0x0
/ i3 m7 T  q7 O+ ~0 w( l
  Y: `: K0 |, C3 p% Q+ k" b% R例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。% h' Q/ G2 i9 y6 P, v
himr 0x80040000 0x00
! y6 S- e' ?- e5 t2 J7 P4 i; i: ohimr 0x80040001 0x11% v  }- `: c5 K3 a2 K; d
himr 0x80040002 0x22
1 \7 h- e1 e( Q0 n2 @0 rhimr 0x80040003 0x33. b7 h- p* R* p+ p: v1 X6 ^
himr 0x80040004 0x44
, z! }6 n! i( h7 K( zhimr 0x80040005 0x552 c' H2 g1 t! f7 I0 t

+ v3 @  ?7 h4 k" jSN也是类似。
3 r5 e; [+ N6 U2 C! V
5 _: c" W1 K+ m% b现在主要是,谁告诉我们MAC和SN的地址?( y/ X; z7 U0 z3 {  G  `1 r
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
# Y5 y: w6 f. q一直想找到运程修改MAC和SN的办法,苦于无解啊
$ \  `* a( ?7 z: @$ |
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 , v1 Z! R: z( |) j

: R7 }! X- {7 l4 W2 z) s修改的代码早有了。到今天不会编译。
6 p( j% L1 v& Z  I/ {4 o6 A) @: w( C需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; c+ {. j# t: a- f1 v2 \; `9 \0 ]- U
  2. #include <malloc.h>
    7 ^+ t' V' U0 n: W0 t* B
  3. #include <sys/types.h>' }! I% A! z7 }: r1 L4 l
  4. #include <sys/stat.h>9 q% ^: [& c6 `- T2 l6 S
  5. #include <sys/ioctl.h>
    9 s2 U7 Q4 D4 ~. V; B' m% \* O* U
  6. #include <stdio.h>
    2 c/ V0 {+ b$ Y5 O! m7 |& h% v' R
  7. #include <string.h>
    5 P8 R" Q5 @2 U* N$ V
  8. 7 D: J2 U# J9 C5 V# [6 A( \' z# D
  9. typedef struct {
    - X! R0 T4 M' T3 ?- L
  10.         unsigned int        e2prom_cmd_sub_addr;$ W0 u" \/ R- Q  r4 A
  11.         unsigned int        sub_addr_count;6 ?1 J3 F5 t* U2 q' `1 K" W
  12.         unsigned char*        e2prom_cmd_data;
      h7 o' M% }. `$ v8 V' D3 p
  13.         unsigned int        data_count;# V( W4 K( h2 {7 F; x% }. F
  14. } e2prom_s_cmd;
    , K' Q8 `4 o8 J( x# l! S

  15. ' Z# S5 n  W8 w0 r
  16. #define E2PROM_CMD_READ 10 x% _1 {$ J6 g' R
  17. #define E2PROM_CMD_WRITE 26 ^1 d, ?2 b) \# D, T- x8 k" N+ U
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    + c+ Y% V5 y7 @# l0 e: e

  19.   }; o) x/ y' i! [4 Y( `3 S2 q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)7 c7 u# J4 T6 s6 n
  21. {5 Y4 C8 C$ i, D
  22.         int fd, ret;
    + [+ `7 ?7 J4 G5 i, i7 [
  23.         e2prom_s_cmd arg;$ H( {6 H! [8 a- y6 j. V! C
  24.         unsigned char buf[0x18];0 F. u% t0 G6 O% R- H7 S- {" v
  25. # K* S* _( ]" f4 T( B
  26.         fd = open(E2PROM_DEVICE, O_RDWR);8 G2 D5 g; R$ q* @' \* Q
  27.         if (fd  < 0) {8 m# {4 D1 A$ Y3 W3 }1 |
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);& ]: E. S" {2 P) q  {" H8 S
  29.                 return -1;8 G# r" A5 w; a8 u
  30.         }
    ! X# i4 J5 ~8 R; \* ~
  31.         arg.sub_addr_count      = 2;. [& H3 W, N4 z
  32.         arg.data_count          = 0x18;* W! R+ W  V7 O0 ^. a. u% a
  33.         arg.e2prom_cmd_sub_addr = 0x290;+ |+ C7 o  s1 p: {
  34.         arg.e2prom_cmd_data     = buf;
    2 B- |' j  A0 X2 V- H
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    % V5 H. i# k. \
  36.         if (ret != 0) {
    ) o/ J* g0 T: t1 v" p
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);4 ?9 O5 N6 W9 u) d; R4 l
  38.                 return -1;
    ( A5 ^8 P* h/ S* G* }
  39.         }
    3 S: X& h' }) T) z: s7 S4 a
  40.         memcpy(mac, buf, 6);! u9 `! f1 \" Z3 i9 e
  41.         memcpy(stbid, &buf[6], 18);
    0 v% Z8 h2 a# B+ J1 [% v  |
  42.         stbid[18] = '\0';
    . k. x( x, d. \7 z/ o& Z! |

  43. ( O  f" t# k6 H0 w1 p
  44.         return 0;
    % t+ a, T/ X7 }) i
  45. }
    ! }$ B; M" i( s7 s, a7 e

  46. % p& s3 ]. R. X  i
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ( }) p* o% ~* [, C. E. @, s
  48. {7 k4 h$ @3 b" q1 m6 B' k
  49.         int fd, ret;' `# C2 Z+ t" D* p$ B# g
  50.         e2prom_s_cmd arg;
    * {4 E# V8 n! q  S
  51.         unsigned char buf[0x18];* ^0 H" C- @, Y& V# y
  52. ! T6 w' k2 f* G# S$ {; T5 b
  53.         memcpy(buf, mac, 6);
    % a. {8 P" c  {0 `! n$ ^# `( ^! [& ]+ `
  54.         memcpy(&buf[6], stbid, 18);
    9 c4 ^$ u5 W/ k
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 T. g$ ], I' U
  56.         if (fd  < 0) {1 t( u! @( t/ D5 F+ X
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);  X8 X6 B. G- j/ `! m6 t+ }
  58.                 return -1;
    : ~3 Z4 w- A6 Z  u1 {2 l( ^
  59.         }
    " i5 L* f9 G! F/ s: T  ?7 P& a
  60.         arg.sub_addr_count      = 2;
    - c! g! N- n: @! x
  61.         arg.data_count          = 0x18;8 K# s5 [- v/ v, N
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    5 D& h3 o: Q( ?, n* o& T8 J, ^" d  p
  63.         arg.e2prom_cmd_data     = buf;
    8 n$ g9 A9 X' w; ^, N8 o
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);9 J6 ?; a7 R. ^: e/ Y
  65.         if (ret != 0) {
    $ x- q& H$ \. q6 {2 l+ j
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    + i# u! L) w! O
  67.                 return -1;
    # }9 C9 j2 |9 b" r4 r& g
  68.         }: b6 L% R" x' h2 \
  69. " P0 {, K0 \5 V+ w& ]0 R( l" B
  70.         return 0;( z- W4 I% K! P* K2 Q- D4 e1 O
  71. }
    ; c# u, B5 R' ~- v# k  _
  72. 3 G5 e3 B1 P( D  F+ Q
  73. int main()
    0 J& [) s' ?/ ~# Q. n" d
  74. {, ^7 c* v) b& [' B! y
  75.         char c;
    4 @/ ?( U- [/ n  |6 b
  76.         int i, macs[6];+ h8 W3 [6 J& U2 n4 H  V3 u) ]
  77.         unsigned char mac[6];
      x$ {8 F4 Q- W1 r
  78.         unsigned char stbid[256];
    1 X* I" B* L% J1 ?: ^
  79. / m) W) B: g! b4 Y1 W
  80.         if (readparam(mac, stbid) < 0)+ i2 w8 Y8 i  m4 }  U! Y
  81.                 return 1;
    4 o8 O8 j" J8 \1 E
  82. 2 a) F! y5 u* P
  83.         printf("Current parameters: \n");/ `. ^" O; F, O+ j/ v+ Z( U& P& L
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      |; }% g1 y1 l3 d3 R) s
  85.         printf("  STBID: %s\n", stbid);
    , J8 Q& k* \* z9 O3 l
  86.         ; M) {" b) f$ x5 T4 M% `6 X, Y7 w. K
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    2 k0 ?3 p$ ?$ l5 y3 z9 y- \
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    3 Q' L' e- j( w* h% V
  89.                 printf("Input MAC error\n");4 v' k) W) H; L! A5 r1 P# f' |
  90.                 return 1;  z  h- f) M3 M" b' C% t# q( {
  91.         }
    7 b! b" r  f4 D! f$ J
  92.         for (i=0; i<6; i++)mac[i] = macs[i];; c8 s' ?% k( n( Y: G
  93.         printf("\nPlease input new STBID: ");7 z# ^" w7 c/ z" v
  94.         scanf("%s", stbid);% s+ I' |7 c; C; D8 f" c2 c7 `; j
  95.         if (strlen(stbid) != 18) {, O1 y' f" y6 b. P; L! r
  96.                 printf("Invalid stbid\n");: \! X8 @0 z9 s( i" h2 U( M
  97.                 return 1;
    ( Q8 e# H4 Z; A) \7 d/ J& V
  98.         }) e. J2 D, ?1 H3 I2 G
  99.         printf("\nNew parameters: \n");: C# ]8 L- {9 ~) }; K6 g) E% R0 R
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, O# N2 t8 S2 b, E
  101.         printf("  STBID: %s\n", stbid);
    . |/ g6 i4 g. w0 I/ ?9 m
  102. $ a! x; q  t5 r) K! W1 K' Z) m
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    / K  n! D% i# c0 {: ^
  104.         for (;;) {) P: ]3 r3 q1 y: K3 P
  105.                 c = getchar();  G4 ~: B/ a" Q0 [% |1 R- A
  106.                 if (c == 'y' || c == 'Y')
    / p, i) P4 I: `$ U0 G+ t# T6 k
  107.                         break;7 N# O5 j, c$ I! }. _
  108.                 if (c == 'n' || c == 'N') {
    # z3 n$ h& Q; ~- a* b4 r
  109.                         printf("\nAborted.\n");
    5 m4 M, }! N4 X
  110.                         return 1;0 j2 l! I3 J# S& ~9 I
  111.                 }% R5 U2 W2 B7 K+ d
  112.         }
    ( e- M4 ?( \# d0 t  c, x; f
  113.         if (writeparam(mac, stbid) == 0)
    # k# F/ @1 d4 p
  114.                 printf("Parameters changed.\n");! Q/ E8 B+ p1 Q# E! y
  115. ! e, n2 C$ E0 [& d' ]( o" M
  116.         return 0;
    6 s' r  t8 t1 a$ a7 j
  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
/ j. t  f  V/ @* x( `& B  Y7 x在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
7 b- N7 q; M5 `
你用的编译命令行格式是什么?: o" L7 @# k1 S' s$ a  N! v4 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客服返回顶部