查看: 16763|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    / A: K4 A/ b; }
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig1 U3 F$ E7 j( o: T1 B8 Y6 Z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
, H- I, ^: ^, \5 @' {: b! |usage: himr <address> <value>. sample: himr 0x80040000 0x0
5 i; S3 A5 V$ l9 V, U7 _
' U$ ]) w! y0 G7 K) ~3 D- t% O7 M) E8 L1 G: @2 z: H* w1 k  O7 L8 G
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?2 c& ?' E4 }: R' f, C
0 x# V' {) k. `# s
补充内容 (2012-3-8 09:42):
1 R/ s5 E8 W3 P6 z) Y/ N# ^http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
+ [. z3 y. |$ d4 ?/ G这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
' ^% I+ i1 y, Z; F' J# o& J( a0 p- m: x7 e7 W# d% C0 M( w
himr <address> <value>. sample: himr 0x80040000 0x0
0 n. D, t4 B& L$ B8 u/ R. v# L" C. z  a' a3 y/ l4 g: g
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。7 M* r6 C3 H8 S3 c6 m
himr 0x80040000 0x00
: k8 }& I+ i2 b& c. Ghimr 0x80040001 0x11" W7 |! i0 O/ b/ N* s1 c
himr 0x80040002 0x22
: L* V" E' w6 s/ L& Shimr 0x80040003 0x33# v8 O% S, E3 f( C
himr 0x80040004 0x44
  f) X* Q7 v- p0 N( n% Chimr 0x80040005 0x55
3 ]0 `6 l: e1 n  R3 R
% d+ i1 m: Z- Q) m3 s8 i4 wSN也是类似。
: S- P3 u3 y. m5 t, k; q) q& ?* D0 G% m
现在主要是,谁告诉我们MAC和SN的地址?
$ \3 k* E$ f- B( X7 x  P# U& L
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ' x7 f# O! C, [7 m' c: y+ m: Z. `/ C
一直想找到运程修改MAC和SN的办法,苦于无解啊

/ D+ Z3 H" N# p) q. r2 {源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 - {  `- F# A( H5 g7 C
/ R$ B- `# n3 p/ z6 y0 H# V0 d
修改的代码早有了。到今天不会编译。& j' w; A9 W: p! \+ z$ ~7 c
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>5 K$ v3 M  T" ^7 |* d
  2. #include <malloc.h>. i% r. @' h4 |3 f5 c& n  g) r
  3. #include <sys/types.h>
    / `9 `4 ^1 u0 ]0 e+ ]% W: F( R
  4. #include <sys/stat.h>7 X3 z9 y: D' b
  5. #include <sys/ioctl.h>+ e( c$ L& M" B9 M" }5 k/ q
  6. #include <stdio.h>
    ' l# I2 N! n4 D$ X! T4 f- k+ q
  7. #include <string.h>$ S" [- l' Z$ ~  u5 X. d$ N. }0 V) v

  8. / L6 A: h# y' d- r
  9. typedef struct {
    ( U$ S0 i- Q' I3 t
  10.         unsigned int        e2prom_cmd_sub_addr;1 c1 h8 R, Q( p6 U
  11.         unsigned int        sub_addr_count;  s! p3 ^. E" J- `3 A
  12.         unsigned char*        e2prom_cmd_data;& K$ L- i, Q% b0 h, L$ I
  13.         unsigned int        data_count;
    4 R0 q: I9 ~0 A; }% O+ r
  14. } e2prom_s_cmd;! ~$ p% E/ f  C' K- P9 U$ M
  15. 7 d8 V6 b0 u& J/ T3 a2 e
  16. #define E2PROM_CMD_READ 1* u  m# w( G% ]! t
  17. #define E2PROM_CMD_WRITE 2# t: l/ o; `! s6 ~; q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 p5 ^/ b1 v. j6 Z
  19. . U3 A( ~2 x+ q! n9 s, g
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    & I$ G7 U1 ~/ ~- T0 z. `; a% `
  21. {3 E+ o' Z7 h( ~- @
  22.         int fd, ret;2 D0 [- f/ W4 i" r
  23.         e2prom_s_cmd arg;
    9 W3 ?* g. P3 h
  24.         unsigned char buf[0x18];
    " Q$ b7 S6 b% D' Z1 n) O
  25. ) ?( i; y* \2 f
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    / C  B& u" U" u
  27.         if (fd  < 0) {
    7 C$ B6 A" h! p) w$ k9 v, _
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - [; F2 I3 {- o3 C
  29.                 return -1;
    3 w* t6 a5 Z: O6 Q  B
  30.         }
    " R* }6 u  i/ M. e
  31.         arg.sub_addr_count      = 2;
    $ b* y- R9 a1 b5 Z  T
  32.         arg.data_count          = 0x18;
    , i7 U. L$ s! t) z! n' K# g
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    8 f% H4 X+ o4 p9 t" J4 D' f8 k
  34.         arg.e2prom_cmd_data     = buf;  c# n+ ]" N, y3 w7 j  y
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);! U; G$ ~9 y3 V! Y2 _% t, Y3 w" @
  36.         if (ret != 0) {* a. z( }# u' u0 s
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    " k# D: K% @- D
  38.                 return -1;% N' m+ `8 n5 K: p* W- E( Y
  39.         }
    7 X" f$ u5 u* d' e4 W
  40.         memcpy(mac, buf, 6);+ m( {* y4 a! b
  41.         memcpy(stbid, &buf[6], 18);
    4 ^9 G+ H' X) N2 k! O
  42.         stbid[18] = '\0';; c: Q3 X" H' Y9 b. r  w7 H  b, O

  43.   n- u4 s. t- @8 p4 [
  44.         return 0;
    6 i* W, q, w# ^4 i6 w% j+ P0 x
  45. }. v7 B/ D0 M* ?& `7 e

  46. 5 b& S+ g' r/ u1 g
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)4 c+ ~- }% U7 _/ r/ g
  48. {
    3 r! {  i0 |7 R8 `5 A
  49.         int fd, ret;$ v4 \' R. F" S* b5 v
  50.         e2prom_s_cmd arg;
    % f4 i7 f% k6 [, J* S0 A) e' H* F
  51.         unsigned char buf[0x18];
    ) u! P+ T# D5 c- v# J: r

  52. - e8 j0 B* f; u; U4 y) t
  53.         memcpy(buf, mac, 6);
    6 ^( r1 `# Q7 w! _& j
  54.         memcpy(&buf[6], stbid, 18);5 d0 K" T/ [% T9 D0 q1 U: v
  55.         fd = open(E2PROM_DEVICE, O_RDWR);% W/ @% r+ m+ }+ o, {3 ~* b! }
  56.         if (fd  < 0) {3 q( l% x$ R. n  o6 e
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( w0 r5 }: e( ?+ \" Y
  58.                 return -1;! }" E' f, h* Y4 H% L* u
  59.         }9 j( a9 o* y/ P+ |: t
  60.         arg.sub_addr_count      = 2;
    ! K) f& c; n/ s; o. z4 n
  61.         arg.data_count          = 0x18;5 ]  n1 q- G7 J" p
  62.         arg.e2prom_cmd_sub_addr = 0x290;* q/ w7 K6 b9 N! C
  63.         arg.e2prom_cmd_data     = buf;* X( M6 M- O  x
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    4 k; t0 P) q" @
  65.         if (ret != 0) {
    ( H8 x0 F, L# r
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);  }' g7 e9 }0 u  ?: z
  67.                 return -1;# M/ g: z! |4 h/ l3 @' |
  68.         }7 h  r7 J' Y/ ^! \4 s

  69. 6 M. m- w' ^8 A  Q5 F
  70.         return 0;, }1 h2 z. ]8 Q0 L' i4 C2 V
  71. }
    + Q' i4 }% X" A

  72. ' h3 I" b. ]( @% I& J; s
  73. int main()3 }) |, K8 w& l* C6 v
  74. {% i- D' L) O) G( @; |
  75.         char c;
    ) E$ r+ n1 y2 \
  76.         int i, macs[6];/ Q$ {$ d* A8 h
  77.         unsigned char mac[6];
    1 Y# {# f9 m$ L* R, N6 L: p
  78.         unsigned char stbid[256];
    & l- I) o, i8 \) P/ C0 ^) G
  79. * Y# v6 {. s* f7 V
  80.         if (readparam(mac, stbid) < 0)
    7 U# j$ W4 b3 D, J1 s( |
  81.                 return 1;
    4 h  C4 I2 I. g% G+ H; i7 t- T
  82. ' R/ z2 n, x! a  D0 g/ @
  83.         printf("Current parameters: \n");
    " ?% a: T7 G# f. W+ G" h1 H% W; ~
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    8 ?; ]9 D3 Z. N3 W1 D
  85.         printf("  STBID: %s\n", stbid);. G2 @& X, Y/ d! Y
  86.         0 \( ]# \4 R0 R2 D7 g& e
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ( p4 H9 c$ \- G& R* |/ o
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {7 z* W2 S$ Y1 F/ `2 |5 J
  89.                 printf("Input MAC error\n");
    2 Z. a. ^! }; U& i/ U' _
  90.                 return 1;
    ) x) j/ ]% F/ y0 u
  91.         }4 J5 m& g1 B! h7 P' Z" ~3 [" T2 m6 {
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ; l. }' Y5 q7 y+ {8 a. I% k- a
  93.         printf("\nPlease input new STBID: ");
    5 K% _. }* l* j) k; T* N
  94.         scanf("%s", stbid);! y0 s  q3 D( Z) |1 [
  95.         if (strlen(stbid) != 18) {# J- z% A( `1 @" g7 Y/ N! q
  96.                 printf("Invalid stbid\n");) L7 @& y2 @/ S6 v2 V
  97.                 return 1;4 f% q9 Q  \0 t6 a
  98.         }
    , n0 O) U8 E4 y& t6 o
  99.         printf("\nNew parameters: \n");
    . ~+ }4 r! u# k% W) o+ @. b9 I
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& s# q9 [2 x; ~/ i* z2 `( W: _+ ~
  101.         printf("  STBID: %s\n", stbid);
    ; @' [/ a+ r: u% _) r
  102. . @2 o. d5 m2 L8 O& ^+ H
  103.         printf("\nDo you want to change paramemters? (y/N) ");% Z) T: Q7 R0 b- y) k
  104.         for (;;) {
    # P8 P' \6 c' i
  105.                 c = getchar();
    / e) }( r0 J- M4 c  T
  106.                 if (c == 'y' || c == 'Y')
    , V$ P3 ^( s/ C$ c9 w0 B7 x
  107.                         break;
    1 S" Y9 v7 h3 q$ v8 L
  108.                 if (c == 'n' || c == 'N') {
    ' V! G: k" j6 r
  109.                         printf("\nAborted.\n");" Y6 D, g6 P& S& d$ F
  110.                         return 1;" P- Z1 Z8 R* ]3 B
  111.                 }
    : |& {" j6 Q" m
  112.         }
    ( k' n1 g( q1 a7 m7 _
  113.         if (writeparam(mac, stbid) == 0) 0 b. s6 h& ^0 c8 a
  114.                 printf("Parameters changed.\n");
    2 W; K( J) j5 @. X/ X2 _
  115. # A) {8 p2 n' ^3 u* d' {
  116.         return 0;+ m. Q. i9 ^, O7 [
  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
. q7 j$ O. C  H. @0 f7 L! z4 e在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

" s4 P) N' w& L; A你用的编译命令行格式是什么?. F2 @1 i9 K6 S7 n
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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