查看: 16276|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr; A9 {. ^  f+ v' ]7 e: q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig! V% _) g' B2 E+ {& j$ g
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:* o% ~: f( ~' x
usage: himr <address> <value>. sample: himr 0x80040000 0x0
* g' h& d, A. F
* h+ v( b2 t7 w: h# w* g! d% C+ z# v4 ^" R$ c9 ~
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?( L2 Z( o3 g1 a/ _6 ?

4 t2 y3 t. F6 z* f/ y; |补充内容 (2012-3-8 09:42):8 L4 o* `; b" y$ b# s
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数) [( H# B5 d' H$ Q: k6 R
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
: W* D* T6 K( Q4 `
1 T0 y+ d$ N% w3 ohimr <address> <value>. sample: himr 0x80040000 0x0; A! |' s  W/ w6 j: H, a
- q6 A* B( W6 z2 j3 F& }
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
( [2 Y8 ]5 k+ F  Shimr 0x80040000 0x00* i: c% t5 j% o1 A2 H
himr 0x80040001 0x116 d( S  Z1 {2 z( R2 \
himr 0x80040002 0x22) J" D3 a/ o  P! G  `& @% M
himr 0x80040003 0x33
, d, j5 Y) f; O3 Bhimr 0x80040004 0x44
) Q2 C' V- q. K( I# C9 hhimr 0x80040005 0x554 i) ?; Q/ d1 W- _; D

% Q; R: E. S1 o3 R- q, USN也是类似。. r* x+ m6 r/ n
" Y8 ~2 @0 g7 D
现在主要是,谁告诉我们MAC和SN的地址?% s1 U5 [9 @* t; L# }) X
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 * l& G- K/ V* S8 H" m
一直想找到运程修改MAC和SN的办法,苦于无解啊

: r) r, T0 H' V% A% M源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
9 @4 {2 L" C1 u0 q- P
% ^6 f2 J+ ]5 T3 {& s8 @修改的代码早有了。到今天不会编译。
# A6 ?, F- f8 m: u需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>7 Z7 t7 _0 D( ~" V$ Z0 C: k7 {! K
  2. #include <malloc.h>  ~, w' p4 x0 v) y% r
  3. #include <sys/types.h>) z5 b! z) q! U
  4. #include <sys/stat.h>
    * U! q7 \" `8 `- u* o
  5. #include <sys/ioctl.h>4 w- g  [% V/ S3 {
  6. #include <stdio.h>
    $ g4 ^) N; ?9 c
  7. #include <string.h>
    9 ?/ M: B/ R- R
  8. ) z$ a5 x8 K3 u- Z8 Q& v7 H- l& G
  9. typedef struct {! }, d( d4 B& ~( ]3 R
  10.         unsigned int        e2prom_cmd_sub_addr;  K. _1 v- p" v8 {# _
  11.         unsigned int        sub_addr_count;3 r, X! J' _# ~" C7 X' p% Q
  12.         unsigned char*        e2prom_cmd_data;
    % |5 ^6 B5 [: H# G6 ]. Y& m
  13.         unsigned int        data_count;- ]6 v" ]* @$ r- O
  14. } e2prom_s_cmd;
    5 b# F3 Z  F! B
  15. 7 I& J6 S8 x6 Y, h
  16. #define E2PROM_CMD_READ 1
    ) |' f* m( r5 G4 H' J9 S9 o; m
  17. #define E2PROM_CMD_WRITE 2
    . C0 e4 e; k* `& w; B& d; I, B* |
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"4 W, C& F& h# o$ r) T' ^: q
  19. & |7 U- N" t% i. Z( ^! M9 Z% U2 r
  20. static int readparam(unsigned char *mac, unsigned char *stbid)% i% s, U2 H- u" D2 M$ h$ U% X
  21. {4 Z# h+ X  f$ t$ ^' Z/ a" R
  22.         int fd, ret;/ l- G5 m; M9 Y  o' i
  23.         e2prom_s_cmd arg;" G. G2 ~. z: C; [) }* T
  24.         unsigned char buf[0x18];
    8 j0 F  n8 d/ @( s0 L! \9 L
  25.   n% E8 b& {3 R. @
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 p2 d0 J1 ^2 P( j& Z/ I% N
  27.         if (fd  < 0) {: x  B" G' {. w
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # f% G" J* r7 }* A: {9 p$ m
  29.                 return -1;! s- L. N2 g! B9 }2 \
  30.         }
    " M  A. j6 D- O
  31.         arg.sub_addr_count      = 2;
    ; s7 w5 W2 L, ^" }; _  g( P" d7 ?
  32.         arg.data_count          = 0x18;
    . e' u9 ^0 [  e$ ?* X
  33.         arg.e2prom_cmd_sub_addr = 0x290;6 \( p' j' L; a
  34.         arg.e2prom_cmd_data     = buf;
    " P9 d+ A9 Z$ A0 w
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    % V, P$ j' W1 M- O
  36.         if (ret != 0) {1 @; Z' J" e2 }
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; L# h" ?# J( i) Y3 P' ~( z
  38.                 return -1;
    8 Y, r, r9 v7 u
  39.         }6 E: R2 e: ]9 i! E
  40.         memcpy(mac, buf, 6);) b( A& ~( k9 E9 K9 c; G7 C% e
  41.         memcpy(stbid, &buf[6], 18);( u4 s$ X* ]1 b/ D& D
  42.         stbid[18] = '\0';
    & s; l" H' b- n9 g

  43. 3 a2 d0 O  C/ b4 x5 t6 K
  44.         return 0;; I- [! o( z2 t6 |  n( R) T
  45. }; t" a- j% y# U! K4 s9 e

  46. & I  _7 L& E# Q* p7 R2 M, _2 k
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    1 @5 w! e% r  t& V' c) t4 @  o
  48. {( T5 n2 `3 I* x* z' X1 ~% g/ z3 b
  49.         int fd, ret;# J0 r$ n& _& y4 u
  50.         e2prom_s_cmd arg;
    - M! |; _5 I) G$ F5 e, o& M( n5 V' T
  51.         unsigned char buf[0x18];
    / ?+ ^! _! @  X$ I- G! \

  52. * ]/ K: b8 p* ]1 H9 O' h6 v- T
  53.         memcpy(buf, mac, 6);& N; o9 [6 V/ Q- @6 f. L
  54.         memcpy(&buf[6], stbid, 18);& R+ h6 i4 h: N7 Z- }% D6 F* L! j6 {
  55.         fd = open(E2PROM_DEVICE, O_RDWR);; j0 x8 ^+ t+ y% Z
  56.         if (fd  < 0) {
      P* H& T& _0 w1 u& y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' v5 H+ a" q" F
  58.                 return -1;0 m3 g  k( l2 b$ K% L$ P
  59.         }
    . e: m! Q: h$ U& K
  60.         arg.sub_addr_count      = 2;
    4 @4 M" J( ]8 g7 j; V
  61.         arg.data_count          = 0x18;
    - ~/ F2 @5 W$ J
  62.         arg.e2prom_cmd_sub_addr = 0x290;' B( R% a7 |/ k. Z
  63.         arg.e2prom_cmd_data     = buf;% o0 M6 |3 x5 l  T" \, [
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);+ X+ s; ^4 i9 S
  65.         if (ret != 0) {
    1 l' p1 ?' a* p  }5 n' R* i# I/ n
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);1 w. r, e7 Q, h- u( M
  67.                 return -1;% Q3 B+ b) ^$ [5 I5 M2 _" @
  68.         }# P, m1 [6 X: Y& g6 L, m
  69. / E8 Z9 c) x5 t$ j! p8 e
  70.         return 0;
    : v! a0 s+ i% b. b8 V
  71. }; h, g: v2 I$ g

  72. + c# I* t2 v) ^  f' v+ N- D
  73. int main(), h! }* W0 o2 |' W. R" _
  74. {
    1 {) x3 u% a8 ~6 a
  75.         char c;
    7 {* k4 N0 @6 o4 \5 Z5 c% m; V: `  \4 E
  76.         int i, macs[6];
    " {" F$ `' Y7 w" r* D
  77.         unsigned char mac[6];
    # z) q. [+ d2 F  ?7 F
  78.         unsigned char stbid[256];
    6 P- _  @% y3 E0 G$ `
  79. , J) w! Z3 v% ~4 C
  80.         if (readparam(mac, stbid) < 0)9 ?' `' X& V: I
  81.                 return 1;
    6 j/ ?) F" F2 e" I2 J2 w; z
  82. 2 J' {2 H( J4 p" K+ l& e3 u" f! q7 F
  83.         printf("Current parameters: \n");5 q) f( @- f  h& ]4 e
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + R3 x6 D+ r( a# ]' w
  85.         printf("  STBID: %s\n", stbid);
    ) g3 F* @2 B9 \- b- I
  86.         $ H1 k4 y7 J5 ?2 I
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    - e# C2 T' e; d3 f  P! O9 h" K
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {6 h8 i4 }! u6 ?1 K, [# Z
  89.                 printf("Input MAC error\n");6 y/ z/ H5 Q8 F4 X( w8 [2 h) X- B: i
  90.                 return 1;
    ) l' Y; x2 Q$ _' Q  ~# T
  91.         }/ }* V$ E' L9 c5 S# Q, B" q" P
  92.         for (i=0; i<6; i++)mac[i] = macs[i];0 N+ w: ?1 _1 e! T$ k7 W
  93.         printf("\nPlease input new STBID: ");
    1 h/ U9 X3 a9 q+ z# `# k0 e/ a: ]
  94.         scanf("%s", stbid);
    6 ^" c' O) @) h* ~
  95.         if (strlen(stbid) != 18) {2 m1 Q" M$ k1 c7 ~2 g1 p# z. q1 z
  96.                 printf("Invalid stbid\n");
    % S4 ]" r( k0 Z: }6 I
  97.                 return 1;
      B8 A$ m( v+ R; y! H- k
  98.         }7 }% o3 u3 s9 n- H# n8 Q& P
  99.         printf("\nNew parameters: \n");8 F. |7 z  U% L
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) o0 N: I4 u5 J
  101.         printf("  STBID: %s\n", stbid);  _  [  L% v/ g8 t

  102. # d5 O7 `7 x; G  T0 i! N% E, B* j
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    + M+ Q: Y4 [3 h; f! t
  104.         for (;;) {# Q4 h1 W9 G; ~4 y5 C
  105.                 c = getchar();
    7 j6 p8 X& u* u  Q
  106.                 if (c == 'y' || c == 'Y')
    6 _3 }! L' l5 Q% s' P2 U6 B4 }
  107.                         break;  ^! G1 m. Z! g0 a
  108.                 if (c == 'n' || c == 'N') {# ^& i1 s4 z$ A% k# @6 x& d
  109.                         printf("\nAborted.\n");: A/ E$ H: S. O  g
  110.                         return 1;
    ; l1 w7 O* A3 v( P, p
  111.                 }7 T6 e1 A! n  X' V5 Y6 v/ L1 ~
  112.         }. B  W8 I% f3 }' T  z
  113.         if (writeparam(mac, stbid) == 0)
    ( M+ X/ r' \: I; w0 M* j  \
  114.                 printf("Parameters changed.\n");% _6 `* M- g- O

  115. % S9 Y! p7 @( k9 z0 y$ p, R1 I
  116.         return 0;$ D& c, Z- W8 A- @( H% i* 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 - v7 [: X% u. S  a  |
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

5 @) C$ N9 }8 I. h0 b/ h你用的编译命令行格式是什么?+ C4 k9 X% a, T! O1 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客服返回顶部