找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15334|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr. B) Q: {7 `2 [5 _# k
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig% S+ c! S0 T2 v( z; A
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
+ S1 d3 N2 X% kusage: himr <address> <value>. sample: himr 0x80040000 0x06 Z' {# l0 t$ G5 k

) t4 }. a) z: Y0 S0 a9 W) E1 y) O2 F4 w+ {4 G5 l
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?/ S3 y9 w5 Z  P" \" p
: r) J: o* U1 d* v, {: K2 M
补充内容 (2012-3-8 09:42):( p8 k& g( I  [9 f  a) [$ w
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
/ ]7 _) M5 Q, i- O这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
3 k# j- q2 E# \( d, S0 ^
7 o7 M  k0 K3 n$ Jhimr <address> <value>. sample: himr 0x80040000 0x0
) t7 \5 x/ U/ ~; e7 C# W! i5 W: {$ r, _
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
7 e  X7 o8 ?7 p& B* T! e7 r" V+ C! Hhimr 0x80040000 0x00
1 ^* Y2 K' w( Ghimr 0x80040001 0x112 W9 l; E2 x# \4 V
himr 0x80040002 0x22
: a" T6 l' _6 uhimr 0x80040003 0x33
3 A# z+ _6 ^" M0 r1 \himr 0x80040004 0x44
; d8 ?& \! n3 Chimr 0x80040005 0x55& ?3 O! c3 @" A- L( ]! a$ ]9 z
" c* k3 ~# A' C( t$ A+ _
SN也是类似。
- B+ G; G* c3 `2 c+ H! b7 M) B+ x' `4 [2 z' q! J2 Y8 ~
现在主要是,谁告诉我们MAC和SN的地址?
, I$ i- t& \! W1 g7 W4 F
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 2 h, d' q1 h; ^6 f, A
一直想找到运程修改MAC和SN的办法,苦于无解啊

# E, \' e( @2 P) V% D8 n源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ) L5 z/ S& V1 O* ~! ~

/ [9 {. F- d: z* _修改的代码早有了。到今天不会编译。
; _9 C* q$ {0 S5 p; d: y需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>' |- `# [, X/ H
  2. #include <malloc.h>/ z- i+ d: ?; F4 D2 @
  3. #include <sys/types.h>
    " }& ]/ p2 r6 Y+ z; ?
  4. #include <sys/stat.h>$ M6 D$ J+ N7 N* M
  5. #include <sys/ioctl.h>
    . B1 @9 h- ~3 z% d6 v
  6. #include <stdio.h>2 @$ w$ d! N1 _9 B
  7. #include <string.h>
    + ~" y' }- O. }$ j

  8. % J3 L2 ~0 q7 b% x/ ~9 P
  9. typedef struct {
    ) h& b  m* c! L( L
  10.         unsigned int        e2prom_cmd_sub_addr;
    ; c+ t( [; ]/ L$ Y
  11.         unsigned int        sub_addr_count;$ V. L% m0 C8 h: z8 h0 s, f, b7 @2 |* H
  12.         unsigned char*        e2prom_cmd_data;
    ) s' X6 F" a5 q% E
  13.         unsigned int        data_count;8 w' m6 W: G# p% S( D& L
  14. } e2prom_s_cmd;
    ( S2 d6 k* g5 B+ }

  15. / j! l3 J5 a; o0 w# K$ M
  16. #define E2PROM_CMD_READ 15 r6 U5 d4 j7 f5 U* n
  17. #define E2PROM_CMD_WRITE 2
    : z# K, G9 w7 p+ T: Y9 m3 w
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    8 ?2 X; u# t: Q4 C

  19. 1 ~( K& P3 F% }3 V( |
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    # _. P  }$ w6 Z& I' v5 A, J
  21. {9 p$ O7 p; |- m; Q# T) M# r% t
  22.         int fd, ret;0 c' \* j0 b0 I$ ~) q, ^
  23.         e2prom_s_cmd arg;& Y  H) H, k3 c; m( v& ?
  24.         unsigned char buf[0x18];
    / k& F3 J$ C# I+ A
  25. 7 m. R6 N- U) T$ b' n
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    , s: {- w) S0 o! Y% D# G, f5 l
  27.         if (fd  < 0) {8 k8 h0 L/ `: `* @/ q# x5 ^
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 a* |; _" J  C  W) h. P. @- K: N
  29.                 return -1;/ O# p" A. B8 \) Z! o
  30.         }
    " M- d/ H  x7 |" q" `/ E
  31.         arg.sub_addr_count      = 2;7 T& M- J# c& E" p# g3 l
  32.         arg.data_count          = 0x18;7 Q+ r  E, v' X: c# d* y$ Q
  33.         arg.e2prom_cmd_sub_addr = 0x290;5 ]; E- E8 R7 i9 }0 a6 {
  34.         arg.e2prom_cmd_data     = buf;1 k6 G1 l+ q+ u+ S+ _+ x
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    - O: Z/ ]; A+ E( v
  36.         if (ret != 0) {
    5 k  ^6 w" P4 u4 m+ W2 h
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    % r3 b2 a; I- ?7 P& k
  38.                 return -1;
    7 M- m! `7 M8 O+ k* k1 y
  39.         }) b* i0 s  ], n6 A' Q
  40.         memcpy(mac, buf, 6);/ N3 X% S! Q/ U$ J) g, }1 {$ y: L8 f
  41.         memcpy(stbid, &buf[6], 18);- G; e- {3 _1 {! N# j9 Z" s
  42.         stbid[18] = '\0';! D% M/ _. c8 v3 A
  43. - o! h9 a6 X8 B. g6 X# w2 m
  44.         return 0;
    6 e' Y, y4 C) Q& E
  45. }" L+ J$ K1 L8 e" a" B
  46. 2 Z  E- e, y4 P) l
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)1 \" Z! W! e3 c- V" m6 ~
  48. {
    + Q, f# V+ K4 v  t) I
  49.         int fd, ret;  _4 r# ~/ r+ X; e8 @' c1 z
  50.         e2prom_s_cmd arg;
    ' H; R) }* _7 p5 J* m! z+ M  b& E
  51.         unsigned char buf[0x18];
    1 G, z0 U) e5 L+ G0 a7 F" E! L! e2 J
  52. / j' F! g& A/ |- k+ I
  53.         memcpy(buf, mac, 6);
    9 M0 X* g9 ]$ q& g- ~- C0 T
  54.         memcpy(&buf[6], stbid, 18);& [8 z% A3 C+ E$ H% |
  55.         fd = open(E2PROM_DEVICE, O_RDWR);$ v( ?: Z3 i6 [2 p
  56.         if (fd  < 0) {; h: m/ }; j, |. c. i' r. q+ \$ {
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 K1 D# @! `/ M& j
  58.                 return -1;7 C# w) v' n/ A0 m- l/ K% ^
  59.         }, w9 y4 n$ C! k
  60.         arg.sub_addr_count      = 2;# A/ {6 n7 T" W0 u( E
  61.         arg.data_count          = 0x18;
    - F/ y* O$ o: C) f) x. e" `
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    & r4 {2 C& c- |7 x
  63.         arg.e2prom_cmd_data     = buf;6 m; k# z. g% B% |
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ! x7 @' b+ ^4 O7 n: F- E7 S
  65.         if (ret != 0) {% `3 O: ?4 r# ]3 [. w4 e
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);" P* r4 p) i% h/ O1 D; |
  67.                 return -1;
      F+ P4 A6 `/ Q# v
  68.         }7 ]8 f2 W% h: Z( d* W+ j* J
  69. # p1 ]3 _1 R8 X; @
  70.         return 0;0 T( ^  m1 X  |3 n) K  L6 X# T
  71. }6 m* I* c: M! u
  72. 1 F( X6 U, X5 q. f+ J3 z0 Q
  73. int main()
    ' M! z" L+ a- s# \8 Y* [9 \
  74. {+ o7 e. f# v/ u6 C' p! f& V
  75.         char c;
    0 A) f) z- H4 y* r  D, Z& h
  76.         int i, macs[6];
    . G3 B% x: s% H! Y1 H4 W. B
  77.         unsigned char mac[6];
    4 i2 L) u6 T) `9 T. R
  78.         unsigned char stbid[256];
    3 H8 S" \; O2 E3 ~1 t3 B; b7 {

  79. 6 J/ U  K6 X5 z4 k6 m4 G
  80.         if (readparam(mac, stbid) < 0)
    9 {, g% p$ H3 b- j' s! t5 z
  81.                 return 1;8 a5 e. O7 b" u( b- k+ a
  82. * b8 A5 o% [. [
  83.         printf("Current parameters: \n");, ]/ N- f; n% V# l: i! w' F
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    8 k" H0 [* E/ v1 L! @
  85.         printf("  STBID: %s\n", stbid);
    ) W) L' S( c7 s
  86.        
    % u7 l3 D5 Q1 H, e
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ) ^0 c7 o8 g' A
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    7 g0 J& a% ]1 w/ b& Z4 c' X
  89.                 printf("Input MAC error\n");& f& x; e& U0 `0 C  n# H3 u
  90.                 return 1;
    3 |% e* V+ y4 J; G! X( E
  91.         }+ M) w7 d( l3 z9 l
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    - e1 t3 Y8 e7 i, s
  93.         printf("\nPlease input new STBID: ");  X. n8 q; f; Y6 w7 Q
  94.         scanf("%s", stbid);
    ' v* q; P+ h5 E# T+ X  I) ]  F( H
  95.         if (strlen(stbid) != 18) {; i' J; j5 ]# W& X$ i
  96.                 printf("Invalid stbid\n");; a- C' }* N2 f- g, |# ^
  97.                 return 1;3 F/ {% y# N- i4 W2 H$ Y" m! M$ E
  98.         }9 ]: N% ?7 X: [
  99.         printf("\nNew parameters: \n");
    4 R- P7 |, x8 P$ ]
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" i% K- t2 r( Y! v1 S4 ]( w4 @
  101.         printf("  STBID: %s\n", stbid);; q; {& n6 l! j6 f! O7 y/ N& e& \7 y/ t

  102. 6 t: c6 }4 a8 W- Z3 J
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    & \. n' a1 v; v' L
  104.         for (;;) {
    ( N$ R+ ~' ~; G/ `% u3 y
  105.                 c = getchar();
    ! [- Y$ _; o' ?5 @7 `7 `) t- v. s$ G
  106.                 if (c == 'y' || c == 'Y')( a/ A8 G1 z& Y- y1 I' B+ v
  107.                         break;9 `% E, N- t9 m! W' i' t
  108.                 if (c == 'n' || c == 'N') {
    5 ?7 H! i' S8 L" k" v
  109.                         printf("\nAborted.\n");
    0 k% t$ z3 E5 {$ D5 @- y
  110.                         return 1;0 {! P2 L1 f/ X  x" x" U
  111.                 }' |! [/ U7 o: L5 J+ k& J
  112.         }: C. S' B4 Y8 {6 c
  113.         if (writeparam(mac, stbid) == 0)
    6 d" O9 {4 E0 b( ]8 K6 T
  114.                 printf("Parameters changed.\n");' s% G3 J4 _3 X) K- D. Q
  115.   l2 q9 Z& Z: k  T) ?9 I6 c: V! o
  116.         return 0;
    ! s6 _1 K9 a8 R
  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 4 `9 H! S4 N- V( K& d( Q
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
1 A0 h! Y: r- {
你用的编译命令行格式是什么?
& S* {8 h1 [$ k; k, m
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-1-22 17:33 , Processed in 0.053940 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表