查看: 16614|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr! y% l" ^7 l& o2 F: i) `" o0 A" B- D
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig6 v2 E  U$ X) ~  J0 ~2 t
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:: q% D& W& g/ W% k
usage: himr <address> <value>. sample: himr 0x80040000 0x0
/ o7 U% ^( y6 l% }5 Q( A
1 \4 ]: V0 M( L2 S, x' H7 `( y7 `4 d% L
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
% e5 f6 s7 M5 U9 p7 U) \/ H/ y$ `: `' i+ k7 {
补充内容 (2012-3-8 09:42):, L* y5 i% h. ?8 i
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数7 b, k. o4 @: o( R
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。  S, l2 y  J# F6 F% T: K  m
: ], x: C5 g' }+ v4 O4 r4 T
himr <address> <value>. sample: himr 0x80040000 0x08 n! |5 S* b2 Y2 @

! n; r5 m8 ^) d$ |% N6 |例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
. \  L6 i0 M7 F% }. R% zhimr 0x80040000 0x00
2 c' E, ~  u# i" z1 N2 dhimr 0x80040001 0x11
% d! u: {. Y" x6 c' ?: a1 ?himr 0x80040002 0x22
3 _% y# a, Q5 ]/ F- Dhimr 0x80040003 0x33. Y: O! ]- \. d2 `; X! K0 }! J# n7 |* B
himr 0x80040004 0x44
- Y2 j0 [! m8 V9 v- H5 O5 d" Mhimr 0x80040005 0x55# y0 n- S; [" y% m

& d8 ?0 y( i/ L# s$ YSN也是类似。
. T% n- m( u8 z5 `+ g5 `
4 X% S, |+ z, ]8 [, R! k$ P, i! S现在主要是,谁告诉我们MAC和SN的地址?
  M5 s; L4 G4 N7 X% l
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 9 V/ k/ g. s6 }
一直想找到运程修改MAC和SN的办法,苦于无解啊

. o+ S( J3 p9 `* `+ o源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ' v/ p( _4 L* l& a" R

/ l0 ~* C. i: \( }$ m; L1 M7 G修改的代码早有了。到今天不会编译。1 h; r+ P$ ?/ z! @* J6 Z. b$ i6 v- E
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>. h+ W) U. P! j+ T) m9 S
  2. #include <malloc.h>: x  m; q- S+ J& B- m
  3. #include <sys/types.h>4 o# Q1 v" `. Y1 N  x* u. n
  4. #include <sys/stat.h>
    2 h& O" m- D  I8 @& r
  5. #include <sys/ioctl.h>
    , W3 J/ f% A6 |! E
  6. #include <stdio.h>
    4 K/ ]4 q9 ^  a8 ?& V
  7. #include <string.h>" p/ v2 g9 B3 D
  8. 0 R  j) _& ]" K3 Z& ~1 s. U! r, R
  9. typedef struct {6 R: X, Z3 y- H4 q$ B
  10.         unsigned int        e2prom_cmd_sub_addr;
    % R3 o% ]2 g  p& W) W$ i
  11.         unsigned int        sub_addr_count;" o7 V( t# K1 f7 Q% q. T: C
  12.         unsigned char*        e2prom_cmd_data;: v. R! l$ g- x# u) v7 T
  13.         unsigned int        data_count;
    ' j0 N' Y5 _2 ^  `; A8 Z
  14. } e2prom_s_cmd;
    0 S6 y) A2 t* j" V

  15. , P6 Y; n* n7 b7 G/ l
  16. #define E2PROM_CMD_READ 1
    , F3 P1 L1 H$ Z, O
  17. #define E2PROM_CMD_WRITE 2' k* y1 D" p( T7 N, F
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    - y6 A+ d% v. [4 }
  19. . L* D* b+ Y5 n9 Y- D! [/ f/ B
  20. static int readparam(unsigned char *mac, unsigned char *stbid)! j. a2 R; Q' r3 @! V& P
  21. {
    ) P: Q- G0 M4 q6 S
  22.         int fd, ret;
    3 i/ I/ f' @& Y: ~4 O6 q
  23.         e2prom_s_cmd arg;  W. ^; w( w( p, R, P! z( m# O
  24.         unsigned char buf[0x18];
    7 [2 j) P- z! R% B/ Z# ]6 Y6 W
  25. 9 \4 }9 U; n( u
  26.         fd = open(E2PROM_DEVICE, O_RDWR);' a! [( s" r* S' q8 x# n4 g
  27.         if (fd  < 0) {
    . ~8 q& J; k  P
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 l5 O6 i4 M& j/ h" N
  29.                 return -1;  I. n" o, M$ b( J3 J3 @
  30.         }. Z- l- d8 {$ G6 `8 ~
  31.         arg.sub_addr_count      = 2;% ]6 W0 F5 R) c! P
  32.         arg.data_count          = 0x18;
    ) j6 j# j. @3 J( F4 L
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    8 W. \" j( m8 q6 q
  34.         arg.e2prom_cmd_data     = buf;
    # p* Z1 |+ h4 Y$ s
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    8 C* _. z7 M- f$ q8 F/ O
  36.         if (ret != 0) {1 }! G8 z9 n$ L: R+ [: k7 D" `- C
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    4 }' R. L/ f& a- s0 Q) R
  38.                 return -1;# I- Y+ y8 W# S1 D' e7 _
  39.         }
    9 u$ S, ~# P/ V0 b. G0 z
  40.         memcpy(mac, buf, 6);
      R, a0 t* W* f; z4 s1 L, W
  41.         memcpy(stbid, &buf[6], 18);* K$ X0 E- w+ k" P# `4 i
  42.         stbid[18] = '\0';0 f( r% Q, B, _3 d( V7 q- |

  43. , M7 _. {/ c4 x! ?  D' C
  44.         return 0;
    5 A. j+ C5 b& x: H( q: p
  45. }
    5 N: i& |7 G3 N; d$ l4 r2 P
  46. $ w0 k5 l  E  A2 p2 [
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ' v' T# \4 k% t3 Q" {3 B( y
  48. {3 x/ `( b1 D% I! _6 M* T" \
  49.         int fd, ret;
    & |4 Q7 X% d# N9 D
  50.         e2prom_s_cmd arg;0 i& I# O# g0 O: \& Q0 u5 A+ t) p% J
  51.         unsigned char buf[0x18];
    5 Z" J$ P+ ~+ a3 ]' k1 ?! _

  52. ; h# Y6 |: N) n. f$ S* E( g$ [- z7 o6 ?
  53.         memcpy(buf, mac, 6);" C' Y! ?2 E5 W5 l1 u$ C. l  {
  54.         memcpy(&buf[6], stbid, 18);
    9 \. w- X! h8 w3 S, S
  55.         fd = open(E2PROM_DEVICE, O_RDWR);7 v$ t, l  H9 P1 j: B6 K9 H
  56.         if (fd  < 0) {
    6 I/ D6 p0 Z9 F; e; U( u) o" _) ]2 a9 V: |
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ |: A" O' `1 m2 k2 ?( G
  58.                 return -1;
    * X4 ^% ?1 ]7 g
  59.         }) }4 m+ j1 Y+ m4 N7 M
  60.         arg.sub_addr_count      = 2;
    * I) C6 Y2 {) q- @/ \) c
  61.         arg.data_count          = 0x18;
    : s& [! Q5 ?: H& V4 G
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ' @: t* J6 Q" b  B
  63.         arg.e2prom_cmd_data     = buf;& U. F/ p( N. F8 ?" ]6 J" p
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    * d" L& \) k3 d" I0 t( w
  65.         if (ret != 0) {0 b; ]8 [4 A, O2 ?* D% H
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);& u: s. ~" V- m* V) ]
  67.                 return -1;6 ^% S  K; A6 }; f
  68.         }, r3 T9 m& z2 ^# e
  69. " ?/ M3 X) b. x3 I2 C
  70.         return 0;
    4 p  W6 r& _6 I9 g; b- T+ E- V
  71. }/ i6 R; V. W/ n. u, C
  72. % w5 F. K: ?6 b+ F. T
  73. int main()  l$ l) c6 Y/ K* [4 l* ^
  74. {
    9 n/ F* m" B: Y% a& a
  75.         char c;
    2 @1 A1 |0 u: j' W  [6 w2 h  z- J
  76.         int i, macs[6];
    - b  x+ N' V1 u
  77.         unsigned char mac[6];  }, U' `; U2 m2 W$ o: R
  78.         unsigned char stbid[256];8 W7 g" A* T! R1 Y4 E
  79. " W0 U# \- m6 v/ [( q
  80.         if (readparam(mac, stbid) < 0)
    % N" u9 f8 w! m: ]$ J
  81.                 return 1;
    3 Q; }, ?, n8 m5 c6 `+ T
  82. * [9 A  u- w5 K6 L! v
  83.         printf("Current parameters: \n");' H% @. z% h7 A: p5 x8 X. b' d! o% m
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 a  f: K  n$ |3 Y/ C! K
  85.         printf("  STBID: %s\n", stbid);
    ' y9 c' a- ^$ {0 M
  86.        
    3 W) J# d1 \0 `* A5 F1 f) |
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");  F" t3 n- ~  h
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 G* N9 F6 u$ U- Y! x0 o
  89.                 printf("Input MAC error\n");
    2 n- q' M& T. w" J* O
  90.                 return 1;2 V$ C4 J  T+ ]" w0 s1 E$ e% N
  91.         }% J0 B6 Z' ~6 D+ H  ]' S
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ) v  B+ g* @% C2 U; e/ z: @0 W
  93.         printf("\nPlease input new STBID: ");$ j+ K9 N' x, s! r# i
  94.         scanf("%s", stbid);) s* ^5 v7 K. b& w1 ^
  95.         if (strlen(stbid) != 18) {% ]! k/ q" s- c0 F% r
  96.                 printf("Invalid stbid\n");( }6 O7 v! j, H' [- p
  97.                 return 1;8 p. {3 b* N$ j& Y& r. N3 G
  98.         }
    9 X) L# J6 z1 ]) T" Q
  99.         printf("\nNew parameters: \n");
    / D$ [$ W2 B' `8 U  e( }
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! N/ o9 R3 G) M9 i( L# w
  101.         printf("  STBID: %s\n", stbid);) U4 m  s" T( v" g3 [. l( c
  102. - k  k. `6 h& n' P& Y
  103.         printf("\nDo you want to change paramemters? (y/N) ");7 H. u' p2 r5 t; }1 h% Y
  104.         for (;;) {6 J9 y1 i% A4 D' Y
  105.                 c = getchar();0 V. }! ?2 y- m) B6 B1 O+ a' @, T
  106.                 if (c == 'y' || c == 'Y')" [* s6 y" d0 }, ^! H1 o
  107.                         break;
    0 H) m3 B: ?* y
  108.                 if (c == 'n' || c == 'N') {# @- {# d, g& x. D" b5 d1 z% n
  109.                         printf("\nAborted.\n");0 Z# J5 Y3 |9 r" M/ G' ]" k# Z
  110.                         return 1;
    4 |/ l& m& x  }$ j$ l
  111.                 }3 S  G' f$ U( X; r6 L, h  b# ~
  112.         }) Z) k( O' }" l2 v, n
  113.         if (writeparam(mac, stbid) == 0) 3 _3 C$ z% Y- g! d6 h
  114.                 printf("Parameters changed.\n");, ~1 h/ f8 k6 m0 P; k/ N
  115. $ S' L" P/ w! i* K7 Z7 x' I
  116.         return 0;( Q. T* H; f4 D9 e+ k* ?7 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 7 A7 v, o$ Y4 f7 _- J
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
1 f( \& Q7 ^- O  r
你用的编译命令行格式是什么?4 M2 ]; y. b0 K
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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