查看: 17343|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr$ C9 F+ u) t& g3 H
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig9 ]1 j4 D& \: w
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
+ `. O$ c4 u& f. _% Y; H: ?  {usage: himr <address> <value>. sample: himr 0x80040000 0x0
8 h* p' y3 P/ @! ~) c0 `3 c2 O" d7 C; \

9 I& m5 q, Q$ R不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?' c$ d: I/ l) [0 y: e

( @$ j% ~( |8 ~  h6 Z# v, ?补充内容 (2012-3-8 09:42):
! t$ M0 k; {- L$ \  B  H  R, Hhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
4 x0 [6 ^: ?4 R6 Z* d这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。3 u; U+ x3 t: n9 n, _  z
$ W: G, C8 ]/ \) N! `" L1 x: k# i1 f! Y
himr <address> <value>. sample: himr 0x80040000 0x0
1 z3 `( X3 {- P2 R
9 A, Z9 R+ B# ^' o$ w* `例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。6 E" R5 u5 @0 ^& I& S, X- h6 s% l
himr 0x80040000 0x00
8 o0 g- U% \( w8 X9 Whimr 0x80040001 0x11
8 c6 G" @3 Q4 Z, ]- ^" \* M7 thimr 0x80040002 0x22  u/ @, k' |7 w9 M* b" m
himr 0x80040003 0x33( j  R; x/ g9 X, c4 |
himr 0x80040004 0x44; H/ u0 t) e/ @  B
himr 0x80040005 0x55" F: p+ g% d' [

6 k) Z4 u  o) C( J' ~. A+ YSN也是类似。% E8 N) O/ W3 H" O

, n! y# }4 i8 J0 L现在主要是,谁告诉我们MAC和SN的地址?
7 B0 N8 y9 {$ j* a! ]- @; m7 O1 _$ G
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 : a- S$ v% g5 b# t, a& E/ R
一直想找到运程修改MAC和SN的办法,苦于无解啊

& E- D! q1 q8 [" r' f7 _. V+ K源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
7 A5 F, v  ?0 u% A
3 d3 W& a; F% r! ], N+ |修改的代码早有了。到今天不会编译。( @+ G/ w( N% p' g0 y& Y
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    % ]7 a2 O8 k4 n# C  r! w2 u: |
  2. #include <malloc.h>$ O' }! z* `3 G& }" P8 ~: B
  3. #include <sys/types.h>
    ! Q9 [) L7 I5 Q4 e5 l
  4. #include <sys/stat.h>
    & F5 `$ [) ?! {- M
  5. #include <sys/ioctl.h>0 g) N6 Q" [! E1 i2 h
  6. #include <stdio.h>* Z  L9 @7 m, c  h- F$ }
  7. #include <string.h>3 \7 k4 [! E5 Q8 ~3 Z- V

  8. , j3 k! L) V. X( f' y9 ]# d) [
  9. typedef struct {
    & [) C) j% M  @6 E; X: U
  10.         unsigned int        e2prom_cmd_sub_addr;
    3 m& U$ d5 x! G! h! ~6 z! P
  11.         unsigned int        sub_addr_count;1 m2 o) j+ a6 J" r4 g
  12.         unsigned char*        e2prom_cmd_data;8 \  m, W& s  a2 z7 u
  13.         unsigned int        data_count;3 L0 n- V' D- Z' V
  14. } e2prom_s_cmd;
    & }- q5 ^% U; t: y1 d& r

  15. ) I) s) x- z4 g  e# g
  16. #define E2PROM_CMD_READ 1
    " w8 A3 q4 R) W, B: P
  17. #define E2PROM_CMD_WRITE 2* o0 Z# ]5 X' i& g- e
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    1 p! g  j) z4 `% e, ]4 k
  19. 9 L, X- G5 S& Y* `  F7 ]
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    4 ?; @$ P; c3 a% k# w
  21. {" S0 W: s0 \* l( }1 {* K% a( m
  22.         int fd, ret;1 Y1 i! _' R! z) j# G$ ~. `
  23.         e2prom_s_cmd arg;. H5 s& b6 r: a
  24.         unsigned char buf[0x18];4 m4 Z/ g) u; i" R: t( g9 z
  25. / j3 A2 N1 N6 d8 W
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    - F( x8 t& ?5 `7 u
  27.         if (fd  < 0) {- [0 k. Z; y' y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ a7 c2 d" ]3 U( x5 q1 v
  29.                 return -1;3 n1 r( c% e$ }' z
  30.         }
    0 n$ p& x9 t5 |1 L* E) x7 @
  31.         arg.sub_addr_count      = 2;
    / N$ @; L; U. U- g. k* m( E1 C
  32.         arg.data_count          = 0x18;: j; @$ ~  U, G' @8 ^" Q9 Z& B7 w9 ^
  33.         arg.e2prom_cmd_sub_addr = 0x290;  B( n" l, `: i) q$ m3 N
  34.         arg.e2prom_cmd_data     = buf;0 @$ c( w- o  V  e8 M( }
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);9 |4 e9 X# H9 y: v4 m9 P- \
  36.         if (ret != 0) {9 i# v6 j0 N# o( G6 K. C
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);: |1 h& O5 ~0 R0 }9 N
  38.                 return -1;
    ' H$ z, L3 Y8 Q' A  S' u
  39.         }
    ; `- ^) W: k: X  _
  40.         memcpy(mac, buf, 6);
    * g1 R! \# O7 G& M2 a4 d0 ^+ l
  41.         memcpy(stbid, &buf[6], 18);
    5 p* E3 f$ @+ I2 Y
  42.         stbid[18] = '\0';: C$ m7 c0 i4 K! x
  43. , \: |( m" `! E/ c1 x7 x  ]5 X9 N9 ]
  44.         return 0;
    3 \8 `- m* I& F3 {+ `5 c" ^
  45. }
      b$ {+ d, C, U& S+ c
  46. 7 s" |, |9 E( u
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)7 d& R7 Z+ |& |, @' ?% c9 p
  48. {
    # T1 Y8 D. E5 w& j; q) V
  49.         int fd, ret;/ b* J5 l4 f1 ~
  50.         e2prom_s_cmd arg;' r( s+ k* G6 U3 O% p; v
  51.         unsigned char buf[0x18];5 b, i$ j4 t8 ^+ s% Q' a- D
  52.   N( F9 q- t1 r) G; o
  53.         memcpy(buf, mac, 6);
    6 l" L& B0 W% g" f6 z! [% \) J3 G
  54.         memcpy(&buf[6], stbid, 18);
    . K% E- t& G# x/ R! g! i
  55.         fd = open(E2PROM_DEVICE, O_RDWR);3 b" j" ?% q6 W* i, W! B% F2 l
  56.         if (fd  < 0) {
    4 ^: h6 S5 ?+ g+ ?& s& X: p" N* u
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 a& E% |3 Q: v" m$ p' A4 o
  58.                 return -1;
    5 h5 \  {( Q7 \* O2 x
  59.         }
    6 ^+ X0 t- x  T. ~* N( v
  60.         arg.sub_addr_count      = 2;; R3 U# A* O( ]- G
  61.         arg.data_count          = 0x18;) l2 h# E+ N  c' H' V$ w& Y0 h
  62.         arg.e2prom_cmd_sub_addr = 0x290;, S/ k+ W5 [: K  F) D% }' W
  63.         arg.e2prom_cmd_data     = buf;/ ?5 O: p4 q' M' _* i
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);. p7 n6 Z  O$ I( d
  65.         if (ret != 0) {
    1 T; e) _0 W' n+ H1 X3 f/ O1 P
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    5 `! y+ _6 c% _: [& b
  67.                 return -1;
      v8 L7 k4 W# a
  68.         }
    & _1 j1 F" v0 H( G0 C- [, y
  69. / w/ c% Y7 @4 }( v2 w0 }% R
  70.         return 0;( N) z& y* S( A
  71. }
    9 d6 C" c# @/ \- |/ X2 R

  72.   J6 _: G0 M3 c
  73. int main()
    ! q1 s: g" g0 N9 I
  74. {
    5 ?. e2 c8 m2 v& W, B6 l
  75.         char c;
    1 a/ x' \! u1 Y' _7 k/ H
  76.         int i, macs[6];7 s9 G4 m: B  x  P# x2 y1 d& p
  77.         unsigned char mac[6];
    / L5 h$ q  `% y5 O
  78.         unsigned char stbid[256];& E2 t' M5 x+ b4 z+ @5 I* x

  79. 9 y: j7 T# t, V' Q' M
  80.         if (readparam(mac, stbid) < 0)( t( C  D' N" A: z! X
  81.                 return 1;/ o# U# n# G2 J) |7 P( K2 Q
  82. * ]+ T7 D( h# Y3 ], t
  83.         printf("Current parameters: \n");* x$ w+ {# E+ R! l: c
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 q( u; U# Q  O& e& y7 H# l- m  o; F
  85.         printf("  STBID: %s\n", stbid);5 X+ U; ~- e0 i8 o! Q. S
  86.         : ^5 Q9 s' b' G) d! b3 j
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ! [# T. p  b  U! y. ?
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    0 v% x/ t# [  s. L* e
  89.                 printf("Input MAC error\n");3 w$ n1 ?0 I# z9 x7 r9 G
  90.                 return 1;
    3 v' Q5 t8 j  O! R3 g1 k" ?3 S
  91.         }
    2 j* r' b  m7 C5 l8 F
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    1 @9 H" l+ B5 u- ^
  93.         printf("\nPlease input new STBID: ");
    ; C' {8 d7 l) [: D
  94.         scanf("%s", stbid);  r5 e  ?& T# X
  95.         if (strlen(stbid) != 18) {
    # A, |; u# o% A, ?; q) E( d3 n% O- h
  96.                 printf("Invalid stbid\n");' q7 q% D  E$ ?' t
  97.                 return 1;, }) D. h+ u  r$ O& f; u
  98.         }
    : m6 \/ j' R  [
  99.         printf("\nNew parameters: \n");! }" w+ X+ x$ m
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& A' l/ R* n1 y7 ^9 v7 \
  101.         printf("  STBID: %s\n", stbid);) O- F  L- ?$ s7 J6 W" r
  102. . @. Y- c: d$ g! t7 v$ L" D
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    8 \: V/ ?( d/ S; b
  104.         for (;;) {
    " s* E. c7 P& w5 v1 k0 `
  105.                 c = getchar();' ]/ i; H$ Q; S  x0 J/ ~
  106.                 if (c == 'y' || c == 'Y')
    . H8 k5 @7 ^5 Y9 G$ o4 I
  107.                         break;% A" C! ]: v3 s6 d- }( Q7 b
  108.                 if (c == 'n' || c == 'N') {! u3 D1 O6 X3 r4 E, p' E0 y; c
  109.                         printf("\nAborted.\n");
    ' G* g9 J4 W" L+ C9 H
  110.                         return 1;- g3 N" o* `  P* R
  111.                 }8 K7 e2 Y3 D# y9 @3 L
  112.         }
    3 s) L! ^4 ]. D! J3 X6 R
  113.         if (writeparam(mac, stbid) == 0) 9 }# Q5 z# W$ M5 [) m5 o
  114.                 printf("Parameters changed.\n");
    ) t# b8 j& @2 ?  }. E1 U# z$ I

  115. 2 U- w% V  |2 X7 i4 D
  116.         return 0;
    # `- i, b! m0 {" ^0 H! Q1 Y- W
  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 6 }: l5 P: Y) g! q' U0 B: |! A" u
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
: e0 E# j: D) g7 |5 @" S% `0 y$ T
你用的编译命令行格式是什么?7 ?" b( I$ N- q0 z, F& 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客服返回顶部