查看: 17380|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    5 P4 Z2 \) Z" J- I2 w
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig9 o2 s# l( P; `8 p4 p9 `$ [  M
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
5 r& Z/ [! s0 }+ i2 Busage: himr <address> <value>. sample: himr 0x80040000 0x0# V. r1 v- e6 {9 {, ~7 @5 J

5 L& a. W) P; H  z8 E3 S4 H1 z. [8 z/ S) V
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
3 \: P4 c- q6 q: w) Y, L
) U% l$ R1 a1 h( {  S; ~补充内容 (2012-3-8 09:42):
* t+ u6 r% [0 Ihttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数# d3 f5 h0 \; D" f5 Q* x- y2 y
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。) a" }9 R0 T3 S

8 ]* ]' C1 k. {2 D- j- `6 Q$ vhimr <address> <value>. sample: himr 0x80040000 0x02 j( G" Y. Y. L. l. ^% W

+ t2 L2 a) O% m- u" }* U例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
- T) G( ~& l6 D7 E! ghimr 0x80040000 0x00% d7 W5 ]" Q7 r
himr 0x80040001 0x119 T7 [3 }) Q4 d% X- K
himr 0x80040002 0x22
$ }+ N  T, b* Y% X1 J' uhimr 0x80040003 0x33" t! t: f. i) e( k" k2 I
himr 0x80040004 0x44
3 `0 W! _% J1 B( `6 Phimr 0x80040005 0x55: C* {& H) x% C: J7 N7 \% x' I, [

: |" E9 A* o7 ^SN也是类似。
0 D+ `: r- M1 m* F( s( P, T  r6 \2 ^
现在主要是,谁告诉我们MAC和SN的地址?
! z0 a0 W7 r' ~0 c4 J! H
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
- B5 z0 U" d7 s% [; g4 ?8 T一直想找到运程修改MAC和SN的办法,苦于无解啊

) R# g& [; H5 ~1 ^源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
' }* @& ]2 W8 Y; B8 J4 }. f, c; d. L: B4 d" W% g' g
修改的代码早有了。到今天不会编译。
- c& W$ `2 |) T0 W' }+ N- b. C7 ^% p8 G需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>3 s6 N/ I2 e. W. G
  2. #include <malloc.h>" S( q# I, k- |# V8 a  X0 ]: u
  3. #include <sys/types.h>
    - p3 ]. _2 l6 J7 @9 {$ G7 K+ C
  4. #include <sys/stat.h>  y4 L2 }9 y, [4 x# X
  5. #include <sys/ioctl.h>( s4 g: M; C6 K2 s
  6. #include <stdio.h>$ U) c. d; b: t) d# s7 R* K
  7. #include <string.h>
    1 P9 C: _* d6 Y; M5 Y$ _& |0 E

  8. % W. _: x% T, R7 @6 O; l
  9. typedef struct {6 }: d* L( T. A
  10.         unsigned int        e2prom_cmd_sub_addr;
    ; \# V- U& t/ _+ |, N3 L6 C
  11.         unsigned int        sub_addr_count;) A! @" C- V/ p- W5 i& N' s
  12.         unsigned char*        e2prom_cmd_data;
    + k% U& j$ ?; J
  13.         unsigned int        data_count;
    6 d- Z+ l$ @! @0 L7 H" G7 p3 u4 G
  14. } e2prom_s_cmd;% `$ t2 q  I. n% ~2 L9 s  o# _

  15.   N3 y$ O! j* w: S. e, k
  16. #define E2PROM_CMD_READ 1% i5 G  w. m7 Q; P( z+ V
  17. #define E2PROM_CMD_WRITE 2
    8 B' v3 |3 Z( y; m) ?, z: |
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    2 S$ b( A: [+ f) @% \- I4 d' ^7 N

  19. - Z$ C$ H' P- u
  20. static int readparam(unsigned char *mac, unsigned char *stbid)! }. {- T0 {, {4 I. t6 g
  21. {- n! f1 T5 |. X& ?9 }
  22.         int fd, ret;
    9 o: E' A  A: ^3 s# v% R* M
  23.         e2prom_s_cmd arg;$ a: N) o; n# y
  24.         unsigned char buf[0x18];
    8 u: \" G/ C1 o4 K+ c7 ]
  25. 4 k9 Y: b1 N3 }# e
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    - \* |  [+ I9 f6 N; p
  27.         if (fd  < 0) {" S, c! q& W4 e
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);( Q8 k" U9 U! I1 l2 E% S7 o
  29.                 return -1;
    - C4 _% P( g+ n7 t9 L/ u
  30.         }3 z' ^$ L5 K/ i2 l: W
  31.         arg.sub_addr_count      = 2;
    5 {! e1 q5 h& H0 U8 Z) n, Q
  32.         arg.data_count          = 0x18;
    ! [8 z2 O/ D# q/ y' i; S
  33.         arg.e2prom_cmd_sub_addr = 0x290;6 p1 h: k* f$ o1 C* Y( A3 ~
  34.         arg.e2prom_cmd_data     = buf;
    6 }( U; a7 g$ M. D2 T% n
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ! n6 A" I; j8 h% o& w8 p
  36.         if (ret != 0) {
    $ l: p1 ^. W$ Y. S
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    , }% K! [2 u7 q3 u* t
  38.                 return -1;% E( d& ]5 j9 o% f. }% n! A9 w
  39.         }
    % o* l' I5 |3 {
  40.         memcpy(mac, buf, 6);
    + `7 q3 F- u2 h6 d
  41.         memcpy(stbid, &buf[6], 18);
    5 B" g) A+ Q( Y( Z) H3 s
  42.         stbid[18] = '\0';
    + @" D$ ]' D" l6 {" u+ d
  43. ' h- E  |. a4 f. ]- v! v8 E5 e
  44.         return 0;; W, L/ `. n6 X, F# y
  45. }- e  H) A1 _1 g6 \) c2 C
  46. $ |5 i, u( Y7 L6 H/ m
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    9 ]! P# z- O; S9 n
  48. {
    - u0 }: H4 P/ C9 H  C
  49.         int fd, ret;' ~1 T9 y$ T# ?/ z
  50.         e2prom_s_cmd arg;
    1 w+ w) V% n, c. l
  51.         unsigned char buf[0x18];
    6 y3 b3 ?. J3 `3 i# ]5 g# E
  52. # V; R6 t6 w& e3 `+ r1 H9 B
  53.         memcpy(buf, mac, 6);
    ! x" T) u% X7 {2 j& X9 W
  54.         memcpy(&buf[6], stbid, 18);) ]2 U) G, c- O: c, r7 e2 m
  55.         fd = open(E2PROM_DEVICE, O_RDWR);- [7 q' e0 l+ j5 s1 S; H
  56.         if (fd  < 0) {" [$ _" m0 s" Q' K
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);" h; [# m& G" r/ ~; C; o
  58.                 return -1;: w8 u: z; i8 D% E+ Q  f; I4 }
  59.         }# d0 ~+ {. v2 N) f: \
  60.         arg.sub_addr_count      = 2;; F9 W3 N0 u; |! N$ E
  61.         arg.data_count          = 0x18;
    4 u, g0 T9 a1 F, q
  62.         arg.e2prom_cmd_sub_addr = 0x290;" F' ^& R( G  u# c  X# q3 W( L
  63.         arg.e2prom_cmd_data     = buf;% F+ E/ g3 Z0 S0 @
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);; O. f* b* N; B" _6 i) N
  65.         if (ret != 0) {8 e, Z8 h/ g5 c3 ]7 i2 J
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    . A7 V4 E: E" r# D/ `
  67.                 return -1;
    9 [2 `" Z/ b8 I/ W6 V& k  D
  68.         }$ q6 B, L1 T* _4 x+ G

  69. 6 _  @- A! r# |4 L  ]9 @) F# i
  70.         return 0;
    1 }8 `, N0 U1 u
  71. }1 r1 p8 y4 k* g! x$ h3 ^
  72. % J; |5 w9 S: T+ m( |+ ~
  73. int main()
    : j3 T- J% Z# Y' S7 \  K* H. C
  74. {& I6 [/ V0 ^; J( q4 Q2 ]2 [3 n
  75.         char c;& v( V+ [$ l) u- E" O
  76.         int i, macs[6];
    ! A; u  v! n% D6 A
  77.         unsigned char mac[6];' Z& N  i9 w/ F# p" R
  78.         unsigned char stbid[256];4 R6 ?- K3 n, L. E' s

  79. 6 K( G0 Y& {( p& t$ O6 H
  80.         if (readparam(mac, stbid) < 0)
    * L3 m( X% a; s
  81.                 return 1;8 d1 A% z" p& I5 {5 \0 s, d

  82. 5 ?' T% x. a0 D) T$ A1 T
  83.         printf("Current parameters: \n");
    & b; L7 s8 q0 j5 }! d3 G# _
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    1 k4 |& i( |9 K+ x
  85.         printf("  STBID: %s\n", stbid);
    $ t0 I3 i2 v& B+ O
  86.         ( ?# t! P) |1 c& [; E
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    / N* A$ ?+ z4 @9 u
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    9 w4 c  F; a! j3 M6 @, k8 v* c
  89.                 printf("Input MAC error\n");
    $ C4 l% k  c7 N2 }* W6 j
  90.                 return 1;/ N$ {% ]7 Y) L% i! C* |
  91.         }: N/ q+ V1 |( U
  92.         for (i=0; i<6; i++)mac[i] = macs[i];0 n/ l" d3 p% A* z+ V+ }  e
  93.         printf("\nPlease input new STBID: ");$ ]# f8 o  |' j7 }) h# E
  94.         scanf("%s", stbid);
    : R8 r1 v, y% p4 P( Z
  95.         if (strlen(stbid) != 18) {
    5 w/ ~- y, q0 a2 ]1 k2 Y2 j5 O0 ^
  96.                 printf("Invalid stbid\n");
    6 R( u" \- _1 V; R
  97.                 return 1;3 F& W9 U" a8 b) v- c
  98.         }0 P+ z+ d9 S! {( ]) N2 q
  99.         printf("\nNew parameters: \n");0 \6 Q% v" P1 q
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 v- p* k+ v# g
  101.         printf("  STBID: %s\n", stbid);
    6 P3 i- h: X  P
  102. ; `' s4 a) S1 Q" M# O$ `5 d
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    + @. _1 e$ o% v6 t7 q
  104.         for (;;) {# V6 [' A0 {' a: \: j9 N  g: D* u
  105.                 c = getchar();1 D: f# r- t* d; s2 b
  106.                 if (c == 'y' || c == 'Y')- I  e% ^  w" F" r* W/ c% w/ B
  107.                         break;; q/ n; Z8 W" x
  108.                 if (c == 'n' || c == 'N') {
    , i9 W  s- {% B7 y
  109.                         printf("\nAborted.\n");% |2 P$ Q0 I# Y0 P) [3 \- z
  110.                         return 1;
    . z$ }4 C  @9 w) |' \& P2 O. \3 B1 `
  111.                 }
    ! M+ W- H0 x& E  v
  112.         }
    1 |- h7 {% i2 y" E* j
  113.         if (writeparam(mac, stbid) == 0)
    / X+ d% ?' G9 C+ e+ G% p; b9 n
  114.                 printf("Parameters changed.\n");( c0 {+ ]4 o# L6 u

  115. ; ?, |1 ~; ~8 d7 f
  116.         return 0;6 Z; V$ y0 R% W. Z
  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 * F6 |2 N7 T' W4 U
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

( r1 I+ I) |- O! s& x* Y你用的编译命令行格式是什么?. Z' w, c# b7 j, `8 S
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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