找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15672|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    5 E# \- E+ V( m9 d3 X
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    5 I4 z* y# g, p
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; p6 ?  \. g; i: m
usage: himr <address> <value>. sample: himr 0x80040000 0x0# V- q" }* U5 Q- B5 e
4 D- H. o% q1 X- F8 s! n, Z

# _7 _5 @: l. P$ T) v, a. O$ b& M3 {' V不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?, ~8 W/ s$ P0 j# k0 B- j4 R

! H1 ~, R& [7 \' s/ x8 v7 R补充内容 (2012-3-8 09:42):
7 o; R) v4 v1 Whttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数$ e' l+ T0 G  i
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
9 t% s; {/ v! k, I! r- l1 T5 j. r1 t/ L  c0 d4 U( s1 e+ e
himr <address> <value>. sample: himr 0x80040000 0x0: z1 V; M8 j4 W

# M) E' @/ P- Q# W例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
/ d( @3 l2 D( d$ W2 ?himr 0x80040000 0x00
+ W6 \+ Y4 z/ y5 ehimr 0x80040001 0x11
# M  e5 c2 O1 E( c/ ?& T4 b0 Fhimr 0x80040002 0x22
6 M- ~% }' A, L* p" a# phimr 0x80040003 0x335 C' R( x& l% y, a( o
himr 0x80040004 0x44
8 H% \: Y! C+ R' T  K) a0 qhimr 0x80040005 0x55% B8 y# D/ C6 Z/ O& `: R' [+ H

* B  q1 Q* \) M6 ~SN也是类似。0 \4 l- [8 C% n# o" p
, r3 x; `  \2 s4 A! Y9 I
现在主要是,谁告诉我们MAC和SN的地址?+ G% b6 T; r! X+ {1 N+ g' `0 H& P
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
3 x1 z* K8 j! r一直想找到运程修改MAC和SN的办法,苦于无解啊

+ G3 j% L6 u% l+ P8 v( Z源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑   O2 P1 L7 B: E
% b0 O/ l& L' l! `# c: |
修改的代码早有了。到今天不会编译。
( J' c# @" [, q2 U1 v( x需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ' O5 O2 [' F) c2 v# o( V
  2. #include <malloc.h>
    % k: x% s% P- B4 l, T
  3. #include <sys/types.h>
    " y; Y/ t5 O6 c. c. @: `
  4. #include <sys/stat.h>
    - ~1 K; s- g% L, G
  5. #include <sys/ioctl.h>. r% A1 V( G9 O6 B, K
  6. #include <stdio.h>
    : J# l3 \$ k% y4 r
  7. #include <string.h>
    0 i2 D. ]( X# A2 P
  8. ( j0 J. F' }) J9 b7 R
  9. typedef struct {6 X8 v% O) ?* {5 |# I3 F
  10.         unsigned int        e2prom_cmd_sub_addr;9 S! S& L1 h# k' f
  11.         unsigned int        sub_addr_count;+ t9 y2 |3 ]3 w- y* ?
  12.         unsigned char*        e2prom_cmd_data;
    4 H6 A+ f) ~- H/ ^
  13.         unsigned int        data_count;
    # i2 X- n  g6 e% H$ M* `0 K
  14. } e2prom_s_cmd;0 A$ T' |/ k- M( d

  15. ' X  C( f( a  j+ P6 X
  16. #define E2PROM_CMD_READ 1
    # l6 N8 J. e; l# O! C
  17. #define E2PROM_CMD_WRITE 2
    " i; t& K" a, Q9 |
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    & [; L, w1 U( [+ o

  19. . Y4 f  E5 X; p
  20. static int readparam(unsigned char *mac, unsigned char *stbid)9 @' c8 S9 ]5 _8 d" Z
  21. {
    # M$ \; z+ d: a" h- x: N4 |
  22.         int fd, ret;
    5 x" M2 |; Z$ i; p5 f
  23.         e2prom_s_cmd arg;
    ; |: m+ F' }+ ~& `" O
  24.         unsigned char buf[0x18];' P6 h; Q: x" H+ k

  25. $ F3 A" ?) W! D5 \
  26.         fd = open(E2PROM_DEVICE, O_RDWR);# Q) f8 [9 h4 a$ J9 @& N& K" V7 V
  27.         if (fd  < 0) {
    . C, F4 ]5 M2 Y' n: Q
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 P' ]$ e( k+ m+ a) m0 X0 |
  29.                 return -1;. L/ L; C9 O$ E6 ~6 u. x: g
  30.         }8 e  W3 W! `7 v# A1 `9 n9 o
  31.         arg.sub_addr_count      = 2;) b$ F) i- h& F, R, F0 y9 u& L
  32.         arg.data_count          = 0x18;4 n) s. g- h' P% p4 p) A
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    * z  C. w. G+ T8 F* [8 ?6 C; w
  34.         arg.e2prom_cmd_data     = buf;
    3 g: T$ m- c5 g5 S2 q1 \
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);1 u/ Z% ?+ n6 ~
  36.         if (ret != 0) {
    , @" G8 @/ E. p4 Z: y2 @) _
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    8 V8 F" \# r) j0 \- |4 v/ R
  38.                 return -1;
    2 e+ z- [. X" b
  39.         }9 E% l1 k6 [$ z9 e) \5 X
  40.         memcpy(mac, buf, 6);
    " I0 t; x, g1 J! H
  41.         memcpy(stbid, &buf[6], 18);
    + b1 g4 O+ N" ^, L: l
  42.         stbid[18] = '\0';  n9 U* h6 U7 U: R7 O+ `

  43. % w8 F7 b3 M% I5 u; b
  44.         return 0;2 n& W$ @/ r$ h% R& Y
  45. }
    3 ?8 k- A) G& m

  46. ! \6 v0 C7 C# T2 [& ?8 S$ f
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    7 @- G: l4 C3 J) V# J7 j6 I
  48. {
    ( G& L4 U5 b2 g. c, r6 {$ M
  49.         int fd, ret;
    + Z4 A! {% e' v: P+ E/ E- h% V
  50.         e2prom_s_cmd arg;2 X0 Q; r  D" n+ K; j8 J
  51.         unsigned char buf[0x18];
    & _9 l% l5 e+ a% Y; f7 D
  52. 9 p8 y2 D6 U9 t! G; T  @- {
  53.         memcpy(buf, mac, 6);5 n; D+ b& }$ v) w  b
  54.         memcpy(&buf[6], stbid, 18);
    9 n7 t' C  }  W6 Y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    * Z7 x) L: l: j3 R6 o9 _
  56.         if (fd  < 0) {0 E/ I* o& w( _6 f0 H4 G
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ! j% X& R/ x+ A% v
  58.                 return -1;
    , a# F' u3 p" ]2 V3 _% t
  59.         }  v: y2 p+ h# r) o* d
  60.         arg.sub_addr_count      = 2;9 U+ c: z' D) \: [# ]6 {
  61.         arg.data_count          = 0x18;0 r6 \" r9 c% P, r, y* B" Z5 `
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    , o; l$ Q+ e9 ]: i% ^( X
  63.         arg.e2prom_cmd_data     = buf;
    ) p+ i7 s2 z  Z. g8 C! n
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);  \1 \3 [' k5 {7 e9 [$ J6 u
  65.         if (ret != 0) {% F! r& b- f' A3 ?
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);+ k8 T* a2 M! e. l
  67.                 return -1;7 ^- ?: k3 d. Z6 N
  68.         }* b, A8 B% D4 K4 V

  69. ' R4 h5 G7 w" F# p7 O( ~, F0 C
  70.         return 0;
    * U# [) c" m* w
  71. }
    ) r& ]( J( H% P4 ]0 V# U  E
  72. * w# g/ z, w, [7 w$ J; ?6 a+ @
  73. int main()
    , e$ Q: G' p1 ?/ `% u9 D; i
  74. {( S6 f2 a$ H$ N8 j
  75.         char c;
    5 v8 @! I  E, E9 T( `7 I. J8 Y# F
  76.         int i, macs[6];
    : d& _# x1 c5 Z( |
  77.         unsigned char mac[6];
    $ R1 c# ^2 {6 p
  78.         unsigned char stbid[256];0 c: Y, S( |% R5 \! E$ c, O4 u

  79. # c& A2 P4 u" R  v2 E/ N2 C
  80.         if (readparam(mac, stbid) < 0)
    . h: i, l0 c% P; d9 R; A) n& g) s
  81.                 return 1;
    ) {5 k( N( k6 v3 L% P/ E
  82. ) {5 z  G4 V7 l  n
  83.         printf("Current parameters: \n");
    % i8 l5 f( W5 z6 q$ ^1 a' _
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# f  K2 K3 O8 [
  85.         printf("  STBID: %s\n", stbid);) c, t0 F8 S( j2 I
  86.         4 j& F* U" q3 K  |
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");3 r9 Y4 @; w" {
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {. C' m  X# \* e
  89.                 printf("Input MAC error\n");1 q& x7 `# j4 ^; O2 f( ?
  90.                 return 1;+ \1 t; K4 x- Q! a# b4 t& I
  91.         }
    " H; R( V  k9 k
  92.         for (i=0; i<6; i++)mac[i] = macs[i];* G7 Z+ D( \) L/ _) x3 t" f
  93.         printf("\nPlease input new STBID: ");
    # t' l& B( T$ u3 ~: }4 q/ {& {& N
  94.         scanf("%s", stbid);" ~5 W" y* i9 ~
  95.         if (strlen(stbid) != 18) {9 C( ?1 M( l& \# j/ b
  96.                 printf("Invalid stbid\n");
    5 P1 v# w: |2 }3 t( \- n
  97.                 return 1;( ~- R) Q* `% N
  98.         }. c* n& C; j  f: T4 A
  99.         printf("\nNew parameters: \n");2 j: F7 E( Y* j( {* }+ [
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 x; b  W# J# |6 u1 m
  101.         printf("  STBID: %s\n", stbid);
    ! F9 f, [& q2 t8 k- T' K
  102. + C! ?. w! h) J" J& z* F
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    & r# i6 h: O3 T' l6 I
  104.         for (;;) {& o1 Y; R! h* p$ x" L" P
  105.                 c = getchar();' v5 `& t6 U/ v5 Q
  106.                 if (c == 'y' || c == 'Y')
    - g0 \. {! C! c, ?( ?0 F# Q( h
  107.                         break;. T' }+ K+ [. r$ V
  108.                 if (c == 'n' || c == 'N') {
    9 z& {; F! _; Q  U  ^) ^/ E' O! y1 S
  109.                         printf("\nAborted.\n");
    9 V; {% P1 G0 |9 {$ ~) f
  110.                         return 1;
      K  q! v6 c# {& q( f
  111.                 }( {9 O1 Y2 c6 z- T: X
  112.         }
    / W; Y1 G# {: W4 L: `! d/ x6 h
  113.         if (writeparam(mac, stbid) == 0)
    9 c8 x" L' B3 T; l2 a* ?3 o
  114.                 printf("Parameters changed.\n");6 G& ]8 x2 k" D

  115. / h0 o  z9 a! N# s
  116.         return 0;
    - f- R( v% Y0 q1 j9 ?
  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
/ w3 O1 e8 e' C8 I( p在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

1 r" u2 c2 Q5 y4 D3 h, A6 x你用的编译命令行格式是什么?
' b8 E+ M1 ?: M8 |7 \
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-2-24 23:40 , Processed in 0.030538 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表