查看: 16425|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr; _& @0 g1 `+ u' l
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    : ^! e5 Y0 s; e, J8 S8 q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
% S- `' t3 K8 r4 Busage: himr <address> <value>. sample: himr 0x80040000 0x0
$ j* I6 ]1 F$ o
, e1 J6 {4 p* C; g! M1 g- A* f! _, a. P! R& I0 ^. p. `( D: P" r8 X: A( q0 W
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
( P" Y. u/ R- f1 v* V1 c' |$ A- b5 Z: z. n8 }( ^! _8 g
补充内容 (2012-3-8 09:42):( }6 ?3 E* f5 Y8 p" B+ A( u5 D9 |
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
1 N! d3 g' J0 A% e/ F0 D这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
$ P1 N( {" h, G" d0 ?, y0 q  t& }  g6 p4 p9 g9 r
himr <address> <value>. sample: himr 0x80040000 0x0( f1 R! g: }! ^6 f, s% l  q

& S; @+ m$ _2 P) C& G" Y: y例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
9 |& b4 s4 @% {: U/ t, X/ qhimr 0x80040000 0x00$ f; Q3 u7 q, o
himr 0x80040001 0x11, I$ y9 s& R2 x' [+ q8 y' W& V* j
himr 0x80040002 0x22
0 }; H4 X  D# S& ahimr 0x80040003 0x33
6 i8 B7 y) |& n; R& T5 D) H) a% i' Shimr 0x80040004 0x44
& V9 J, C/ h- V. z9 c/ mhimr 0x80040005 0x55
& H+ y3 |: f; P
( `0 G/ B  S. m& I5 BSN也是类似。. ~* M1 _" \3 t1 C
3 C! ]7 j2 L( `  n  O7 s4 a
现在主要是,谁告诉我们MAC和SN的地址?
+ H& P7 {4 m# j; w1 O
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ) U  v# I9 ~  a& w# O$ k2 _; o
一直想找到运程修改MAC和SN的办法,苦于无解啊

; N! [+ ~- B* S3 \7 l5 U源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
& T7 F: G! J+ z7 E5 m" ]* w% T8 G3 Y0 |+ o1 [2 v' l8 x( @+ J/ A
修改的代码早有了。到今天不会编译。
5 @" t) W, U/ s9 ~7 t需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    * ]$ ], i2 @) ]' g6 [" t- y6 t
  2. #include <malloc.h>2 z1 |% H4 P' _  m! o1 r
  3. #include <sys/types.h>
    9 J5 F$ g$ k2 f5 o
  4. #include <sys/stat.h>8 l! T' c0 t8 M
  5. #include <sys/ioctl.h>* G& L1 K) g- [
  6. #include <stdio.h>' ?# e* Y9 Y) \8 W5 o
  7. #include <string.h>
    ; Z, R3 k, V* a$ T4 t: o' i* F; R) l
  8. 3 u" Y( h' F' A1 y1 g/ q, Q
  9. typedef struct {
    ; y, H# w1 ]% m4 H; M
  10.         unsigned int        e2prom_cmd_sub_addr;
    - X# K) e3 Q. x" q4 P
  11.         unsigned int        sub_addr_count;$ x. a: W/ X. v" b/ {
  12.         unsigned char*        e2prom_cmd_data;
    . N) x- t' n1 Y( g
  13.         unsigned int        data_count;& o! g% K6 P5 l! g2 L
  14. } e2prom_s_cmd;
    - X5 K" o6 _# g
  15. ) O6 ^. u/ R" I# t( @
  16. #define E2PROM_CMD_READ 1; X* X3 ~& N& c* D) X
  17. #define E2PROM_CMD_WRITE 2; {  `5 U" i2 P
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"# g5 s6 h! F+ X! h* u9 b

  19. ; o9 X. p$ V2 _4 O5 W9 j4 k2 I
  20. static int readparam(unsigned char *mac, unsigned char *stbid)1 ]9 D6 I5 F5 m% \" W! W* S, r7 {
  21. {
    ; t) x4 _7 A# o
  22.         int fd, ret;- A! C& ]' o, F0 ~" Q& O
  23.         e2prom_s_cmd arg;/ P: {* M* Y, m, q. S! }1 q5 l
  24.         unsigned char buf[0x18];' i  O; H, o+ O7 d+ w

  25. / `1 E2 v1 ^3 m" z- s0 i
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    / \4 v! s3 [; H, H5 I
  27.         if (fd  < 0) {0 x7 j. E& Y. N( _
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);) z7 K/ l& W4 h* n
  29.                 return -1;
    7 c, Q  ~3 ]# n" F, c9 v
  30.         }
    7 s, j% a" }( I. Z0 j
  31.         arg.sub_addr_count      = 2;2 ^$ m( }* N! q  n8 ~, C  G0 J" }. H
  32.         arg.data_count          = 0x18;3 c+ f3 k' N( X: i6 \; p6 N* C
  33.         arg.e2prom_cmd_sub_addr = 0x290;4 y* x; ~2 m( s- E8 n$ S: i
  34.         arg.e2prom_cmd_data     = buf;
    ' l8 x' e9 j( s8 T
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ( Z& O: @( M$ H/ T3 S* P- J2 @
  36.         if (ret != 0) {
      e( T2 B9 M- A+ c2 P9 D
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);2 Y) B" q0 c: I( k5 }1 {
  38.                 return -1;
    + f: m3 F0 J' ?/ _8 Y& G& h3 b3 q
  39.         }
    $ s8 Q( X6 n" R6 v" G1 P
  40.         memcpy(mac, buf, 6);
    4 V  d* q5 @# w3 G+ p; F0 y: p
  41.         memcpy(stbid, &buf[6], 18);) w% `* v/ \! d# `! k5 V
  42.         stbid[18] = '\0';/ S: g$ S1 U: E. _
  43. 8 |8 `! q" R, }) Z
  44.         return 0;
    8 i& n& r/ {1 M5 H# g* n
  45. }
    4 H' q. O/ R! J# [" }* n1 ?6 f0 Z+ ?
  46. - ]2 f' I7 \# ]6 b
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)4 D/ ?# C1 o# I* M$ L
  48. {
    5 Z; y& b: f) f  i  m/ w! L( H2 T
  49.         int fd, ret;
    ; r% b+ @- ~$ z  ^& O
  50.         e2prom_s_cmd arg;
    , M0 M& h+ A% r3 ^$ Y4 z" t
  51.         unsigned char buf[0x18];5 Y) E5 z4 I: e3 |9 f7 b9 r
  52. ' @( S$ l* A! ]' G) a2 f7 P- \
  53.         memcpy(buf, mac, 6);9 _* s0 S! h9 L) G$ T; O
  54.         memcpy(&buf[6], stbid, 18);
    $ i! ~  Y0 @. i( q3 _
  55.         fd = open(E2PROM_DEVICE, O_RDWR);9 V3 ]5 U0 F( K( i) o6 p
  56.         if (fd  < 0) {0 ~8 S- b+ s( a7 D7 o* x# @
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % y9 o8 p5 n- u$ u7 s& E
  58.                 return -1;
    8 R) Z# \) C1 ?( L+ C
  59.         }
    * Y6 [  E& c. J" I
  60.         arg.sub_addr_count      = 2;+ [. B# u6 R) D
  61.         arg.data_count          = 0x18;
    1 b* i) z: A* g( \( [
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    : J( a6 ]& W% L7 n# B4 k6 P
  63.         arg.e2prom_cmd_data     = buf;
    ' F- ^0 y" J! \4 u
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);- b% k3 R& h; Y! j5 ?) z, y- }
  65.         if (ret != 0) {
    8 l8 o9 I  B6 i; V
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);+ C, B% ^: y/ ~# ^6 p
  67.                 return -1;
    * S- N7 X5 A/ J+ Y: I
  68.         }
    * a! a) {% p( [9 H4 h

  69. & u" @5 ^$ V6 b
  70.         return 0;
    + g# p" s7 ~1 r- D" @) w
  71. }' W1 r- T6 C. F8 R! h8 f; {

  72. 6 r8 U" p- D) J, m3 c
  73. int main()
    * R2 K0 V5 @, s
  74. {/ _9 x; s3 l7 }2 s' c
  75.         char c;
    2 u1 T; O# W0 r4 r
  76.         int i, macs[6];' G6 o- h* G3 N1 ~1 d7 y# T0 b
  77.         unsigned char mac[6];
    - O% r/ ]; U! {" }0 w4 |
  78.         unsigned char stbid[256];7 @5 V2 {* G- f$ A- I" ]

  79. $ D+ j+ D  M% M$ g; X6 {, ~
  80.         if (readparam(mac, stbid) < 0): U% f2 W+ g9 x9 ]* \" ?+ O
  81.                 return 1;
    + c; j8 F) z6 o7 O
  82. & T8 z* U! |/ y
  83.         printf("Current parameters: \n");" S% r/ u: |1 Q! l1 ?
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 v4 O) z& ^. M8 }
  85.         printf("  STBID: %s\n", stbid);( _/ u4 f% m6 X* n
  86.        
    , u+ B- t$ ^- P) `4 W5 {
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    , Z( r9 t& s, E4 k+ ?: c; q! b. T
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    0 R5 ]) e( `/ o
  89.                 printf("Input MAC error\n");- J# I( J3 W$ m2 @. q# c
  90.                 return 1;
    / @2 r& d: m% X) T: \1 P7 G) |! i
  91.         }: Q. |/ {6 p, C1 }6 x& U. Y+ m+ p- V8 I
  92.         for (i=0; i<6; i++)mac[i] = macs[i];) T. w+ m' b( B# R; b, t
  93.         printf("\nPlease input new STBID: ");* t0 F: C/ W4 |: G
  94.         scanf("%s", stbid);6 M: w' i3 `; ?  M+ n
  95.         if (strlen(stbid) != 18) {( ~* z8 T+ [7 f$ E# r1 I$ D& n
  96.                 printf("Invalid stbid\n");
    ' H% d7 ?6 z5 z2 R/ u5 [
  97.                 return 1;
    & {# i; O& o* ]) a# a
  98.         }
    9 b* S" K) F, r& h
  99.         printf("\nNew parameters: \n");4 [$ V8 l$ {2 F
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * ^4 V5 w3 q- _, s3 c5 ^
  101.         printf("  STBID: %s\n", stbid);
    ; i' y4 u/ h1 z$ _

  102. 1 a. s6 Y& c: e7 q
  103.         printf("\nDo you want to change paramemters? (y/N) ");6 _/ D6 E8 i0 G( P1 E
  104.         for (;;) {/ H8 Q( f, Z0 J% b! e9 Y
  105.                 c = getchar();
    ( t3 M; W5 c0 k( F& L
  106.                 if (c == 'y' || c == 'Y'); w4 Z# r# Z2 F8 v$ R( j) Q4 L
  107.                         break;
    ; U  N. @1 U8 G$ \3 e. A9 E
  108.                 if (c == 'n' || c == 'N') {
    0 p- M, h7 r7 b& }% X6 l
  109.                         printf("\nAborted.\n");+ ?6 t' q. G1 |) x( o
  110.                         return 1;. {/ Y# g, S% g6 @
  111.                 }, o: A, M7 U  k# F3 F( E
  112.         }2 b6 o+ o- {  |/ G0 o
  113.         if (writeparam(mac, stbid) == 0) / F8 S! j1 A9 h' G) S+ f% ~; J" P" ]% Q
  114.                 printf("Parameters changed.\n");
    ' {9 N) R6 p1 e  E% Z

  115. 4 ]" y, d, y6 J4 G, F! `" w) @5 ~
  116.         return 0;
    ( q$ y! f7 h) h9 W6 e$ Q
  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 7 k* M/ z+ F6 ~1 K' b
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
; J. R9 ^; n0 f" w" s
你用的编译命令行格式是什么?7 L$ ]: K% M1 k. R2 p  `( {2 c
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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