查看: 17420|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    . \0 H5 M5 i* j8 [5 J( D
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig+ |- W3 i7 ~. k
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:. N, T1 R4 _2 J3 a* t, Z
usage: himr <address> <value>. sample: himr 0x80040000 0x0
0 h. D9 |# Y6 X$ x. ]
$ m3 @/ |8 p8 X7 a! t4 B; \0 T+ ~( M# ^! M; `6 r7 V; O  f
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
3 D3 A) X. b+ P* s& H
4 V! n2 C1 [( e* x; e* B, l5 h补充内容 (2012-3-8 09:42):
- j$ ~1 J# c! ]http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数0 _! g* n) r' x- B9 ~; r0 }
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
$ N5 }: H% t1 {" K4 F1 F
: g( b5 @# v+ Ehimr <address> <value>. sample: himr 0x80040000 0x0* B2 s$ D/ J% O/ a. G, ?! j
' K/ v8 y( ^! d; g
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。; [0 `1 F7 N* z( D
himr 0x80040000 0x00
! \( ?: K& E" lhimr 0x80040001 0x11# t$ |+ e' D/ L7 N
himr 0x80040002 0x22
. L4 X1 @* [1 ?. U7 Nhimr 0x80040003 0x33
- a8 ~  l- f) h9 |himr 0x80040004 0x44. O! i' `( J  K
himr 0x80040005 0x55
) y* @. H4 \7 N4 E
) S/ ]: B: f4 r: N! pSN也是类似。
$ t$ ~7 z2 {  g, ]0 }& i
9 G3 u; w4 k- e% y8 i( m+ @9 w! t  Q现在主要是,谁告诉我们MAC和SN的地址?
+ n. m% U+ v& ?% R
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 + I0 C3 h6 f' h8 h- K
一直想找到运程修改MAC和SN的办法,苦于无解啊

+ ]" B) ?& R$ H+ p: r4 k+ Q源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 . V1 Z: P& b! R7 ~7 e
3 k. l2 q$ w  `
修改的代码早有了。到今天不会编译。. k8 A# [4 u: p8 F. `
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>' n6 _# ]! h+ Z& M: F9 r
  2. #include <malloc.h>) b% ~3 l1 l1 |% A' J
  3. #include <sys/types.h>
    4 a/ T* n. ?  m- D- f3 ?* x4 A9 p
  4. #include <sys/stat.h>3 ?, Z! J% }8 J4 h4 P% E
  5. #include <sys/ioctl.h>) @+ S9 Y8 D+ f! \8 T) ]
  6. #include <stdio.h>4 t# m- @  s2 s  v# E/ W, {
  7. #include <string.h>3 u% c- h: u% D$ I1 M

  8. * u& L$ |7 \1 C8 i, }" k
  9. typedef struct {
    / h( s6 D, o& r4 ^
  10.         unsigned int        e2prom_cmd_sub_addr;
    - f# i% I& U) }4 p0 Z" o  d: a: F+ t
  11.         unsigned int        sub_addr_count;
    2 }1 t9 `0 k( I  n8 R- O6 s* E* g. j1 e
  12.         unsigned char*        e2prom_cmd_data;# g5 _! w: F& X3 r4 h
  13.         unsigned int        data_count;
    - n( s+ Y- Y+ V$ A" p, d8 \/ [
  14. } e2prom_s_cmd;/ M0 c+ [  O, W# J( E/ U+ v! F
  15.   r! H6 v2 T8 |5 e9 R4 ^1 w8 i
  16. #define E2PROM_CMD_READ 1
    " s$ X$ U- X/ E. X, r+ r' ^
  17. #define E2PROM_CMD_WRITE 2
    , _" Q2 }+ P0 c1 C$ K
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16") X- f$ d( Y2 V% A7 x5 A* c5 k
  19. 1 c( h  F' g! _1 v& @
  20. static int readparam(unsigned char *mac, unsigned char *stbid)8 d6 K. T- Q% I7 w
  21. {
    ' v8 e# z; d+ o2 d" D# ?
  22.         int fd, ret;
      r. }6 Y% M9 z% @( N+ S
  23.         e2prom_s_cmd arg;6 p) E. l- A; N' C+ `
  24.         unsigned char buf[0x18];7 s8 p) q  \1 |) X8 V

  25. 4 S* p( \5 b/ r3 Z" G# |
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    " `/ u. h9 m) O4 [$ c+ w
  27.         if (fd  < 0) {
    3 W$ {4 c; K3 h# S8 o' y6 X
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);' h2 ?$ A' z3 t/ R, g0 Q; H
  29.                 return -1;
    1 K3 }+ z$ d; r, U% X& v, _" D
  30.         }6 D3 _6 y5 |8 Y
  31.         arg.sub_addr_count      = 2;
    - s/ v, }$ t7 y0 }+ d
  32.         arg.data_count          = 0x18;3 H% X6 R& U+ w; p9 I+ L2 I
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    # x, n9 m2 x1 @7 D; a7 E
  34.         arg.e2prom_cmd_data     = buf;
    , m* d, r0 y! |- M
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);4 m# z8 F0 j, Q
  36.         if (ret != 0) {, F% Q( E# m0 v2 O! f# ~& W. y5 T
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    3 N1 b: i6 [2 H0 q- v( t7 s
  38.                 return -1;1 M, Y) e/ R3 q8 W% y) j
  39.         }8 Q1 e  P' n2 x, _3 o
  40.         memcpy(mac, buf, 6);% E* O9 A$ o% E; n3 [1 I" x
  41.         memcpy(stbid, &buf[6], 18);
    3 z) x5 X* k3 W$ a- W  g3 X9 c
  42.         stbid[18] = '\0';" j6 f" b7 W  ]/ c

  43. 5 |8 B. x; L% c( A/ J
  44.         return 0;
    9 O# E+ U, @# b! u+ H& s+ c
  45. }0 k( Q: `  n& x8 e$ f
  46. ' Z* {# F9 q4 u
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)6 q& o) d, `% h& c8 A0 |
  48. {# x" [) v7 t% }. c, J* d. H2 n; u
  49.         int fd, ret;
    6 ?3 U9 a* f' |" {( {, @. v- n3 T' O
  50.         e2prom_s_cmd arg;
    7 g$ U, h& i/ R. F! L  n4 i" k
  51.         unsigned char buf[0x18];, d1 n. t( F7 y4 G; Z+ E- d
  52. " b1 e5 k& k- t! v) s, |& b2 z
  53.         memcpy(buf, mac, 6);  v. `) Z7 |. J8 |  U
  54.         memcpy(&buf[6], stbid, 18);7 {; Y3 A7 m; R7 k" Y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);/ q# D# G. u; ]/ d/ [3 o
  56.         if (fd  < 0) {1 Q' N/ I0 `. x" i
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);% @  I0 {% f; x/ D' V
  58.                 return -1;, ~$ o+ {. j0 B% k
  59.         }
    ; F' B" O; Z9 k5 ]' d6 @) g
  60.         arg.sub_addr_count      = 2;: b! n5 k: ~6 ?9 Z
  61.         arg.data_count          = 0x18;
    8 c( G3 [9 q- B+ ^9 L- t
  62.         arg.e2prom_cmd_sub_addr = 0x290;8 Y. {. P) ^3 r/ o+ V3 I( p5 F
  63.         arg.e2prom_cmd_data     = buf;
    " Q+ ~( ^! c9 P  F& u
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    0 A2 u6 I1 Q: Q- v( u9 F
  65.         if (ret != 0) {, X" g3 ~# F* P1 y2 J
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);/ ?4 N! c4 C# |! M$ W" g) s% h
  67.                 return -1;0 v1 O0 X* W  [% s) k* }& ^8 ^
  68.         }
    + K- Z8 I- w3 b+ X0 O9 s/ g
  69. % S7 e# }9 v0 B; a( \! B8 ?
  70.         return 0;; M$ l/ ?2 _  e2 S9 A9 g' t7 S' g
  71. }9 g2 R/ y) A; M. u( R" K$ t! G* Y
  72. ! O& r1 U2 l/ y5 W. C+ _3 I
  73. int main()
    , Z  x2 Y& s6 \$ l
  74. {
    # s; S0 ~  w1 ^
  75.         char c;/ m; i7 }0 b# }9 u, U
  76.         int i, macs[6];
    # W, b3 }6 n  ~+ F& S
  77.         unsigned char mac[6];7 i$ O5 D" }0 E' W, P! O8 |* ~
  78.         unsigned char stbid[256];. _; o6 F/ N. ?+ y+ f

  79. " P, x, n" u' P  F' k
  80.         if (readparam(mac, stbid) < 0)) m; H9 H$ P& q* a
  81.                 return 1;+ M. Z% w4 o3 G1 u% u! j8 V+ Q
  82. 8 c% _: g. }8 G  \. w& @! ?
  83.         printf("Current parameters: \n");& ^( J! t; I* |( ]) X
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: s- g+ I- ^+ R! P
  85.         printf("  STBID: %s\n", stbid);
    5 s( j, c# T. M& V' t* S
  86.        
    # ?+ ^5 N4 w! j
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    * k8 _% J. y- q8 p4 X/ g; A
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {) c; t( ~% x9 C+ ~4 P
  89.                 printf("Input MAC error\n");0 @$ `4 l" W$ W2 p5 E1 ]) r
  90.                 return 1;
    ( U0 ]( F) c" ~8 q
  91.         }
    , m$ d) B4 ^1 Q7 v
  92.         for (i=0; i<6; i++)mac[i] = macs[i];+ w) U* G7 @& Z0 {1 X7 |/ g! N: @; K1 |: i
  93.         printf("\nPlease input new STBID: ");% Q2 i) l: D! j  q" j# r
  94.         scanf("%s", stbid);0 f; I4 M- o3 `) i
  95.         if (strlen(stbid) != 18) {
      U; D+ d- o& }8 _3 @8 H" E! W
  96.                 printf("Invalid stbid\n");" x3 t& u& Y" X! B- N
  97.                 return 1;
    0 p5 \, o& S5 T- V) q
  98.         }/ I% B# a. J/ Q! v* a0 f+ y
  99.         printf("\nNew parameters: \n");
    : i, M# _0 C% Z! U  N
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 k( \3 i2 L" {' Z5 R( c$ s" J
  101.         printf("  STBID: %s\n", stbid);
    6 d+ q+ x2 l" X' ~3 z  x

  102. $ P# f7 P# S0 A0 N+ }& B5 B& I
  103.         printf("\nDo you want to change paramemters? (y/N) ");! ?7 G! o3 m' K3 H6 e. U6 E
  104.         for (;;) {5 Q7 M' g7 z8 T
  105.                 c = getchar();, K$ b+ [7 b' v1 \7 J
  106.                 if (c == 'y' || c == 'Y')
    4 x8 J: D& {7 }$ W  ]
  107.                         break;. X6 S2 Q& K6 c- `) H
  108.                 if (c == 'n' || c == 'N') {% e( |* n0 P/ e0 C; l( u- F4 R* h$ M
  109.                         printf("\nAborted.\n");
      I3 o2 s+ F2 z1 \9 u3 _
  110.                         return 1;4 G. l' w$ z3 d2 _; ^% e
  111.                 }
    # g& Z8 P9 K& L. R7 t# ]8 A
  112.         }
    / V8 K& w' f$ k! z4 [
  113.         if (writeparam(mac, stbid) == 0)
    - K3 o/ t& v' D/ ?
  114.                 printf("Parameters changed.\n");7 D% ^% I' ~! f) [: K1 b

  115. ; g, |" P" I  g) p- m
  116.         return 0;3 L: x9 X# \& A2 H( i3 |
  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 3 ?) d9 ~9 ~9 i' x- L% E* R
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

/ \6 B+ b4 B0 C- U  J你用的编译命令行格式是什么?& d" Z) g+ `* w  V1 t. f
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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