查看: 17309|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr9 c3 e: q* G+ ~2 ?/ z* V7 e
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig% k! a6 ^+ U5 o7 f+ u: k7 v* Y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
$ T) @! f7 M( d( m- A2 y" C% kusage: himr <address> <value>. sample: himr 0x80040000 0x0
& g  ?* V% x4 M# W6 G, Q; x8 S9 F; a$ v, Z2 w

; ?6 S6 s5 x( r9 Y4 }8 d% D不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
9 X2 n' F# y" B
( _! C+ z6 E! w3 \$ p补充内容 (2012-3-8 09:42):1 p# M8 T' ]* X. Z( r9 f; E; A
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数! D9 ]7 ?6 `9 m" m7 {! `
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
! p# w3 [7 ~1 |4 O9 A* z, Y+ r' O/ Y* k  r1 @# Q. l' A) n9 y
himr <address> <value>. sample: himr 0x80040000 0x0! |( Y8 p) B# A3 r+ W: a# H

' W0 W+ a) m1 _* E8 T$ m例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
( l- _; i1 L& n1 M0 shimr 0x80040000 0x004 d3 |( m* J! K6 ]# G! v
himr 0x80040001 0x11
- P( p  B+ ]# M! Jhimr 0x80040002 0x22
8 S  I& A( R5 d8 F+ y* N! dhimr 0x80040003 0x33
6 O: S$ g- i7 s2 K0 f6 O- f, dhimr 0x80040004 0x44
% p3 C* J( F* ghimr 0x80040005 0x550 B1 B3 w" W$ ]% T, f7 G) g5 k

( S$ r. X8 ^& A+ D: j% w+ nSN也是类似。
8 q/ B' k' K9 `- n& R; x' c3 O) Q0 a3 M
现在主要是,谁告诉我们MAC和SN的地址?# U0 A) J4 ~2 Y& t1 X
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
4 S  O; E8 ?* u5 [" ^) \一直想找到运程修改MAC和SN的办法,苦于无解啊

: L# r5 t' c' V& Z, {) x) ^$ [源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
% ], Y" o2 s0 I1 p, p9 q
/ g1 I1 c: v8 e  d: _' l: c修改的代码早有了。到今天不会编译。
, M! k! e8 u( q需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; \0 ]& I& c* C! a7 ~! H2 @' D
  2. #include <malloc.h># [& R9 i0 i9 h# w
  3. #include <sys/types.h>/ b& w" ?# D( @  n/ R4 E8 S: `
  4. #include <sys/stat.h>$ f& b+ x% a; k9 S. B+ N8 C4 M
  5. #include <sys/ioctl.h>
    4 G, w! ^; M; a
  6. #include <stdio.h>! C: U- U+ K- @; }" o
  7. #include <string.h>
    ! E8 g4 K+ o4 y

  8. / W' X: \5 ~8 D+ J! m' b0 L0 U" n
  9. typedef struct {
    ) Q. _- ^0 O; `6 Q) G
  10.         unsigned int        e2prom_cmd_sub_addr;
    + O6 Z# `0 S3 a3 T+ e# o' z1 y
  11.         unsigned int        sub_addr_count;
    0 r' h8 g" s8 `# m+ X
  12.         unsigned char*        e2prom_cmd_data;$ K* ^2 f1 W( n! R0 ~
  13.         unsigned int        data_count;; g  c" l* x$ ]2 T- Y/ ~
  14. } e2prom_s_cmd;
    - F  T( U9 m' X; W( P: t2 o

  15. 7 \# M1 v+ T" b9 P* ]
  16. #define E2PROM_CMD_READ 1
    7 t2 z0 _% ~0 [* c  @' V
  17. #define E2PROM_CMD_WRITE 2, V- |  W2 ~0 n, W
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    . ]2 b& F8 _  Q
  19.   I8 ^# _% _- O% f/ n4 }3 }
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    # p1 p" y7 y2 [
  21. {, h; R; a; k- E! q, ?4 Z  ]
  22.         int fd, ret;- d* R: i, m" Z9 H  C" [
  23.         e2prom_s_cmd arg;
    7 j# r+ b' O7 }# R( {! m
  24.         unsigned char buf[0x18];% C' W9 a0 v1 i! f
  25. ' z( Y3 E& t- b, F
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    : Y( t# R! n/ S' e4 {4 U
  27.         if (fd  < 0) {8 s! u0 H% R# y6 G3 g  C7 I
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);# X% W3 Q7 o+ ]0 f3 R) D
  29.                 return -1;
    : [% B: P2 s4 G: T: A9 k
  30.         }
    ) }/ i  X# D. y- O- t$ k  _' v
  31.         arg.sub_addr_count      = 2;
    9 }4 [7 T) a  j9 J5 y# `
  32.         arg.data_count          = 0x18;+ y% D( u, F5 Y1 G
  33.         arg.e2prom_cmd_sub_addr = 0x290;% H( p% Z' M, \0 j! O0 _/ u
  34.         arg.e2prom_cmd_data     = buf;" w+ u) r0 ]* m! \+ U# w( k! b
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);  t: Y( ^( `9 Q" d' z) y( Z
  36.         if (ret != 0) {
    5 p6 Z0 q0 z" \" \% h
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);$ A& w1 k. Q. r/ N' r* v
  38.                 return -1;; N* F8 Z3 q5 {. o# ]  o6 B6 g
  39.         }
    + l, K9 i# `7 o$ d
  40.         memcpy(mac, buf, 6);
    5 P* [4 q- D( {! N) x# }$ W3 L
  41.         memcpy(stbid, &buf[6], 18);) Y" g4 o9 R; P
  42.         stbid[18] = '\0';
    & R" s2 C8 T$ n
  43. ( \( A4 Z) I  ]$ r: s8 a: I" t% D* P
  44.         return 0;( I' @7 H; s' x5 U
  45. }
    : s0 |( k! S+ l

  46. ! }! i8 {& ^( N- [
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ( W! i( Z* B6 S& d% R  \
  48. {7 S- {2 J- A. r0 `5 K7 [  q
  49.         int fd, ret;& z/ X; c5 \9 Q) e0 |+ q( j8 q8 ~
  50.         e2prom_s_cmd arg;& H/ j/ i& O8 [6 F* T" U
  51.         unsigned char buf[0x18];2 m; s# {: _/ d1 V& U/ ]5 Q7 f7 `
  52. ) W/ n! I6 L. o3 K5 i" c2 |7 c
  53.         memcpy(buf, mac, 6);4 e& _4 o, c7 c. Y( `/ o
  54.         memcpy(&buf[6], stbid, 18);% j6 ^% k7 f- d: B
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    . f( G: p( O$ D# z  a6 h+ ~5 D
  56.         if (fd  < 0) {
    . N/ s+ F$ {* t; Q& E2 w
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 e# M( q; ]* t8 m1 c/ f. j/ P* y
  58.                 return -1;
    ! A2 D  n6 A. T* R" ?2 L/ U
  59.         }
    ; o9 @3 ~6 ?: U' ~  d5 g" d
  60.         arg.sub_addr_count      = 2;
    6 I# `8 V' m* f/ a5 k8 ?8 @
  61.         arg.data_count          = 0x18;9 D+ F6 B3 t9 w: Z( p+ }6 L
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    4 h/ o: Q8 v9 Z5 S; [, N+ D
  63.         arg.e2prom_cmd_data     = buf;/ [# z: j& l0 I, ^' ?  ]
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);9 A4 X+ y/ ]0 I: ^% G8 `3 {
  65.         if (ret != 0) {+ K4 F6 {0 t' A$ Y1 Y9 _& O/ l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    % s+ E" e% }2 X( Y- I6 \
  67.                 return -1;! S9 C) x' U: U, ]# b# \9 ~
  68.         }
    , V3 |! h& T, t6 _
  69. - w1 a% q  G4 M& t& p% x
  70.         return 0;: ^. c- m: `( L' Y  Y
  71. }
    2 m& c7 M3 [1 o3 c9 p

  72. : v- P$ H; S$ X# t5 u
  73. int main()
    $ |5 c+ `9 r+ {; {9 e
  74. {
    3 i5 _* \9 S4 a3 A3 x/ x" h8 `
  75.         char c;# {$ `! w/ k( t/ ~! {% i2 q6 u0 D
  76.         int i, macs[6];& I- J. ~  G  |* K/ W1 K3 z' B. k
  77.         unsigned char mac[6];
    " U3 g6 ]% @$ E7 K8 V  v
  78.         unsigned char stbid[256];( e7 G' w( ~+ s3 J3 l% J( q) g
  79. 2 N9 L) [: C6 D* a# _6 d
  80.         if (readparam(mac, stbid) < 0)
    0 p- z* M9 N. V
  81.                 return 1;) _; O* Q- K$ {. Q

  82. & B! n  B$ I. U/ l! Q
  83.         printf("Current parameters: \n");, K  O9 H* l* d% {, N
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 h: v4 {: P$ r% p
  85.         printf("  STBID: %s\n", stbid);1 T' `7 H$ m  w, i
  86.        
    1 A: j( i2 s4 N* e/ \  Z& B2 G4 X6 H
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");9 a3 m. q: K3 V- j% a/ N! r
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {+ d) N) l7 r2 ~4 F4 u; y+ y7 K
  89.                 printf("Input MAC error\n");
    + s9 H: m* @; x! A  P
  90.                 return 1;- c: E& O1 s. _) b- h. _+ y
  91.         }4 P$ r: ]. g$ `# i6 b8 y3 O, |- c
  92.         for (i=0; i<6; i++)mac[i] = macs[i];3 Z9 Y8 E8 F0 b. U+ T3 d. ]
  93.         printf("\nPlease input new STBID: ");
    * ~7 \8 r& S7 a) W
  94.         scanf("%s", stbid);/ d; s7 O) V, e' R1 m
  95.         if (strlen(stbid) != 18) {8 R  M: _9 p$ f9 X! b
  96.                 printf("Invalid stbid\n");
    % Z) q% @# ], ]5 n% R3 i
  97.                 return 1;( E2 H1 Z+ H; g9 b1 |' j1 [  a# A: t
  98.         }
    9 q7 S" m9 L: f( \
  99.         printf("\nNew parameters: \n");
      X1 Q+ i. l; w& \/ t& x
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 \9 W( k$ e8 }) F8 Y2 B
  101.         printf("  STBID: %s\n", stbid);
    ' P# }) k2 a# K( H1 K6 f

  102. 3 t8 ^2 D3 N( p2 X) R
  103.         printf("\nDo you want to change paramemters? (y/N) ");; ?1 i0 r& J1 z' C- b
  104.         for (;;) {& p* U6 Z& B+ T, A) N: f
  105.                 c = getchar();
    ' t2 T- a5 Z" Q
  106.                 if (c == 'y' || c == 'Y')) j4 [! m/ x3 {
  107.                         break;
    ( A$ B6 s' P& [) E" R4 u
  108.                 if (c == 'n' || c == 'N') {
    ( c' N. N5 ?( p7 I" S( e6 I8 P
  109.                         printf("\nAborted.\n");! W) O, ]+ ]+ |, S' V+ {8 E
  110.                         return 1;
    ! [" t- N8 }) B, K& \9 G
  111.                 }
    % c9 G2 ?! k) t% S
  112.         }
    & U& A2 s5 M, b( L% ^3 F" A
  113.         if (writeparam(mac, stbid) == 0)
    , Q; w$ `) [* A0 e7 M6 z- T
  114.                 printf("Parameters changed.\n");9 T* W$ [. i2 G/ s' I! _$ o

  115. , \7 k4 [1 L6 N& z
  116.         return 0;
    " g5 u9 B# o, A) p, }6 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
8 l9 d% J+ Z; F8 I: [在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

/ h8 K3 W! W: u& D你用的编译命令行格式是什么?
2 I2 s6 c; F2 x
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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