查看: 17585|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    0 [6 C& E9 \+ u( z) X! B$ t3 h) x# l
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig7 `' r0 L2 ]& j0 N2 V" u1 g
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:8 d- r1 P/ X+ `& L1 N
usage: himr <address> <value>. sample: himr 0x80040000 0x0
$ _' D- H. N" ^9 s1 V2 n4 F4 Z; [# G
* @( i& ?* R2 ^# J
" @8 H4 q+ B( P" V! V0 W' s不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& Y. p: ]: u4 C
4 E$ A3 k8 m& R3 H& P- ]! a
补充内容 (2012-3-8 09:42):- k. T# m4 j; S9 i" |3 a
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
3 z2 |$ a6 y6 X' ~5 t! p7 k9 }8 c: X这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
: t3 @+ h% y' n8 X- c3 @& c( a8 N
% c; M$ V5 n' _: Xhimr <address> <value>. sample: himr 0x80040000 0x0
& t! v8 X( }% t2 k- U% T
8 N( N7 ^$ `% g, ]2 G/ ]4 _1 h例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
3 ?- [. v# t! J8 k% I( P3 Whimr 0x80040000 0x008 A+ h/ o4 t" x& ]' D; ^
himr 0x80040001 0x11
! `' N* {5 g- C0 B7 Dhimr 0x80040002 0x222 F* B; F. O; O/ N0 I7 u# W
himr 0x80040003 0x33
/ n' e4 B7 Y/ E! w0 P! r4 \$ Vhimr 0x80040004 0x444 t4 ~$ d' D/ {. I/ H5 z# r# A6 A
himr 0x80040005 0x55# h+ G7 z0 t8 V! o# I  {

1 Q: v, o# b9 |( R: nSN也是类似。5 W0 U, K8 B% ]) L8 T) ^+ I
9 _! f7 K' C! v7 `2 i
现在主要是,谁告诉我们MAC和SN的地址?0 P, l9 N+ t4 z5 n& V  ^
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 9 L- w. \/ ~3 J( R* k
一直想找到运程修改MAC和SN的办法,苦于无解啊

1 o+ H# ~- Q5 R) O4 K* I源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
& a7 l' V& H* I) z; q4 i8 \
  V9 c  c. Y# @: b- R/ x6 s. n修改的代码早有了。到今天不会编译。4 Y" D' z9 ?0 B" Z3 `0 b3 h. d
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>- J7 N/ S& q9 _; ?+ L# ]
  2. #include <malloc.h>4 y0 H2 v* E! ]6 T
  3. #include <sys/types.h>
    ; t. g7 y! `# [# F% Q: a- I
  4. #include <sys/stat.h>- a. a) l( `' O
  5. #include <sys/ioctl.h>  P# ^0 q9 t3 A' g+ o4 B
  6. #include <stdio.h>3 Z" {7 x9 j5 V/ B  g: ~/ O
  7. #include <string.h>" u2 e" T7 b9 F3 Q* ~
  8. ; L! Z/ ]( ]3 V( I
  9. typedef struct {9 a  A/ o1 c& |! P% j
  10.         unsigned int        e2prom_cmd_sub_addr;
    5 s; X( D( M# o
  11.         unsigned int        sub_addr_count;
    8 l+ X( r, Y# P  ?  Q/ g+ _
  12.         unsigned char*        e2prom_cmd_data;
    3 w5 [% \  ^; {0 V
  13.         unsigned int        data_count;" c% K- b8 p9 O/ i8 A4 h  y
  14. } e2prom_s_cmd;
    + y5 O: e- |8 T7 X

  15. ' A0 P5 g' T4 P) m7 @
  16. #define E2PROM_CMD_READ 1
    ) O: A  F* ~. W1 A0 u
  17. #define E2PROM_CMD_WRITE 2
    8 H" \3 i0 ]& n- T$ g3 k! P
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 F6 f2 Y9 @; S5 N( y' [1 l4 k

  19. 2 A5 h8 y8 ]- R4 P! W/ c- }9 e8 Z) n
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    0 t1 K3 f- E+ A/ r6 t( L+ M$ u4 O. C
  21. {# A& B# o0 ], {3 \. L4 r
  22.         int fd, ret;9 d: }9 F1 F" X0 N$ l
  23.         e2prom_s_cmd arg;4 h1 @! h0 T' y8 V6 \/ ]! C
  24.         unsigned char buf[0x18];
    . O( @$ j6 L: P1 d( F

  25. , ?' A% E# C9 n/ b& n
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 Q2 _: V( c" ~, w
  27.         if (fd  < 0) {0 q* j, y6 C, M
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * e! P& R, a& `$ U
  29.                 return -1;
    % Z( q! D$ D' b- _( N- D
  30.         }
    6 l' K& G( `  W# H& V; s
  31.         arg.sub_addr_count      = 2;
    7 p' m, e& ~* A+ X7 s, w
  32.         arg.data_count          = 0x18;
    # ]4 w3 i% S7 p5 d3 E5 L1 [$ G
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    % l: ?1 @/ u. y/ U: [2 T9 B* a, N
  34.         arg.e2prom_cmd_data     = buf;0 G0 m6 {9 b; z) c9 f
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    " B6 {: r8 N! e) C
  36.         if (ret != 0) {
    # ^: W2 m. N( V( j/ H% J/ _
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);, g/ H# p, ~7 L
  38.                 return -1;0 E/ v- K8 Y, V1 r/ P2 ]+ ]
  39.         }, e1 M3 {7 J9 D5 x
  40.         memcpy(mac, buf, 6);
    7 ~5 G0 Y+ ]) r. K( O  `- S
  41.         memcpy(stbid, &buf[6], 18);
    : f$ j# A6 t$ Q, F# j" B
  42.         stbid[18] = '\0';
    ) l# x! U% a6 z# u: v; }
  43. 8 F0 |& |$ ~& r8 V
  44.         return 0;
    4 @" O# K8 R+ H) m: _& d, o& Z& N
  45. }' V- d: A7 U8 j6 C- m9 R1 U$ S  |

  46. * T/ k; R, v3 b4 t; D  w
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    / b$ u3 E, P2 X# Q8 [/ b, Q
  48. {
    # j* ?2 E* o7 J9 Y/ A" P
  49.         int fd, ret;) Y% u4 U1 `3 l$ ^6 c
  50.         e2prom_s_cmd arg;9 m, I: {7 ]: ^/ M$ E
  51.         unsigned char buf[0x18];6 \. d+ k( A- M' x! D
  52. 8 l8 L. A' V2 F, g8 H
  53.         memcpy(buf, mac, 6);
    % q" {  u" s6 H( L, `* p
  54.         memcpy(&buf[6], stbid, 18);; G$ E  l) s$ M4 x/ m
  55.         fd = open(E2PROM_DEVICE, O_RDWR);( n2 y( a- w5 z$ |) C! u
  56.         if (fd  < 0) {
    ' q2 n& g1 v! \3 \" \
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);- i7 r, r5 {) x6 d
  58.                 return -1;
    1 a; r- H- ?$ j& [, e. d
  59.         }
    0 }# y* Q  K/ q
  60.         arg.sub_addr_count      = 2;9 b2 ^' O' E. O" l
  61.         arg.data_count          = 0x18;
    - [) L9 l1 _+ n7 l& S
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    2 U- o% x5 S: ?# m
  63.         arg.e2prom_cmd_data     = buf;
    " F0 I9 ?. L8 r* E  t7 x
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    " J" d* v! ?- R8 H( ~/ j4 X
  65.         if (ret != 0) {2 C8 w# N; X& v2 x5 s2 w# o
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);  B: e) l8 c8 d% f6 t# E
  67.                 return -1;
    0 E% R' q; I6 B) _
  68.         }
    5 v5 w" [# `/ D

  69. ( C8 S# k2 G( @
  70.         return 0;
    $ b$ t0 H( ]5 m4 e; U& X
  71. }
    7 p2 n9 G. u& ?7 l; I, c
  72. ; \2 |: b) m. @% K3 a- V" E
  73. int main(): c) e! B, [, b& b' B0 X
  74. {6 n( w( T- |2 o$ U% n( j* B; d
  75.         char c;- |  X! M, _! w6 n
  76.         int i, macs[6];  Q" B* ~5 S" Y& n) a' O
  77.         unsigned char mac[6];
    * T. c# e* D+ O6 A8 w( U% Z
  78.         unsigned char stbid[256];
    7 X+ Q, N" a" Q# z" R# E1 H* x

  79. ; T$ h3 X3 L1 Q% A: _3 F
  80.         if (readparam(mac, stbid) < 0)1 Q% c9 J5 W' m6 h; J( C" C
  81.                 return 1;
    ' ~4 Y  F- Q8 D

  82. ' h& p4 \9 c  `0 g0 M; k" k4 Q
  83.         printf("Current parameters: \n");8 a- m; x( s5 r1 l& o0 f
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    5 e% M& t5 h/ u; n. O# l2 @' |
  85.         printf("  STBID: %s\n", stbid);
    - E: f: w! G6 E4 ~/ B: b
  86.        
    , Q/ t4 s) O! }5 }; B
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");8 a. |  L9 ]6 u3 c+ V9 t$ ]) C$ d
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {- ]) J- N1 a$ o
  89.                 printf("Input MAC error\n");
    ) t4 r/ k; e" _: e: L
  90.                 return 1;: t& z8 j$ N& k' s' l( Y
  91.         }
    $ w. k  X! O) \5 W
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( m6 F/ K' I- W9 n5 k! U
  93.         printf("\nPlease input new STBID: ");
    , p) `2 d8 m1 h
  94.         scanf("%s", stbid);
    % p7 o4 g7 z5 h- D. g
  95.         if (strlen(stbid) != 18) {3 _' h  G) |8 r
  96.                 printf("Invalid stbid\n");
    - _/ N5 u5 t/ r. f: a; E
  97.                 return 1;1 p; k/ O% N- l" p
  98.         }
    : y9 K- F4 j  ?
  99.         printf("\nNew parameters: \n");
    ( Y5 Q7 J( k; C0 a( \4 x% R* u
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) Q$ W7 @% ~; D$ o9 m: M7 n
  101.         printf("  STBID: %s\n", stbid);$ z, ]( E' Q1 u+ |: H: n" f

  102. 2 n4 g( q+ }6 j8 {  `
  103.         printf("\nDo you want to change paramemters? (y/N) ");( e* x* U) T% m! m! ?! `: Z
  104.         for (;;) {+ g# n9 W  T* n) g, u4 I
  105.                 c = getchar();
    / H. Y+ {6 |* @1 Y( h* I
  106.                 if (c == 'y' || c == 'Y')% }2 d7 h# \8 E
  107.                         break;: D2 o* e! j0 e& N7 e# z/ f( D
  108.                 if (c == 'n' || c == 'N') {
      c+ Z; P+ S8 J* u
  109.                         printf("\nAborted.\n");
    / ~+ g) A* o: x( ~# M0 Z! k6 A, W" e
  110.                         return 1;4 C& ~  |7 P& m" S1 V% n
  111.                 }1 x8 ~/ n' P" H% ?% z2 r' S3 S
  112.         }
    7 @# a5 D( H- D' j4 u2 @" r
  113.         if (writeparam(mac, stbid) == 0) / Z+ e. \: c  `
  114.                 printf("Parameters changed.\n");
    - b  c  a4 u2 U5 s3 `- U
  115. : G0 |0 H) H, h1 d2 D1 W
  116.         return 0;, B  q; w: W% f; ~* u) g5 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
% V- v$ P8 \( c; q. I# W2 X在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

+ i3 ^# x1 C$ R, g7 D) e你用的编译命令行格式是什么?
" [( E7 ^' Z( J7 Y2 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客服返回顶部