查看: 17051|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr  C3 q8 b. `' ]! }6 @/ u8 O
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig8 B: v! u. `* r
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:5 {! s6 K( f% I. v9 E! e3 v+ w8 J
usage: himr <address> <value>. sample: himr 0x80040000 0x0
  x# ^' v- ~6 p3 X
! |: ?: @" m9 i6 ~1 I1 |7 [& k1 p7 {. _1 v+ p# K8 w
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?: ?# v1 P, N9 {1 v$ Z3 `
7 j7 ~, b- Y9 w( V
补充内容 (2012-3-8 09:42):
+ z( a* m3 ^& thttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
/ h6 e2 [' s) x$ r3 M/ ^7 n, C. h这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。, _% ~4 Q: K$ S% I' x1 d  Z4 P' Q2 x

/ b0 n% b- c- |8 Whimr <address> <value>. sample: himr 0x80040000 0x04 ~7 {" j9 j; t7 [& m

' }/ ~( @+ E: C+ ^+ m; l( e1 T, d例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。5 A. U! d" d1 ?3 X) U: F! t; P
himr 0x80040000 0x00# d. `1 [& [3 o; K
himr 0x80040001 0x11
+ h/ v. i: D; N9 Bhimr 0x80040002 0x22
9 J4 d5 D2 d+ P- [- I: j/ n: D- Xhimr 0x80040003 0x33
1 O9 m( B* m. P4 y, q, a% Jhimr 0x80040004 0x44
* P+ Y& Y4 }  [  @- q! ]himr 0x80040005 0x552 ?3 m/ _$ a1 m& j. J/ `

' P& T9 X8 X: B: O- H% d1 PSN也是类似。
/ N1 Y0 V2 H( ~- x7 a8 U* w4 R. ^5 T: ?0 ?9 O* y6 U+ _5 g
现在主要是,谁告诉我们MAC和SN的地址?: T# y( g6 G9 A) [
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
+ [! W, g/ k2 O. E2 q( Q一直想找到运程修改MAC和SN的办法,苦于无解啊

: X  z) g0 A) \* W* i源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ! P7 @8 Z! H' C1 e3 X% y# a- g% W
$ \+ N( I9 A0 b$ o0 ^9 H
修改的代码早有了。到今天不会编译。- Z+ e9 U$ t$ G
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    + E. z% g7 |. J1 @
  2. #include <malloc.h>
    6 W2 S0 W5 N# D9 q8 w' ~
  3. #include <sys/types.h>
    + ?" M, ]* q# f# G
  4. #include <sys/stat.h>& N5 d6 T, k# w8 v% ?! g8 {5 A  f
  5. #include <sys/ioctl.h>9 o9 _  _" c& l  V
  6. #include <stdio.h>2 K6 {( A7 V+ \$ f) A3 U
  7. #include <string.h>
    * U$ i7 N6 @9 d' N+ r
  8. & o  r! f4 d/ A  l" S
  9. typedef struct {) A& P- m5 ~5 [2 V4 e4 ?
  10.         unsigned int        e2prom_cmd_sub_addr;4 ^, Q2 [. P% L% T+ N
  11.         unsigned int        sub_addr_count;( @- v& M- }0 D" U( f/ S
  12.         unsigned char*        e2prom_cmd_data;
    & o/ b8 S1 r7 V
  13.         unsigned int        data_count;# ^; G2 ]& B: H- Y% I6 Z
  14. } e2prom_s_cmd;- d( r, c( t1 \; y- z1 x8 \* F, P- K

  15. 7 A7 a" C1 i1 |; @
  16. #define E2PROM_CMD_READ 1% t) [: ?' b! Y, K" i5 p
  17. #define E2PROM_CMD_WRITE 2
      X) @" T, C: A6 C+ h$ h) D- o
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    , B( ?! e) A& B/ G0 X$ M5 [
  19. ' x( g( y: C* B1 f) H0 q4 C
  20. static int readparam(unsigned char *mac, unsigned char *stbid), G1 Q$ j7 s2 T6 l- `
  21. {
    2 c/ W" U- {" R4 D# E: H
  22.         int fd, ret;
    ! O4 O2 {7 }0 P1 d6 @
  23.         e2prom_s_cmd arg;/ p. k* S9 e5 x" w6 L8 x% q
  24.         unsigned char buf[0x18];
    5 A+ t1 f! k/ c: S9 K5 J3 Q" Q
  25. 0 K: m( A! s$ c. S6 U, ?
  26.         fd = open(E2PROM_DEVICE, O_RDWR);" X6 j+ l- y0 g1 R! k0 g$ p
  27.         if (fd  < 0) {
    - F* p9 i: W7 c0 e+ I$ _
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) l8 U* J, I! E$ d, c& D
  29.                 return -1;
    ) T6 K; x+ o# C8 B6 X5 j
  30.         }5 \6 l0 i* z( {! T0 C. |" X, O
  31.         arg.sub_addr_count      = 2;; H" y$ a  x2 A7 A. D/ u: H; d
  32.         arg.data_count          = 0x18;
    ' b* z) X! x5 l2 t. \! i5 E
  33.         arg.e2prom_cmd_sub_addr = 0x290;- s4 f. i/ g! k/ d- P9 H
  34.         arg.e2prom_cmd_data     = buf;) a' r" G2 ?+ o  ]# n2 D
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    # N9 x' r: Z8 I9 }
  36.         if (ret != 0) {' a. S2 O6 U) p/ g: i, x
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    9 T7 J# {# Y# a8 t/ F2 `
  38.                 return -1;
    - N2 `7 |# `9 [+ s: U+ |
  39.         }
    6 K% v# u! g/ O5 F
  40.         memcpy(mac, buf, 6);2 h: s6 A* D  J9 E
  41.         memcpy(stbid, &buf[6], 18);6 }- t3 I1 n" ~& W: P* q  x  }
  42.         stbid[18] = '\0';7 X3 I: [/ y) f& C
  43. $ o) v; H: C6 H7 _
  44.         return 0;! X: \- w6 o/ ?6 `2 j5 z& K1 ^6 Z
  45. }0 v4 _+ [! l" _- Y& `5 Y) p

  46. 1 H+ p& b$ G5 a" \5 T
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)$ s* F) _5 Y0 x/ H( a5 L5 `$ l8 f
  48. {6 y; i/ q- h; s. s8 j
  49.         int fd, ret;/ n* Z( |/ Q* W1 I
  50.         e2prom_s_cmd arg;  \2 a2 I6 r3 L* {9 O
  51.         unsigned char buf[0x18];9 k/ a9 y' p# E+ b+ ~  b8 M
  52. & }7 y( N5 s4 m1 z+ ^
  53.         memcpy(buf, mac, 6);
    1 Q8 b# G' b" G$ U! w1 A
  54.         memcpy(&buf[6], stbid, 18);
    2 r  a9 C& d$ s& [7 u1 Y3 h  \
  55.         fd = open(E2PROM_DEVICE, O_RDWR);7 b1 G# {6 r3 R+ O  u/ d) _" `, z
  56.         if (fd  < 0) {
    1 z5 Z# m# m, i% y3 ^. C+ n
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);& u& }. [. C/ z9 \# e
  58.                 return -1;- r7 H+ }" H1 N, Y$ p* S1 J
  59.         }0 T3 T# i  v$ F& n. Q8 b( j
  60.         arg.sub_addr_count      = 2;6 W, t) b+ A7 {  i+ e$ b) \
  61.         arg.data_count          = 0x18;9 O4 F+ P8 J4 w2 |7 D
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    $ Z; i7 K* q9 Q/ M
  63.         arg.e2prom_cmd_data     = buf;
    4 n2 ~0 j8 }( V$ V: [
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    1 l1 _1 r4 ^! x  x! t
  65.         if (ret != 0) {
    . B* e" v1 V6 D" I/ B
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);, m7 n* o( D6 t6 k2 Y  k
  67.                 return -1;2 `5 J# \$ _4 i' `2 v* T4 Z
  68.         }
    ' C  W/ G4 t: M
  69. 8 t: C$ T% M& Q# ?6 j( A* Y
  70.         return 0;& H) @: |+ ~& L7 y+ V# O( x) X# E4 s$ \
  71. }" ]/ {0 k$ [" s* a

  72. # r. _+ P6 [- t
  73. int main()
    8 A  Y# `( `2 F
  74. {
    ( E5 W: _4 D' z! U9 P! y. ?' d
  75.         char c;  u- m8 i% D; [6 L) L, R5 ]
  76.         int i, macs[6];
    5 z1 t$ ?; }2 V: d5 ?
  77.         unsigned char mac[6];
    % p7 @; A& Q$ e- R
  78.         unsigned char stbid[256];: B; q1 C0 T6 x% I6 k
  79. % A5 q8 `' p: D/ e7 v( A: b
  80.         if (readparam(mac, stbid) < 0)& z* N3 {( x: _! }
  81.                 return 1;
    ! y# k$ y% v1 {. x' I+ v

  82. $ i- Q$ I8 j; w0 }2 z4 n1 Y" k
  83.         printf("Current parameters: \n");
    9 ?+ X. [! I4 D" X
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 v: i( l2 r8 F, w' }+ i7 ?' c
  85.         printf("  STBID: %s\n", stbid);: F$ l2 M9 s' {. x/ U: x
  86.        
    4 \1 r- g: [# `) {
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    8 p  v" ]  n9 k# F7 @& `
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {$ l- e2 M7 E- k0 L
  89.                 printf("Input MAC error\n");; h2 j1 V1 K, }% j3 t7 o
  90.                 return 1;
    % A8 g- O: a: Y% I# }
  91.         }
    ) v8 [3 }' r8 T* B+ s$ p5 _& _1 l
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    & T4 x% |$ o; Z7 @4 f1 \7 g8 P2 P
  93.         printf("\nPlease input new STBID: ");
    % j2 I( i( f2 M& I+ I
  94.         scanf("%s", stbid);8 u1 g, S- I; u% R
  95.         if (strlen(stbid) != 18) {; d$ h% j' Y3 `, h- |3 g
  96.                 printf("Invalid stbid\n");
      T$ W% E* l& ~+ Q! p
  97.                 return 1;6 |0 X" s3 H9 e- [$ E
  98.         }: x& Q/ o( l8 P3 E5 v) J
  99.         printf("\nNew parameters: \n");7 p7 g1 W# h4 P+ }8 a9 f
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 b3 X& R. l/ g' d  a5 d
  101.         printf("  STBID: %s\n", stbid);+ W: l$ g5 b9 w5 s
  102.   h' p" F/ U, n! I/ v, p  f8 i
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ; A! |% L2 L+ V( ]3 D
  104.         for (;;) {+ }* Z  ~. u3 _
  105.                 c = getchar();2 \/ g8 T5 i5 }  j
  106.                 if (c == 'y' || c == 'Y')- h  F4 ~, g2 E2 ^, k3 d
  107.                         break;
    # n2 c% h0 k/ N( |0 y- `# q
  108.                 if (c == 'n' || c == 'N') {
      w1 ]7 h" S7 K. w; _0 y2 W6 S
  109.                         printf("\nAborted.\n");
    1 z7 k! p: U7 ]  c/ E- o
  110.                         return 1;3 e- Q# m0 T9 ~& O. t# @* ?: c
  111.                 }
    2 U- n) Z+ p; L4 J
  112.         }2 G* @3 L! B/ L8 R! r
  113.         if (writeparam(mac, stbid) == 0)
    ( i% K) u' F3 m2 D7 p
  114.                 printf("Parameters changed.\n");
    7 [. M- C" r' m9 \8 ~) g
  115. $ L2 W( F3 w; r/ ^) C, g; m: {: w
  116.         return 0;) I1 Z8 I+ t6 A) V
  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
; Y: k5 M' M0 o9 d3 n, m3 W在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

6 y% a' J- `# L3 p  n你用的编译命令行格式是什么?
) i% o- I5 D: O6 Q  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客服返回顶部