查看: 17833|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr' I7 v  X, }( Z$ o
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig- l# l- X) S. H) T4 G2 H
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:  D9 V9 V# F2 ], g8 }5 ^
usage: himr <address> <value>. sample: himr 0x80040000 0x0/ ^" M5 d/ U1 A
9 t- \+ u/ C/ n! [% i

, b4 f2 E2 N0 c2 u- a不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
; v! J2 m8 Z9 G2 W% {0 k
/ Z/ Q3 M( ?$ S5 l/ k# k补充内容 (2012-3-8 09:42):
8 x7 d$ ~, z+ j! \1 }+ qhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数1 y( s; N/ U& Z9 V! t! u& s0 m
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
9 ~. Z8 y) ~& U3 h. a5 k# c8 A
& I. @  T3 V& A$ C; z  Rhimr <address> <value>. sample: himr 0x80040000 0x0( T( f7 b1 N( S1 O9 p9 T! T- E5 f
6 G2 g* @. S4 B2 V5 S
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。$ P( \0 E$ e2 B
himr 0x80040000 0x00
3 K! c# j- a. M! V  ~8 g' \himr 0x80040001 0x11
$ f* j7 L# {; r2 \himr 0x80040002 0x22
* y* O# R# ]: U& H- Qhimr 0x80040003 0x330 x7 \  y, d: ^0 R( F
himr 0x80040004 0x44! {( K6 Q9 e# `; L
himr 0x80040005 0x55
) W9 H# d9 r) \/ t/ l* H1 ?( U0 E% ]* t" ]8 P- u. I* S
SN也是类似。
- f* {+ o& m+ H+ h% k% o" ~4 P) K. v
现在主要是,谁告诉我们MAC和SN的地址?0 l2 E* x+ m' m7 g+ B. B
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
* V- C: z# d$ P: p/ T7 ^一直想找到运程修改MAC和SN的办法,苦于无解啊
% c! _8 P+ F- c+ x( L$ Y& w
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 5 u/ J9 X3 H& N, }

) {3 Y5 i: R1 M5 k" b0 k修改的代码早有了。到今天不会编译。& u) y4 g+ R: x
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>7 K- L; x& T; m; n4 M/ I% W
  2. #include <malloc.h>
    % H3 o2 y  h( o" \: |* _
  3. #include <sys/types.h>
    1 V+ {1 f; N2 l$ u' D) c
  4. #include <sys/stat.h>2 S/ M' l# o) m4 D7 z
  5. #include <sys/ioctl.h>- |+ D, p  w- o0 N
  6. #include <stdio.h>
    0 L$ t1 K+ `( f
  7. #include <string.h>
    " D4 d) c4 [, a" w/ Q* O0 f

  8. ! H. r6 |! z: C1 W# A* v- |! c
  9. typedef struct {; S5 q7 T  I" W) f/ t7 \9 R3 i3 q
  10.         unsigned int        e2prom_cmd_sub_addr;8 ~& Q* _- h, A$ T9 X) q! Q
  11.         unsigned int        sub_addr_count;
    0 l/ ?$ W) {; U  H  R, s3 U
  12.         unsigned char*        e2prom_cmd_data;
    ! b6 g4 O6 y$ m# N$ z- a8 g* z' c
  13.         unsigned int        data_count;- m& s' J( s- m0 h7 G" p
  14. } e2prom_s_cmd;
    5 E& y0 Z% g! P% ?: J

  15. 0 [5 o0 o  l1 `5 h- z( W1 s
  16. #define E2PROM_CMD_READ 1
    3 ?2 \8 C0 G1 g9 m
  17. #define E2PROM_CMD_WRITE 2
    / H, `, `& c, Z
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    4 E  p/ `  y; \9 T8 ]

  19. " @% E9 q; l/ u2 x+ m3 r; D( D
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    % h) |" `+ R% D2 M0 `2 z
  21. {
    / x# w1 }, @8 K1 ~
  22.         int fd, ret;
    , ]4 ?7 F1 G7 Z
  23.         e2prom_s_cmd arg;
    ! F& b! u' q8 W4 O9 r" ]- R
  24.         unsigned char buf[0x18];! Z$ S- y: i1 X$ K, G* E
  25.   N7 t2 q* C( l
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
      F7 L6 S  ~+ R' U& {  Y
  27.         if (fd  < 0) {
    3 \( `8 ^) A; v& p; y" @5 Z- e6 B/ n8 L
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) k$ b2 w& x: c3 u1 H( L
  29.                 return -1;
    " E- {& X" R4 d8 H" T
  30.         }
    : Q. b, j$ D9 }' N, {( `: w3 V2 }
  31.         arg.sub_addr_count      = 2;
    6 R1 }+ S) G" X! {
  32.         arg.data_count          = 0x18;+ p  N; _6 G4 m4 y& Q
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    , C- h7 Z9 K9 N; l& x! c- \' {
  34.         arg.e2prom_cmd_data     = buf;, E5 N  a' |' \( u/ S
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);6 Y: F6 \, `. k. ~4 l! w
  36.         if (ret != 0) {- A6 p; J8 Q  T% f6 r& j. k: h- i
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    7 X( A# i2 I, j; r1 Z( E
  38.                 return -1;
    - I" M& \8 U& M8 Y
  39.         }
    0 T+ f  h  C2 o+ x# o! t- K
  40.         memcpy(mac, buf, 6);
    9 w1 `8 t: \0 A! q! h& L8 X
  41.         memcpy(stbid, &buf[6], 18);
    ) l" o& c+ S4 ?6 \- g
  42.         stbid[18] = '\0';) W2 p; a. a, Q9 H: j. F, s

  43. , B6 M% o) l" S' w
  44.         return 0;! ~* V6 @! q' l) I0 n' a
  45. }6 m7 B$ O" u, p) B& T
  46. $ B( H$ r' C, n  N" L! Z! d; [
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ; I; R; K3 f& \+ _' V8 O& q
  48. {: z: R* f+ x3 {; l- b4 j- B
  49.         int fd, ret;  U) q4 {' D/ W! p. d% Z0 X* F
  50.         e2prom_s_cmd arg;
    / ]9 e5 K- g; K6 j7 g; U
  51.         unsigned char buf[0x18];
    7 p! z5 Q/ \0 r! E" w1 P
  52. + J( O2 ~+ v: X2 S& i1 @+ j+ r, A; c. ]
  53.         memcpy(buf, mac, 6);
    ' r" r. H+ c6 R. k% q. T
  54.         memcpy(&buf[6], stbid, 18);  `& Z# Z  H% ^; o; N' a. m+ Y2 ?
  55.         fd = open(E2PROM_DEVICE, O_RDWR);5 o2 V$ c5 ^! v( W* L: ?
  56.         if (fd  < 0) {( o; ~* v' G/ |
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ @% U0 [) _; O6 E+ v: D0 E: x& O$ K2 |
  58.                 return -1;
    . @4 @: j& N: h
  59.         }1 W$ |3 ?6 X8 m$ `" S9 D" U6 I9 {
  60.         arg.sub_addr_count      = 2;
    7 }9 K1 H2 T1 d' n0 M7 w5 j6 v
  61.         arg.data_count          = 0x18;" ~# Z, d: h* c; q
  62.         arg.e2prom_cmd_sub_addr = 0x290;$ e  Y/ D% m6 r6 ?$ B4 z1 G
  63.         arg.e2prom_cmd_data     = buf;
    / k1 B, E& d4 L. a' c2 K4 @) S
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);' j' F- o$ N( [( u! Y! D1 A
  65.         if (ret != 0) {1 ~$ J( H# u5 Z( v  M( w
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    1 Q3 f1 v0 B* Q2 t$ I/ d
  67.                 return -1;1 r) L5 {- k# M) S, q
  68.         }& r  r# i3 B4 P3 `5 U0 _, b

  69. 7 F  C  G3 V/ D1 O
  70.         return 0;
    0 X" }& G$ S5 _' [& W6 v( Y) P
  71. }
    7 r  B& t5 t/ R1 h6 \

  72. 8 w. T3 f2 F7 e, i8 ]' m; e+ W
  73. int main(), L4 i: ^6 h( D+ r$ T2 E
  74. {
    & r0 j* `# N4 ?8 D
  75.         char c;8 V# Q$ v* X0 S: |4 R' q" X
  76.         int i, macs[6];
    4 L' V- {- S8 p, Q& _/ l
  77.         unsigned char mac[6];3 P0 [* x; c: m" W9 F
  78.         unsigned char stbid[256];3 g' d* o& A+ l: s3 B, u5 P/ a

  79. ( n: Y# m' i' C* n  S& T) B; q
  80.         if (readparam(mac, stbid) < 0)
    3 w/ |' r; ]. I
  81.                 return 1;+ X9 Y/ x2 k5 I  H2 {5 I4 p

  82. ' M. N: K' x# T, X" U* ?9 M
  83.         printf("Current parameters: \n");8 P) z, e# Q$ g; y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 l: D3 C8 _8 {6 u
  85.         printf("  STBID: %s\n", stbid);* b2 a5 ~( S& p" p& g& p% O3 S1 h
  86.        
    3 R: ^/ t* R2 z1 J. m6 ?$ {2 X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    6 A- T% F8 P9 F9 `, t
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    * G4 o3 ~$ k* x) ]
  89.                 printf("Input MAC error\n");
    0 c4 ?! \! x8 u' l6 J/ s
  90.                 return 1;
    4 r( r+ F/ f7 R
  91.         }
    9 Y3 \- J. \6 a, R. w2 n' R
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    - X, `3 u) y$ E6 h& G
  93.         printf("\nPlease input new STBID: ");
    7 H: F# U& X+ K4 a  E
  94.         scanf("%s", stbid);% s: V) d3 o# A: [& W4 J" U- ~
  95.         if (strlen(stbid) != 18) {
    & C* l6 l( X4 z
  96.                 printf("Invalid stbid\n");+ k2 ]1 r" O( V& ~$ a
  97.                 return 1;
    , f' Q& S$ n  ]. w, O
  98.         }
    - t) a$ G# p8 f) @% _2 J: m0 i
  99.         printf("\nNew parameters: \n");
    8 ?( t3 ~+ }# C
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      }3 x, b, C# D
  101.         printf("  STBID: %s\n", stbid);
    ) h6 t  |* u# \1 `/ ~8 |( Z: y
  102. * N& w4 C' x; ]7 @: j
  103.         printf("\nDo you want to change paramemters? (y/N) ");- J4 _0 _- ]* M& A
  104.         for (;;) {
    ( W, J  v/ \- x" ?" o
  105.                 c = getchar();: C2 F! S2 ~9 r, L( a; b
  106.                 if (c == 'y' || c == 'Y')8 [! @; x7 Y6 W# K2 r$ g( w$ K
  107.                         break;# r8 A3 E' A5 u) M' v5 _
  108.                 if (c == 'n' || c == 'N') {
    ; _4 |8 @* N- P; n; W4 i) Y3 J8 ]. _
  109.                         printf("\nAborted.\n");
    ) o: j- U& c; f+ a' ?2 _
  110.                         return 1;8 y: S8 j  [" q% k# a9 h0 U
  111.                 }
    3 n6 _3 Q0 A( Q1 a
  112.         }% y* v; ?2 _0 w1 J: _- Z
  113.         if (writeparam(mac, stbid) == 0)
    6 H! j5 H; F8 z8 Y
  114.                 printf("Parameters changed.\n");
    / ~0 m- c# J; q( r7 C- }
  115. 5 @, S& i% p4 N7 n8 J+ f/ j
  116.         return 0;( B0 ^3 H& _, L: x& g
  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 " U4 T: z! C5 V5 h
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

, }5 E* o+ `* ?. z- d9 g0 [5 T你用的编译命令行格式是什么?
, A" n1 h0 y/ E' Q# w4 Y
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部