查看: 16811|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    , S4 K" m; h; r  t9 s. n
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig$ h  d8 _6 L3 b0 [7 C3 A
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
/ }9 g/ ~! K8 v2 z. Wusage: himr <address> <value>. sample: himr 0x80040000 0x0
: {- X* c* @4 i1 ^* p. s* N( w
7 ?# _: J- ~2 a( b) l  o7 d2 ^& f' `# a( y) W& q0 ?
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?" R5 [. l2 Y% A+ ~' l: E

, g+ ]6 s0 X: [补充内容 (2012-3-8 09:42):
, w( R( j! [$ V' y/ I  \# m2 j3 zhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
5 `& [( B$ }( E- x" m这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
! G( ]; Q8 X8 c! O9 h4 Y
9 R$ B( ]( ]8 ^# \' Z: W# Q& thimr <address> <value>. sample: himr 0x80040000 0x0& |# _) l4 N4 l9 \
: b0 Z# @8 s$ k/ E1 Z2 |5 ]: G
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
1 U( Q" ]$ X% w0 @" Chimr 0x80040000 0x006 y* k% L' w, ]% L2 u9 u
himr 0x80040001 0x11
! X/ f; r1 ?6 rhimr 0x80040002 0x22
+ |9 K$ B8 z! ~. a; qhimr 0x80040003 0x33: E! u1 v  a8 U! I
himr 0x80040004 0x44
6 `. r- g& C$ |( k0 c4 ~2 T" E6 ]+ thimr 0x80040005 0x55  A6 t1 J, e; `1 f+ W

6 j; \  t$ e" _# y' a* ZSN也是类似。) H$ Z7 A" N0 \8 U  V3 {% k8 o

  Z* x2 z( P. _' s( V现在主要是,谁告诉我们MAC和SN的地址?# j8 P7 b% A9 [2 O
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
9 ]  P# |" Y$ Y) V$ s  d) L一直想找到运程修改MAC和SN的办法,苦于无解啊
- K3 @4 ~1 |; o" p
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 $ P4 K$ K3 T8 T+ ?' b: S9 X6 C

7 e3 ^4 U9 S8 M- S0 V修改的代码早有了。到今天不会编译。
/ Q4 j- o! j: T9 R: T  B2 q需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>  v2 i( Y/ O4 `4 q* b4 @- R
  2. #include <malloc.h>
    0 V; [9 C1 R+ K3 [+ m) P  I
  3. #include <sys/types.h>5 d# i; g5 K9 E+ @( O
  4. #include <sys/stat.h>' B2 W6 _5 R) I% {" n
  5. #include <sys/ioctl.h>8 y' v' W+ W) n4 Q. }- O) s; N4 i
  6. #include <stdio.h>5 R0 ^$ p/ K! z' P' R5 d4 ^+ o
  7. #include <string.h>
    9 [' v5 o* b4 F1 ^2 c# e
  8. % i1 f" m% ^& {- M7 A. H
  9. typedef struct {2 f( \! l) `2 K$ ~: b' r
  10.         unsigned int        e2prom_cmd_sub_addr;
    & p  N9 P8 h0 k- f
  11.         unsigned int        sub_addr_count;, @0 g, R" T% M* S6 y& c- s+ [* P
  12.         unsigned char*        e2prom_cmd_data;
    1 Y6 @1 T" m0 C( q" d9 I
  13.         unsigned int        data_count;" w' [  `% w( A0 A- y- Y
  14. } e2prom_s_cmd;
    , I0 F: a5 v0 X6 B( S, D
  15. 7 [' h1 E3 _# d8 r
  16. #define E2PROM_CMD_READ 14 w+ n7 U1 h, g6 w
  17. #define E2PROM_CMD_WRITE 20 F2 v. O' Z! y1 M# U( N; D- B
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"! k5 h" B0 O+ _: m$ b' D1 r
  19. 9 u9 q- h' [, H& f% c3 u9 E
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    5 m5 \: G# M$ m6 H
  21. {
    0 l. V* D* v3 c' z3 @
  22.         int fd, ret;- c) l5 h3 C5 z2 X* i0 A! P
  23.         e2prom_s_cmd arg;
    % D3 \) b$ p8 h4 T; |8 r0 h
  24.         unsigned char buf[0x18];0 w, j" e6 a8 ^. ~. L7 d0 z

  25. ! ^2 t2 s) x1 ]/ X5 ]5 d1 B
  26.         fd = open(E2PROM_DEVICE, O_RDWR);9 z' N$ ~  R  ~/ _1 }7 T
  27.         if (fd  < 0) {
    + _' Y: t# ^0 S. K, x( Z8 y$ K
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);, b8 d5 v7 I2 @
  29.                 return -1;/ |0 w) f! l5 y! K( ^! _2 \
  30.         }
      q% x$ a5 f9 e; |- _& U
  31.         arg.sub_addr_count      = 2;# Y: d+ T9 K- Q9 T7 R: v: p+ m
  32.         arg.data_count          = 0x18;( `" x9 Q/ B) M1 f3 S0 }* c. }, J
  33.         arg.e2prom_cmd_sub_addr = 0x290;; }8 e8 ]) y, u! A2 z6 a2 a' Z- S
  34.         arg.e2prom_cmd_data     = buf;
    3 J2 L7 X& o. z- T- x- f/ ?2 S
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);7 N/ S" ^7 B, l! s3 |2 @! A+ e
  36.         if (ret != 0) {6 c" I1 _# ^7 P8 k
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);' L! a; A: p8 J4 ?) ^  a6 \
  38.                 return -1;
    / C7 h, a# V( d, g6 E$ a
  39.         }* x' h" o7 ?. ?, y5 ^
  40.         memcpy(mac, buf, 6);
    # R7 y% c9 U" ?+ }! K
  41.         memcpy(stbid, &buf[6], 18);
    8 ~4 L( Z( S% Q/ b
  42.         stbid[18] = '\0';9 q3 m+ |* ~* q5 {: Z
  43. 0 O( O2 O: r+ Y5 }: `3 z
  44.         return 0;( Z, O6 _4 p) l9 `
  45. }
    - w# H0 y( u0 s# s& R

  46. % o% x4 ^$ p  c% E2 x0 ]9 Y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)" t5 N3 m" D% |3 K" M
  48. {, o9 A2 W* Z. V
  49.         int fd, ret;  |7 X+ I& q0 W
  50.         e2prom_s_cmd arg;6 m+ O1 O, }9 N; ]1 {, m0 ]+ ~. E! U
  51.         unsigned char buf[0x18];% l3 _5 G+ d& a4 H6 m2 [

  52. ( R# N/ O# d' [+ `- c4 p, Y0 V- R
  53.         memcpy(buf, mac, 6);
    % E; x, I# j( w- p4 s8 s
  54.         memcpy(&buf[6], stbid, 18);) B6 A/ B! A+ V  ?! `
  55.         fd = open(E2PROM_DEVICE, O_RDWR);6 X5 d# E6 h" h; d6 r& a8 i& D
  56.         if (fd  < 0) {
    1 N( F' m& ^1 I; J
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * B  _" J. n1 Z2 p3 h' r
  58.                 return -1;
    % q; x& D, G4 R3 E0 h& k
  59.         }& |% H2 w, Q3 D) |
  60.         arg.sub_addr_count      = 2;8 B  H1 t0 w+ |) |( |
  61.         arg.data_count          = 0x18;2 ?( x  _6 l2 l7 v! _
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    . D$ f* A9 `2 `: t8 C& e  l
  63.         arg.e2prom_cmd_data     = buf;7 Y  S" C$ B; N& x2 D4 x: U* v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);& A- p' U; v+ Z4 e& r% z. {/ f' ~
  65.         if (ret != 0) {* g& ^! {. v: k' l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);* M0 W9 [+ K: I& C: k* O; a
  67.                 return -1;+ j$ p; `0 b# O+ b
  68.         }# P  k& n1 {+ B6 \
  69. 6 L) p6 E& M) h
  70.         return 0;
    6 ^+ p/ O2 u; n! l! y$ {
  71. }
    4 W5 D; O( d% _4 x- Q
  72. * u6 f7 t6 G- ^+ d* h  x& A
  73. int main()3 O" m" [0 w9 e8 ?" u% ?
  74. {
    $ \( f8 y8 ~# \
  75.         char c;
    ' P* Z' x3 q7 X+ c
  76.         int i, macs[6];3 ~% P" v  a0 Z1 H) I, I6 [) l3 o
  77.         unsigned char mac[6];0 S% i" O& [8 s0 I5 F) i: a1 l  O
  78.         unsigned char stbid[256];
    # z0 m: w9 I0 ^1 V4 @, Z

  79. 0 d  R3 s* D2 u6 ]9 X" F7 F/ f& V
  80.         if (readparam(mac, stbid) < 0)
    : x* w' }- F+ K5 \5 @, m( ]* F
  81.                 return 1;
    # ?) \/ v2 n( a

  82. / [2 m9 c2 [1 ]+ ]: ?$ z6 l! t
  83.         printf("Current parameters: \n");- G' l7 G, u! [" L2 m! g
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* I; Y4 y( ]  f; v. b0 D
  85.         printf("  STBID: %s\n", stbid);, @5 `1 e$ o1 s3 ^0 C( ^  P8 w, @
  86.         , d+ r0 H) X* t/ D0 c1 p
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");* }2 \( R) b. O; X% w8 Z8 I
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {' ^9 e0 h6 W3 z& t/ A
  89.                 printf("Input MAC error\n");7 ]$ J/ C0 i: e3 `" s
  90.                 return 1;
    2 \2 k1 [1 H2 z, z# ?9 d
  91.         }( @4 `0 O7 _$ F, u: J
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    $ _- `+ e$ {& P$ ?& U+ A7 {
  93.         printf("\nPlease input new STBID: ");
    . H. t; o. b% O* j. u
  94.         scanf("%s", stbid);
    + q- s0 O3 F7 x6 h6 S+ U
  95.         if (strlen(stbid) != 18) {
    3 F, L& o  h. k, K6 P0 v0 S  T
  96.                 printf("Invalid stbid\n");" y2 z+ f3 R" G/ N8 [" d" Z! s
  97.                 return 1;: q; ?& Q1 d6 N
  98.         }' ]/ J2 H3 S5 o' s
  99.         printf("\nNew parameters: \n");
    9 K* h" F- E8 A" T5 `
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    2 |, ^  M* `) \3 e1 X' }8 q  c
  101.         printf("  STBID: %s\n", stbid);
    4 K9 @9 L+ t7 `! C, j

  102. ' G: o( L3 q5 v
  103.         printf("\nDo you want to change paramemters? (y/N) ");0 m/ [* q  j: C, k, B
  104.         for (;;) {6 q1 ^# T( {$ E6 i
  105.                 c = getchar();- t# K6 @" s! ]# q" J
  106.                 if (c == 'y' || c == 'Y')
    ) O8 Q* B5 C# J0 a* W' U
  107.                         break;& w! g+ Q) @9 s$ O  I% u) a. K
  108.                 if (c == 'n' || c == 'N') {# }* R6 K0 x3 o& [1 @2 b
  109.                         printf("\nAborted.\n");
    3 {. z8 n$ r1 `  T. O4 Q# R
  110.                         return 1;2 U7 k2 N  h& l
  111.                 }8 `% ?; h* d; I+ v& w
  112.         }- }: v  m' }+ b+ K0 r; g" F+ I
  113.         if (writeparam(mac, stbid) == 0) 7 ~. l# @4 r6 Y# U2 Q4 a
  114.                 printf("Parameters changed.\n");3 _5 Z5 M# i/ b" Y5 Y3 c8 F
  115. / q' x% N6 j$ i$ ]
  116.         return 0;
    5 O$ U8 I$ f  l- h4 Y' D" 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
4 U! k3 ?& L& X) b在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

; G* A/ F3 m! J6 S: n你用的编译命令行格式是什么?$ p# i8 @) q& V& q$ L: W! H
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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