查看: 17217|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr3 p# u: I* D1 P2 Y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    " y$ R) A. h! s7 }+ g+ s
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
! S9 L3 Z" }4 eusage: himr <address> <value>. sample: himr 0x80040000 0x02 B; Y0 Y, |+ I7 \3 Q
3 f- W$ e: }# M* H9 ~

- N+ q, L$ h' {/ a( x( P1 D不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?1 l& c4 M: D3 v) x: R, s

; ~, r( n$ G8 e9 \: d3 |/ r+ R补充内容 (2012-3-8 09:42):
8 x% ^5 T2 Y8 _2 b, ghttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
! y* n# a% D. h$ U这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。" Z% E+ t! R# Q# d( J
2 E  d) b; [% D- G
himr <address> <value>. sample: himr 0x80040000 0x0) i5 `) }+ W) c1 n  c6 {
6 }' z" Y. O* k9 {' m
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
' z# [' _% o/ L9 R8 ahimr 0x80040000 0x004 k: S0 {6 Z- [2 F
himr 0x80040001 0x11+ \) O6 @* U4 o
himr 0x80040002 0x22
* a1 D$ R3 `, i2 L0 t) `) Uhimr 0x80040003 0x33( W) L5 Y9 Z/ ~( c/ h  V
himr 0x80040004 0x44
5 i) y9 U* v' V1 _- thimr 0x80040005 0x55
, U" G% N# L& \/ N- P) q
. S1 Z( C* A4 [- k% E* M- xSN也是类似。
: T( i% _9 d2 b, [6 x/ L  o! z0 B/ o
现在主要是,谁告诉我们MAC和SN的地址?
7 c) L. X" O. L5 f$ y! l
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
2 O$ `. n4 A8 c5 D8 f一直想找到运程修改MAC和SN的办法,苦于无解啊
' s3 X' g# x8 w% e7 F( E
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 % d+ P5 w2 Y9 R# s
2 o0 ?( Q5 T2 L
修改的代码早有了。到今天不会编译。
) I) M6 S# M) n. B需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>, ~- `% e( g* N, Z  {: E4 p
  2. #include <malloc.h>8 j3 [4 p0 I5 P0 Q5 l; S) P+ N
  3. #include <sys/types.h>
    9 W) E( g! H7 p; H" E* r" f
  4. #include <sys/stat.h>
    8 e3 X" @3 D/ g9 ?
  5. #include <sys/ioctl.h>
    : b2 q, c$ \7 W, ^' y6 b! i5 V6 z! Q
  6. #include <stdio.h>
    % T. P* X. z( C8 h; J+ ?6 H
  7. #include <string.h>
    - A2 T  P3 `8 R# n2 {
  8. 9 l2 ~( y! w0 D0 ?
  9. typedef struct {% n% W4 ^$ d" f6 r; R+ {+ @
  10.         unsigned int        e2prom_cmd_sub_addr;
    6 S6 o9 }4 A4 G" P
  11.         unsigned int        sub_addr_count;
    . r1 j+ n6 x# \
  12.         unsigned char*        e2prom_cmd_data;
    0 a5 B2 L$ ?0 N: P4 L8 Z1 `! W
  13.         unsigned int        data_count;
    : B- o. k4 V) ^% g
  14. } e2prom_s_cmd;6 B9 _2 J; O. F9 G2 |6 K
  15. ! {( _# B7 f% a2 x/ l) j
  16. #define E2PROM_CMD_READ 1! m+ `- n* d- n+ ^- ]
  17. #define E2PROM_CMD_WRITE 2
    ! C$ |* i1 R* V# y3 |8 V
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    4 o4 A8 J$ f2 S
  19. ) E. }% s1 g2 o3 t8 ^
  20. static int readparam(unsigned char *mac, unsigned char *stbid)2 s' s$ H: u5 N; N( h2 K  t
  21. {
    7 k7 l# g* A$ L9 }) R9 ?
  22.         int fd, ret;
    0 }/ D1 ^6 y& N6 S# {5 v/ u& o
  23.         e2prom_s_cmd arg;9 D( k# {9 w  S& W- t. F: B
  24.         unsigned char buf[0x18];
    0 ?! r- ]+ j; \4 R6 X

  25. ' w, j$ r1 C* V" e
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    * ^' \8 I( s. s
  27.         if (fd  < 0) {( r& U7 N+ M+ _- x# ?8 q
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      m5 _% A& K% ?# H; o
  29.                 return -1;5 L6 Q* f# U3 G8 [: T3 L8 q, j
  30.         }) V) X: P' q  @& U( [. z8 @+ s
  31.         arg.sub_addr_count      = 2;& h( v5 b. ?/ K) z3 G
  32.         arg.data_count          = 0x18;9 H& U) p) |$ j5 R
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    , B( ~9 ?* V* S! s% G/ ?3 S
  34.         arg.e2prom_cmd_data     = buf;) c( D& {; T6 c3 N
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);8 C* F6 K8 a: ^# s5 E
  36.         if (ret != 0) {
    8 p0 y0 E7 K' s9 B# G- {, t& n+ p
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    : A& ~/ ]1 I2 P+ D/ S
  38.                 return -1;
    ! C2 I2 T# b: E+ \+ D
  39.         }
    , ~) @1 W: z% f8 F
  40.         memcpy(mac, buf, 6);4 e* K6 r9 r/ M! ^( E; {* |
  41.         memcpy(stbid, &buf[6], 18);
    : a/ t$ l8 Y' k+ j! N, m
  42.         stbid[18] = '\0';* ^& h: \4 V5 \  }" _( h1 f8 `: M* R

  43. 2 X5 @, N; C9 Z- V4 }* R
  44.         return 0;
    , O# n7 D; j, c% i' z3 U
  45. }
    ' B$ p6 V2 ?+ s" }, m/ E1 f

  46. & t/ D% W6 ~9 e. T
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)' ~1 Y; s- L$ V
  48. {
    1 A; h- [2 I' @+ Q; X* U3 U+ W
  49.         int fd, ret;' e2 V4 b' b/ A  k$ t) l
  50.         e2prom_s_cmd arg;, [2 @  L# W- U
  51.         unsigned char buf[0x18];
    ' ^* |$ L7 l- J+ J* t

  52. 8 p' J+ B5 q# j: l  A( _* y
  53.         memcpy(buf, mac, 6);" W. A1 Z1 V, K8 R7 Q2 @4 k$ R
  54.         memcpy(&buf[6], stbid, 18);& {% \+ ?& N9 \) a
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    & L' x* ?4 Q9 n& m
  56.         if (fd  < 0) {2 \% m) z9 V& ?& \4 C) S- r. Z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ D% H6 ^' g9 {. U+ C& U5 M
  58.                 return -1;, o8 V1 p  Z7 R: i& T
  59.         }6 j' J6 [( k- ]) r1 h( m" ?
  60.         arg.sub_addr_count      = 2;
      @+ |$ Z: y: G5 `# i2 m
  61.         arg.data_count          = 0x18;; O: ^. a& d* X8 V6 }
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ; o& k. N2 ]3 O# \6 t: S
  63.         arg.e2prom_cmd_data     = buf;$ n; ~  t# U+ A' N4 I/ Y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    " E) M$ t6 C6 z- i5 }; R
  65.         if (ret != 0) {
    9 B" v! h0 [4 U. Y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    - r7 J! p( |4 I8 L' R
  67.                 return -1;2 g( v4 C4 F1 R( ?
  68.         }
    ( J9 S, ?' E8 H" d( \/ E5 n& Q% h

  69. $ M$ m! z4 w/ G: _: @# B
  70.         return 0;
    ! R7 X4 D: N3 K3 g
  71. }
    6 d9 x% p" e2 Q; U

  72. ' }9 u, q/ M# Y" c& @) g
  73. int main()
    * q" U4 z- p! y8 g- b3 l" o
  74. {7 p. X& F, C' c3 X6 m
  75.         char c;
    9 ]" r( s1 q7 u+ R5 i- j
  76.         int i, macs[6];+ a5 D! l! g3 q
  77.         unsigned char mac[6];
    9 g5 U) V6 J5 }5 L* q+ ~5 ]8 w
  78.         unsigned char stbid[256];
    ( ^: `' [0 S: o
  79. % L7 D. V6 v+ C* i
  80.         if (readparam(mac, stbid) < 0)
    3 _& M! p- _6 ^8 w
  81.                 return 1;
    6 O4 T3 b9 @9 ?3 q) S3 B2 N! o

  82. 3 m! V5 p& i0 ~0 Z
  83.         printf("Current parameters: \n");
    ! A. t  r' e, Q0 F
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & i" L1 C9 c5 |6 k6 a
  85.         printf("  STBID: %s\n", stbid);' h& r8 i7 f' T! L% z3 G5 m
  86.        
    ' [$ b: c3 i2 V/ C* S  R
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    8 \9 S2 w5 i, n/ V: I) W
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {) _) c" O8 r, N$ ^
  89.                 printf("Input MAC error\n");
      V3 x% \# f, y
  90.                 return 1;
    # a. r) s: A/ `/ G! N8 f1 r
  91.         }. v" u# i  _" b% q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];$ N3 ?' @2 S5 ~) ?" v
  93.         printf("\nPlease input new STBID: ");
    & [: }* ]" U  I; a: _
  94.         scanf("%s", stbid);
    5 S; d1 z( P; j; Y
  95.         if (strlen(stbid) != 18) {) |/ P  U% m' y& E' U$ a
  96.                 printf("Invalid stbid\n");
    $ c# }+ @, X/ o, D! n
  97.                 return 1;
    , ^- t* o: r6 {/ Y$ l
  98.         }! H, i4 O, o. N. g- u9 g7 w* w
  99.         printf("\nNew parameters: \n");
    0 `0 a+ J) y6 y4 p
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - F+ K( O; X1 a4 f# u- A
  101.         printf("  STBID: %s\n", stbid);# `  x) T' [2 D: i0 ~7 n
  102. 4 |% H! `% K! s" E$ l
  103.         printf("\nDo you want to change paramemters? (y/N) ");# y4 D( d* K6 s! C: K
  104.         for (;;) {" l; J) K' V& r6 p) t6 f
  105.                 c = getchar();, }2 q# V6 T8 D2 ?* ], H
  106.                 if (c == 'y' || c == 'Y')
    : t+ A2 o% k8 q0 k
  107.                         break;4 |; G7 g9 ?. l8 C# Y. T; Y
  108.                 if (c == 'n' || c == 'N') {3 |. p2 L& e/ y2 O
  109.                         printf("\nAborted.\n");' e! F. B/ ?' X: j' q* r
  110.                         return 1;
      Y* J1 G7 _6 q- ^) [
  111.                 }# C- g- x* o( Y; e' p& w
  112.         }
    9 B' ]( ~/ q$ P% U) t
  113.         if (writeparam(mac, stbid) == 0)
    3 g& H5 O! q; B) o
  114.                 printf("Parameters changed.\n");
    ; t( a; u, M# M3 X$ I# A! d
  115. , q2 _# E. S6 Z: _  h) E$ W! x
  116.         return 0;! G) d+ E3 W6 v6 r
  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 . u) f5 f+ o6 V) g$ ?
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

1 z* s7 t/ C( p% n2 F4 t+ r你用的编译命令行格式是什么?
7 @- [( t& C: O, d! u; u3 ~  K
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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