查看: 17469|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr% i+ R7 y; U$ X/ z2 B/ R$ U
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ; K7 q. f* \% M+ N: o+ e8 T: e. `
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
2 k) g  G; \5 j# S, `usage: himr <address> <value>. sample: himr 0x80040000 0x0
$ ?2 J+ R- m6 P' V. e
0 s. V( L" \  M& w5 j* f+ U$ _$ K, J! \; Q0 k! A+ ]; b, X
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?; C. Y( d; _. @! `

" R& Q9 Q1 W) _" z$ k) O& H' `补充内容 (2012-3-8 09:42):
2 M4 N7 m# p0 u: E$ i4 _( s( n+ K) |http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% c* a; ~$ R! F$ O' f3 z- `, L
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。$ u- S6 c: g1 A$ B% x

, n: q) [7 B% b* L- ~himr <address> <value>. sample: himr 0x80040000 0x0! c( P7 @0 v! Q, z" T! p

! U; ^2 R# t9 P. K例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
% Y, s( r- e" S: F& n# v% Ohimr 0x80040000 0x00
$ s( h3 _5 \6 xhimr 0x80040001 0x11. u7 g6 _' A1 u) y$ H1 c( Q
himr 0x80040002 0x22/ e. j) K+ v* C/ J
himr 0x80040003 0x33) L* N$ |3 M6 u
himr 0x80040004 0x44% J% u5 H0 ^' c3 ?( R- ?3 ^
himr 0x80040005 0x55
/ n" U. n$ N% G1 U+ O- E% l2 `! _7 `; s: ]% {' t2 I
SN也是类似。
4 {. z8 c2 b4 U5 T0 E, Z& b2 X) w* @0 l. W
现在主要是,谁告诉我们MAC和SN的地址?6 A3 t. S- l# q7 ?
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
5 v3 K9 N+ X' v, f5 R: K一直想找到运程修改MAC和SN的办法,苦于无解啊

5 N3 e- d8 A- t6 e: W源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ; E( ^( _- c5 @" s# d  z0 Q
9 E7 X" |* F% S$ G. W7 X3 L
修改的代码早有了。到今天不会编译。3 R$ e5 t5 \2 v+ i  I
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>0 M1 O9 \" f+ X+ |5 \  r4 N
  2. #include <malloc.h>  ?3 i9 g8 ~8 N7 h. ^
  3. #include <sys/types.h>
    ) i1 ]: g: z) e* ?% v: h# N# a& \2 Y
  4. #include <sys/stat.h>
    ( r- `* J% B' l! s+ {! J
  5. #include <sys/ioctl.h>
    5 o# N- X0 u/ `5 q$ d3 Q; |
  6. #include <stdio.h>
    " h! D4 a+ x* o" e/ Q# M: ^
  7. #include <string.h>' A  s0 C+ q1 k- K& ~, p

  8. 7 L1 L3 T; H- u$ k) `+ o
  9. typedef struct {+ M7 |- @. B' t8 N
  10.         unsigned int        e2prom_cmd_sub_addr;
    - q/ F, v& K+ X. J" o
  11.         unsigned int        sub_addr_count;
    ) b% n( T4 M$ c: @  U5 ~+ n3 |- e2 {
  12.         unsigned char*        e2prom_cmd_data;
      R2 S( t% |% _, k4 @  R) x
  13.         unsigned int        data_count;
    & K7 g' ^  k( w& s
  14. } e2prom_s_cmd;
    ; P, j/ U% p$ `5 X" V" y

  15. $ C6 C  c& e3 F$ n# x6 C8 T; Z
  16. #define E2PROM_CMD_READ 1
    2 z/ ]8 N* m" }7 n/ F: ~. |+ Y
  17. #define E2PROM_CMD_WRITE 2
    5 v+ ~* R  q  A4 L) J
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    2 j( Z( @, [& M0 J7 U
  19. , j, J; @; }) u5 D; H9 l: ]6 c* V: |
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    " l2 l; Q9 L2 k" K
  21. {& K- h2 I8 H: X: v" |6 h* P* `
  22.         int fd, ret;9 Z8 `$ J1 o8 L" G$ O: ~
  23.         e2prom_s_cmd arg;0 f% l( g: ?1 A2 H- b8 }
  24.         unsigned char buf[0x18];9 e/ Z# ?4 O3 s" p" C2 k
  25. 1 U. Y8 }4 N. A$ v' S2 j1 ^
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    + p" Z6 m" k- z" h* k+ ]; @+ X0 I
  27.         if (fd  < 0) {
    0 g8 |/ d' X: D7 x6 u( K  G' B% g
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * W! q7 A# \% @0 P3 x1 X6 B" J
  29.                 return -1;' H$ [: x8 i+ K. s" X
  30.         }1 [+ {6 T3 s1 S) M
  31.         arg.sub_addr_count      = 2;
    & E+ M: k: s% d; J; l) c( H
  32.         arg.data_count          = 0x18;
    * b/ S" v. T0 m. x, ^
  33.         arg.e2prom_cmd_sub_addr = 0x290;) ]/ ~3 y: o! {% ^( J: [+ S
  34.         arg.e2prom_cmd_data     = buf;
    % I4 j" s$ B, P* Z9 D. p. L* H# g
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    & E  Z  }0 h; }0 v
  36.         if (ret != 0) {7 R! E& Y- m) W6 W- P  w
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    8 y* Q  Z( |0 h( u' m( s
  38.                 return -1;
    " l' `  O3 D( B% f
  39.         }
    , E9 a4 T3 I, @) @# [1 u* x
  40.         memcpy(mac, buf, 6);
    / M# E8 Y& L& P  S
  41.         memcpy(stbid, &buf[6], 18);% S) Z) ]4 f1 K' U3 d
  42.         stbid[18] = '\0';  f- Z& V# C* P( E5 e; H9 D" O
  43. % E$ y3 |4 e' G) f
  44.         return 0;
    ; J& {: `3 L" I! O' W7 s
  45. }$ i1 U# j  b8 w% {

  46. 8 k1 G7 \* ]0 @* E0 h+ @/ `
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - ^, \. l& F: `! {0 \
  48. {
    7 J6 g9 B# l% F  [
  49.         int fd, ret;& n) u4 U  Q! f9 E" w
  50.         e2prom_s_cmd arg;4 x% V! T" b4 D" ]
  51.         unsigned char buf[0x18];
    & F5 \) E0 E( }: K) _( S
  52. 4 k; y; \* h+ O4 H5 b4 |' R7 {
  53.         memcpy(buf, mac, 6);
    + a& F, q# L& n5 M& P% x
  54.         memcpy(&buf[6], stbid, 18);: H/ F; I4 n. y9 H- H9 D0 ~; @9 h$ q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);- ]5 {& ?% X8 c
  56.         if (fd  < 0) {' A4 S( m1 Y' f# U  M
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);& h2 j& T0 V5 O: m  W; ]! M
  58.                 return -1;, ]' e4 H( k: i+ |0 w' f+ s5 q
  59.         }
    - D/ F" C8 n1 k( {; i9 n+ @
  60.         arg.sub_addr_count      = 2;
    1 b( Q0 M3 e1 |: K# U
  61.         arg.data_count          = 0x18;6 `6 t# l1 l7 q# Y: A# j; T# |3 l& ?' j# w
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    , p) _1 x1 V. K! \: g- V7 [
  63.         arg.e2prom_cmd_data     = buf;" h" ]) ?: t2 a; c+ P% A
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ! Q& s: X) C/ y: Q+ x0 f% R
  65.         if (ret != 0) {7 D5 Y- q* D* |( B2 Y0 V
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);6 p. R. ^8 U9 m% L
  67.                 return -1;+ E4 z9 \" b1 h/ m, A
  68.         }
    3 u) }: u% c9 ^9 d) t8 R

  69. $ C* b4 ]1 e  S7 }  ]
  70.         return 0;( D  n/ U: p1 ]- f' a0 r
  71. }
    8 \( a- ^' [5 d# n1 f4 d
  72. 6 V# O* }# e: x2 s+ j
  73. int main()
    / B' P) L1 I/ p6 r# o
  74. {
    % v; L) \/ P  E+ p& n% j% S
  75.         char c;
    0 ~' }- J9 D; s4 l3 R
  76.         int i, macs[6];
    - [: s# p9 j, w/ a
  77.         unsigned char mac[6];
    ; {/ M# h. r; w0 w" b4 C
  78.         unsigned char stbid[256];% x* d+ m1 q/ S# v9 V
  79. ( k+ z0 _5 b: B* q5 G, C% c
  80.         if (readparam(mac, stbid) < 0)
    0 _* s3 w& t  h
  81.                 return 1;  p. l3 K, L' |' C) o- A
  82. . [& r4 d4 @* O
  83.         printf("Current parameters: \n");, L* ]$ j1 I7 {4 B6 ~. V
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. V. A6 R1 K: j
  85.         printf("  STBID: %s\n", stbid);
    ! g- h$ \8 @3 w" A9 I
  86.         9 C* i4 B: z) N# Q. @* R
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");( o. T, v8 f6 D7 _0 p
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {; W3 g$ R2 C4 u: |+ Y" w. P6 ~
  89.                 printf("Input MAC error\n");
    * w4 C4 [' t# J8 K
  90.                 return 1;
    % u0 Y2 C; i/ v' ^+ A# g, x
  91.         }- c2 t& C. W4 V- p6 I6 g
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ' w7 b# Q' }: ^3 [
  93.         printf("\nPlease input new STBID: ");
      I, c) |) o3 Y% |8 s' m' ~( J: B
  94.         scanf("%s", stbid);+ \6 L+ N4 i' u+ W; T
  95.         if (strlen(stbid) != 18) {$ R: U- v1 t2 f! [8 D" O0 N! a
  96.                 printf("Invalid stbid\n");
    4 B0 R7 r- M- ^3 Q! E0 \
  97.                 return 1;
    8 X" a0 y4 E; i% p; @
  98.         }) Q) t0 e% u) g$ p8 g% ^1 m7 O
  99.         printf("\nNew parameters: \n");- i, }. ^; E/ T7 u4 w5 Q/ [
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    8 e, a% ^/ `3 c! _: G. E1 k
  101.         printf("  STBID: %s\n", stbid);
    6 K) r+ y" G& _! j

  102. 1 U! K7 `: L7 P; h4 b2 i
  103.         printf("\nDo you want to change paramemters? (y/N) ");' |) u2 g2 K1 w4 D2 H
  104.         for (;;) {2 m7 J+ x: a$ N7 ~
  105.                 c = getchar();
    ! F. b$ u0 C+ t( E
  106.                 if (c == 'y' || c == 'Y')
    + e! U; }8 i2 t* a. `$ L4 P* N
  107.                         break;( i8 n: h2 c. q) O: o$ O. I5 @
  108.                 if (c == 'n' || c == 'N') {  r4 t6 c- m+ q1 z# e: s/ J* u
  109.                         printf("\nAborted.\n");
    : K* M: F% Y$ n7 V; v
  110.                         return 1;
    4 K4 V% d5 E9 Q6 T) R0 M# H, g4 I( k
  111.                 }0 c! d! i; q; @1 g6 L- ~+ @
  112.         }8 {7 Q) g% h" T$ c0 h9 O# I3 X
  113.         if (writeparam(mac, stbid) == 0) # m$ F) }) @6 @- |& N
  114.                 printf("Parameters changed.\n");
    % W4 A) M8 f  v; g! M

  115. ( z+ u, q+ Z: f' J
  116.         return 0;: K: P9 C7 \8 f5 l3 L# T: w$ L" c( m  V
  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
  I5 @1 R# x6 J) o) i在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
1 D- L) Q: V2 @5 R3 U
你用的编译命令行格式是什么?. [1 c# ^6 M. k% V' P7 ^
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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