查看: 17225|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    / g' j2 v4 n  m/ {6 T3 z" F
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    4 g4 o7 I% M, v* ]/ g6 p: E
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:" n+ ~2 B0 }6 r* J4 `. S
usage: himr <address> <value>. sample: himr 0x80040000 0x0; @: W& L7 E) x

6 l4 U0 Y' i' F, G: G
: Y; a+ v9 \6 V不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?/ [- Z5 j. C, h

& r1 @9 U- R. J# l补充内容 (2012-3-8 09:42):
0 w! C' c. q' T) v; khttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数  i# }9 ~/ F+ _  L) ]; U* z: c( F
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。1 j6 l* u! R0 ?: w$ g- y" z' d
/ K1 q. z6 q% x9 l/ u& {
himr <address> <value>. sample: himr 0x80040000 0x0
* }. Z3 R: m6 h# \+ T; d' N* p  ]. u9 a2 y
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。* b+ V% _% E" k& T9 {% E* I
himr 0x80040000 0x00$ m0 J- k0 s4 l2 e, O
himr 0x80040001 0x11
, v1 E+ d9 [6 E2 ?( M: p5 vhimr 0x80040002 0x22; b, g4 k& f+ ^0 v% t
himr 0x80040003 0x33
$ J; \, J* Z1 o5 c2 A- Rhimr 0x80040004 0x44
+ r: S6 {- m1 [& j( V% D8 ^6 dhimr 0x80040005 0x55$ u1 ]4 X  N& s' [

0 Y: U6 B( v+ K3 K. r8 f/ NSN也是类似。2 Z# l; Y1 X; m  F' ~( |
# E: x  t; U3 w7 Y) o2 y+ j+ ]2 ~
现在主要是,谁告诉我们MAC和SN的地址?/ S+ n( M0 l  L
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
% b: H* r. y! v6 [9 P一直想找到运程修改MAC和SN的办法,苦于无解啊

* w: d7 Y: A2 I% t7 w% }源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 : n, `: ^! h  E/ u: T

" Z4 w* d1 U$ K  e0 ^& w修改的代码早有了。到今天不会编译。
+ G7 t/ y- k) C; @$ `$ n; R需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    : G5 a" L) S+ Q8 n2 o! q( C
  2. #include <malloc.h>+ ^  C. x0 T9 p+ S  ~1 D) @! A( ~
  3. #include <sys/types.h>1 f8 a6 D5 b8 G) f
  4. #include <sys/stat.h>  i. S! q3 Z: d3 b7 [
  5. #include <sys/ioctl.h>+ d% l1 b' s* S4 ]( ]/ y: s
  6. #include <stdio.h>
    4 `" S! |: F4 l! B( F
  7. #include <string.h>& X2 j' T6 C- m! V6 A6 s  o

  8. $ [" N3 V" O* [- u8 U% V
  9. typedef struct {
    ; s( u, u. |8 V$ y$ D" u* N- \
  10.         unsigned int        e2prom_cmd_sub_addr;  ?( K( p' N% B) H% ~
  11.         unsigned int        sub_addr_count;
    # N8 o: ?# g9 e; X
  12.         unsigned char*        e2prom_cmd_data;, m" `) {' R$ b' G* l6 R
  13.         unsigned int        data_count;( m) i* t* G3 a% ~
  14. } e2prom_s_cmd;
    6 M% V  Q- h6 L2 \* l, o
  15. 8 `$ e0 X7 B- u& @# X1 c) \
  16. #define E2PROM_CMD_READ 1
      a( J: i4 @& b# M
  17. #define E2PROM_CMD_WRITE 2, J) y0 d- `* H' m2 e3 h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    & ^  @  o- X2 D; V" x

  19. 5 P" J$ ]/ H! B% ]- P
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    3 [- a8 S! X1 c
  21. {) C2 s1 N( E4 R9 f& v1 k* j
  22.         int fd, ret;
    . f& m# Y7 s, R0 S
  23.         e2prom_s_cmd arg;
    % M) D2 a/ v9 ?3 N) k' Y- @) v) w' B
  24.         unsigned char buf[0x18];- A7 R) j& ]& E: J/ G
  25. . [1 p' h  [  z. i( C
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' ?( l1 K) ^9 V* `. K
  27.         if (fd  < 0) {
    ; ]# l, m" b: D! P9 u0 c% Z; J3 f* i
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);# l! e8 a  k  p) g
  29.                 return -1;2 N/ z" V2 c9 _2 p  L
  30.         }( X- G* R% |% a- F' w+ R
  31.         arg.sub_addr_count      = 2;
    . S- C; H* g/ B) b& T0 W
  32.         arg.data_count          = 0x18;
    ' O7 D9 g+ `# M5 l" X5 p
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    5 G9 ^2 C' h! `9 @
  34.         arg.e2prom_cmd_data     = buf;2 [9 z% e$ ^: t5 E  j" H
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    6 D% @+ j: j' p* i& U0 r
  36.         if (ret != 0) {+ e$ [+ Q. P6 }3 T
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    & w3 c7 I/ X. s8 W. |- S; O
  38.                 return -1;8 }6 M+ \8 x7 R* U0 S
  39.         }7 s. D# T5 h$ A' x+ C1 B; }& N7 F
  40.         memcpy(mac, buf, 6);$ L4 b! ~2 v; Y9 x
  41.         memcpy(stbid, &buf[6], 18);9 H5 N- ~1 L# a, L' r9 t  |
  42.         stbid[18] = '\0';
    ; J4 J  q' h8 q7 P
  43. : n6 e+ u8 T6 y/ H3 ]
  44.         return 0;3 X& {% e; J0 q+ L# u% j8 x
  45. }* Y, ~$ [$ h) E6 Z) ~; j4 d

  46. ' R6 q: u. `7 U9 ]1 ~& a* Y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)& x. q, U) t- ]3 d4 ]
  48. {
    8 ], D2 \$ t- E$ J
  49.         int fd, ret;
    : d( Y) N2 a1 W/ X$ a) [
  50.         e2prom_s_cmd arg;7 R, [* k5 R6 o' L
  51.         unsigned char buf[0x18];* t# B6 Z/ [+ M* {% N( {) \

  52. % r3 e2 K# t: }2 U7 h7 s* B
  53.         memcpy(buf, mac, 6);
    4 P) X1 }/ x1 B8 w
  54.         memcpy(&buf[6], stbid, 18);
    / a( R( o1 L' W8 d$ w
  55.         fd = open(E2PROM_DEVICE, O_RDWR);; n& D" U2 K+ [9 v) c2 @: G
  56.         if (fd  < 0) {$ U) z3 v0 k) f- Q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);  ^2 ]* r* J" U8 i
  58.                 return -1;
    * I" |) Q4 s% n9 h  H
  59.         }- M9 [/ _- m6 D- g
  60.         arg.sub_addr_count      = 2;  Z7 Z  v" B  T- H7 f% O% I
  61.         arg.data_count          = 0x18;
    ( K6 S1 L2 T. Y# T! m; l
  62.         arg.e2prom_cmd_sub_addr = 0x290;6 p& M) h' e2 c
  63.         arg.e2prom_cmd_data     = buf;
    " {- a# X9 m2 j  Y: N  A! ]' f
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
      G/ c, V" K' c: O9 ~
  65.         if (ret != 0) {' Z) `' o3 W8 m
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);% s# a9 T& ~; |9 n+ _  K+ [
  67.                 return -1;3 W( N2 U' q# |, ~/ u/ @: ?# j6 M
  68.         }1 x* V' O# m. f: R

  69. 8 C7 N# P- R2 w& }8 |
  70.         return 0;- y% y. C0 n: P+ K1 v# ?$ @
  71. }
    1 z' R  D8 b$ M4 X5 L

  72. $ m9 }& B: t& y
  73. int main()5 G& B6 M1 v; r) S8 l
  74. {
    ' k4 H- {# v8 h. u
  75.         char c;
    7 B. {- s$ o: p- H8 f6 K, l
  76.         int i, macs[6];
    0 F- N+ z/ l$ d8 }
  77.         unsigned char mac[6];
    & p# K0 h0 Z: ]! m! c. M! B3 U! m
  78.         unsigned char stbid[256];
    # u5 K" I0 i- ]4 ]
  79. # m* A8 ~  s4 z7 q7 G% j7 l
  80.         if (readparam(mac, stbid) < 0)9 W/ f( B. M, ~7 t  T+ Z" c, l* @0 |
  81.                 return 1;& q0 X: D- Z! q

  82. 6 |+ e! e) a3 |' W
  83.         printf("Current parameters: \n");
    - s5 A1 s) _+ T& E$ c
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 G$ ~3 ~# _1 j2 H
  85.         printf("  STBID: %s\n", stbid);" |& w5 A4 x- R2 V. z  {! o
  86.         $ {2 V% J' E, V& p6 _
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");' |1 C% R8 k" o# _' h9 R
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {2 ?3 z2 U4 v. M6 f* G1 j
  89.                 printf("Input MAC error\n");$ J/ R8 j% @3 R  ]5 ]% ~  p2 R
  90.                 return 1;& q( [0 p! U, A
  91.         }+ o2 S1 n& T( e4 c+ i) V4 _/ u; l! u
  92.         for (i=0; i<6; i++)mac[i] = macs[i];3 K5 L+ l  O" f9 N8 E; l( x7 z
  93.         printf("\nPlease input new STBID: ");
    * k! f, D8 }+ v6 ~1 ^) D- r
  94.         scanf("%s", stbid);
    8 L2 X3 L6 d: }# j! L
  95.         if (strlen(stbid) != 18) {
    ( l# V! Z0 T8 A  }# J7 j9 a, W7 m/ c
  96.                 printf("Invalid stbid\n");& b3 @7 \, \6 _0 Z# |1 ^; W
  97.                 return 1;
      r) x0 H) o: F
  98.         }
    ! N! h3 m5 b' z" j/ f! S0 h
  99.         printf("\nNew parameters: \n");
    ( o9 W; k& C, X. }, e- z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  v6 ]* V- U7 S1 m. R3 |5 E$ T
  101.         printf("  STBID: %s\n", stbid);
    % R, d+ z5 m! G4 ~( |

  102. : P7 X# a& d9 f! M) s4 y6 I# ~
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    7 f$ g  ]% R$ |) w3 x2 @( ?! x9 P
  104.         for (;;) {- v. O9 `9 P0 v! ^
  105.                 c = getchar();) z" C+ v/ h; ?! i, s
  106.                 if (c == 'y' || c == 'Y')0 r! V; s# Y4 V
  107.                         break;
    2 K5 f- m" ~  g2 e; e
  108.                 if (c == 'n' || c == 'N') {; e6 B2 p" T) {' ]
  109.                         printf("\nAborted.\n");
    3 S1 n; Z) P' p: g9 S  \7 ?
  110.                         return 1;
    ) M5 M/ x) y) c! ~4 K  L) C
  111.                 }9 y0 v' ?# A  }2 a2 f5 J$ ^* j* v
  112.         }
    % Y/ m. c. u. `6 B4 y# z
  113.         if (writeparam(mac, stbid) == 0)
    + B$ O$ P7 j* t( K. W
  114.                 printf("Parameters changed.\n");* v) N* @2 F9 i, q/ F
  115. % [  F$ a/ g4 K- `
  116.         return 0;
    & |' Q. s& S- A
  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
$ z  L& w9 o+ y- P在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

2 A; c% _& d( a5 O6 q9 f你用的编译命令行格式是什么?- z+ q; ?" Q  i8 y& d1 s
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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