查看: 16575|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr* Y6 Y) s2 j! @$ x5 a
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    & f7 |! W( H& t3 K
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
) }" D4 \' K1 R$ h% ^& }. M* kusage: himr <address> <value>. sample: himr 0x80040000 0x0
4 C& ?# o# V+ l, N  y7 Q1 k: ^8 w9 T( d/ \
) n5 w7 t2 B6 r
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& ?# D6 H- N! W2 K# l$ i

! V* W: C9 \( _: J4 K8 Q补充内容 (2012-3-8 09:42):  V# D4 ?. \5 E: j5 `( [
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% M" e3 Y; n$ A$ t5 o4 o; L
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。2 ?/ }; z% h" Z7 p+ X3 P! i+ P
  s$ E% o5 P. o# K
himr <address> <value>. sample: himr 0x80040000 0x0
' U2 d7 K9 o4 H  \2 b$ y4 i- g" T3 I5 j# w- o
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。1 ^2 `: F( V$ V6 V% o2 ^
himr 0x80040000 0x00
/ \& e7 t  `$ E2 Q5 X7 vhimr 0x80040001 0x11
9 I6 C6 `4 n; R6 u& }! Ohimr 0x80040002 0x22
- S. @& L  x5 j/ e' |5 L8 Dhimr 0x80040003 0x33; @+ i* I; x, \; Q. K
himr 0x80040004 0x44
" {7 o& k. A. I% h! K7 ^himr 0x80040005 0x553 F8 r: b# N' j( |

+ b- T7 Q, n( n' B2 F' E# Y+ ~: cSN也是类似。
& ~+ l/ z/ Z3 Y7 \6 a) ^2 J% X2 }( E) Q! |5 S/ c: Z+ Q
现在主要是,谁告诉我们MAC和SN的地址?4 b$ a$ f% l. c+ i" g3 b3 h, R
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37   d5 ?* A2 n2 k, k% T; O" W
一直想找到运程修改MAC和SN的办法,苦于无解啊
! C: m+ l3 |. C
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 : F9 M) g  A, L4 x6 Q) E
$ [0 T* h% A# Q4 I# Q, n
修改的代码早有了。到今天不会编译。% A9 f$ n/ S; G  v
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    2 B! @4 L2 z" X# C2 L: S
  2. #include <malloc.h>9 {# \. q9 S. C
  3. #include <sys/types.h>  E7 d0 u$ u2 e% N
  4. #include <sys/stat.h>4 E0 Q+ d; G, U  Z/ K# X
  5. #include <sys/ioctl.h>  f. {& F' ?$ h0 y% }; ~
  6. #include <stdio.h>& i# w: m" _; p& C' b
  7. #include <string.h>
    3 [* P+ t9 j/ Y& H* s* ?

  8. ' {% p% z% B; O5 D
  9. typedef struct {
    . o; {! p$ d3 }6 m$ G" |
  10.         unsigned int        e2prom_cmd_sub_addr;
    5 Z+ T2 I/ x! R" Y! j  K
  11.         unsigned int        sub_addr_count;
    ; c& T3 U6 h- k& v) U8 [% p! V
  12.         unsigned char*        e2prom_cmd_data;- g% S0 B" e4 }3 m& z
  13.         unsigned int        data_count;6 }9 [# o1 q! ?
  14. } e2prom_s_cmd;
    + \+ l, J! z6 s' Z  D0 o

  15. ' X+ [5 B; x( ]4 y" R" ]
  16. #define E2PROM_CMD_READ 1
    - d9 e6 X7 p) z" o
  17. #define E2PROM_CMD_WRITE 25 a* Z: q1 H. r- b; P
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"4 \; n9 R! S. a5 H+ `
  19. & O0 m" ]! S$ w7 Q1 m( u$ x
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    * Q) B" u7 `% B
  21. {
    % q- ^$ O5 l" E, a0 i
  22.         int fd, ret;
    + ^3 K5 ?7 s  ~' ]/ p8 o, N3 b2 Y1 M. s
  23.         e2prom_s_cmd arg;& d# ]  m# S+ x+ E
  24.         unsigned char buf[0x18];8 u. o+ l) E' m/ s3 o

  25. 9 o9 G, h; M. t2 f5 x) x
  26.         fd = open(E2PROM_DEVICE, O_RDWR);' u& w. p, n8 S1 R! B& [
  27.         if (fd  < 0) {
    . Y" T. o) F; `2 F
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);7 ^& y9 Q  A& c+ i( V
  29.                 return -1;, b6 Y6 ?( D: [8 z# [. U4 {
  30.         }
    ' J: b' U* W" Q$ ^0 C9 I, v
  31.         arg.sub_addr_count      = 2;
    ' b% D1 }% C$ N; p# Y
  32.         arg.data_count          = 0x18;  k+ B& x0 |4 b' `) u: B
  33.         arg.e2prom_cmd_sub_addr = 0x290;! Y8 F  P+ Y; R7 o
  34.         arg.e2prom_cmd_data     = buf;
      j7 P5 U6 Z/ M, g5 D, i
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);' q/ u& C& n8 W2 h3 Z
  36.         if (ret != 0) {
    - C# f8 l3 k* ]' }0 a& Q* h$ p
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);4 p0 w6 V5 v+ K
  38.                 return -1;
    8 c% N7 J/ \1 ?7 _
  39.         }3 T0 k  @4 E8 e0 \/ |- I
  40.         memcpy(mac, buf, 6);; k" _% P& w! R3 v) ]
  41.         memcpy(stbid, &buf[6], 18);
    . P5 O. |; g& X
  42.         stbid[18] = '\0';9 e5 ]! r" J- ?" E) x" k6 V' y4 P/ n
  43. - r5 ?- F  p: [$ c0 a4 Q: T
  44.         return 0;
    . Q1 y, Y0 J2 W! `2 W- _
  45. }; ~  H. b0 G8 e' }5 A8 j3 q7 q4 ~5 z

  46. ; N9 }' R5 _& V
  47. static int writeparam(unsigned char *mac, unsigned char *stbid). @+ [( S: s+ {# }( \, j) D
  48. {
    . o: K! x$ M8 Q: \7 p
  49.         int fd, ret;, d  n5 B  ]. F9 s. K8 `& R
  50.         e2prom_s_cmd arg;" v; L( d2 L% i, |
  51.         unsigned char buf[0x18];
    . A& i3 e; K/ A+ L5 o+ ]

  52. : w+ e  U/ y1 {! C% M
  53.         memcpy(buf, mac, 6);
    ) L- W: k+ y9 i( W1 n
  54.         memcpy(&buf[6], stbid, 18);+ T2 ~1 y. E* C
  55.         fd = open(E2PROM_DEVICE, O_RDWR);$ ]8 N6 F" h7 U& o2 V. c& ]. I! f- X
  56.         if (fd  < 0) {& I9 h$ x6 D/ d3 w/ d6 O; ]; d6 x
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # F" L$ t2 f+ r. w% H
  58.                 return -1;( U1 `5 p: Q# Y* `9 D' X( [& K
  59.         }
    # U  Y: U! \6 t
  60.         arg.sub_addr_count      = 2;
    ; }& S+ c' ]" G6 ]# ]' e6 K$ ~
  61.         arg.data_count          = 0x18;* [" ]; T; o' T
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    5 v- m" U1 R/ m( E
  63.         arg.e2prom_cmd_data     = buf;
    ( D) n2 B% _& q/ l0 u
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    0 T2 \. i2 N" @( ]* r( ?
  65.         if (ret != 0) {
    0 X! x. O, g% I
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    $ o( f3 \& H% U* G6 j  W
  67.                 return -1;$ O) o: \6 A9 j7 x5 ]  M9 m; F
  68.         }
    & m( r, e" C+ f( m. P* ~
  69. - G% n/ R" }# H2 `9 m9 ]) U
  70.         return 0;
    6 Q4 W+ T& }0 y
  71. }! a: D* u( P7 G

  72. : z4 N' [  W. q) ]$ l: d' G
  73. int main()& i! X8 [# l: ?
  74. {
    1 a$ \) n, }7 `. Q: z9 _
  75.         char c;2 n. f; u/ y/ [. P" G, f
  76.         int i, macs[6];: x" H  L& o- y. A( i0 C0 E9 I
  77.         unsigned char mac[6];4 d5 a5 k( h& R- D6 B) g2 Y& a7 u
  78.         unsigned char stbid[256];: {$ F  G+ l5 T+ D' O6 M
  79. * d0 x( K! E  _# y
  80.         if (readparam(mac, stbid) < 0)4 T; ~0 n6 f" L( }; e# Z  C4 Y. n8 V
  81.                 return 1;
    / Z# T8 g" J: I( r

  82. ' A8 _6 D4 a0 |' s, _2 {# O, v$ O
  83.         printf("Current parameters: \n");, d/ c; f: Z; A$ k' m3 N
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 P+ l1 K8 A9 w( B
  85.         printf("  STBID: %s\n", stbid);8 Z2 d" b* k* a* D
  86.        
    4 |5 o$ L: Q( L
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");  U( Q9 Q  P: Q3 B  e
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {: r6 C; w# @4 F  E1 I- Q" P: x/ ^
  89.                 printf("Input MAC error\n");
    # Z* m- v2 }& S
  90.                 return 1;/ {$ V. d6 s8 @9 T  I
  91.         }
    * W4 Q2 o) Z7 U& t* [, ]2 u+ A
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( J2 A+ K4 N- w
  93.         printf("\nPlease input new STBID: ");
    7 d: X4 Z- v+ W: Q, b
  94.         scanf("%s", stbid);! w0 x' t) Q' k" B) }4 @4 G
  95.         if (strlen(stbid) != 18) {
    ) v- I5 x/ W& {* m/ p% l
  96.                 printf("Invalid stbid\n");
    7 X# l8 m+ z1 h5 J, T6 p- C3 {$ _
  97.                 return 1;
    : W, c" w! [& n, b' b9 E* p
  98.         }" R  n3 O; M# Z! p) c2 a8 [
  99.         printf("\nNew parameters: \n");
    5 e" z! e$ a8 N
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , h! H2 J+ u! [: H- S6 i' {
  101.         printf("  STBID: %s\n", stbid);0 q1 h. ^, X& O2 U3 O. x6 \0 ~
  102. & K0 y! \+ E) y, U, @
  103.         printf("\nDo you want to change paramemters? (y/N) ");2 G' d2 @  b7 r
  104.         for (;;) {
    , `: f( g' K- ^
  105.                 c = getchar();/ P& Q7 |3 g% g9 @
  106.                 if (c == 'y' || c == 'Y')
    * q9 V* h4 ]% H% A, [4 Y9 n) K
  107.                         break;7 V$ m6 V, Z* \; @, w' \
  108.                 if (c == 'n' || c == 'N') {
    7 v9 Q2 m& n1 i. z; M
  109.                         printf("\nAborted.\n");. d- Q8 I8 u7 ^0 l
  110.                         return 1;( P) @! Y0 {  l1 T" q6 F: ?! j
  111.                 }9 U. y3 Z+ ^( ]; \+ Q
  112.         }  ?  T( Z9 e8 p( ?2 g
  113.         if (writeparam(mac, stbid) == 0)
    $ u$ T) ^% r) q0 v
  114.                 printf("Parameters changed.\n");
      H9 ]7 q# U$ B9 h. P: D* X" B
  115. 9 D2 Z. [# e0 e# a5 p/ h4 Y
  116.         return 0;! n: [* H0 Z% [; ]$ [% R. S$ m
  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
& ~- Z7 m0 `  E& }在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

8 E/ j4 Z' c' q- b( L你用的编译命令行格式是什么?9 L, m/ f. N& v
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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