查看: 16771|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ' u2 B  R3 N; }" d% d
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig6 F! q1 d; Y& a' g. J9 L0 v3 X
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
7 u" A. {$ J0 Q8 A* Cusage: himr <address> <value>. sample: himr 0x80040000 0x0
  E! f& F% v' U; F0 p% I. p; ^+ _

  h3 E. @; `' B* s不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
3 W  z$ K- L2 }1 D' X* v
5 c0 x/ F2 o! A7 B- V; o补充内容 (2012-3-8 09:42):
" N7 c, g7 m0 J$ Vhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数. I+ T3 K3 Q$ U( a% k
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
$ K6 m0 ?( o# ~: q8 t
' t3 q, O) h* ehimr <address> <value>. sample: himr 0x80040000 0x08 ?8 M/ U0 v' P% a5 N' E' h
6 w) {  j. S$ u/ W" h! B
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
" I3 S% O6 ]5 uhimr 0x80040000 0x00
/ M. V' _6 L% H2 m) m! m0 D" P8 mhimr 0x80040001 0x11
/ l& f* I: [3 V5 jhimr 0x80040002 0x22
) a7 ^2 ]4 w1 z6 `1 m' Q& phimr 0x80040003 0x33$ g5 K6 B/ p8 X% {8 F' ?+ b- q
himr 0x80040004 0x44
' _2 q) S% O* ~4 |) Rhimr 0x80040005 0x550 Q* @4 ^/ S! c" r$ M! y- D$ g+ n. O
( e% |$ Z! ?. {; y
SN也是类似。4 E$ [3 k8 j- \$ }! `) T% h2 ?7 X
  I0 H' k" \/ }
现在主要是,谁告诉我们MAC和SN的地址?
) [, a7 A7 f9 X, X1 ?
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
5 T5 x) b' H4 |  m4 s一直想找到运程修改MAC和SN的办法,苦于无解啊
) M: J5 C% E0 {8 q6 v* q
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 + Y1 c$ T' i8 I
% C/ u; E: o1 Z; j# c/ n. M% g" U0 s
修改的代码早有了。到今天不会编译。1 @2 ^0 B/ i& Q1 [3 Y( I
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>8 j/ E- h& x4 f  P( B* s
  2. #include <malloc.h>
    2 T- T: g( Y3 B5 ~( ^2 `1 @% U$ {
  3. #include <sys/types.h>
      O: Z# ^4 E  c! Q' u2 [# U
  4. #include <sys/stat.h>
    : s% Y0 V2 Z7 A/ n! f  t/ v
  5. #include <sys/ioctl.h>4 o. ?& v+ q8 b; `. e5 H
  6. #include <stdio.h>
    : K$ G2 m% U  `, x1 Y, n3 d( [
  7. #include <string.h>% P, ]; t) s+ t% E
  8. 0 Y5 u0 }0 w6 b) E2 K' k! j2 b
  9. typedef struct {
      N& v% v; I' K' N: Q4 s
  10.         unsigned int        e2prom_cmd_sub_addr;
    ! S5 R. V) H: a( K3 W7 K
  11.         unsigned int        sub_addr_count;( h. r- I9 A+ P1 i) u
  12.         unsigned char*        e2prom_cmd_data;
    9 N7 r4 o% o7 L9 @( I" g
  13.         unsigned int        data_count;$ Q7 F: |- l6 V) z
  14. } e2prom_s_cmd;
    . D. U2 ?% `+ ~* v

  15. 0 L( e  t* M' `2 N
  16. #define E2PROM_CMD_READ 13 S7 x4 F$ |0 @- d+ Y5 G8 [  Z
  17. #define E2PROM_CMD_WRITE 2
    6 J3 \; G$ ]3 E! H4 x
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ; S, P9 i" o( @# F0 `! _

  19. 1 {% \6 z% C# B
  20. static int readparam(unsigned char *mac, unsigned char *stbid)$ r$ q6 T/ ?4 \- \
  21. {) v' X  j& e$ T6 Q# ~  W/ r5 z
  22.         int fd, ret;- D' v1 I$ y+ z9 U
  23.         e2prom_s_cmd arg;/ e* e- ^9 _  W( ?: C5 V/ M
  24.         unsigned char buf[0x18];
    ) X# \% A1 j0 I* ^/ Q& p4 o/ x& F

  25. / G, ~5 |! t; E
  26.         fd = open(E2PROM_DEVICE, O_RDWR);+ [5 y' f3 e2 ^- D
  27.         if (fd  < 0) {, A1 W: _6 ]4 G8 t
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      J" b# @% D6 E7 y4 x/ Q" p
  29.                 return -1;
    , q- D' X8 g' W- ]' f
  30.         }) E8 X5 A) l: g$ a( m3 v% g
  31.         arg.sub_addr_count      = 2;! `1 j3 e; }% g5 |( C
  32.         arg.data_count          = 0x18;
    ( b3 ~# F  P8 k3 g9 \1 X- U  s
  33.         arg.e2prom_cmd_sub_addr = 0x290;1 L: A# Q9 \: l  V
  34.         arg.e2prom_cmd_data     = buf;
    9 D+ r0 ^6 c! R# E4 f/ R
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);5 f3 T$ b1 O: V. ]) h+ c
  36.         if (ret != 0) {5 a: x6 Z2 t' R" C
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);7 o7 C+ n8 M1 T" o. F
  38.                 return -1;4 d4 ?/ _' [, [. ]' q5 z
  39.         }
    ' f3 w8 F% m  r
  40.         memcpy(mac, buf, 6);* K: R$ `4 n4 E7 r. v
  41.         memcpy(stbid, &buf[6], 18);
    , ?; p0 ?6 U2 \
  42.         stbid[18] = '\0';
    / i" ~/ [% _$ C8 V

  43. 7 M! s, |4 T/ u% h
  44.         return 0;
    ; D( F) ^$ S$ v: \8 I% }' |
  45. }
    ; \% x( B  I: `$ F+ k
  46. 9 ^7 |2 ^. W( G3 q, m# u
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    7 c; C, c  s) _3 c# [
  48. {
    6 O9 w. W8 a' v
  49.         int fd, ret;7 i1 ^7 c: O+ o- u
  50.         e2prom_s_cmd arg;
    : `, d5 c- G8 R* a$ h8 w4 x9 @7 `/ A, Z
  51.         unsigned char buf[0x18];4 D7 |! h5 T: A
  52. 4 I7 ]/ O$ X% o
  53.         memcpy(buf, mac, 6);
    , T' r0 t0 U6 v9 R! A3 E
  54.         memcpy(&buf[6], stbid, 18);% e. q! D0 L8 D# _+ e
  55.         fd = open(E2PROM_DEVICE, O_RDWR);6 [' |# L  R- ^3 X" ^' u2 I5 U
  56.         if (fd  < 0) {
    , Q% G7 o( f# D2 ]. k+ Y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ I# R6 {" y8 ]) o' y6 \% R
  58.                 return -1;
    1 `; I# n# F% {, @) l
  59.         }
    ' }/ n6 v+ e1 s. h5 C
  60.         arg.sub_addr_count      = 2;
    % x' s( v9 x* ^6 }
  61.         arg.data_count          = 0x18;
    " h- F* r. L  T% H: k
  62.         arg.e2prom_cmd_sub_addr = 0x290;% y3 U- ?  `, f6 l
  63.         arg.e2prom_cmd_data     = buf;) H4 O7 M1 e- P
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);* k$ L7 X* }  p% G/ {9 i) z
  65.         if (ret != 0) {
    / x+ q3 {" C. C; ]
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);7 E6 u# F- R9 r3 o8 ?$ I  K6 c
  67.                 return -1;9 Q8 `/ c) w( s
  68.         }( [8 [; J, f4 E

  69. : J: I+ S: j3 |5 v& T' i
  70.         return 0;
    ) S2 r, A6 q. q& @
  71. }
    / U& i" M5 h0 k( h8 B0 T0 X
  72. ; U: a. x7 t9 X0 `# E8 e% c$ {
  73. int main()0 D# n% [; U0 u( w- Y2 D; }
  74. {" x# b( ?  U' v4 l; ]3 y
  75.         char c;
    " {0 r& b1 Y3 q% s  M; S8 Q9 A
  76.         int i, macs[6];
    5 N, K6 X& f2 |" s7 }
  77.         unsigned char mac[6];
    * O5 J7 ~/ G7 Z) x
  78.         unsigned char stbid[256];5 \- y& \' {7 j4 R* t

  79. / T9 n6 o4 W# D; h, b9 i! e
  80.         if (readparam(mac, stbid) < 0)7 v3 p/ J+ @0 O* x9 H+ ^
  81.                 return 1;5 @. R& `7 D$ a2 q4 r
  82. % B1 V) F0 f% K4 U: C$ G/ R( i
  83.         printf("Current parameters: \n");6 y/ ]: o' T0 c9 x" ]
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ |  a6 e; ]; U8 g/ o
  85.         printf("  STBID: %s\n", stbid);
    3 H  w& q, q0 l( R0 g9 X( C3 b
  86.        
    # I; l  g$ l- U7 M1 _) r7 Y
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");  {" T: x4 H  c$ b3 }8 k
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {  [' K1 }: G! c$ p9 c1 `6 }) X
  89.                 printf("Input MAC error\n");
    3 G6 R# N) z& K% O! q0 U
  90.                 return 1;, J8 R& d+ g, O
  91.         }
    9 `- L) u# }5 b! ~4 Z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];- c. `$ K; D; W, Y" J5 l3 W2 Q
  93.         printf("\nPlease input new STBID: ");
      b6 s' J9 E2 @2 C
  94.         scanf("%s", stbid);* C% L4 e' p+ S, G; Z
  95.         if (strlen(stbid) != 18) {1 U( `6 H! Y$ J. q/ f
  96.                 printf("Invalid stbid\n");- o$ S! |# Y5 o; J% ^
  97.                 return 1;' b( z" l1 I" J& ~
  98.         }: l. q& ]  t2 ^9 C7 \2 k" J
  99.         printf("\nNew parameters: \n");4 m# H6 I* [& F) L
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , L! J& g* T& ^7 m5 Q
  101.         printf("  STBID: %s\n", stbid);
    ( W2 m/ E$ @0 Z  O. c

  102. : x8 Q3 A8 m9 d& d, h1 b/ D; k
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    # S' L- e) U. F  C/ D' w0 s0 p
  104.         for (;;) {  F3 X7 P- `" o6 R
  105.                 c = getchar();
    0 G+ T% m( V$ C4 k9 s3 J* v
  106.                 if (c == 'y' || c == 'Y')* ?0 g9 C5 Y2 m+ P$ U
  107.                         break;
    + O6 s# P6 D% _# S
  108.                 if (c == 'n' || c == 'N') {
    6 L7 ]% l$ w" _4 b' w7 N) L# ?, q
  109.                         printf("\nAborted.\n");" m. C7 z/ C7 F2 c. P" j
  110.                         return 1;& X5 V- t8 C& j) B- f; m% |
  111.                 }
    % ]! k9 Q+ m0 l# P! E; W1 {
  112.         }5 t4 }5 f1 W4 ^
  113.         if (writeparam(mac, stbid) == 0)
    * ^" J/ C! [: I! x6 I
  114.                 printf("Parameters changed.\n");
    6 P7 E9 U* P  C  w

  115. * j9 [4 ?. u: {5 z2 l- Z) N
  116.         return 0;
    ; T5 q+ f6 d/ T
  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
* J- ?! _/ y* [. \. s8 W* ^6 T+ `在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
6 ^! X$ v2 j  R8 N" g, Q
你用的编译命令行格式是什么?9 R1 q# F2 M* r3 W" @
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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