查看: 16922|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    $ L$ W8 t& k6 @% f$ s6 u. q3 C& Q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    * B5 p/ `; K4 t0 q& F
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
$ Y6 Y* z. U2 w5 yusage: himr <address> <value>. sample: himr 0x80040000 0x0( g) V/ T7 \3 t/ K
* a  Q/ l8 W3 b0 _
# \: H; P) c" z9 K5 h9 b! t
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
6 S% Q5 I4 w8 U$ n8 I, q- l# X2 q$ @  X% j
补充内容 (2012-3-8 09:42):
! u( g+ j  }" B' w# ^2 ?+ ^' Rhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
* F, g1 }: u$ n8 h* T这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。% i) U# ^; U: a8 T

' s. F8 `: e/ D9 N$ b3 u! Qhimr <address> <value>. sample: himr 0x80040000 0x0
: b, \6 k" I7 g) E9 L
9 }" k) j+ s7 [4 y$ C. d例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。7 z6 N" U; l* |
himr 0x80040000 0x00
! S5 D) ~6 e  r2 J0 {2 bhimr 0x80040001 0x118 J, {; L7 [( V
himr 0x80040002 0x22
8 j* ^! k2 X1 |( `0 |* Yhimr 0x80040003 0x33
0 }' u/ g; f+ j. q' E$ Dhimr 0x80040004 0x447 e7 ^' i& i0 v( H& P
himr 0x80040005 0x551 H7 G% `6 S$ C
# q& s& m8 f& I/ e( I! w" J
SN也是类似。' j7 O: G" \! a0 L) r' h& w
! M! {3 M5 l- O# Q5 q
现在主要是,谁告诉我们MAC和SN的地址?
9 F  ~! Z" x: _2 R0 \' j# d
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
3 m! y1 H3 C! }( L2 y+ i一直想找到运程修改MAC和SN的办法,苦于无解啊

% o7 \' ]0 c7 Y; V) \源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ( @+ L( n# E& `, J$ H5 x9 o5 H1 j

; Y3 d9 X/ h( x- V. a4 q# o修改的代码早有了。到今天不会编译。% n' ]( D) c1 @
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>' p& L9 g( j2 [1 t/ p  v: ]' l6 p9 N
  2. #include <malloc.h>9 D% y$ ^- l: d9 E( _1 b
  3. #include <sys/types.h>
    ! u. g2 {- V* _8 E, Z& H' J  L3 x( C
  4. #include <sys/stat.h>
      _! a9 F3 l2 Z' O7 O6 ?
  5. #include <sys/ioctl.h>
    7 ]% H% d$ S: ^" w+ i! ?
  6. #include <stdio.h>9 M4 r# f; U  d) i
  7. #include <string.h>
    ! B! r% B: R+ ~  x' Y' t- _
  8. ! p# P& i5 v! T9 K5 |- l( b; J( }
  9. typedef struct {. ~/ ], z9 W) `% C3 |7 Z
  10.         unsigned int        e2prom_cmd_sub_addr;2 W2 N$ }# b7 {* P# |* m- s; q
  11.         unsigned int        sub_addr_count;
    5 P5 h4 x2 O1 g- F8 o. V$ f1 F
  12.         unsigned char*        e2prom_cmd_data;) N0 u+ ^' Q) \/ u/ b) [' \
  13.         unsigned int        data_count;% v/ B& d" q) w( I  l
  14. } e2prom_s_cmd;
    : b$ G- q6 T$ j- v( Z4 s- S

  15. * z  h9 D! A6 O7 Y( C" D! A6 A, L
  16. #define E2PROM_CMD_READ 1; ~( y8 m8 P. `' j( J
  17. #define E2PROM_CMD_WRITE 28 J0 y( B$ {0 k( k% }9 t4 K
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    2 s5 q9 p( i& r  P; ^1 r  m
  19.   C9 v. m( E  k& P
  20. static int readparam(unsigned char *mac, unsigned char *stbid), L- f1 d! V$ r, j" p0 c
  21. {
    ( n  R3 S4 m0 O, Q4 X/ x' m9 g
  22.         int fd, ret;9 B& ~: G. b, m) \2 }# g
  23.         e2prom_s_cmd arg;
    + {% k. Z' B) V* h4 j+ C+ G4 R
  24.         unsigned char buf[0x18];
    ' p1 [' L( K, Y+ s2 h- j! x' _
  25. 6 g" @5 o6 f: e/ n; F5 R- b! q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 z3 I+ h' T! N# r. y3 U) M! f9 ~3 \
  27.         if (fd  < 0) {
    8 v3 o# F4 X2 m. w" |
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 a; _+ q, E# k8 h) W$ n
  29.                 return -1;
    / b4 S% H! X7 m7 g* g
  30.         }1 h4 S9 F% g, R+ z4 u
  31.         arg.sub_addr_count      = 2;8 {# F: u! n% c& ?1 S
  32.         arg.data_count          = 0x18;: ~! d( ]' Y/ |7 A* y+ ^
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    # j3 ^: ]2 I/ n
  34.         arg.e2prom_cmd_data     = buf;
    ; S: U7 G4 W% x2 |# j3 o( Q9 L) ~, w
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);) t, }! l' X+ C* @5 Z* }* O
  36.         if (ret != 0) {
    8 ]9 u0 C; s5 L  c$ y; `, _4 S& h' S
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);# n/ z7 z+ `2 f( R/ `2 I8 I/ O; K
  38.                 return -1;
    , w8 @. `( a, G
  39.         }* t8 @3 J% z" w! W- O
  40.         memcpy(mac, buf, 6);$ U9 ~" ]' g0 \5 e: k, i+ X  e
  41.         memcpy(stbid, &buf[6], 18);
    0 X7 L! T( m$ ?/ {& Q% N  H4 e6 i$ r
  42.         stbid[18] = '\0';
    7 e* {0 e8 w# U8 j4 V3 H* V
  43. - [4 C# J+ ^- a  X0 L
  44.         return 0;
    , `" h+ z1 {5 m* B# f( w$ v4 e
  45. }
    4 G7 \/ q* s  V5 e1 ?9 T' f; M7 B

  46. 0 \/ i7 G9 o. `9 y  b2 j
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ( e! w/ Z& s( b: U7 {
  48. {1 U# g1 W+ k) k( P2 v  t
  49.         int fd, ret;" Y# y. ?3 E% o
  50.         e2prom_s_cmd arg;' ]  o5 p( ]9 m  w7 w' c
  51.         unsigned char buf[0x18];$ o  E$ n. z: j/ s- n
  52. 7 h  u( N! D( z. x! ~
  53.         memcpy(buf, mac, 6);
    ' O' A  C* G, }! E- B8 w; u3 \
  54.         memcpy(&buf[6], stbid, 18);
    - c+ X& I/ y" Z0 I
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 G4 H5 I( ]0 C/ I4 [( T
  56.         if (fd  < 0) {
    ; Y' K8 T  R7 W3 Q+ J
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / Q& S" }1 O4 X1 M! `
  58.                 return -1;  q5 @( d) V% A' N5 P
  59.         }& N8 t+ |8 K( E) A; k
  60.         arg.sub_addr_count      = 2;; A: S. \5 l) g/ b
  61.         arg.data_count          = 0x18;
    ) \" _+ B. q3 }* T4 Q
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    " U- Y+ x9 I' P7 g0 C
  63.         arg.e2prom_cmd_data     = buf;  U- J1 I0 D+ C
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    * B2 k. F* o% c. G
  65.         if (ret != 0) {/ v1 M) l& P; H; n
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);+ s6 y7 R) {5 M" o  Z4 e" }/ t
  67.                 return -1;
    ; p; @6 |/ {. c) f1 Y6 R
  68.         }
    0 y1 H- D: N; w- R" [+ `& \9 W. r4 \
  69. 1 Y5 p* }  ?1 e& n' S/ d* |+ B
  70.         return 0;
    8 J8 n0 x4 ~5 O' B7 @) ]
  71. }
    7 D6 q) \7 B+ M' a# a+ F8 U
  72. - R- Q  V) K) K8 c# ^( `
  73. int main()( L& o* e0 U4 F6 I  Q
  74. {( m, _  L0 _. c$ T4 N/ a
  75.         char c;
    / o4 U) o6 i  Y1 F% i  X' B, X
  76.         int i, macs[6];4 b% i$ X- {/ {9 h
  77.         unsigned char mac[6];
    * p) D/ V( K' {
  78.         unsigned char stbid[256];
    8 C4 L" ?. P4 j% N* [' U0 _4 e

  79. 0 l% Z- @3 ~& ~; g0 L4 s! [
  80.         if (readparam(mac, stbid) < 0)
    + L; {2 S: v6 d; o
  81.                 return 1;
    , l4 e9 c9 H7 h2 q4 P( _# z" @* e3 G! X, j
  82. 3 [  X: a+ Z' L9 y. n; Y
  83.         printf("Current parameters: \n");) S4 I. e$ C% U. c+ S
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! i6 T8 a9 s, x+ H' E9 v, U4 |& A( d
  85.         printf("  STBID: %s\n", stbid);
    6 A( s( z* d4 F3 S( S& S9 a
  86.         ! M: c3 E3 }) Y# _6 d7 j. g
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");3 L. `% M7 I. ^# w6 I/ I
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 }$ x: S" ~  Q5 P$ s3 B
  89.                 printf("Input MAC error\n");
    5 ]9 T. R6 }& M+ D
  90.                 return 1;2 L' N  V/ p- o5 z1 @) F
  91.         }
    3 K3 r$ u# c; R+ U4 e7 R
  92.         for (i=0; i<6; i++)mac[i] = macs[i];# K$ \5 r( [& x1 W7 n: D
  93.         printf("\nPlease input new STBID: ");
    1 \# I, F+ o, o1 L
  94.         scanf("%s", stbid);0 V  `0 e! A) u4 J
  95.         if (strlen(stbid) != 18) {
    % S7 R5 [1 T8 p: M6 U/ k
  96.                 printf("Invalid stbid\n");
    ' V( U1 v; X8 d! F" ~' E4 W- D
  97.                 return 1;! R3 Q* y( {$ Q: ?
  98.         }
    9 x8 F8 N/ I' L7 g" D5 b
  99.         printf("\nNew parameters: \n");+ c4 a/ ~# X; g2 E! S
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 N. |" ?% p: o* ~4 O6 |& N
  101.         printf("  STBID: %s\n", stbid);) o5 \6 z' b" A( t" p
  102. 4 y3 D0 ?* s: _' S
  103.         printf("\nDo you want to change paramemters? (y/N) ");& [9 j9 u: X2 E
  104.         for (;;) {+ G. u3 i' ]2 X1 v" s$ T% z8 Z; }
  105.                 c = getchar();
    ) h- e+ L# v' g+ O0 c
  106.                 if (c == 'y' || c == 'Y')
    + D. P- c/ C+ t, ?3 c
  107.                         break;
    ) D4 b5 _" S4 x0 _* s$ l1 K
  108.                 if (c == 'n' || c == 'N') {
    . f7 v$ b! r* c6 N5 P; v7 Z
  109.                         printf("\nAborted.\n");; `5 H9 V. E- K& z3 S
  110.                         return 1;
    : j$ P+ Y% e! X
  111.                 }( Y$ `- `) R( I/ |; e8 G( _+ X
  112.         }
    $ C3 K/ d) U8 L
  113.         if (writeparam(mac, stbid) == 0) 2 i: k3 o1 i$ C7 y7 h( X) J
  114.                 printf("Parameters changed.\n");! B; r6 n( c4 ?, Y$ c
  115.   i( f7 E1 }0 {( e* {& F) s
  116.         return 0;
    , {: R% l3 d& P) l
  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 $ f' @% v  [' f& G( N  d( v$ l
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

- G9 @7 d5 J$ n2 K; ?5 ?( ]1 U你用的编译命令行格式是什么?) `% o$ n; m7 T4 U" t
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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