查看: 17303|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr8 J5 K: r9 {0 a1 I
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ( U7 @' u# I4 V" |; y& j' u
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; ?/ b0 [& ~- U2 v- t3 c5 o
usage: himr <address> <value>. sample: himr 0x80040000 0x0
. _; M3 N3 C: I+ e, h3 B, M0 i8 P8 Z, u" c# O
: i9 F0 X; u4 M- F$ t
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?) k7 Z  y! G& A$ b" L# |1 k8 g

& M# D: r  e, l补充内容 (2012-3-8 09:42):/ m7 ^; i! F7 w7 U1 P- k! R  j6 ~
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数" W! N8 n% D) ~8 w& j5 K+ F
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。0 }0 t  E9 D  O+ S
! d) w. m# {, y8 ~3 Q
himr <address> <value>. sample: himr 0x80040000 0x0
. f# @) G! z# C# E1 V' H( I0 Q  n6 X4 a
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
& m  g( j' \7 _himr 0x80040000 0x00& Y! k8 E8 @( v
himr 0x80040001 0x11
1 B. T( B! E8 R4 w5 Nhimr 0x80040002 0x22* ?" y) T9 V. z, S
himr 0x80040003 0x33
5 V4 S) R9 i& }8 `# Q% _' R, Chimr 0x80040004 0x44
" B, j- W5 t4 I, ^; whimr 0x80040005 0x55! ?' A  K! f# {8 w* F% H, ]* g8 R- z

0 t- f/ a2 r' F5 U% ~SN也是类似。
: i6 D& p/ R  d5 t+ M2 N
1 I; L/ }- u+ j现在主要是,谁告诉我们MAC和SN的地址?
+ e8 y/ L5 r2 P( U$ r4 U
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ! Q2 T, [; T7 c9 L7 W0 y
一直想找到运程修改MAC和SN的办法,苦于无解啊
2 L, y3 |2 R" {# x
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 & E, M# j4 O  z. O
5 v  ]1 w; n. F/ |
修改的代码早有了。到今天不会编译。+ W; p5 y  ~6 y5 Y
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>- \2 Q: s( _5 ]7 f$ ?
  2. #include <malloc.h>& Z9 A. v1 `* q
  3. #include <sys/types.h>
    6 j2 W# B' o% z: {5 g5 ?# k
  4. #include <sys/stat.h>
    ! G- Z5 h$ a. }  V8 h# G$ X; M% v0 B
  5. #include <sys/ioctl.h>- P/ C# W  J4 N/ D7 F
  6. #include <stdio.h>& S: l! M7 x( w' L4 H
  7. #include <string.h>: }, o* L( M* T. c  D

  8. 2 k1 z. @+ M$ g: Q4 H
  9. typedef struct {5 _  T" o* r7 A1 [' i* \$ a* o' p
  10.         unsigned int        e2prom_cmd_sub_addr;8 ~% o" f5 d; m+ Y% r: x
  11.         unsigned int        sub_addr_count;, S  s5 ?( `) d
  12.         unsigned char*        e2prom_cmd_data;
    0 k7 c0 c- q  u
  13.         unsigned int        data_count;0 G& i8 |1 ]" k- [! `
  14. } e2prom_s_cmd;$ V! J  T2 `0 k0 o

  15. % j4 {$ x* K3 s5 f
  16. #define E2PROM_CMD_READ 1
    ) B7 u# [6 ]% o4 V- D
  17. #define E2PROM_CMD_WRITE 2
    " E: r9 q! Q' o8 k% P4 W% w. c
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"# L6 u9 e3 W4 N

  19. 5 V9 K4 N) w: Z, g
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    & M* ]7 n/ R  A5 t
  21. {- N% |3 C  d4 A2 m+ C
  22.         int fd, ret;
    - r& b6 H4 v3 s/ R& t
  23.         e2prom_s_cmd arg;; j4 V: O3 y9 N' j, K
  24.         unsigned char buf[0x18];& I8 q3 `- \. C& G4 S

  25. 6 T+ K8 U: d+ H1 v+ y9 y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    & l# `5 {/ }3 N
  27.         if (fd  < 0) {
    % Z* e2 ~( A& ^2 E8 ^
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 U5 T) W' C+ ]( x1 h
  29.                 return -1;2 l+ N) U/ ~" Q) P) q! f
  30.         }2 e3 x% U1 l- H+ f: b
  31.         arg.sub_addr_count      = 2;  E  O6 w2 O+ j
  32.         arg.data_count          = 0x18;8 T! I5 u% X# o; u. E2 n0 D5 f
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    " X. Y0 F- M& l& {) A
  34.         arg.e2prom_cmd_data     = buf;3 W: c- k0 e- X" C5 k7 u
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    2 W( g: H7 @1 s$ H" E8 j( x
  36.         if (ret != 0) {: q( [" L! A: v9 t1 k
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);, ?# k. ^: d9 X8 g! w9 l
  38.                 return -1;& C( D9 |" J- D1 J5 |( \
  39.         }
    / W; U% p3 }  u, B& i
  40.         memcpy(mac, buf, 6);, S! A/ Q% [+ u
  41.         memcpy(stbid, &buf[6], 18);
      A1 F5 m. }1 l0 \) b, o9 _
  42.         stbid[18] = '\0';2 r2 G- ?5 u  Y( }3 u/ }+ |
  43. # q+ w( L$ B" v  @3 P4 W* D
  44.         return 0;) v2 z- {: T3 G9 V( r
  45. }- D/ n$ j( I! `- b) o2 ?: W
  46.   n2 E/ _* r4 Z2 X
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)0 w8 N5 N; \4 D' x. h8 K
  48. {
      y- L' P; P3 X# p: ~
  49.         int fd, ret;% ?) |  q* a2 q0 P' a0 S
  50.         e2prom_s_cmd arg;
    : v2 Q- a  P5 ?' l- L
  51.         unsigned char buf[0x18];  L+ R, c  B3 q, E
  52. . }) A' q+ _9 h8 _" _, |
  53.         memcpy(buf, mac, 6);! N' \2 z6 V6 Z8 h; Y- s( `
  54.         memcpy(&buf[6], stbid, 18);
    % c& `: e' E* J1 S" u' x* T
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 ?* Q; o# @( P" F
  56.         if (fd  < 0) {
    * n, ~' c) [' S% H
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : f5 f& X% [9 T' Y8 u6 F( ^; P
  58.                 return -1;
    1 y5 [" G, |+ j- n3 r
  59.         }
    " s8 g, }/ K2 V8 c
  60.         arg.sub_addr_count      = 2;
    ) I. \7 w1 H  E* }! v6 J6 ~: q
  61.         arg.data_count          = 0x18;( ?' z! x! S* `* }
  62.         arg.e2prom_cmd_sub_addr = 0x290;9 a  M0 Q0 j% `" t1 V
  63.         arg.e2prom_cmd_data     = buf;+ f7 o/ k) W6 ?6 @$ ^
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);/ a. d! ?4 I7 k
  65.         if (ret != 0) {
    2 ]% H" r9 ^% A2 l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    0 t7 X6 t' P! f! ?. j% }% A
  67.                 return -1;! Y( r  E2 P/ I' R8 c9 j' u- V- M2 |
  68.         }
    , \: ~, K& b! |* ?1 t  r
  69. , w7 F9 J) |9 S. ?, a
  70.         return 0;
    ' m& X1 }! B) Z" }2 Q# n. I
  71. }- ^+ Z* m3 E# w; |# U( E0 p
  72. , k0 [) |/ {7 I+ h0 V
  73. int main()5 y& H( F6 l- M  H/ E: F
  74. {
    9 E, w% n8 C7 v0 J. j6 T" E' @$ w. {
  75.         char c;9 h# q5 c- f1 _- \8 S: Y% D
  76.         int i, macs[6];
    3 ?/ E) z9 W; k* j1 X  m
  77.         unsigned char mac[6];: Z" Q7 m, m& A* G8 j- `5 u
  78.         unsigned char stbid[256];
    ! {/ x+ W' f% Y( D* L; F& i4 @
  79. 5 D* K+ ?: w: u/ Y( a
  80.         if (readparam(mac, stbid) < 0)
    0 u4 u/ s$ k0 |  I, r
  81.                 return 1;& M9 S2 q+ b& G
  82. # U, j( z8 u4 c5 m" g  t  ]
  83.         printf("Current parameters: \n");
      P+ l' x" D/ M: F
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    $ L7 J7 O" G, P) W0 ?& f
  85.         printf("  STBID: %s\n", stbid);/ r% S% D+ O8 n, Q0 p& [, m
  86.         , v. {" A" n3 [. H5 j; v; l
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");) |! ^/ u2 B3 `: z
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ! p" Q5 }  T$ K/ b8 z
  89.                 printf("Input MAC error\n");. u  B' T1 d" ]' A2 ~, R
  90.                 return 1;8 S, A' Q# X* _, a) H( J  _
  91.         }; K5 M9 F! o* d* q6 c. v4 F4 ?
  92.         for (i=0; i<6; i++)mac[i] = macs[i];& d" W5 b' D! o( B9 |' o, D7 H
  93.         printf("\nPlease input new STBID: ");
    9 C* E: s6 U' b1 R& A
  94.         scanf("%s", stbid);
    # I$ j* d9 ~$ B$ H) u
  95.         if (strlen(stbid) != 18) {* j0 U1 V1 k: K
  96.                 printf("Invalid stbid\n");
    , X3 [. n  k: y( p$ T" t
  97.                 return 1;8 C6 u' v1 `4 t  [4 F
  98.         }8 i! ]$ t7 p7 t1 g7 E% a
  99.         printf("\nNew parameters: \n");" T0 R  Y0 j" n0 w, o+ ~
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 l- k) Q' t- [! Z/ Y
  101.         printf("  STBID: %s\n", stbid);
    3 |' Y8 ^, H4 [3 X

  102. / n/ z8 [" c. t6 K2 A; e
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    * m1 \: Z/ G& X5 \+ S/ _5 z4 k
  104.         for (;;) {$ v8 y" H  T6 W/ ?% _
  105.                 c = getchar();
    % O. K4 O2 v/ D0 [
  106.                 if (c == 'y' || c == 'Y'); b6 S2 u2 W8 ]. k2 C
  107.                         break;
    7 \, b. o" A& G, N
  108.                 if (c == 'n' || c == 'N') {. l; `) Y2 r/ A! h4 z5 Z
  109.                         printf("\nAborted.\n");
    * V( Z4 U9 n  j9 f/ `1 r
  110.                         return 1;
    ! q, }7 h( ?) K: p9 M8 K3 {& k
  111.                 }; v# n8 E, T" ]
  112.         }
    : u/ v) q2 A) Y$ c& u
  113.         if (writeparam(mac, stbid) == 0) ; n9 ]: O  ^$ D% C) E1 e! \
  114.                 printf("Parameters changed.\n");3 ?# b. S. W# A- G1 g' k
  115. 2 @8 I5 v, p& `. z9 ^
  116.         return 0;# K/ h/ u5 R& X3 G
  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
, i9 G9 U& J0 ^8 h在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

7 |/ R" }! }4 x: f- M+ G% }) D  Y% v你用的编译命令行格式是什么?
# f3 z- w2 e/ C. k4 u. 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客服返回顶部