查看: 17050|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr2 @" m+ r  N, B; ?
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ' x. r% {8 T8 {9 r, u' q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:- b, k. R! R# C+ R" d0 t
usage: himr <address> <value>. sample: himr 0x80040000 0x0
1 y2 G2 \# j0 b% q$ j# l4 G+ D& J9 s9 \2 G; h! s: \

$ o% ^" C8 [; z) G不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
' d' `$ o( d  r# Z* ]( P. f, S( m& ^9 [) ~
补充内容 (2012-3-8 09:42):
/ a2 H: n" U9 |" u: P' B: B, Bhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
3 v7 d' X1 b' _6 K5 w& `这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
& O9 |- t% n8 D8 R5 T; O! H2 R
% B$ j1 U6 L! _8 m5 D( Mhimr <address> <value>. sample: himr 0x80040000 0x0
0 G( |) v: |; M% q0 r3 n- X( e  c7 D# z* z* w% [
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
( m6 q. s' P! o$ e1 ?5 [( \himr 0x80040000 0x002 E4 d5 o& k, k2 `
himr 0x80040001 0x113 a% L2 j$ Z! d& f
himr 0x80040002 0x221 t* W  x1 ^) X
himr 0x80040003 0x33
/ R4 w6 O' O5 T! B0 O$ |himr 0x80040004 0x44& A0 b6 V+ t% ~
himr 0x80040005 0x55( \0 g1 c# G+ Q: G9 G; f
9 e7 s1 a  a' ]1 s; G2 G. |+ b
SN也是类似。( K* ]. y4 |  M$ C0 o8 E
9 @& w- h# K" d
现在主要是,谁告诉我们MAC和SN的地址?
. t3 X) v- w4 W, A) _5 Y
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
# `- m" \) M; s1 ?" L2 q% x一直想找到运程修改MAC和SN的办法,苦于无解啊

2 P% s3 F1 ]! f* i. I3 Y7 m源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
6 T) S/ S) H$ z! d- [, p, q
- ]6 f8 P/ i5 d' I/ b修改的代码早有了。到今天不会编译。
* `7 {! Y" l% _8 p需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>- I) h4 T* u/ Z9 J  ?
  2. #include <malloc.h>5 F( R1 y' T# B& q$ E, ?$ d  W. n
  3. #include <sys/types.h>. b0 {# g" e: A
  4. #include <sys/stat.h>
    ; k9 Z) K$ A: b% w0 G/ S$ \% B
  5. #include <sys/ioctl.h>& b/ _. Z, i9 m* w3 I3 Q; q  Z
  6. #include <stdio.h>
    % v! L+ h3 I) u0 c
  7. #include <string.h>/ y3 k# c% R6 q. H+ T: j/ L8 E* m3 J/ }
  8. ( @/ D- s% A2 z2 o+ B- I% w% \
  9. typedef struct {
    , w4 z% l, P( p9 i# H# d
  10.         unsigned int        e2prom_cmd_sub_addr;
    3 \( @  S9 k$ f9 r9 M% _
  11.         unsigned int        sub_addr_count;! ?- J4 Q: }) E; @8 y. F$ `9 X# }
  12.         unsigned char*        e2prom_cmd_data;4 O6 i5 W& f' \. q' N& M
  13.         unsigned int        data_count;4 r5 h% I7 L$ o1 W/ c( a! ]
  14. } e2prom_s_cmd;
    1 o* J% N4 S5 D- {- f% C

  15. ! A% }5 i1 r" b/ B) z9 a
  16. #define E2PROM_CMD_READ 1: D1 X! x5 s, ^% ~4 a  s2 M4 m
  17. #define E2PROM_CMD_WRITE 20 c, D' b& s1 }2 H6 `0 n; ?
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    8 i( v; {1 z9 }' |
  19. . ?, r! \: a* a+ o
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    8 V6 r4 H; w5 g! Q" j( \
  21. {
    8 {. t, G$ o' k+ G
  22.         int fd, ret;
    ' Z3 D3 Y4 Y+ |& F
  23.         e2prom_s_cmd arg;: I* {& [/ {1 l# h6 h
  24.         unsigned char buf[0x18];: s" @' h9 M/ B* z( |1 G5 C

  25. * }3 V* v5 K( k: P
  26.         fd = open(E2PROM_DEVICE, O_RDWR);5 q' Y/ }' `* y0 l' _. t
  27.         if (fd  < 0) {% f; u5 H" H6 s1 }0 G% X) D8 y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);' F, T, v# ^7 f5 A: g7 W
  29.                 return -1;
    % ?0 @/ N: Y7 _, x* v' Z% P
  30.         }
    * Y/ i9 x; h5 L5 E* u
  31.         arg.sub_addr_count      = 2;
    8 r$ J9 y9 [! A: Z1 i
  32.         arg.data_count          = 0x18;, w% L* g: V/ j! k& m+ N" k
  33.         arg.e2prom_cmd_sub_addr = 0x290;2 d7 s* l) Y# f9 k& f  \! s
  34.         arg.e2prom_cmd_data     = buf;
    % w2 G" A5 x* c) X  U0 e
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    4 |! b8 ~; B( Z  \/ v! a! J
  36.         if (ret != 0) {" x. D: c/ K3 M! q
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    & J& o9 K9 o' t1 H
  38.                 return -1;
    $ z) u9 m! W) s2 o' n% y
  39.         }. m2 @' t* H9 X; ]# A
  40.         memcpy(mac, buf, 6);9 q4 J, _; v/ P  Q' A6 S
  41.         memcpy(stbid, &buf[6], 18);
    4 P, M  ?2 o4 p; J& W1 Q" G
  42.         stbid[18] = '\0';% _0 J) o2 x% B+ H

  43. 2 y+ v$ O: f5 v5 H  l$ B" W$ A
  44.         return 0;
    0 c/ m4 M/ T/ ?" Y& t
  45. }/ B  a2 @# u4 g" x; B, s# g% V' i

  46. ) f" c3 h) w0 v- F& R3 T/ @1 s
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)% e6 V, B) \6 g
  48. {# e4 ~" y, Y. Q* Q+ i3 `: D. F& ~
  49.         int fd, ret;6 \+ t4 m/ K: o/ G
  50.         e2prom_s_cmd arg;
    - D8 T% W# r0 ]2 r% U* q6 J% V
  51.         unsigned char buf[0x18];
    ' r1 P+ s5 J+ o) O% M

  52. 4 s% E9 n" w' L! W, W
  53.         memcpy(buf, mac, 6);4 O# z( G: [; W/ D
  54.         memcpy(&buf[6], stbid, 18);
    . Y' r* B3 M- x  w( I* g
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; M% ]6 f7 d7 w- \# `. `3 W- F1 S
  56.         if (fd  < 0) {
    ! U5 l+ J& z9 v4 m6 S( J" f
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);% V  n' z, L4 t
  58.                 return -1;8 X- l; v5 C" ^; ?$ W
  59.         }8 R8 r$ c' x! w  S9 F
  60.         arg.sub_addr_count      = 2;
    8 O$ Y, g& ]8 C$ d3 {
  61.         arg.data_count          = 0x18;
    - S7 x7 h( n" y9 v- s
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    / ~. d3 o* D6 y$ O) h0 B# w
  63.         arg.e2prom_cmd_data     = buf;
    , q. r; |1 ~5 c6 G$ ?
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    7 m3 ~! Y/ O0 C7 {. U
  65.         if (ret != 0) {
    * @. k4 ~2 B1 I- U" _3 _
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    0 z' ~5 A; r4 i8 @% m
  67.                 return -1;
    2 P  i/ e2 R  j! o( [; T; `: L
  68.         }' j3 s0 M8 Q( ]! o
  69. 8 q9 O# |, U: x9 h( b% ^4 ~, a/ X" z
  70.         return 0;8 `# }  K; ?% I& f
  71. }
    0 d  }, t! z4 ]# |) x0 [1 r
  72. 5 _5 G- q, N* N+ N8 D: y7 Z* b
  73. int main()  C& i1 r9 k( v1 _% o% q" k
  74. {& r" F4 K( I) s8 p
  75.         char c;1 C  @2 N" {2 O: ^9 H0 ?1 g$ t, Z
  76.         int i, macs[6];; |& b+ \  g5 w( m* J
  77.         unsigned char mac[6];
    : x# _/ B/ D" z/ y! R3 I
  78.         unsigned char stbid[256];
    * ?2 ]# j+ m# Y: o

  79. $ ~) G9 U2 H) O* p' T/ z8 g0 d8 b
  80.         if (readparam(mac, stbid) < 0)) \' o; P. p/ G$ M' z2 A
  81.                 return 1;
    8 h1 E! |9 E/ d& e& K+ _
  82. 9 x. l4 a/ K4 g
  83.         printf("Current parameters: \n");
    ; e# u2 B( ~/ r4 E7 u& o( C( ^
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  d3 U/ Z. V5 g2 Q/ h9 e7 l
  85.         printf("  STBID: %s\n", stbid);. ]& g6 R0 U7 z5 a6 h& `
  86.         2 E" X! x! ?3 C  s) [3 @
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");: }- l; R+ j& D3 h8 M
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    : t+ U# s% q1 I" M' \/ o
  89.                 printf("Input MAC error\n");
    ( j; H3 b. f% V- G
  90.                 return 1;' j3 m, g7 e/ v
  91.         }& S) L) U" X$ ]/ G" U1 p
  92.         for (i=0; i<6; i++)mac[i] = macs[i];) l4 s) {/ [1 K' X3 ?# F
  93.         printf("\nPlease input new STBID: ");) ~7 \' {6 ?$ H" Y1 v; k8 }
  94.         scanf("%s", stbid);+ h/ U9 ]8 O1 ^% h4 [
  95.         if (strlen(stbid) != 18) {
    0 i% d6 i- M- m( i# t" z
  96.                 printf("Invalid stbid\n");
    " ?2 h* u& g2 q$ }! d% B
  97.                 return 1;
    " N8 t& P5 V, Q/ d  j% e  O: N
  98.         }$ g/ G3 G. S+ ^  S8 P
  99.         printf("\nNew parameters: \n");; n( t, L" S. l, Y/ X
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* C8 h- \5 t. f7 d
  101.         printf("  STBID: %s\n", stbid);
    - a7 E! B+ c$ v, m- c+ c9 _

  102. ! B' U, L: O% W
  103.         printf("\nDo you want to change paramemters? (y/N) ");" K2 M7 O, f) `( ~
  104.         for (;;) {; K1 V7 U) T) F- x' M
  105.                 c = getchar();$ m1 l$ C; O6 c/ B
  106.                 if (c == 'y' || c == 'Y')
    . y, L5 l: m# i7 a# Y: L) P4 T
  107.                         break;
    - B( _. Q- b# m- b; A0 V
  108.                 if (c == 'n' || c == 'N') {. I# V7 @/ x1 z
  109.                         printf("\nAborted.\n");- G& H; v2 L2 h: l
  110.                         return 1;/ l9 B) Y" R8 @) P4 q
  111.                 }
    - V1 C8 n! i4 l
  112.         }
    8 F& ]2 W* v7 e2 |# @
  113.         if (writeparam(mac, stbid) == 0) & |8 y  C9 O! M' f! C3 @
  114.                 printf("Parameters changed.\n");+ v' v5 E! ]6 X% r. g
  115. . O# `6 f# |5 N2 g: r# C
  116.         return 0;, A  v- N0 `0 s, w: J$ G6 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 7 x3 d5 J7 a; X9 b) y3 L
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

7 ?/ \& h  [: T! R0 i9 \2 k你用的编译命令行格式是什么?
6 M+ o& ^7 r6 t- N
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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