查看: 16530|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    & a- o  }1 K. v+ q5 V& p* k& K
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig6 N3 v; E2 @& @) s- s) s3 A1 |' q+ [
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
9 i3 t& k1 X$ V# X% [1 O3 ]5 ]! xusage: himr <address> <value>. sample: himr 0x80040000 0x0
! U) j3 q) _6 D+ _# J- D/ H0 f# q7 j- d6 ]. E7 N- P5 G, G* T
- w4 ~2 @) a# E0 Q% |
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?  x% A7 Q1 j# H1 W$ _

9 N( l% `" V. C! ~补充内容 (2012-3-8 09:42):
: d! i& `& `- D: N5 D( C! |http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数, X: r% Y( g9 c$ j, Y
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。  @$ C% @. K! r5 x* H7 d

8 d& l- C1 v: H6 fhimr <address> <value>. sample: himr 0x80040000 0x0$ y$ F9 W& M* B1 c. g. @
' O5 T+ D( ^, o$ k
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。7 J4 a8 |3 X2 t! S6 d+ _
himr 0x80040000 0x00' P7 b& n5 F! Q7 W
himr 0x80040001 0x11) b& A1 k+ d2 X) R" P0 ~; V
himr 0x80040002 0x22' c3 q- u# T! T0 u% X8 ~( b
himr 0x80040003 0x33
/ h! z" J; p" H1 g2 F+ Yhimr 0x80040004 0x44
6 C) Z4 B2 `9 B, Y7 @himr 0x80040005 0x55
) q& e+ h& z2 U, e+ t, d( H$ t: ~% S, S- X" h
SN也是类似。
8 Y1 T7 o; p. n. P( N' A8 j
8 O0 P: o3 k9 D2 p8 `* {1 s, t7 j8 V现在主要是,谁告诉我们MAC和SN的地址?
$ g. N) Q. i7 D
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
3 ~: o' v" e' N" i9 r# o5 ?( \一直想找到运程修改MAC和SN的办法,苦于无解啊

% t+ B/ m% ?5 e  V源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 & ?7 {# J- O/ y7 d2 Z. g
; T, U6 D2 X* Z) d# \" E
修改的代码早有了。到今天不会编译。
6 V" f) [; t% [/ ~6 {% ^5 s7 j需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    * h  r7 F% R2 r$ X
  2. #include <malloc.h>  r0 ~0 m3 p7 s0 Q; X* c
  3. #include <sys/types.h>8 M' p- a7 {" ^2 n
  4. #include <sys/stat.h>, Z$ J4 T  P, Q' E! g" N! A2 |+ V3 C. K
  5. #include <sys/ioctl.h>6 O) `  }9 j3 ^% B
  6. #include <stdio.h>& l0 ]( ^/ y" |/ C6 d8 K( i: R
  7. #include <string.h>* ~4 x$ {9 ?; ?4 m9 f2 a0 }
  8. 4 D- W. i0 p# V  }# W+ @& l
  9. typedef struct {
      C% c6 \- N2 t. ~
  10.         unsigned int        e2prom_cmd_sub_addr;
    , D- Q* Y* ~% o! x' P
  11.         unsigned int        sub_addr_count;/ Y3 Z! K- m, w2 ?* X& @2 X- z
  12.         unsigned char*        e2prom_cmd_data;1 f8 E0 ?" s; n' Y
  13.         unsigned int        data_count;( \3 V! g5 o% G
  14. } e2prom_s_cmd;
    ) r+ `) a7 P/ M/ T

  15. + C( L, B3 R" |, y4 t2 Y
  16. #define E2PROM_CMD_READ 1+ {/ \; q* k- |8 c9 D0 S1 E* X8 o
  17. #define E2PROM_CMD_WRITE 2
    " l- t9 F5 J5 e( N( J4 o# L( o( z
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16") V! G% [& M0 c! y  H/ H6 e! g( r

  19. , }1 ^2 B  e$ t4 X+ a- o
  20. static int readparam(unsigned char *mac, unsigned char *stbid)6 s6 o' ^  {9 e6 i5 a
  21. {
    $ s" ?) @) C* M2 G: M' j6 y( Q
  22.         int fd, ret;
    2 l' U8 o9 X% L" a$ C
  23.         e2prom_s_cmd arg;% m' F$ `* T" S" y, H6 x# u7 g. m
  24.         unsigned char buf[0x18];
    % K  S% l0 n; Z
  25. : S5 b* {4 X2 w! o
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 q! W0 o. w; H7 N; r+ f; Q
  27.         if (fd  < 0) {& Q5 ~/ v( X7 h
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - C: Z% J4 U: p3 u
  29.                 return -1;( O4 Z  }6 M3 d7 {
  30.         }
    % I9 B9 N6 L3 W$ C2 B" R
  31.         arg.sub_addr_count      = 2;
    * \3 ?6 E4 S) R" K
  32.         arg.data_count          = 0x18;, p4 I% G  ~7 j6 p
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    / o8 W( v' z' e
  34.         arg.e2prom_cmd_data     = buf;' q7 {; V' q$ c
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    # J7 J, Z- n+ m" Q5 a' r/ \7 x; j
  36.         if (ret != 0) {1 E" h6 Y. I0 E( U( I
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    : n1 x3 k) p) d) L9 q: e+ H
  38.                 return -1;" k& @- _9 m) S% S' f
  39.         }
    & q! a, W% S* v" a- Z
  40.         memcpy(mac, buf, 6);+ U$ N, D+ t. k0 s% L, F% h1 ^
  41.         memcpy(stbid, &buf[6], 18);
    # g' e+ U6 D* t% s( a9 ~
  42.         stbid[18] = '\0';' N( X) ~6 U( P
  43. * m+ L" P. q: Q' v  r- ]
  44.         return 0;
    3 q/ i: F' i9 [# i) g
  45. }
    ; N2 A+ |# E8 K5 G0 h" l4 d& k

  46. 3 H5 Q# b5 N; ^9 b& [) q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    & \( V5 n4 [- Y' y4 W$ t& u) S. Y/ K( u
  48. {/ C& a+ C# @5 W% Y* m
  49.         int fd, ret;
    " O# z$ d! G3 n/ P5 _  q3 M9 P
  50.         e2prom_s_cmd arg;
    5 x6 w& J! O- ?0 o7 C  f6 b
  51.         unsigned char buf[0x18];5 E1 K* G7 r; I) I4 I2 c6 u# e1 i

  52. % l+ O$ s  ?! O0 l4 ~# I  N
  53.         memcpy(buf, mac, 6);4 w2 c4 H; |2 k! c
  54.         memcpy(&buf[6], stbid, 18);; T" z! {" W( z+ z7 }' Z6 \$ w
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    & \' D; q$ y- C+ |( O) S2 `4 `
  56.         if (fd  < 0) {+ J+ V% Z9 X8 K4 n8 e: U
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) O& H* A& T1 H% m2 ]
  58.                 return -1;/ N( w3 \) ^6 t* V
  59.         }
    . @+ l3 e4 N5 p3 w; }6 N, w: I* Z
  60.         arg.sub_addr_count      = 2;8 ?0 b# J& l9 O) @" P
  61.         arg.data_count          = 0x18;
    ; [* n0 b2 k* \$ B, m' I7 O. r
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    7 J' N6 D7 q0 y. r/ D2 q) z
  63.         arg.e2prom_cmd_data     = buf;
    " V  L4 A6 q7 w& q- G
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);* ]% o- u" ]5 a, {0 V' B- z+ E. M
  65.         if (ret != 0) {
    & H7 z- j: `- I2 F, W# i
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);% T3 a7 L8 j, L* a* z7 G! R+ K
  67.                 return -1;
    5 m4 \4 n# G) X" F0 ?7 h5 S* g1 E
  68.         }
    . K2 n& G6 u2 B7 m+ C" ?3 [* L
  69. - e7 t' X, j8 |& U7 p" y
  70.         return 0;( g0 s( W! z6 s; w6 n/ P
  71. }
    3 y. G' b7 [: r$ f$ ?2 J! W

  72. ( z; Q  D) `5 }9 M
  73. int main()
    * u  g( s. q8 b0 q; J& B) h/ j
  74. {
    # a4 ^: e; h* I7 ^9 A! \
  75.         char c;
    : |0 A5 N! |- Y' c" @% }
  76.         int i, macs[6];
    8 N& W& k  V$ S, |% m) a) c6 v
  77.         unsigned char mac[6];: e2 `5 E: c* G
  78.         unsigned char stbid[256];1 X1 g9 v, [* k. f; Z

  79. 1 {% ?4 D8 U! m" Q0 F; R
  80.         if (readparam(mac, stbid) < 0)
    " q+ P0 J$ X9 E& \
  81.                 return 1;
    : v/ i+ R* k8 R
  82. , m6 X: g4 J4 x. {, F) J( W" u
  83.         printf("Current parameters: \n");+ M# k  d2 z7 M+ K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 A' s* u5 Q" v! L$ {* U# |- j
  85.         printf("  STBID: %s\n", stbid);
    , H0 l# E( E1 E! C  G
  86.           }' e0 w, d, U6 \3 a
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");2 k5 K( w% q7 A$ J5 Y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {. K/ i# f: `4 R, h3 ?
  89.                 printf("Input MAC error\n");1 a6 ?" t' B0 ~% @4 x
  90.                 return 1;
      Y3 {' X; c7 I) @# ^3 V
  91.         }
    0 q: y  l# D! _0 N7 T) C
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ! X2 g; b  D$ e: k" O
  93.         printf("\nPlease input new STBID: ");8 i" i2 q6 m, Q9 J
  94.         scanf("%s", stbid);- ^8 }3 S2 T+ C' e* t
  95.         if (strlen(stbid) != 18) {
    % v1 c# h1 @( F3 g5 W; L9 v; d
  96.                 printf("Invalid stbid\n");6 b& o5 U! t: o0 c
  97.                 return 1;- m2 Q% o, n% R! _6 ?; {/ K
  98.         }4 r$ W8 j: ?, j6 L
  99.         printf("\nNew parameters: \n");
      k- T/ u- i' j; e2 u/ Z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    $ q( C  T" a& S
  101.         printf("  STBID: %s\n", stbid);
    . J  _) t9 M* K# ]& ]
  102. 9 `5 V/ F' M+ A& g! l& ~# S
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    " A2 O; f1 w" ]+ v4 [4 H9 H
  104.         for (;;) {
    ' I/ B/ S( l  W
  105.                 c = getchar();, _5 S  @% \* U
  106.                 if (c == 'y' || c == 'Y')
    " r/ n- [) z7 W$ N5 }& c
  107.                         break;5 T5 V: @' }5 m1 h9 r, a7 ?
  108.                 if (c == 'n' || c == 'N') {
    / ^. a. x2 Q! w3 s7 c" u  t+ }: ?
  109.                         printf("\nAborted.\n");
    ( K- O! Q$ u. x' v' s
  110.                         return 1;; y4 ?; |! G3 T" [- @
  111.                 }
    9 Q% x+ h8 F1 T" z- _
  112.         }* p5 T2 X/ I3 O( N
  113.         if (writeparam(mac, stbid) == 0)
    * J: |% k+ v8 ?8 }7 ]5 w5 i# u2 V
  114.                 printf("Parameters changed.\n");. y4 L4 i: A0 o5 }, ]
  115. - O0 `* K& V1 Z+ P: e# K: M
  116.         return 0;& l; F! H9 \1 P& `: I% N5 N
  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 ! n: h9 }/ X7 i  [3 E0 p  w& r
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
9 A" n6 m3 m; b9 R9 L) H
你用的编译命令行格式是什么?% G, Y, o; H  w/ ?: R
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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