查看: 16770|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr2 \# j( P9 {) e$ q7 a  R$ d  F
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    $ @. S) i2 z' y6 x
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; j7 x. t7 @- ]% @3 d
usage: himr <address> <value>. sample: himr 0x80040000 0x0+ ?4 {6 ^3 m* `( \$ e
% b( r; }8 |: o' X2 Y

+ I9 z! C8 B1 ?8 p: p: K不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?+ g1 H1 l5 _. n) U
- S- Q* t' J" L
补充内容 (2012-3-8 09:42):
# n/ N+ W0 i' h5 N% Fhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数9 T  D% M( u  w5 Q% r# m
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
" k/ `, v; d  F/ V0 _. ]( {# G* y! c# e+ g5 {3 z! ]) d" v% }
himr <address> <value>. sample: himr 0x80040000 0x0
0 I* {5 P+ {2 Y( ^8 |
6 h; C5 W7 @) H) k( G& s8 z, b; b) |# t例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
" J3 v! N4 N" q6 a% q* ^himr 0x80040000 0x00
2 o& n2 U+ {  f* g" [himr 0x80040001 0x11, E" c9 ^1 A3 J; o; c4 g5 P3 q
himr 0x80040002 0x22; f/ s6 |. |7 _/ q8 W1 @5 I( R$ m
himr 0x80040003 0x33" g/ T+ M( |/ b- g* i6 G! |1 X
himr 0x80040004 0x44) y: S# r, m. a: g3 J  A( B
himr 0x80040005 0x55
; f  [4 G% N! K5 V2 Q; L
8 {. H3 B* w2 v8 P3 f# cSN也是类似。( K/ Z2 S" a1 e  T: i
6 G+ ]" z$ q8 g; h# a+ t* c4 Y
现在主要是,谁告诉我们MAC和SN的地址?
) f; O* Y8 W5 V& D
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 , w" l4 I. L' f1 U* a! A$ V
一直想找到运程修改MAC和SN的办法,苦于无解啊

8 W! ~# V/ r+ f' w0 @源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
# A& P' j. `! a6 H
, q- @, C6 f' }( y5 D; D8 P* [2 ?修改的代码早有了。到今天不会编译。
- |4 l  x. H5 S% P2 I需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
      ^" f4 e# v$ x6 Y" t
  2. #include <malloc.h>% O/ H6 \; `; [1 \) F& h. m  O
  3. #include <sys/types.h>
    0 ~5 \5 d% R' B+ [2 t' {
  4. #include <sys/stat.h>
    1 d  b1 P" |% o- b/ i% J1 Y8 i
  5. #include <sys/ioctl.h>7 O- ?% i: e; ~) I" L$ j
  6. #include <stdio.h>
    1 G- y( \2 N5 z! D4 A
  7. #include <string.h>; d8 a( p5 l* U, a
  8. 9 m4 |: \% Z2 P6 v* x6 Q. j& j
  9. typedef struct {
    $ a0 P" C# {5 S/ s7 t( R( {" V. m
  10.         unsigned int        e2prom_cmd_sub_addr;6 a, J9 j8 B; ~7 ^
  11.         unsigned int        sub_addr_count;- A! h- b2 r) e1 R% [7 O
  12.         unsigned char*        e2prom_cmd_data;5 E9 f( Q# L; _7 E' e1 K  b
  13.         unsigned int        data_count;
    ' a, u: `  n. i, j: e+ s9 ^
  14. } e2prom_s_cmd;
    ; y* Y( u5 s8 g
  15.   ^1 c3 v9 a* k# K- q- Z
  16. #define E2PROM_CMD_READ 1" W, V  J+ |' K; K, ~" a; ~% x6 r
  17. #define E2PROM_CMD_WRITE 2
    # v: m  D, n9 O3 R: x
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"3 J; A( [1 {" o0 ]
  19. % C5 [. Y1 a0 ]& z
  20. static int readparam(unsigned char *mac, unsigned char *stbid)) C1 l& R# D* u% j4 y: K
  21. {
    / c/ Q* |! c! V6 z; G/ p  O2 t
  22.         int fd, ret;
    9 t( |+ I2 u; i+ a# W0 @
  23.         e2prom_s_cmd arg;3 Y* C5 ]* d5 |; e  S  i! g; y
  24.         unsigned char buf[0x18];( \" D: r/ I+ r% |

  25. ( o  @6 y+ J3 G1 b) l9 P$ t
  26.         fd = open(E2PROM_DEVICE, O_RDWR);- D7 z$ p$ P' E% K$ l
  27.         if (fd  < 0) {
    3 s, U2 A2 p2 Y; \. d1 g
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);) E# m1 \& b6 `' b1 d; |* A6 E
  29.                 return -1;
    & b1 e6 q- ?* I2 K
  30.         }1 w" c  {8 l! U1 D! q
  31.         arg.sub_addr_count      = 2;
    4 G7 }" s0 X9 G# v* r
  32.         arg.data_count          = 0x18;& r  k" h" G, d7 E+ w7 q# C6 Y2 V
  33.         arg.e2prom_cmd_sub_addr = 0x290;( q9 a# _! m6 V
  34.         arg.e2prom_cmd_data     = buf;" e, I9 e3 x# q; c% ^7 M  o
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    & U- J* ~( ~8 a( Q" v
  36.         if (ret != 0) {
    7 [7 U" M/ L8 B: h# V2 R- V) C% v
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    4 w4 D/ H" O( a1 q
  38.                 return -1;% q$ N( H7 A0 ~
  39.         }
    ! s: N2 w0 r" ]/ ~, {, o
  40.         memcpy(mac, buf, 6);
    % J0 L  ]" p3 e( B0 ^$ ~
  41.         memcpy(stbid, &buf[6], 18);2 p! i+ E- U/ x4 G
  42.         stbid[18] = '\0';/ R) r$ P- ]5 i* k% u9 c( D! n

  43. " C. w5 g3 M+ h4 W' D9 L1 l. \
  44.         return 0;, z/ [  ]  j8 e$ A% H! ]
  45. }" w% S" m  W0 ^- R: M, f
  46.   a3 e, X  ^0 [. A7 B
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)/ N, H& R! G, w; I# c
  48. {5 ?$ q$ g5 A8 B# y1 V" I
  49.         int fd, ret;
    $ |: j( T( S" h& l6 D, n
  50.         e2prom_s_cmd arg;
    6 V- Y; r$ c1 y4 t5 t' X# v) J
  51.         unsigned char buf[0x18];
    # c. T) V6 ?: J4 C9 @

  52. 5 T' c% h1 ^* {5 C
  53.         memcpy(buf, mac, 6);
    : ~' l; m, M2 [- E3 _# S" P' [7 `
  54.         memcpy(&buf[6], stbid, 18);
    ) a. J; \+ x; M5 C
  55.         fd = open(E2PROM_DEVICE, O_RDWR);* @7 X: S- _% l1 V; I5 e$ n
  56.         if (fd  < 0) {
    " U  n0 u* H. E1 V8 T; T3 F9 _
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & i+ ~! _6 d) j& M% W, G9 x( ^
  58.                 return -1;
    3 n0 o: A1 f+ H0 G1 d
  59.         }
    ( Z6 E, v9 q* F( C
  60.         arg.sub_addr_count      = 2;, k& L/ D0 y" @9 I9 C3 Z* J4 t- Q
  61.         arg.data_count          = 0x18;! Q/ Q: J% }) ^" \4 j  q* Z7 E
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ; V- Z" F7 ?) B6 R! Z! a* r( J7 A
  63.         arg.e2prom_cmd_data     = buf;8 j; v9 i5 f6 O- A' `9 T7 w# Z
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);4 E: k( n$ E9 S
  65.         if (ret != 0) {4 w$ X' z6 H: j) O' e# d
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ; p0 T  J5 {3 O  m0 @  F3 o
  67.                 return -1;
    * o! h9 ~; N" M/ y3 u, ~; l
  68.         }
    * \& w/ `) ?1 t% Z( ]+ Z+ z

  69. 0 H9 {1 g. |6 L! k; T. O$ h. J3 `
  70.         return 0;* p- {& |6 @" e# ?
  71. }
    2 z% \2 _% m% w( u1 j

  72. 7 V( n+ A1 w8 U: Z. z. A
  73. int main(), K/ D! t6 q! t  W6 l  _6 o0 Y
  74. {3 n9 i4 V& K& r0 \5 b  T0 D
  75.         char c;; H" ^9 Z7 ^( ]5 \, X
  76.         int i, macs[6];
    ) T+ Q) d; o; H
  77.         unsigned char mac[6];4 t3 i# G4 @; m; Q3 s0 b
  78.         unsigned char stbid[256];9 O2 t! J0 y* O
  79. 0 ?, `4 |. {  V$ C5 z6 f( K' F" D
  80.         if (readparam(mac, stbid) < 0)2 ?: }5 x# i" J( t* ^
  81.                 return 1;
    * }! F9 r; N  z
  82. - {: B0 X: v7 Y# e+ d. y; u9 J
  83.         printf("Current parameters: \n");
    ( W7 T) h9 o# ^2 n
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ I& `' F# N3 m$ [, ^
  85.         printf("  STBID: %s\n", stbid);9 y7 v2 ~* U0 \/ ~' T% |" ]" u" {+ B
  86.         9 @/ h( ^$ m: G' s+ O% _
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    : w/ |  X* d2 X; F, f) f" S! h% X' ]: k& L% x
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    # \1 B% s  ^/ I1 c; N+ q. y
  89.                 printf("Input MAC error\n");
    " ?: U3 S8 u- A  m# h  Q7 Q
  90.                 return 1;4 i! f" F4 s0 V, q: o* D
  91.         }( ~- D' l1 p7 O7 }2 c5 m
  92.         for (i=0; i<6; i++)mac[i] = macs[i];5 U- ?7 v; v* c& b
  93.         printf("\nPlease input new STBID: ");# W; x/ b  X4 A$ M; n0 t5 V
  94.         scanf("%s", stbid);% G- J6 [7 A  Z. e" `/ [; O
  95.         if (strlen(stbid) != 18) {, b* ?0 E# E' P4 G3 G$ R
  96.                 printf("Invalid stbid\n");
    / V0 `) D' K$ y5 \( X
  97.                 return 1;
    2 m7 d6 m% K$ A3 j% {% Q5 M! |
  98.         }$ Z$ q5 b! V& K$ G; L
  99.         printf("\nNew parameters: \n");
    7 d  @6 @+ i$ |4 C2 H* q
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' ?0 J" f" K* E' @7 O) W
  101.         printf("  STBID: %s\n", stbid);- t! q3 L6 n! Q2 N, z
  102. ! n0 Y% z- e; X# P
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    / _; @/ Y- z+ {8 v6 ~8 a
  104.         for (;;) {
      x+ S( N5 Q2 N7 @) h& T% s& A
  105.                 c = getchar();
    2 H# ~- H8 z- [* S: z( M
  106.                 if (c == 'y' || c == 'Y')
    9 M6 z) L- a, |/ u& k/ M% _
  107.                         break;
    / V9 i% d- E0 Z; N. V
  108.                 if (c == 'n' || c == 'N') {4 e* q1 t! D8 P! o- m* p
  109.                         printf("\nAborted.\n");
    4 P  O# b/ _$ n
  110.                         return 1;
    ! Y" W% ^9 t! V7 i; X5 U2 ?  q  y
  111.                 }0 Q, n' r. {) T+ {* Y
  112.         }
    , u! i" i' W) H6 C& X
  113.         if (writeparam(mac, stbid) == 0) - m5 h+ \6 A3 E( Q+ v" h
  114.                 printf("Parameters changed.\n");8 R! y% x# d& }

  115. 9 Y$ |2 y2 J- l1 k( y' L
  116.         return 0;
    2 Z$ P1 y( A1 q+ t0 @, s* s
  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
' h* r9 J/ Z+ \+ e在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

+ X% `7 s3 |1 ^, Z; U6 ]+ K你用的编译命令行格式是什么?  c$ y6 W2 x: f/ Y+ T) g
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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