查看: 17676|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr& u; d3 l8 Q5 s, @* }  |! ^
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    3 L) D9 _. V* e: v/ |4 k  S( B! q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
  [/ C0 v3 w, Q) Wusage: himr <address> <value>. sample: himr 0x80040000 0x0; Y2 O8 s# N0 S* H

4 x+ C5 y. N7 |2 L% B0 \7 J7 V/ C7 F( E5 b1 g- Z. G
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
) ~5 g, o0 v6 A# x" U+ I: E- T' U- T2 `$ b# T' J$ ^3 _2 I9 F
补充内容 (2012-3-8 09:42):7 Q  s, ~2 [, K9 S4 r8 w! s: v
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% r0 [. l$ L% z- p. S) j4 d
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
7 g! h; w6 E, u. ]8 Z% \8 s+ M  ~9 c" k6 b7 n
himr <address> <value>. sample: himr 0x80040000 0x0
0 P) T  I+ n" |$ G6 S. ~8 `. p" `! }) _
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
- h: [) w6 f0 ~: F: p: ^himr 0x80040000 0x00: f+ y4 ]* @" ~. D$ i  `
himr 0x80040001 0x11
  Y% O1 Q9 ?$ X, `9 a  `3 uhimr 0x80040002 0x22
. U% B) u6 |6 J, {9 \: `himr 0x80040003 0x33
2 m+ \7 {6 q! \6 Z* o6 _  Q7 d( khimr 0x80040004 0x44
- p# E" _+ o  Z% |4 z  q8 F0 Thimr 0x80040005 0x55' S9 Q# O4 m; z( M  u: m+ F4 K  N; X

% n* Y/ r2 [* r4 qSN也是类似。, R: A) ]! ]- v9 A
1 s/ Q% ]  T7 T
现在主要是,谁告诉我们MAC和SN的地址?
/ [. Q, H: l5 Z) ?3 g
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
0 X, j& }+ i/ Y3 _一直想找到运程修改MAC和SN的办法,苦于无解啊
! y  d: R7 [$ K# g
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 " O: X$ @- R* S$ M) Q- b4 j) W7 m

2 K! B5 Y; q, w0 ]3 C  k; z修改的代码早有了。到今天不会编译。- I% ^; I7 O! \) K4 B8 n$ n
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    , b2 ^! j; G  \$ u1 S  Q
  2. #include <malloc.h>
    7 e8 s) I/ j$ g
  3. #include <sys/types.h># y6 ~% m4 u. P  H
  4. #include <sys/stat.h>& P" Q. V% {$ o
  5. #include <sys/ioctl.h>3 X1 d: d4 v) y! q7 H' L) B% T
  6. #include <stdio.h># S+ e1 ]* r1 c4 n0 _
  7. #include <string.h>  ?* p' j5 T, k, E8 |5 i

  8. % T) E8 M3 J5 l% M: \" b' c1 P
  9. typedef struct {+ T2 ?/ a0 f+ |. R
  10.         unsigned int        e2prom_cmd_sub_addr;$ E$ Q, _; S2 E# M% r
  11.         unsigned int        sub_addr_count;
    6 V: o0 r0 Y  X  ?5 g' d
  12.         unsigned char*        e2prom_cmd_data;
    % R& O6 ~! T7 {. ~8 |% z+ ~
  13.         unsigned int        data_count;
    : @: W& m" h  F! N) N$ Z
  14. } e2prom_s_cmd;
    # t+ s. h- W* H9 N

  15. 3 _0 n( y/ Q$ @/ S2 m# V( V
  16. #define E2PROM_CMD_READ 1& `9 F1 e* V& }3 W7 T
  17. #define E2PROM_CMD_WRITE 2
    9 E. A% _# U0 r4 d
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    : G. p- e, j6 M) k5 ~9 u

  19. ; \& r6 @6 e6 G2 a9 r; e4 q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    & `: {) u5 g) V. m- D
  21. {( l8 ~' e9 v4 ~8 q! f" b  b) u
  22.         int fd, ret;' ~3 _# v2 W! d  Q( r' g
  23.         e2prom_s_cmd arg;
      |* i* ]/ E: r7 y; W8 N8 q
  24.         unsigned char buf[0x18];, H, E" x5 L, M
  25. * f& D: n& w1 g: i
  26.         fd = open(E2PROM_DEVICE, O_RDWR);7 N$ u1 k7 u9 C
  27.         if (fd  < 0) {
    ) Q# C; E, T. W- N# c4 X0 F
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' q0 A4 c8 b) g& n+ L8 y: _7 S
  29.                 return -1;7 U& ?! ~6 w. S: l
  30.         }! _: q+ n+ z7 C3 V) J. a
  31.         arg.sub_addr_count      = 2;
    ' D( {+ x2 x' H; P! D* B
  32.         arg.data_count          = 0x18;; o- z5 q; a( I: ^
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ; I* x  \2 x0 l1 E
  34.         arg.e2prom_cmd_data     = buf;
    # g0 i/ ~6 h7 d; }5 Y5 [
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);$ f5 U. x) z: j. }- w2 ^
  36.         if (ret != 0) {
      j! V) Q. Q9 T9 P1 s  Y
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);- `* m+ I/ y/ F! h" p/ ]( U6 V
  38.                 return -1;* w9 x# P; C5 ?
  39.         }+ y3 q6 N/ b! F
  40.         memcpy(mac, buf, 6);
    , {7 V3 x! M/ k/ D% H
  41.         memcpy(stbid, &buf[6], 18);
    / P; }& o7 b& Q6 q. z! F0 J
  42.         stbid[18] = '\0';
    - D: d- W; y4 u$ L

  43. 8 J5 R* L& J+ A
  44.         return 0;4 ?- X) v) V* c
  45. }* r/ ?$ G( ?0 G( O% V

  46. 9 P" q( }6 [) d7 X, t% c: U' s& e8 }3 y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)' Y1 ]# T8 w& C% O. }5 O
  48. {$ y" O1 Z! G- g& K0 `& w3 ~* [
  49.         int fd, ret;* {8 g8 _: O2 A% t; J) {) V- ^
  50.         e2prom_s_cmd arg;! b! i  q: O5 C6 M, i9 z) \: [
  51.         unsigned char buf[0x18];+ `% d9 G1 M. U$ _" o
  52. + y- |9 G/ E7 I, c4 x, c
  53.         memcpy(buf, mac, 6);
    - g) z+ F, S2 _9 S( j, b
  54.         memcpy(&buf[6], stbid, 18);
    . \7 C; X: b* y1 {! L3 m" Z: E
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    % Y: @& {0 x. P* z; I
  56.         if (fd  < 0) {
      |& z- g2 o- q: i5 `
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 @5 t# d7 a+ _) [% ^* ^
  58.                 return -1;$ M- s6 R3 P. O& O  n; P% y
  59.         }
    7 l" }9 T8 x" o& h8 o1 Y
  60.         arg.sub_addr_count      = 2;& O5 E/ T6 _3 P
  61.         arg.data_count          = 0x18;
    3 z- X- T/ n. {- z1 o9 b% V
  62.         arg.e2prom_cmd_sub_addr = 0x290;: \: p2 {( p* e
  63.         arg.e2prom_cmd_data     = buf;7 V/ ~8 i8 M* s: P4 Y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
      @  l. B1 o, `: \1 X& q, c8 q
  65.         if (ret != 0) {/ k0 C, m% @, K0 _# G
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
      V$ `7 U  G- G
  67.                 return -1;% _# }/ N8 ^! \$ C" N  N+ {
  68.         }0 i( ?& Z8 c, `
  69. ) ^; @% h  p) e5 {: a
  70.         return 0;: [( R% x& F1 s% n0 v# K1 h
  71. }! q$ p/ ^9 t' v# r' |
  72. , \6 g9 B. ?3 {5 a8 T3 h
  73. int main()
    ' Q3 k, [4 M) q/ J9 _+ h
  74. {/ h/ E) ?2 M$ C0 w: B5 e5 u8 Q5 ~
  75.         char c;
    ) O/ r' l/ s2 i. r$ k
  76.         int i, macs[6];4 R# s; P+ ^3 m5 P7 C4 a# R
  77.         unsigned char mac[6];. R9 f8 ~, s' t  J
  78.         unsigned char stbid[256];
    : O0 V( t6 l4 b6 ?" W7 f( Y3 F

  79. ) \, ^! |; w% o/ @3 l/ K( y
  80.         if (readparam(mac, stbid) < 0)
    0 F& \0 `3 ^( o# i5 n
  81.                 return 1;2 g6 ~2 ^3 L+ }3 Q: ?
  82. . [7 @+ A- M: J! R% w9 j
  83.         printf("Current parameters: \n");
    % W6 X! ~, i, g2 e# ~4 b
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 y6 I0 u0 K+ Z& o( G
  85.         printf("  STBID: %s\n", stbid);$ X+ R( w  g/ R- s
  86.        
    ( Y  C5 ~' y7 X- L% c5 R1 w
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    , o7 [& K, Y& V# J3 `
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    8 u" z1 G- Z0 _! z
  89.                 printf("Input MAC error\n");8 v% P- P- f5 i& M: n) l
  90.                 return 1;0 `3 E  u0 M" k9 u. G1 c
  91.         }
    1 F* p- \' w% O. g$ E
  92.         for (i=0; i<6; i++)mac[i] = macs[i];) f" z6 l- _$ b) a4 `1 {( d
  93.         printf("\nPlease input new STBID: ");, A6 Y' w/ O; S- i! f0 a5 G. y
  94.         scanf("%s", stbid);, ~1 z: g* J% s( M5 d7 |
  95.         if (strlen(stbid) != 18) {7 ?' ]9 E( A' j- {& a- a
  96.                 printf("Invalid stbid\n");
    3 c4 m+ s2 X1 y: `; j
  97.                 return 1;
    ! J. L, u  Z5 n& }/ c7 [) ]; t
  98.         }
    2 [! q6 H3 _1 h+ I5 M8 o1 m
  99.         printf("\nNew parameters: \n");% F/ k. \/ E7 x& w! `3 g+ @6 D! Z$ B
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    8 P5 M4 w! B# V; k9 e
  101.         printf("  STBID: %s\n", stbid);1 |9 c) j2 Z- [/ O" }* h* S
  102. 2 F8 v( M4 u5 a  E
  103.         printf("\nDo you want to change paramemters? (y/N) ");* A5 ]4 ^/ g; h( m9 V
  104.         for (;;) {/ I+ _. e' m' k- ?; u7 X
  105.                 c = getchar();2 V+ @5 `- R% B0 s$ Z. J! K
  106.                 if (c == 'y' || c == 'Y')
    : A7 S$ p: ^: g0 I3 ?
  107.                         break;
    , D2 x# C& m: S( [/ I3 u. o
  108.                 if (c == 'n' || c == 'N') {
      w4 o7 b, I# F$ ^# J( G" Z# e
  109.                         printf("\nAborted.\n");+ z1 ~! n& x5 M
  110.                         return 1;. G) g0 X/ L+ S# i
  111.                 }
    ! y: n& k  E4 i" s* [
  112.         }; x4 l1 y8 s  {/ ]( V' n0 ]
  113.         if (writeparam(mac, stbid) == 0)
    / U! i6 c, \0 o) k# A0 L: N
  114.                 printf("Parameters changed.\n");
    % s' l4 y/ R4 E! G+ _) z7 }- _/ M

  115. 3 q2 Q8 e+ z# M7 E) x1 f! w
  116.         return 0;
    ! Y2 o) l: U. n9 [
  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
. ]- m! V- t+ w9 N' k在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

, {" T' N* _/ {2 x5 n你用的编译命令行格式是什么?* N3 S' B- w! \
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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