查看: 17073|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    8 r. q# `2 T" t  e$ U% b5 u
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig% W6 N+ U* |) M* v
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
% |7 c/ S2 X+ N  }usage: himr <address> <value>. sample: himr 0x80040000 0x0- k, J, A0 F* y5 x
' @  C# `* U  {

# Z" ~3 c0 ^1 H2 h4 ?" G3 ?: ]. Q不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?! {2 K$ U3 b* I  s# w( i* D+ ^0 q

5 j! |6 R5 F- a+ k补充内容 (2012-3-8 09:42):
1 i. X0 m- U; h; g. Y/ Q* ahttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数8 W, k7 m8 V+ w' V5 K( H9 O3 a( ~
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
# ~6 @! Z7 v! G7 x6 E) E
6 c, x% [# s2 c7 b' Whimr <address> <value>. sample: himr 0x80040000 0x0
0 k8 ]' x7 l; i, O9 R$ a1 W3 A$ a( @0 R2 y' C4 n
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。8 N5 @" I' |! U0 t) t% F
himr 0x80040000 0x00) s5 @0 v( r) z( _  y( S
himr 0x80040001 0x11" Y4 h1 z8 c2 e5 H8 E  Y/ W: f
himr 0x80040002 0x22
, T4 q3 U- g- G% x6 P% Phimr 0x80040003 0x33
1 X" ~+ L; c! Z4 R8 p$ j9 G3 Shimr 0x80040004 0x44
1 y+ e  U% n7 Vhimr 0x80040005 0x55+ D  ?, W+ c: P; Q" I

  x; e1 N1 V: USN也是类似。
9 H/ U; A( N0 R3 k
8 j1 u' `/ t  E0 s7 P3 u8 j  n现在主要是,谁告诉我们MAC和SN的地址?4 j9 l) Q) w  i. Q8 V
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ( X) [  j1 q$ `" u
一直想找到运程修改MAC和SN的办法,苦于无解啊
" q0 z; \' l1 f- K( _6 o9 x& \! s+ [" t. Y
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 . }, s1 _. e4 X

! |* |: B. t! {4 c7 O0 G7 w修改的代码早有了。到今天不会编译。" U, i+ k! `% L# k+ [/ k
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    7 i/ _: _# }& Q' X" ^
  2. #include <malloc.h>" a: E& S; _( o: R) B
  3. #include <sys/types.h>: @# i: p" q$ L; }/ M" i, h
  4. #include <sys/stat.h>2 _5 f( D: i# r
  5. #include <sys/ioctl.h>- m5 [& W4 Y% N; R
  6. #include <stdio.h>9 w4 h8 J( U  {2 E
  7. #include <string.h>: i/ l; }6 G/ R/ X

  8. # k- D( Z( L$ E) S0 G7 T8 b' }
  9. typedef struct {
    6 j+ \  A5 s+ y: V; H* o, g
  10.         unsigned int        e2prom_cmd_sub_addr;
    % g0 E0 D# J6 I% G4 X1 O
  11.         unsigned int        sub_addr_count;
    3 m) g4 Y! B1 b5 r9 Y
  12.         unsigned char*        e2prom_cmd_data;
    2 @5 J# @7 S; X" z5 P
  13.         unsigned int        data_count;
    1 _; I7 O6 C3 b- k4 l. `5 o: D
  14. } e2prom_s_cmd;" y% `/ H: K! V: R2 d

  15. 2 y) r5 h% `: n8 B% C8 P2 F
  16. #define E2PROM_CMD_READ 1
    3 @8 U7 J* l6 n. Z
  17. #define E2PROM_CMD_WRITE 2
    9 G8 P- q4 P; S4 c8 \
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    % H! p7 D6 @5 t4 ?0 e6 F

  19. ; T& X, G6 C# u: i. l8 z( ^) n
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    3 y$ C: a. G; s8 R! P" B1 h! v: X
  21. {
    5 p3 E4 Y( [, K4 f9 R5 b
  22.         int fd, ret;
      o3 o( X; Z! L
  23.         e2prom_s_cmd arg;( w. @) k" y- L6 x4 F" o1 H
  24.         unsigned char buf[0x18];
    4 I8 S; ?% F5 R; V9 C$ s: @! T
  25. # H0 D7 {# S: _
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
      Q  F, @$ z" R3 N7 x/ X% f7 K1 `9 t
  27.         if (fd  < 0) {
    ) [; g3 m! I& G; v/ ]- P* e: ?
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);# w! x/ N8 d7 g: i' D4 n8 z+ |
  29.                 return -1;0 D" A& L8 a/ B
  30.         }& I2 O# V- c, N  S
  31.         arg.sub_addr_count      = 2;
    7 V, ?3 H; b# ^, |
  32.         arg.data_count          = 0x18;: j3 N9 r7 U- N% e- h# k7 Y5 ~# q/ g
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    - J) W8 e& Y  J/ H% ?& q. h$ N* J; U
  34.         arg.e2prom_cmd_data     = buf;6 h+ e: V; B; g' j3 R! u" ~1 R
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);0 U8 y$ j: r6 W
  36.         if (ret != 0) {
    , ~& S6 s/ T. w- [
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);0 K" Z* {) _6 T" K7 m$ W# S: E
  38.                 return -1;: m* C' w7 M- `+ S9 v+ {4 K4 }
  39.         }
    ! s8 n' P1 F* o# J
  40.         memcpy(mac, buf, 6);
    5 n3 Y1 E" s1 {  F0 j7 b
  41.         memcpy(stbid, &buf[6], 18);
    ! A* c5 t2 F( Z% t
  42.         stbid[18] = '\0';
    " [+ G& z" g$ i% f
  43. 6 H" {1 t% D( E
  44.         return 0;1 b0 g- }% @  y) v; e0 v
  45. }
    $ Y. l& E( x9 V, k8 D/ M) T
  46. 4 O) c- _/ g' w* [, Z( C
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    : r- J/ R& M5 `' g1 z
  48. {( g, I# m1 O  j+ _3 `* U+ W* `7 }
  49.         int fd, ret;
    5 R% Q2 }8 O2 k, I0 T9 |
  50.         e2prom_s_cmd arg;
    + X% _/ M9 V/ [* j6 [
  51.         unsigned char buf[0x18];" d# v9 d3 ~( G! j, X1 ~

  52. $ E9 Q4 Y/ I: _2 N
  53.         memcpy(buf, mac, 6);- L/ \+ k5 L3 u- |/ Y" W
  54.         memcpy(&buf[6], stbid, 18);; i% V/ @4 `1 h4 ~3 J
  55.         fd = open(E2PROM_DEVICE, O_RDWR);1 S% Q4 |4 d3 J9 C! i) C
  56.         if (fd  < 0) {' k$ \; @9 x+ e' e; I# u$ e
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 f, v9 r% n- @& w% l% f
  58.                 return -1;& m' q% c" `8 x0 x9 r
  59.         }3 q  v$ u+ g  g, x. X% L
  60.         arg.sub_addr_count      = 2;
    $ e( N# L) p; d
  61.         arg.data_count          = 0x18;6 ^& e; I  z3 v% W* }3 t5 C) T
  62.         arg.e2prom_cmd_sub_addr = 0x290;0 J3 x5 Q; g# z& m) r* [; Y4 m5 d
  63.         arg.e2prom_cmd_data     = buf;
    & k5 X, j$ y) [8 T
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    2 C; n; `) P: a
  65.         if (ret != 0) {
    $ D1 N  L, t( z2 z) |/ t( @; L
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);& [5 L/ l( E3 J* ^7 c
  67.                 return -1;
    9 K$ |+ _' c. _. G6 D
  68.         }7 J! h" a) y) [( K3 l% q" ~! \2 D

  69.   p, F2 a: M$ ?7 k- o# a
  70.         return 0;
    4 ~3 ~. P" c) n+ }8 [' B
  71. }. X& S* c! N2 q1 ~' H3 O8 J4 Y
  72. 0 Y" i$ b6 v+ i* Q* {  `
  73. int main()$ P4 x9 C( N" ^( m" L0 u
  74. {* W* U7 A2 P- n# z
  75.         char c;
    , `  Q/ d( C2 g6 i! |$ Z
  76.         int i, macs[6];
    , a' y( s& e, I# [* `6 F
  77.         unsigned char mac[6];2 `4 D  K  T5 R# ?: y9 z% M. b. M3 z
  78.         unsigned char stbid[256];
    : ^( B8 T! w& f* a
  79. 2 ~/ ?/ E3 U; X8 V
  80.         if (readparam(mac, stbid) < 0)  U( U, H3 v3 |9 U1 T  R  e
  81.                 return 1;
      B- Q' P, c  a' R6 O# k+ N1 r. g

  82. , s8 u' r! r$ z& w: ^- m. D
  83.         printf("Current parameters: \n");1 m; @0 b+ r5 M* L0 _
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 Y: h* }2 S! S% R
  85.         printf("  STBID: %s\n", stbid);1 `' F, J( j9 I2 s$ Y( o  k
  86.         . L& W% j1 o7 W. o  m2 R
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");( c! F% s$ m2 ~
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {- l  _" U  V8 T" b( H" O( R! X
  89.                 printf("Input MAC error\n");
    & U" U% c" V+ Q( Y1 ]
  90.                 return 1;% y7 V- g8 L3 N1 c7 N) x
  91.         }+ y  h3 O! w* O) [
  92.         for (i=0; i<6; i++)mac[i] = macs[i];* b  z, F' o3 u& Y$ {6 d
  93.         printf("\nPlease input new STBID: ");' K! i! p2 K7 F4 U5 D% t3 x  g+ X
  94.         scanf("%s", stbid);6 X  q. R) F) G4 q6 n
  95.         if (strlen(stbid) != 18) {
    + H! R" d$ M5 Q# w2 u, D, c
  96.                 printf("Invalid stbid\n");0 V7 C( a( l! F' L- C2 y& B- i3 I( F
  97.                 return 1;
    ! k6 m3 C+ U9 [& f
  98.         }8 o, \) ~- _  ~5 z7 b9 W( P! r% p
  99.         printf("\nNew parameters: \n");; x; Y; x' s3 N) Y" d' ^# @  L
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 {! F9 |# x6 j1 I$ g! n3 Z5 J
  101.         printf("  STBID: %s\n", stbid);+ `4 O# Y) M4 ?3 A, g% n
  102. . S+ w5 x' [& J5 X  S8 U. _- p
  103.         printf("\nDo you want to change paramemters? (y/N) ");9 m/ R9 \/ A, D: E' W
  104.         for (;;) {: B# S& {* O9 d4 ?
  105.                 c = getchar();
    ' |0 L8 T4 p4 V' j, Q6 O
  106.                 if (c == 'y' || c == 'Y')8 P) F9 }, x6 v# I
  107.                         break;9 h2 f; K+ e4 H% q# N
  108.                 if (c == 'n' || c == 'N') {
    ( |. _9 Q3 }+ P/ D
  109.                         printf("\nAborted.\n");) s9 W% N0 c4 |# M! A5 {: ]4 r, Z: c
  110.                         return 1;
    ' }5 B* X* [3 _" [8 w+ A0 P& b
  111.                 }
    0 j' z" p7 f/ X+ M5 n
  112.         }
    8 L+ R! Z# U* l, G
  113.         if (writeparam(mac, stbid) == 0)
    8 M. }' D% X! Q. X) Y8 h0 |
  114.                 printf("Parameters changed.\n");
    . y' V+ V: i* o

  115. & _7 c7 S2 x, h
  116.         return 0;
      m6 M! a2 j4 m) o$ q
  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 0 W7 }& K1 W9 L/ c$ X: D& M0 w
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

/ {  i7 t9 _: ?" V你用的编译命令行格式是什么?0 d% C- z8 {& r* K7 {" B
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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