查看: 16470|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr+ j7 C6 S* E8 Q! t( V4 \
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    " v! f0 y9 ], t7 P
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
! J7 G8 H! Y" B$ g7 y. O( \5 N! Kusage: himr <address> <value>. sample: himr 0x80040000 0x0& l  H/ M% D/ D/ t; `- k! T& V
% x7 h9 r2 D) I- L& q9 \7 u5 _& \/ K
! X7 F! v. ^2 E. A8 M4 a1 c- v
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
  S! N4 s. }( T3 i- M- |' k; H; q& j! f0 S1 ~* Y
补充内容 (2012-3-8 09:42):
6 `' y3 D; i- G& W* z; ]6 [- rhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数8 F$ D5 R% T6 r3 h0 ~" A
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
; J% z( E  c. J( K* s2 k. ]: N% J* G/ o9 U: `5 T
himr <address> <value>. sample: himr 0x80040000 0x0
1 c, O' e, o+ k- t1 s* M& x% `
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
; u  h+ R- g& P+ Dhimr 0x80040000 0x00" G: W# Q( I+ ~, i6 m9 Z
himr 0x80040001 0x11( q' ?7 {2 @/ d" ]. U& Y
himr 0x80040002 0x22
/ ]2 f/ K* Z/ m+ U6 l/ h7 `himr 0x80040003 0x33- k) r- X, ], ]: |
himr 0x80040004 0x44
- X& m5 b( b" }" khimr 0x80040005 0x55
- F) }1 l9 m2 W* ^3 S% p( O$ O  M! V6 I8 M. b
SN也是类似。, A* g7 |& W7 H* ~# L: p

6 x1 i- }) w1 r现在主要是,谁告诉我们MAC和SN的地址?
3 N+ x# `" _2 n1 |" J- U. c3 [; g& ]
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
$ s# g2 `( T/ B" S; w+ u一直想找到运程修改MAC和SN的办法,苦于无解啊

  r$ `( ~; A- c3 g! t+ Y源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
) k% o9 h; ?% ~' F, B) W/ C
; @( U3 \& }$ ]7 T9 n修改的代码早有了。到今天不会编译。
: n* X' f, I% D, H' \2 i! O需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: ?. z% n7 R1 `! p
  2. #include <malloc.h>
    2 z' u# _1 w$ D# C- `8 R" v
  3. #include <sys/types.h>
    ( |0 m) R. k% m5 G2 @$ }
  4. #include <sys/stat.h>  ]& N- v+ Z. l* Q% n1 [5 C" T2 ?
  5. #include <sys/ioctl.h>5 O- C: x  e/ H) _$ j* |
  6. #include <stdio.h>4 A5 f# `: y8 I5 d
  7. #include <string.h>0 a! R0 y5 a: q. c( C: s& ]  R
  8. 0 q, K9 w% }! c! A' U+ Q0 b
  9. typedef struct {8 U' H; ~" C' W4 n
  10.         unsigned int        e2prom_cmd_sub_addr;
    : q7 @0 e% ~' }9 Q7 V* ~
  11.         unsigned int        sub_addr_count;. d4 _& ~; B6 R  A5 ]
  12.         unsigned char*        e2prom_cmd_data;
    ) p5 F( I0 _) n$ P# |" N' ~
  13.         unsigned int        data_count;
    ! F& C* j2 M  u/ u" A9 z' Q% |
  14. } e2prom_s_cmd;8 }$ X2 Q# W& i- q" K
  15. 7 _2 R- f) y0 e+ ~* d, J4 S# @
  16. #define E2PROM_CMD_READ 1
    ) {/ N+ h2 X0 B# Q; R. i" M
  17. #define E2PROM_CMD_WRITE 2
    ; M; i: c9 h3 b" o
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ! k) d' S: k8 d0 ~! H  K& v2 v
  19. # K% Q. n: ?0 u) Y4 \$ I
  20. static int readparam(unsigned char *mac, unsigned char *stbid)* v9 F2 Y* ]  W5 d3 w
  21. {
    5 C5 w! O7 A3 Z1 E& j/ I' H
  22.         int fd, ret;6 U8 p- E. W! t9 O6 y
  23.         e2prom_s_cmd arg;3 A2 d! W, X1 {: X0 P0 h7 J
  24.         unsigned char buf[0x18];
    ( X) a" p$ r1 I' p& o" a  s+ b" h
  25. 4 h+ m/ s6 p+ O0 Y* m' D
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    : Z9 v+ \8 b/ v+ |
  27.         if (fd  < 0) {* y$ X  R+ C# M- H# A$ q
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 b) Z! @  U3 V% A
  29.                 return -1;
    ! }. d/ S: S1 J( \
  30.         }
    4 K4 J! [4 {+ c9 x, C
  31.         arg.sub_addr_count      = 2;
    . o/ s; Y/ G; K6 V6 k4 l
  32.         arg.data_count          = 0x18;
    5 A0 A% P7 G" z1 M
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    3 q) `% B* @+ R" v; m2 T
  34.         arg.e2prom_cmd_data     = buf;
    , C% X: m. Z& J  c" c4 ?+ P
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);1 I# i9 }1 X+ ~2 y: U
  36.         if (ret != 0) {
      a7 ~+ `( a; S
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);3 [# x; D! @8 ^% g
  38.                 return -1;
    / }4 T0 `/ k/ i
  39.         }
    1 q( c! ]( I' m. R) |" w8 S$ h" k
  40.         memcpy(mac, buf, 6);
    6 [* y1 w  n9 ]; ^, a
  41.         memcpy(stbid, &buf[6], 18);5 ?' B) m4 ]# }
  42.         stbid[18] = '\0';
    3 y9 @# g( g+ }. j8 L5 o  W/ \! W& O
  43. 4 u) R0 b/ B, m7 L+ C! {
  44.         return 0;6 r9 v  c& ~8 p1 ]6 x/ W' }$ \/ {
  45. }
    % j! b% S* l- @5 a8 K  K6 H
  46. 1 S6 A6 w( ]" Z* V2 ?5 C6 y) j
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)4 t. S* o$ E" \/ g* C( ^
  48. {
    : F2 t7 I+ e0 L  A
  49.         int fd, ret;% b! ^  z' ~( w( Y0 J& m
  50.         e2prom_s_cmd arg;2 H# U* \" \, p& _# w- G; L
  51.         unsigned char buf[0x18];# e  B4 {1 H7 e9 S, j

  52. 7 y% x9 ~1 \, W& {
  53.         memcpy(buf, mac, 6);1 V/ N& |0 A# f2 s  R+ V
  54.         memcpy(&buf[6], stbid, 18);& D" V" j. q- ?+ c! C; t: e6 x# T
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    % G/ I- ~2 Y1 T' F% u
  56.         if (fd  < 0) {
    + B, s; z) V: L: m" P2 `/ w
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 F1 B0 G* p. J; A2 g
  58.                 return -1;
    4 T! R4 i7 ]& k3 A) E9 q
  59.         }
    9 O5 ]& [$ \: k6 S! \) w8 ^
  60.         arg.sub_addr_count      = 2;9 j$ G! z/ J& F/ ]$ p- _
  61.         arg.data_count          = 0x18;
    + H* I: ?" a% r1 z
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ) a! ?$ k4 \# E4 }$ B" X
  63.         arg.e2prom_cmd_data     = buf;
    , M( u# K* A: g8 M3 _5 t
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);' y9 @) |4 ~9 |0 t
  65.         if (ret != 0) {( v, M: R1 F) C
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    0 K4 U0 v+ u& i9 i
  67.                 return -1;' V: f7 k  `- R: p, L
  68.         }
    & V/ y3 r8 U# a8 M( x, W& W

  69. 5 i' J  m/ {3 {4 P4 `
  70.         return 0;
    ; _/ w6 K9 L$ r) Y, M- L2 }$ o6 x
  71. }
    8 a% Z9 B+ y' {( `" l$ F
  72. . E& m$ a/ g1 \& |1 ~, b% b' i
  73. int main()
    4 |8 k1 T  u( k
  74. {% M* D) T# ^. Z. i
  75.         char c;( o  g& v$ _# a  ]; G- p1 ]
  76.         int i, macs[6];
    + A2 J  w% k% B9 _/ {
  77.         unsigned char mac[6];; e; u3 _8 P1 ~# K8 `# w
  78.         unsigned char stbid[256];, M: K0 [; W2 w+ @2 O' N4 B
  79. 2 `* l0 K- m3 m
  80.         if (readparam(mac, stbid) < 0)/ \; @; i3 ^5 j8 c+ u
  81.                 return 1;) B3 ?5 C) Y" S% {( ?
  82. " G* H9 p9 ]' L1 H0 e8 l6 Z* v
  83.         printf("Current parameters: \n");( T9 G' C0 Y/ a! m! B8 g
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; ]  K4 N! u1 p. C& V6 N
  85.         printf("  STBID: %s\n", stbid);
    : i) `8 F- }/ b6 N8 ]% E* n7 K; D5 `
  86.           q  Y( f5 \9 U2 B
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ' V; A+ w- Q" y% L2 _4 f. @
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    2 {2 _6 k5 E; n; X9 E' H
  89.                 printf("Input MAC error\n");5 W  K- ^) m7 U& c1 _, e, T
  90.                 return 1;. c' @2 l! g$ h6 t/ |; U$ V
  91.         }
    # Q2 V) P. j: k3 f( \" m1 i3 e
  92.         for (i=0; i<6; i++)mac[i] = macs[i];6 ]6 r7 n7 V4 V$ K# `2 i
  93.         printf("\nPlease input new STBID: ");
    2 n3 i: t3 k* m
  94.         scanf("%s", stbid);
    7 a- I* ?0 y$ f/ O2 _
  95.         if (strlen(stbid) != 18) {2 B1 j5 ~( O7 o, k( t
  96.                 printf("Invalid stbid\n");
    # l$ h; _* e- ^. g% e1 o
  97.                 return 1;) S6 N; i8 @8 N3 V3 I
  98.         }+ U# ^. d! Q7 i$ c
  99.         printf("\nNew parameters: \n");6 z& L) T  M  }4 _- ]* @
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # W6 O# a3 v1 z7 [3 d* b+ q' e
  101.         printf("  STBID: %s\n", stbid);( T6 _3 H# G0 ]' `% A  W) H0 r

  102. ) Y2 [# c: ~0 @! ?- Q
  103.         printf("\nDo you want to change paramemters? (y/N) ");2 _3 i4 m1 s: r1 D, i; z1 r
  104.         for (;;) {
    1 T) A5 q  b& b4 E
  105.                 c = getchar();
    # r9 T& A7 y( y; a% o
  106.                 if (c == 'y' || c == 'Y')
    : X' ?$ S; L4 q2 F; b. a
  107.                         break;
    % m; i. @, d+ Q1 H. F3 d6 \" ~
  108.                 if (c == 'n' || c == 'N') {0 n. Q# I. M& e" A2 S" D9 f
  109.                         printf("\nAborted.\n");
    : W8 P* Y! h% `$ Y+ q0 b
  110.                         return 1;
    + x: a+ Z- ~0 [% i! |) [( R
  111.                 }
    : ^1 v, ~' N% U
  112.         }
    4 a, z, b7 I6 p) ?
  113.         if (writeparam(mac, stbid) == 0) . G( t1 ]' ^5 Y3 Y% n  T+ Z
  114.                 printf("Parameters changed.\n");
    1 I2 ^5 l; M2 i% m5 k3 f
  115. 7 S" F3 I2 P- l5 ?  g% ]0 ~
  116.         return 0;0 Z: U& r$ j+ Z; W# 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
3 G& t3 O* E& [$ s* s在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

/ }1 W! |! H2 k) k你用的编译命令行格式是什么?
8 H% d: X) Q' Q  L! j3 z9 L& J
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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