查看: 17330|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    . X  m0 D$ m: w% K
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig) H- G9 F0 W& S& Y) M- P0 I
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:1 ^/ M* h! t& J: Y( }- R
usage: himr <address> <value>. sample: himr 0x80040000 0x0
5 d% h7 E5 U9 L; \4 U) e
9 L0 G+ A% C% m9 X" c- `' q3 d; o5 d, e4 e* {0 g0 s2 p
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?+ q( S4 G+ v/ E/ p- ^) L* D

" N' T4 K1 ^; B8 l补充内容 (2012-3-8 09:42):
; D' X0 h6 ~9 ?6 V; M; ehttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% r1 N1 J5 o% n
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。  Y3 z0 h& Z; A- Z" U
+ d- [  e$ I3 k9 c/ l9 j
himr <address> <value>. sample: himr 0x80040000 0x0
. a% ?* ?/ ^. t4 T0 w
) q8 \8 t; a+ h, p. E0 z$ H0 ^" m例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。# J& ]. M# t% ~# L
himr 0x80040000 0x00  N! a! V7 i8 J
himr 0x80040001 0x11
  ^4 `  l9 c$ [himr 0x80040002 0x22+ h+ {: A" s( t- }3 L# \
himr 0x80040003 0x33- `$ f1 v4 k& ~$ i! s
himr 0x80040004 0x448 W0 A- [4 D7 K2 l- V& a8 R, J6 j
himr 0x80040005 0x55
+ k- o. B& \- u$ j1 \% Y. F) K! o
SN也是类似。$ e' x/ b0 o6 ]7 C) W
* c5 ~% H+ r9 g, C
现在主要是,谁告诉我们MAC和SN的地址?/ M2 p: r* M% b6 s# ?7 c6 B
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 1 A" k; m% j: ]3 Z- F8 h" h
一直想找到运程修改MAC和SN的办法,苦于无解啊
* q+ u. M* q8 ]# h
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
; q: d' O3 O4 |$ t0 ]) B! A( k# `( D# E: M0 s
修改的代码早有了。到今天不会编译。' h3 ?7 T! k! [9 z2 i* a2 |
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>0 T% [0 X, ~0 e- v" `  P9 h3 y, z
  2. #include <malloc.h>
    # Y0 v. e+ r8 I
  3. #include <sys/types.h>3 a/ `- }5 {0 ]& E+ l/ d
  4. #include <sys/stat.h>, |- Q- L" T8 B& y' K" o
  5. #include <sys/ioctl.h>! G5 }6 f& h/ V1 X6 a9 k
  6. #include <stdio.h>4 I4 T: E! N( h5 R) [( S
  7. #include <string.h>
    , |5 [: C0 w/ s# |( m7 @0 j3 l* \

  8. . F( u; Y# P0 B5 W" }! u
  9. typedef struct {' o6 Z0 q/ k, h, ?( l3 Q, g) f- h
  10.         unsigned int        e2prom_cmd_sub_addr;8 p/ Z( a1 i' ^/ p0 g7 ?9 `
  11.         unsigned int        sub_addr_count;
    2 G  O  T, X% [3 G2 `# h; e
  12.         unsigned char*        e2prom_cmd_data;2 h+ b. \6 B5 F. U  }+ M$ F* M
  13.         unsigned int        data_count;
    + _) w1 f( {; G  Z" R
  14. } e2prom_s_cmd;
    , N5 U3 Q: a" n  ^( C% z7 i
  15. & y( m1 O* L) \$ \% h0 R
  16. #define E2PROM_CMD_READ 14 p1 W5 ]6 b) D: ~
  17. #define E2PROM_CMD_WRITE 2
    4 F$ O; i- l. ]+ Q& J0 p
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    % E5 f0 t; o2 c5 M& h

  19. + M& W+ H; B8 z& Y! @( J
  20. static int readparam(unsigned char *mac, unsigned char *stbid). |+ x. q& a9 _* C2 o5 i. i. p" A
  21. {: y: W1 V. _6 P2 s
  22.         int fd, ret;
    7 B6 S' e2 N9 p. X
  23.         e2prom_s_cmd arg;
    , b& S  d1 M6 U! r$ c
  24.         unsigned char buf[0x18];
    : p8 d9 r8 g' T& `' k

  25. ) ~8 n# @3 q0 G( j: P7 |
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    * ~. N# n' V4 J+ h
  27.         if (fd  < 0) {$ E2 f" N, b$ A0 A/ Q3 r
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);% F/ s+ s1 }" m+ L
  29.                 return -1;
    8 [4 g% L' o4 N" q' _- z
  30.         }
    ! X3 }; s: R8 S9 T* H
  31.         arg.sub_addr_count      = 2;: U7 Q/ q: R3 x
  32.         arg.data_count          = 0x18;8 u4 X. D- k! v  m" N$ O3 T
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    / e. |9 ]* L' X1 z: M$ n% Z! a1 s
  34.         arg.e2prom_cmd_data     = buf;) q0 K$ R* N8 o7 F! K& U2 ?" u
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    9 `7 L( u7 ]2 Y9 R  G) _% V- Q
  36.         if (ret != 0) {
    * U+ T' m; u/ G
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);( b) E' E; h) n5 V; ?% M" p- A
  38.                 return -1;
    8 b: ~5 ]! E- J! e
  39.         }
    . w0 E8 [/ l" ~, m3 J, Q, O: w9 Q
  40.         memcpy(mac, buf, 6);" n$ f# y! @% z* X2 g' a
  41.         memcpy(stbid, &buf[6], 18);& f# s: t4 g" q2 t( [5 S- X5 x
  42.         stbid[18] = '\0';
    * C9 i, l3 h. K+ I- _3 u1 c
  43. + V& ^( C  j: J3 B
  44.         return 0;
    ' ^/ \  s# J9 h% k0 p* v3 @# s$ f
  45. }
    - Y5 f! F* [3 U
  46. 5 t- |4 b1 P5 E9 g" {; w" u0 p
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    , {. Q$ Y+ n/ J. M: [" O
  48. {
    6 f# d9 Z: R" L) ?6 ^+ N+ O- k
  49.         int fd, ret;4 p7 H% s# y* b) y$ r; S
  50.         e2prom_s_cmd arg;# D7 p8 R3 F9 P% E
  51.         unsigned char buf[0x18];3 D' v  W6 P5 K/ z
  52. ' j/ m1 |  e( }, z% w
  53.         memcpy(buf, mac, 6);
    6 M$ r/ ]; `& {  B# E$ T
  54.         memcpy(&buf[6], stbid, 18);- m- K9 j* J  d" L0 s8 B
  55.         fd = open(E2PROM_DEVICE, O_RDWR);6 g  ~; M! v* E5 p( i0 S
  56.         if (fd  < 0) {* ^# i' f9 f( @4 O6 @
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);' A  p+ A- {  o- h' r; X6 f
  58.                 return -1;. w! w3 ~8 D  P* v7 c2 ?
  59.         }5 Y) \- V# Z& H8 e
  60.         arg.sub_addr_count      = 2;; X8 j- G0 k/ F
  61.         arg.data_count          = 0x18;
      V1 R1 U/ ~9 l  ?  K
  62.         arg.e2prom_cmd_sub_addr = 0x290;7 k* `$ k" {5 [- `# T  P
  63.         arg.e2prom_cmd_data     = buf;( @3 @* z% K: H' d3 b
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);0 T; E& o$ b( y
  65.         if (ret != 0) {
    , i/ j2 z  v' b% ~: `
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);6 x5 T/ w! R4 s5 H; i: |/ s" X
  67.                 return -1;
    5 t6 c9 Y. g4 w) ]
  68.         }
    & g- w% z) K! s* b9 \

  69. 4 J: x- @* ?8 F) B. ?
  70.         return 0;
    $ W4 z6 a) p' n$ w; Z
  71. }
      G) _' r- D; W
  72. ' a: o8 v' ~  V1 N4 |6 l1 Q
  73. int main()
    * q+ s' M# D' N/ v+ Q5 z
  74. {' N6 V7 M( @" g9 v% R3 @4 V
  75.         char c;
    9 K! l1 d* P8 c2 @- E8 R6 n
  76.         int i, macs[6];
    9 C: D  z4 ^% p& b' j
  77.         unsigned char mac[6];
    , Q  W9 q6 Y" k  s* e  q/ k! K) g
  78.         unsigned char stbid[256];
    7 l2 `& k1 C) K+ I% K

  79. , _) e& o1 r. U) u% h' m
  80.         if (readparam(mac, stbid) < 0)
    % _9 x( M3 v1 G, \1 R/ C
  81.                 return 1;
    / T4 q) D$ I4 O! R1 G6 @
  82. 8 m6 j' T  y' t$ t* |
  83.         printf("Current parameters: \n");
    4 F$ _, I; n6 J) j1 l4 x
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' D% [9 J* l: K8 o( ^# m; s6 j
  85.         printf("  STBID: %s\n", stbid);' _+ |( |" D$ x) [, \$ K* C- V
  86.        
    + V. l) E) B2 Z; g( r
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    9 [# x- h% |* r' B8 m  u) r1 u+ e8 F
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    " x% Q' |- e7 w4 w( Q0 e- ^+ q; Z
  89.                 printf("Input MAC error\n");/ Y( M6 _$ Z$ o# f7 O# G" i/ d
  90.                 return 1;
    ( B5 l! }3 K( z# b* n
  91.         }' u! c( h5 r# r6 M: [
  92.         for (i=0; i<6; i++)mac[i] = macs[i];+ x4 ^# m* q5 V, _5 V# x
  93.         printf("\nPlease input new STBID: ");. Q1 G7 ]0 W+ n
  94.         scanf("%s", stbid);8 E1 R; E) ?6 h1 @
  95.         if (strlen(stbid) != 18) {
    / A! V# Y/ g& U
  96.                 printf("Invalid stbid\n");
    ' ^' s. G& Q9 Z' Y
  97.                 return 1;
    . u8 n3 j3 }1 g& Y# }
  98.         }" u: |: q6 ~8 s9 ]8 l5 M
  99.         printf("\nNew parameters: \n");5 q- x1 l7 T  c" e0 |- }
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& F4 Q$ f: \+ f6 J0 `# c
  101.         printf("  STBID: %s\n", stbid);% N5 K# P" T1 s* O; y" r

  102. , B7 k4 q% v. T% Z
  103.         printf("\nDo you want to change paramemters? (y/N) ");9 ~- k7 Z# {- Z& ]( b
  104.         for (;;) {# H( D: n/ h- E1 y% x" k% g. ^
  105.                 c = getchar();1 \* Q6 _' x" X$ q- o* O; G
  106.                 if (c == 'y' || c == 'Y')  T! @5 G# @  G9 ~$ f8 F7 ], J( d
  107.                         break;" N* N- J) m$ d" ?
  108.                 if (c == 'n' || c == 'N') {
    1 e( L# R1 t3 d
  109.                         printf("\nAborted.\n");" ?. h) M' k6 v! K# R: m5 o" Z5 @
  110.                         return 1;* B8 j/ [+ d, g* [- V
  111.                 }; X+ [  c) ^( h8 N) f1 X, U( w$ i
  112.         }
    - c1 S& g- e- P0 C7 |6 i% s" y
  113.         if (writeparam(mac, stbid) == 0)
    0 j6 ~$ l( H. T# C- {
  114.                 printf("Parameters changed.\n");  b# u* _9 v0 \7 y
  115. 6 o  j1 |/ K* B7 m! w+ Y% {
  116.         return 0;, V" K; h0 O) `# ]
  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 ( q1 A+ t! V3 u
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

8 p+ Q2 o) j  f4 R你用的编译命令行格式是什么?+ H. m9 W$ z: b
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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