查看: 17917|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr2 T$ ^* \, m8 h/ V; W' o9 z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig1 v6 ]; U+ U- S9 k5 Y1 U( t
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
; s2 L' F9 a4 Z2 _; H/ ^- iusage: himr <address> <value>. sample: himr 0x80040000 0x0$ v( D5 M) N& S- m0 m
2 t  |' S7 W4 P2 b- h! C
) v5 V: a" x) {5 T' f" z; z) T
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?* `8 g2 L# q1 ]0 b8 ~  |5 P
  B$ W: V9 c/ g( J
补充内容 (2012-3-8 09:42):+ x' V, k5 L" V5 ~
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
1 \9 S( `- n7 b+ d+ ]这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。' C4 \! j! Q5 v, s
1 K, |0 T# |, F5 E: k$ ]. ^' K% v
himr <address> <value>. sample: himr 0x80040000 0x0# y0 M+ L0 S6 A4 n- i- p
$ j2 G7 F6 P+ B7 m: l% t
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。5 X9 `1 O# j7 V1 [
himr 0x80040000 0x00  p" T: t  V" b7 S! @! V7 Q1 y! S3 {% M  Q
himr 0x80040001 0x11
* W1 l- B/ |$ G: O( \. M, Rhimr 0x80040002 0x22
, D( I7 ?  L0 xhimr 0x80040003 0x338 f. w" X# e$ H* T' R% z% |" @
himr 0x80040004 0x449 i( `! }/ S  [+ i% C8 N! Z
himr 0x80040005 0x55
) e" Q$ n1 \+ {% Z" U; j6 f* K& H5 @" ]! C! Q6 H" n
SN也是类似。
' E: K# g- f- e8 B5 M, Y
3 ?6 r% N+ q- \' d- g9 p现在主要是,谁告诉我们MAC和SN的地址?
; x! g2 x+ ?" z& R( x& P
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 $ q1 A. e3 e: D/ t2 p
一直想找到运程修改MAC和SN的办法,苦于无解啊
6 }) l6 U- c6 E
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
" v# O& n9 I: i" r5 B, I" @
/ @& G. Y: i6 V  m修改的代码早有了。到今天不会编译。$ Z- T* V) }3 c5 r& W& q* K( l
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>& T- [* ~* p0 W: s8 u' l/ M! b7 E
  2. #include <malloc.h>
    1 t" B4 X8 M! C
  3. #include <sys/types.h>. E# G; _. W/ C* y4 E
  4. #include <sys/stat.h>; v! l) y/ n) L( g8 m) X) f' O
  5. #include <sys/ioctl.h>
    ( @4 @1 r$ X! {0 y8 b/ K% Q2 ~  ~6 i
  6. #include <stdio.h>
      c2 k# B4 W5 [2 g/ e
  7. #include <string.h>* M! h% n7 m. ]: G
  8. $ Y! n+ T1 N& O0 l
  9. typedef struct {
    4 u/ ?/ k9 S7 s2 Q' O/ R# K9 I' ^
  10.         unsigned int        e2prom_cmd_sub_addr;
    ' K  d) X" P/ o. ^8 ^
  11.         unsigned int        sub_addr_count;) p9 ^9 A' w/ ]/ f, g% j  T
  12.         unsigned char*        e2prom_cmd_data;) ]$ u9 S1 i# h' I/ Q* {' _! Q* s
  13.         unsigned int        data_count;
    ( A! I2 j2 G- f; X
  14. } e2prom_s_cmd;/ ?* b2 N  {. c2 y' o
  15. $ w/ s2 T2 T, K: k9 ^
  16. #define E2PROM_CMD_READ 1: R( ?) b1 @! Q4 B9 o5 B: _3 `
  17. #define E2PROM_CMD_WRITE 2
    ' p' k2 N: n1 W
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    1 E# F5 J" Q. V, [: ]4 g& C

  19. ; U) R! E" Z' I! k5 Q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ! I8 J( z& \& s% l. B- _
  21. {; z& }+ o; B( E# [4 R$ v. T& v/ \6 ]
  22.         int fd, ret;
    7 b1 Q5 d0 l+ A0 y1 K3 [/ ^
  23.         e2prom_s_cmd arg;
    5 r# P1 b. D! l8 I3 C
  24.         unsigned char buf[0x18];
    2 w" C  }& N5 y

  25. 2 N" K7 p; |0 N- Q0 s
  26.         fd = open(E2PROM_DEVICE, O_RDWR);3 K0 i  O. H9 Z) H2 n
  27.         if (fd  < 0) {' T4 w  y" B% g7 A
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    4 L, m; L# G- W- W  b0 ~2 F
  29.                 return -1;
    ' a% G9 P% J; m* b6 t  P7 r
  30.         }7 N3 @- [" _. }  v
  31.         arg.sub_addr_count      = 2;" y5 d/ H% ^$ C3 ]
  32.         arg.data_count          = 0x18;
    0 |; a$ \0 U" C6 G9 n' L* q8 B8 S' B6 t9 D
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    , O7 |. X7 U2 h# K- R5 e3 i1 e
  34.         arg.e2prom_cmd_data     = buf;  \& Q+ f4 B7 j# j0 g
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);) r# u% e" Z" T0 _
  36.         if (ret != 0) {
    / o8 @* }2 ^0 Z$ x* j% V# Q" l
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    2 V% A; ^4 v. N" m! ?( X  _
  38.                 return -1;# f; |7 n  U1 _8 @9 _% ~
  39.         }
    , j) R6 v( ?, c2 X5 `" `+ {* k0 A
  40.         memcpy(mac, buf, 6);9 `1 S) A" N$ n1 D8 S( m" t8 G
  41.         memcpy(stbid, &buf[6], 18);1 N- U5 W% j  w3 g
  42.         stbid[18] = '\0';
    $ E- ~, A+ }7 d; Q% L4 Y

  43. ) k. w9 A; d1 s
  44.         return 0;
    2 g4 x6 J9 e; u1 x0 c* _- j
  45. }: O8 a+ _. w) X5 \

  46. 5 r8 f1 a- Q7 X4 S1 {. ~. i7 I
  47. static int writeparam(unsigned char *mac, unsigned char *stbid). i- |* G' b7 B  _1 A- |" E
  48. {% E5 P( I  `4 t7 x! `2 V( c
  49.         int fd, ret;
    / X: W" G! U: E( a& Y) r' R0 R
  50.         e2prom_s_cmd arg;
    " D: u0 p( [# m4 S+ i+ u
  51.         unsigned char buf[0x18];" p! \+ P3 ?, {; l4 S+ W) m2 l5 ^

  52. 5 l2 j# \: j9 |3 N+ N9 p6 O
  53.         memcpy(buf, mac, 6);' H! z# P) T; d$ t5 D; ^* r1 j
  54.         memcpy(&buf[6], stbid, 18);
    * G% M0 P- E5 E4 o# _; |* x6 |
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
      Z' P) R4 K1 x- s& @6 z
  56.         if (fd  < 0) {
    8 _2 k$ z& [1 _% X+ L7 ]' `# @
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);: ?/ P( ?0 e1 I2 `6 F: |
  58.                 return -1;$ f9 P. \. D8 n+ e7 X% o
  59.         }
    * F3 i& `* V/ ~1 G8 H2 I
  60.         arg.sub_addr_count      = 2;. n+ G% A9 j7 K1 @5 E# H. D
  61.         arg.data_count          = 0x18;
    / s# [! S5 f6 Q% x/ X. O, r
  62.         arg.e2prom_cmd_sub_addr = 0x290;' e% V) C$ ?$ I
  63.         arg.e2prom_cmd_data     = buf;
    ) l: Y- \- t% S
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    - T: S) B9 X) J8 `( u
  65.         if (ret != 0) {
    $ g( O; E+ t! n( H. N
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    " ~7 {2 ]  V5 _' `) I6 R: [
  67.                 return -1;
    ! _. d+ T4 l: d6 H6 l9 h
  68.         }
    . e, O7 E! u: T8 U3 d

  69. ( T2 L2 ^' }, X" n7 A5 ]
  70.         return 0;) R( c& i: \- \& q, o
  71. }8 [' S* L0 s* u1 v+ m) {+ J
  72. 8 ~0 g' Q) J* W: E0 r7 x+ M8 N
  73. int main()
    ! M. v, c$ {  ~( n. E
  74. {+ r7 T$ R  X% d9 o( ?5 Z# ?! e. p4 |
  75.         char c;* \- m7 W. s% R! e$ e
  76.         int i, macs[6];
    . p. G8 U! d+ F, Q" n+ k
  77.         unsigned char mac[6];
    : t% C9 l2 \8 K* r9 Q5 f
  78.         unsigned char stbid[256];5 t, @$ X, k" [& Q6 Q) J6 {: I

  79. . p3 L8 o/ D  H
  80.         if (readparam(mac, stbid) < 0)
    ! Y- `$ l: I" ^. p& \- L
  81.                 return 1;
    , l3 I* P) O2 S) Q) X, s
  82. $ m; P5 r- }: i' N  R5 y- [4 l( q" c0 s
  83.         printf("Current parameters: \n");1 s/ K! n6 e& S! P# a7 c
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 E' D" Y) ]! Z/ x3 i( B
  85.         printf("  STBID: %s\n", stbid);4 I3 S( C$ Q/ X: ]) ]( J+ H' @
  86.         0 }, D3 o  t: Z) `
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");+ T/ h" s' j' z2 Z2 u) M
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {+ N0 J0 U( B* U1 R& g! {# v" m. |
  89.                 printf("Input MAC error\n");# P$ C4 m& n, b' Z! g
  90.                 return 1;# c% ~( E/ y  f, ]* h" C- |
  91.         }
    ' W' G+ X7 N5 M. |; B0 Z* E% L
  92.         for (i=0; i<6; i++)mac[i] = macs[i];2 M8 V7 D7 F4 t. e+ R# T
  93.         printf("\nPlease input new STBID: ");) f4 \8 ]/ O" S
  94.         scanf("%s", stbid);
    ' I) K) ~4 K0 [7 @+ D9 N: j/ ]
  95.         if (strlen(stbid) != 18) {
    / w; n' B+ C- e9 u3 h% J- ^
  96.                 printf("Invalid stbid\n");
    $ x# E% {- u6 ^
  97.                 return 1;
    : y' e5 @/ ~0 e$ X9 u% ?2 a
  98.         }% [4 B5 m: x3 m7 H6 ~' R3 w( W
  99.         printf("\nNew parameters: \n");
    9 x7 y+ b: D! u  y& G- t! i
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # R8 ~5 P4 S/ j
  101.         printf("  STBID: %s\n", stbid);! g4 g7 U& u; R" M' b5 U0 Q8 X

  102. - M' g, W* B' q" j# J) S
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    + _2 x( s7 I1 Y; b0 g6 U! E
  104.         for (;;) {
    - d* [, a! B! \! z* N: \
  105.                 c = getchar();$ l) O1 M* U3 O$ N8 k
  106.                 if (c == 'y' || c == 'Y')
    ; Q3 `, x: g, ?% G7 V9 o" W
  107.                         break;1 D/ P& K/ [9 f5 I
  108.                 if (c == 'n' || c == 'N') {
    3 {: c5 R4 P. C$ F
  109.                         printf("\nAborted.\n");
    $ [& @) y3 L+ ^7 y) j
  110.                         return 1;
    1 i6 y$ J9 N8 l8 M9 f+ Y1 d
  111.                 }
    " k! N9 w0 D% r# O- n1 [. J8 h
  112.         }
    / [! o$ Y. n+ j2 O2 j
  113.         if (writeparam(mac, stbid) == 0)
    . C2 j: a& A* a( T# y0 P* a3 z
  114.                 printf("Parameters changed.\n");( L3 V& s7 t! J8 E
  115. 1 F- v. X, z9 t7 S
  116.         return 0;
    ' t( m( ^1 e% G6 s* b+ v- T
  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 9 N7 e6 _7 p5 x. q# E
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

+ E2 F1 j6 W, N+ s& D8 ?/ V. N你用的编译命令行格式是什么?' f5 @* A: \# ~/ E
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部