查看: 16693|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr2 w! I7 Q9 ?9 \; k
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    7 L* U0 a3 Z# L+ ]
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
+ q" J/ o9 t9 w0 t& Zusage: himr <address> <value>. sample: himr 0x80040000 0x0+ K! X* O+ M% T
8 O) U; |+ ~5 O! k" N
6 r8 K4 ^' v) M  [
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
7 w0 s+ z% f5 C4 T. F% {: [3 o& L) o* u5 F
补充内容 (2012-3-8 09:42):' ~$ N$ @4 Z1 K, O7 ]6 A
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
5 C( e9 F' {. K( N0 B* F2 U- ]) S9 T这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
8 L- R7 r, W+ x1 L7 W( ]' f: g+ |
himr <address> <value>. sample: himr 0x80040000 0x03 ]1 s+ {; ]( y) S0 L" y: k
0 w5 U! ^: o9 m+ K
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
$ ?2 C* \2 j, I6 V2 U0 Jhimr 0x80040000 0x009 Q* L, _* T; J7 a# W# H, h
himr 0x80040001 0x11
! [* j  ~; F* Y4 h- N# Whimr 0x80040002 0x22* n3 k0 x2 e2 f: ?
himr 0x80040003 0x332 v4 C8 d/ i$ U% }4 a3 l, u
himr 0x80040004 0x44
* R& @$ M+ |$ A* whimr 0x80040005 0x55
- Z# X. N$ W9 R1 K  r/ ^# ~6 I4 v. @+ ]" a
SN也是类似。
# @8 V& F4 o8 |# z4 p5 r4 E1 ^  U% M& A! B/ e# I% r
现在主要是,谁告诉我们MAC和SN的地址?, v3 ]8 f0 }9 P, y. ~
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 0 s/ J- @0 b% Z/ U- Y4 D+ _
一直想找到运程修改MAC和SN的办法,苦于无解啊
* r# }+ p0 d" }( |1 _( R( L
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 $ N% _. Q  R/ w4 D6 n

+ t; @' g8 ]& J% ~9 {* z修改的代码早有了。到今天不会编译。
1 `1 r6 u6 d8 U2 \& ]需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    2 o( q# [6 K9 w+ c/ ?6 A& I
  2. #include <malloc.h>
    $ F9 c7 k4 ~4 i5 m
  3. #include <sys/types.h>( ~. Z- p* O" `$ E2 t( D# i
  4. #include <sys/stat.h>
    5 H* N$ J/ I5 e8 T
  5. #include <sys/ioctl.h>
    / s, a) t: a  z8 d$ I0 w) g
  6. #include <stdio.h>8 _1 n' y& M# X+ i
  7. #include <string.h>
    # |- v' g' O/ _8 R- B! y) t
  8. + E* x5 J" T% O% ^/ v* v+ b
  9. typedef struct {8 Q- m6 J) L( n8 f' T  \7 E
  10.         unsigned int        e2prom_cmd_sub_addr;
    ! x' h8 T* Z7 P! c2 ?. n
  11.         unsigned int        sub_addr_count;
    1 D6 X! `7 n0 j7 R" ?
  12.         unsigned char*        e2prom_cmd_data;. J( v. U! u& E. x8 Q3 p1 ?
  13.         unsigned int        data_count;3 Q: m0 N7 ]7 H/ j) K6 u
  14. } e2prom_s_cmd;7 p- b1 p( j0 C7 G1 `

  15. * O+ r5 L% P( I  u2 l
  16. #define E2PROM_CMD_READ 1$ j- m& \, e5 W* _
  17. #define E2PROM_CMD_WRITE 2
    : e4 W- g0 J  {( e; Z
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ' _% X7 Z. A. u0 e2 G
  19. " R% l6 v" \2 _; E& }5 y) G) E
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    . f" w, h, y1 y5 s' O1 i, ?7 a8 l
  21. {
    7 @* r6 G- w5 y( U+ v
  22.         int fd, ret;
    6 ]! F9 t& G' g3 e& I& q9 |
  23.         e2prom_s_cmd arg;& K+ a; X5 K1 H, u9 o4 }& i0 u
  24.         unsigned char buf[0x18];
    . v7 ~/ j5 ?0 p7 ~2 p8 w" ^4 L

  25. 9 k$ z3 U& b- A
  26.         fd = open(E2PROM_DEVICE, O_RDWR);3 p# k* X6 b: U0 F3 b- w
  27.         if (fd  < 0) {
    . r! ~) z9 A$ I6 A
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 j8 j. J* R- I) _, w
  29.                 return -1;
    % x1 H8 p3 L8 ^  S
  30.         }
    # x# j! P$ {- l6 ^8 J5 [4 i
  31.         arg.sub_addr_count      = 2;
    3 x7 F' F' u5 V9 }2 @6 Q9 C
  32.         arg.data_count          = 0x18;, C& x& w5 w% u  q
  33.         arg.e2prom_cmd_sub_addr = 0x290;: p2 i" a! y8 P
  34.         arg.e2prom_cmd_data     = buf;
    ; O2 D( v7 F% x
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ' i4 G+ @# z! G2 O$ G
  36.         if (ret != 0) {6 Y$ x4 i# z8 t, l* j9 ]9 s
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);2 h# U1 a8 v; m, r& i
  38.                 return -1;
    : a' K9 N* P4 K9 u
  39.         }; h3 T# }9 R) S) E
  40.         memcpy(mac, buf, 6);% S3 `$ K4 z* F4 h  c! V6 J
  41.         memcpy(stbid, &buf[6], 18);" a& y( F# A" p
  42.         stbid[18] = '\0';2 s. r* g. q% p9 [" d4 T0 ?
  43.   D6 [" u# G  d* v4 y
  44.         return 0;
    6 a0 v: F' w6 J1 R, ?
  45. }
    2 W; Y, A, C% }) V/ {- {/ D

  46. ( }0 Q! _4 L* |- B: [
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)- M+ O& Y% L& {! V7 B: D6 ~
  48. {) \# j9 @3 I* [) y7 B
  49.         int fd, ret;) b( r! c0 B; ^7 m% U5 Z) U: H
  50.         e2prom_s_cmd arg;! J# V/ q3 i8 G: Z
  51.         unsigned char buf[0x18];
    + b- X; P& W: p; z" w6 n
  52. # j4 ?( ], [7 \% v8 b3 q$ t
  53.         memcpy(buf, mac, 6);$ S8 S" [! c/ T2 E3 ?. O$ }7 z
  54.         memcpy(&buf[6], stbid, 18);; g9 D  a# Q' g  k3 G% t
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 U, C0 `  w9 v; d0 p! }% P
  56.         if (fd  < 0) {( D9 H8 q) h* p1 F" u* v# X
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 Z. `" D: x6 r6 x4 s0 Y& ]
  58.                 return -1;: g; h' o% f) b
  59.         }; W+ t9 r5 |% m& q7 {- }
  60.         arg.sub_addr_count      = 2;
    ; A) C  P/ u3 L7 a) ^( P
  61.         arg.data_count          = 0x18;$ j2 X  D- {0 s2 w. n- c6 x
  62.         arg.e2prom_cmd_sub_addr = 0x290;+ ]9 }! F5 P! T1 e6 k8 s
  63.         arg.e2prom_cmd_data     = buf;- K; i( n5 W/ Z$ D8 v+ C8 h
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);7 V9 b% H* }9 e: f1 E
  65.         if (ret != 0) {
    4 x5 l* g- s0 ]8 [/ \
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);/ N. }3 ^, n& X6 G7 S& a
  67.                 return -1;3 d2 H2 h) r) D  R4 @6 Y
  68.         }
    ) T& q) L, G! Y
  69. 7 e" A- g* x1 Q. q* [! F* _
  70.         return 0;
    $ M9 S6 y2 k$ ?6 W+ S2 y
  71. }' ?' J. t: b8 y1 w+ r  J: n2 ]
  72. ! F8 l6 ]1 T+ u( H
  73. int main()
      {3 Y! @4 _5 W' U" q
  74. {! K7 k4 a& J% {! [
  75.         char c;0 |3 c! d0 J: p
  76.         int i, macs[6];
    : o4 ]( T5 S+ @6 H: R, j4 O
  77.         unsigned char mac[6];
    $ `6 _9 Z& P6 g6 u* O) Z
  78.         unsigned char stbid[256];5 }% l7 z* V- s% ^

  79. 4 p0 I% b8 k0 E* e# c
  80.         if (readparam(mac, stbid) < 0)
    , a0 B, W) B( d0 a. W
  81.                 return 1;
    ) H3 z; M  ~7 w1 F8 [" E. q

  82. , S6 R# g; O* t
  83.         printf("Current parameters: \n");
    5 {) O7 c7 O  r5 i
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 A& m/ c0 w, ~! ]# e
  85.         printf("  STBID: %s\n", stbid);
    3 _1 E* ~9 k; e
  86.         # z( W3 }) V4 m- z( V
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");; P2 G: @+ U& T7 W$ N
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {! G0 y7 H; O' Z& R
  89.                 printf("Input MAC error\n");
    / C7 r$ e3 m  T, \/ a
  90.                 return 1;
    % s, M6 c: v& b+ |  P+ R0 R2 ?
  91.         }# T& V* q/ Z( T0 g- D% f  R6 Q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];4 ~; }8 v9 J/ q9 R' r
  93.         printf("\nPlease input new STBID: ");( y% O+ W* s/ J! }$ q0 z
  94.         scanf("%s", stbid);
    4 L, h" m  K$ @) m6 t& s& U
  95.         if (strlen(stbid) != 18) {* B' T6 p! A+ c* N3 N7 i3 ~
  96.                 printf("Invalid stbid\n");: E: Y! F2 z3 v8 J
  97.                 return 1;! h9 w% R- a3 u7 W, J. ?6 g
  98.         }4 L/ u* O4 E% e! F: D. t) a
  99.         printf("\nNew parameters: \n");
    0 m$ @  B4 j1 V8 A, f, K% E) H: @, b
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  N6 R8 G$ a  c
  101.         printf("  STBID: %s\n", stbid);
    + v  [5 x; T5 O$ r3 D
  102. 2 ^5 b$ M2 y& C
  103.         printf("\nDo you want to change paramemters? (y/N) ");2 M! ]8 H# g4 p# K6 T( M
  104.         for (;;) {
    % x# t/ M4 A, q5 z3 h, r4 I" }
  105.                 c = getchar();; [: I" a+ {! ^. R' K: E
  106.                 if (c == 'y' || c == 'Y')
    ' i- [; I/ _9 N5 M; U% ^8 ^
  107.                         break;
    % [8 o' h/ A' E; x
  108.                 if (c == 'n' || c == 'N') {
    ( K9 U' @; L) L) f! D
  109.                         printf("\nAborted.\n");
    5 z9 R! T. c1 \0 P0 W" i
  110.                         return 1;
    7 V1 i' v( y  I# Z5 c" Z
  111.                 }7 m; J& J+ Q* h
  112.         }
    8 W8 a* @/ G8 S- a* k, z: M
  113.         if (writeparam(mac, stbid) == 0) / X/ B+ k2 v+ p. ^; Y. L
  114.                 printf("Parameters changed.\n");) Z1 S" l& Z7 p+ X& r: M$ b
  115. - Y3 F% n% G, L6 D! _4 F3 m" j
  116.         return 0;
    1 W) \/ w; M# N! _$ t* x, k
  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
& B  t+ ^2 h0 D2 u在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

2 h) `2 P, r7 W- Y你用的编译命令行格式是什么?
; F2 S; c/ _- b3 t# C5 l
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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