查看: 17132|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr% g3 i* z1 k( ~8 e: Z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    * q2 M* ]2 {) g9 I$ q5 V5 |
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
# d8 |; V; F+ ~8 t/ k( i8 Rusage: himr <address> <value>. sample: himr 0x80040000 0x0  l' D0 v# S; b# A' S5 P4 K
4 K/ g5 y+ B0 |# K
7 o3 S3 A/ C6 D, ^
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
. R  ]7 |* F# S4 Y- `. Q" S  U5 R
补充内容 (2012-3-8 09:42):
* Z8 t8 j0 s$ B" w" ~  `: Q7 hhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数! s6 `* ^% J% ]: w/ i& Z
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。% a& |* l  [  W; Q6 W* W" X! a6 B

4 a9 j# y' ?# m7 q. H4 Vhimr <address> <value>. sample: himr 0x80040000 0x0* ^2 F$ }4 z( w5 u( ]
  h% x; _2 C2 }8 X4 k2 x6 L4 Z
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
# r" P. p' ?& _1 I8 Q$ Z& Whimr 0x80040000 0x00
# ?: g- @4 ^- b! R  c9 Chimr 0x80040001 0x11
% L+ I9 A" M5 L8 S) [himr 0x80040002 0x221 v4 W1 K2 C  F* B. a  a
himr 0x80040003 0x33* ~- B# A" `# C  L: T
himr 0x80040004 0x44% @. ~2 W) ^/ Q" I
himr 0x80040005 0x550 Z- s3 ~7 Z0 s% o* c% _8 q0 F( {' o- _
! w6 y3 {/ R3 `9 k8 K
SN也是类似。" h9 T2 ]" R) v# ~2 _. H0 r7 i

/ _/ P3 j1 j' A# ?, ^: y现在主要是,谁告诉我们MAC和SN的地址?+ T. [) k' ?/ c. W  x. x* ~* t
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
& A0 ]0 X* }. U1 [3 v一直想找到运程修改MAC和SN的办法,苦于无解啊

- Z8 K. A8 ?1 ?% H$ p( S- J源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ; B- c# \% J6 w" s; T+ ^: n- E

7 d7 T, b+ M! a. b修改的代码早有了。到今天不会编译。( |6 c) q* Z  Z2 m9 u
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>$ a$ p7 ~# `; E6 ~: }' M
  2. #include <malloc.h>
    2 I- V; ~* l. v0 S9 [: U" C
  3. #include <sys/types.h>$ R' o' Y9 Q, o9 S5 |% f
  4. #include <sys/stat.h>1 v- U1 q5 C5 w. Q2 x% v
  5. #include <sys/ioctl.h>
    0 ~$ t' `) c8 i) z8 K, k
  6. #include <stdio.h>
    6 J  B( l' I; k
  7. #include <string.h>
    5 _: I( d1 r4 }& V- E
  8. 8 M  M! o4 Z2 I% M5 d4 Y8 ]
  9. typedef struct {
    1 B' Z% c# b- j
  10.         unsigned int        e2prom_cmd_sub_addr;
    . o7 K; }. m- B; G$ M
  11.         unsigned int        sub_addr_count;
    / ^* t8 Y$ w9 w+ [" Y/ A
  12.         unsigned char*        e2prom_cmd_data;, ~% E) N/ j! {4 Z8 B
  13.         unsigned int        data_count;
    ; `$ p% r1 E& }7 t, u* K9 o! @- t
  14. } e2prom_s_cmd;
    # Y" A1 E7 ^" d3 H* }$ h

  15. - m5 b1 F" A- F; x/ m/ S* m0 e9 b
  16. #define E2PROM_CMD_READ 1# K) A% |4 K& g% p/ K- b- R
  17. #define E2PROM_CMD_WRITE 2
    ; ^  ~( n! h6 s7 h0 _/ H
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"8 v3 k) z+ Z! u6 {# _
  19. - r/ m$ ~" H+ k4 Y2 {" w
  20. static int readparam(unsigned char *mac, unsigned char *stbid)2 @6 |. K* x: f2 Q, q2 E
  21. {
    ) m: y; D" u$ ~! g* @5 \. A4 t
  22.         int fd, ret;
    1 ^. W2 t  ^' M9 l, ^7 H8 G
  23.         e2prom_s_cmd arg;
    , v( D: U5 w! K; b! U/ ^& L$ W/ W
  24.         unsigned char buf[0x18];/ Z7 y5 }' ~1 \" D" _

  25. 3 \+ e" \" F+ n9 z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    % i- {$ j$ k! ?
  27.         if (fd  < 0) {+ O* w: e" u; \8 X5 Q* D
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / d1 q  ?. V# ~) f0 ]1 J& O( m
  29.                 return -1;
    / A0 I' w' i  A: G) r9 c
  30.         }1 d! g0 H( Z* W7 N8 I# R
  31.         arg.sub_addr_count      = 2;
    % M8 t, M' s. T
  32.         arg.data_count          = 0x18;2 R0 b' n/ ^/ B- K' ~
  33.         arg.e2prom_cmd_sub_addr = 0x290;4 U4 b* H& o* l# o) T. g
  34.         arg.e2prom_cmd_data     = buf;
    $ W* m( j8 n5 i
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);; A) a% J6 k3 z
  36.         if (ret != 0) {
    / I! g) o( Y- |3 X2 D$ W# M
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);7 u: T6 m& b+ G8 e2 j8 g4 A$ u( A
  38.                 return -1;
    ; Y+ k& d- N  D2 x; R3 S
  39.         }
    4 a9 @+ M! X; Q7 i7 j
  40.         memcpy(mac, buf, 6);
    * f; u% \% M* s7 Z4 k2 O9 e  E
  41.         memcpy(stbid, &buf[6], 18);
      }+ d5 P2 |+ D, V$ \3 U
  42.         stbid[18] = '\0';4 a2 L4 m; r! x9 J4 F3 B
  43. : |+ m( @1 ~: n
  44.         return 0;# g& v. q. r0 S" b( P
  45. }
    % s1 x% `1 \$ d& }' h" ^8 E( _* o8 m

  46. 5 E8 l6 C) y, u9 [) }
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    & \$ e6 |2 ]3 x
  48. {
    ' m4 {, [! g. d
  49.         int fd, ret;
    , I6 }1 O6 h( ]' `
  50.         e2prom_s_cmd arg;
    " N" a/ Q1 G: q; Q  ^4 ]
  51.         unsigned char buf[0x18];
    1 R( K+ q, C, q2 c, Z2 I. _
  52. , \1 p0 I: _& C# a) w; b: Y
  53.         memcpy(buf, mac, 6);* d9 W% S! d. X/ B1 l' k8 Q& N, C9 J
  54.         memcpy(&buf[6], stbid, 18);
    " |" s7 J9 {( p, E* t$ P# b* S
  55.         fd = open(E2PROM_DEVICE, O_RDWR);$ K7 o: x) K+ r+ o
  56.         if (fd  < 0) {- a9 [! N& f, D2 o* f4 P. J% e
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ! F: V% P* Z6 _
  58.                 return -1;7 j! H; x& v2 G3 r" ~6 i* C
  59.         }
    & t" x8 _: ?2 K7 U9 F8 F& w; s
  60.         arg.sub_addr_count      = 2;
    8 d9 N0 P- c  T- }/ s4 s, G# R
  61.         arg.data_count          = 0x18;
    $ N( X$ g8 z9 T* @: S
  62.         arg.e2prom_cmd_sub_addr = 0x290;( e6 l- l" T0 W: _8 V8 q/ ^8 a* H
  63.         arg.e2prom_cmd_data     = buf;
    & w7 S# N% U/ d
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    $ g* ]' l0 {) y8 G( T
  65.         if (ret != 0) {1 B) x" R5 K: n% y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);/ _9 l: X0 i  C4 t) U
  67.                 return -1;
      Z; b1 o( J1 ]* f3 l: u
  68.         }
    : a0 A, b& O1 Y' p3 \! p0 g; d8 e
  69. ; h' n6 g1 W  _" h% ?% E
  70.         return 0;$ m+ F3 a% I* L7 g: |* p
  71. }8 j' r" B) Y& ?( \" U* y  N
  72. - ~8 K9 v3 v  [' O; `
  73. int main()6 P( K' u% N& U! i
  74. {
    $ \+ b1 H; X0 I9 K) p
  75.         char c;
    . n) L, w' R; U+ K
  76.         int i, macs[6];
    4 {1 F7 O9 r8 t8 Y
  77.         unsigned char mac[6];
    9 U, h$ T' `' n8 ?( ^
  78.         unsigned char stbid[256];# Q0 P3 ^, {3 ]5 e% D# _( f1 i6 a
  79. / T# S7 Z2 |* j2 q# t: m. k5 {
  80.         if (readparam(mac, stbid) < 0)' X* n2 n* M9 t2 H( z" T" Z6 x, Z- K& k
  81.                 return 1;6 f% ]. F5 ?% z, Q/ d( G

  82. % D, n5 Z  h2 Q
  83.         printf("Current parameters: \n");
    : N5 j8 T; K5 w
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ B5 y( Z8 n6 s
  85.         printf("  STBID: %s\n", stbid);$ l0 `/ B" l4 Q1 M7 u
  86.        
    # ~, L1 e3 V3 N2 J  ]9 [
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    4 Z* c2 \1 v: I" z0 k2 U+ C
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {% [  a* l* j( g* D0 `. d
  89.                 printf("Input MAC error\n");# [4 _" ]" V4 o% \, |* R
  90.                 return 1;
    1 f+ N  L0 |2 j
  91.         }) I  {9 e9 v( k
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    # I) r4 P5 a8 ]
  93.         printf("\nPlease input new STBID: ");
    5 y- U5 l1 X# C6 N/ W! h
  94.         scanf("%s", stbid);& ]3 I7 b6 Z6 }2 W1 o6 H
  95.         if (strlen(stbid) != 18) {7 m. g1 `! g2 }5 {5 m
  96.                 printf("Invalid stbid\n");
    7 |8 b5 ?) J$ H+ T' o- A' k' p1 X
  97.                 return 1;, Y- H" V+ {9 D2 B
  98.         }+ }9 [6 g0 f' M: v
  99.         printf("\nNew parameters: \n");$ B" T" U* p* _( u4 h  a
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 _* a2 t. H3 S
  101.         printf("  STBID: %s\n", stbid);* r5 H3 L+ E/ w# y2 l, O8 P7 g
  102. ' c3 h0 L+ P% Y( _1 h
  103.         printf("\nDo you want to change paramemters? (y/N) ");# K7 Q7 u- U4 C* ^" G- Q
  104.         for (;;) {: I2 Z7 j3 j" {/ w" G, @
  105.                 c = getchar();
    ) h9 P+ i8 r& {% l( A3 e
  106.                 if (c == 'y' || c == 'Y')6 t4 N$ a  r. \% W
  107.                         break;2 Z+ @. C& C# [
  108.                 if (c == 'n' || c == 'N') {, x. t7 ?# S8 E& E( E
  109.                         printf("\nAborted.\n");
    , t0 R- v! t; y3 W
  110.                         return 1;4 d- N  f8 U( i( j  Z
  111.                 }3 `" B1 y% y4 ^. q
  112.         }- a9 W" Z. m+ L( r3 Q# d
  113.         if (writeparam(mac, stbid) == 0)
    0 q0 H: [, y6 ^, W1 a
  114.                 printf("Parameters changed.\n");
    0 Q$ O+ O, e" v/ y1 [

  115. 8 ^5 R+ t4 [: \; U
  116.         return 0;
    % i5 `5 Q+ V/ T+ z+ 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 $ ]9 x% t: Z+ Z( G
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

3 {9 v# _' a/ g* u, o( g你用的编译命令行格式是什么?
1 m1 S% q- d$ G5 ^) O# Q1 S( e* |
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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