查看: 16229|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ( M' R3 o6 O" q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig# P4 N1 G# A9 ]6 p. p
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:  _* @4 f; R' l' i
usage: himr <address> <value>. sample: himr 0x80040000 0x0
* w2 U- ^. k) Y* [& u0 j7 x* u, d. ~" O% |

" R! @/ N/ p2 I不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
8 s) H7 u3 W5 F4 ?, P
+ Z7 w) W2 {% b6 l+ D5 E补充内容 (2012-3-8 09:42):9 _, I6 n! v" k8 x1 j/ p
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数* @( `- C2 g2 H& d  H! ~% F0 ~& B
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
' v4 p+ u3 x& H9 `! p; p: \) w: S+ ~1 I2 \: P: O- y1 b
himr <address> <value>. sample: himr 0x80040000 0x0  c2 m& x) W; p2 z& y4 y5 y
% e) t. b0 S8 R5 T0 u4 ^
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
8 m$ N- N$ S- x0 E( Chimr 0x80040000 0x00
1 ?, j! B$ d$ Yhimr 0x80040001 0x11/ p8 F8 t2 a0 c9 J
himr 0x80040002 0x22
! i4 q5 ^& o' _himr 0x80040003 0x333 j  m$ Y, t  b1 s9 @! V" x
himr 0x80040004 0x440 R: c4 T; D' `- d$ D/ O4 M3 \
himr 0x80040005 0x556 s0 s( a- y' y; D2 y+ u

: ~( I. ^. t) z% P7 D/ aSN也是类似。. g$ f' L' e% e

0 P5 g$ U$ |* W; c现在主要是,谁告诉我们MAC和SN的地址?
4 z; y3 k+ W- P, P+ G8 _! ^2 _4 Q
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
2 _9 m& s( j- K一直想找到运程修改MAC和SN的办法,苦于无解啊

9 `0 o& J; E6 G1 q. J2 X源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
: v2 K/ I, E9 U/ A& X0 `, x0 k- a" u- B3 v* b$ C4 `
修改的代码早有了。到今天不会编译。4 Q3 t/ D9 J& h
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) f5 u7 d1 r$ y% L/ k6 r1 f
  2. #include <malloc.h>5 n" C5 K9 z, [7 q5 d
  3. #include <sys/types.h>6 }$ o  t# q4 O- q) P
  4. #include <sys/stat.h>: l6 C; ~# h2 h0 |; ~" c
  5. #include <sys/ioctl.h>% ^0 x! _2 f; f
  6. #include <stdio.h>6 U+ v- @: K2 F$ Y! N6 t
  7. #include <string.h>
    1 o/ n0 ]+ }5 ?' O. z) n2 j
  8. ( F5 E6 {& n, Z  }& b8 P3 w
  9. typedef struct {
    2 a: c1 H, x$ ?6 P: h* ~; G# y
  10.         unsigned int        e2prom_cmd_sub_addr;( V6 c# u' c- ]8 c& K
  11.         unsigned int        sub_addr_count;/ k. s0 F4 \9 T; m+ a/ G
  12.         unsigned char*        e2prom_cmd_data;
    3 j1 t  ~' Q* v* D
  13.         unsigned int        data_count;, l& b2 @( Z$ E0 a9 S; H# D- E) p
  14. } e2prom_s_cmd;
    + [5 r% k, [. N
  15. / |1 U4 B6 J" X- d# O+ R9 ?
  16. #define E2PROM_CMD_READ 1
    + d# R* |6 B* U
  17. #define E2PROM_CMD_WRITE 2
    : B) _/ A" Y2 @" {& C$ |
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    5 k1 M% z( v2 N

  19. : @7 M/ ]# z8 P9 L' m$ _" T7 L. G3 q; K
  20. static int readparam(unsigned char *mac, unsigned char *stbid); M* X9 |( U) g, |, x9 d; U" t
  21. {
    0 a, O/ r0 N6 Q) |( Z/ a$ g7 u
  22.         int fd, ret;* N9 e1 L2 j& e- i& n* Y
  23.         e2prom_s_cmd arg;# o$ A% a2 p2 W5 D# J
  24.         unsigned char buf[0x18];! ]& T2 a7 c5 P' b( L+ D6 S- E$ B

  25. 8 C& S* J- \2 j* z0 [# z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    + k* n; J- D9 g+ B7 Y( J
  27.         if (fd  < 0) {5 M% a9 U2 I& P; N2 _  V# f0 l1 e
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);  D" u; G5 q* P$ Y! `
  29.                 return -1;
    3 u( R/ K! N- O* `9 I. H4 W
  30.         }
    " T4 v& {. J+ G0 P3 W
  31.         arg.sub_addr_count      = 2;4 p5 p0 g2 Y: g" {* R# y4 l3 \
  32.         arg.data_count          = 0x18;) R5 M" ]1 H& v; |8 \) ]( @
  33.         arg.e2prom_cmd_sub_addr = 0x290;2 u$ v4 W2 O8 z" t2 p. w3 c8 n
  34.         arg.e2prom_cmd_data     = buf;5 F" @5 b- V; Q" s
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);! _& F" m7 o* z) c; v( m0 \' X, n1 Y
  36.         if (ret != 0) {
    / J, i  I# ]9 b4 Z, T: X1 d2 b2 g
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);( m& P! F7 a* y2 M* ^' Y+ i0 M
  38.                 return -1;+ u% |( I. I4 [. e+ H% d8 U
  39.         }, b6 n  Z" }' v' l+ r: [9 g1 q' C
  40.         memcpy(mac, buf, 6);
    & @# _3 E7 c% M- M! d$ ^
  41.         memcpy(stbid, &buf[6], 18);
    4 |: P& U/ w* w7 P: M5 h
  42.         stbid[18] = '\0';. K. i1 m) L! X" A/ ^# g+ O
  43. 0 f; U% f3 N2 [8 w+ C1 Y
  44.         return 0;
    ; w) M+ h! x/ n$ X
  45. }9 B+ X; ?0 x3 ^+ b) E

  46. 8 [+ {: `+ g4 Y. m
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)$ k) o7 O0 {4 t7 B7 h9 K; Q
  48. {% f; J/ Q( J4 R" C
  49.         int fd, ret;& B2 Q: i) `# I- m) t  b9 w/ y
  50.         e2prom_s_cmd arg;6 E) ]& X* j  q) s+ g2 h8 A
  51.         unsigned char buf[0x18];3 P5 j+ j# T2 U* i  W0 Q& F1 ~

  52. * B3 f3 o! J2 i, G% _
  53.         memcpy(buf, mac, 6);- R9 s# X! q5 K) v( ]
  54.         memcpy(&buf[6], stbid, 18);
    4 J7 i% X1 r1 y  G' T
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; m6 I9 C8 I( o# m
  56.         if (fd  < 0) {' A: i9 ~" l' j' R
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);3 ^: C( A, G9 M2 ]' o2 e
  58.                 return -1;9 y3 h5 r1 r- R. H, _1 f& \
  59.         }
    2 K+ y7 w# ]; a2 V( Y: f4 i1 E) `
  60.         arg.sub_addr_count      = 2;/ u1 ?* B6 z3 C
  61.         arg.data_count          = 0x18;
    ' \& H9 ?1 [- F
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ) ]. e- N2 `( C3 ~
  63.         arg.e2prom_cmd_data     = buf;
    8 b" \1 H) k) {, y/ F; D
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    $ t3 N  c! H) E4 O
  65.         if (ret != 0) {9 o9 m4 u+ T2 q  ^5 a! _' o* L! ?# ~0 L
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    / k# ~) p( K# n5 u
  67.                 return -1;
    ( \7 U& \8 \$ Y2 Q7 J3 Y
  68.         }7 D. s# N3 g6 e$ W# ~' |
  69. $ h2 F  Y' S  A& E2 m3 r
  70.         return 0;2 G1 I5 Q1 |; M2 B
  71. }# D) x4 E: H: j) u8 V8 I
  72. 8 d! @4 `9 o/ _& v4 U
  73. int main()
    ! l+ |8 k- J# B! I4 s  M
  74. {
    0 R! K+ f/ o- E/ k) i' m: S5 ]: T
  75.         char c;
    * Q% j% N. \2 D$ Z. q" I- q8 M7 X
  76.         int i, macs[6];
    # o# M3 M2 N& x, \  I; z7 k
  77.         unsigned char mac[6];
    * F1 J9 m& p3 B( ~7 z% Q& o" F
  78.         unsigned char stbid[256];( G5 Z9 P) d8 X2 D# U9 }

  79. 9 d3 e. U% n, G
  80.         if (readparam(mac, stbid) < 0). ]' J9 D6 ~& N6 x# W
  81.                 return 1;7 Y; V1 a9 I2 G

  82. 8 k5 t9 D9 Y7 m, G: w) M3 ?
  83.         printf("Current parameters: \n");. @. |' X- Z5 C
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 ^- c: a( s6 x. u
  85.         printf("  STBID: %s\n", stbid);
    : \2 v+ p  q% q4 i- W3 G
  86.         + \$ R& d! H: @4 ^5 o2 S% i
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    * Z. W0 {5 p5 a7 O- v, y7 _* y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {! D1 ~, h2 ]5 Y, M. @
  89.                 printf("Input MAC error\n");
    - C) n% m4 y  x. f( d) x
  90.                 return 1;( {7 Y3 e( u9 i  V9 I% C
  91.         }% X( Y! V8 q& X" g, ~% |" W) u
  92.         for (i=0; i<6; i++)mac[i] = macs[i];  ^$ e4 }' `7 ~9 z
  93.         printf("\nPlease input new STBID: ");
    ; M1 T- K, k7 I+ c( ~# A
  94.         scanf("%s", stbid);
    , `& w- I0 Z! X% G$ R+ ?# G
  95.         if (strlen(stbid) != 18) {$ l! d# a! \$ W! h7 g
  96.                 printf("Invalid stbid\n");3 P; z5 _. K* U/ c! Y
  97.                 return 1;
    8 L) N3 I4 B+ H. W9 g/ F
  98.         }
    1 t1 n: X2 P# c! \0 v9 {5 q
  99.         printf("\nNew parameters: \n");# u$ V) ~6 G+ A
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + s/ [: E& S) k5 g1 f8 G+ P# P
  101.         printf("  STBID: %s\n", stbid);
    # i$ k' e. H* x6 }# x3 k3 G

  102. 4 y' g$ E. O2 i
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    3 z( u% F* F1 C6 B$ N) \% `/ ]2 S
  104.         for (;;) {; m: P& Y+ g" P, s
  105.                 c = getchar();3 Y) v+ o  V2 Y, s
  106.                 if (c == 'y' || c == 'Y')" C4 ~8 P" l  T
  107.                         break;9 _; j6 c1 ~5 R7 z4 ~# n. l( v8 E1 m
  108.                 if (c == 'n' || c == 'N') {
    # p# N7 Z- a5 }! R+ j2 Z! S! Z+ ^4 _, z
  109.                         printf("\nAborted.\n");' F5 k6 A3 b' m
  110.                         return 1;
    * U+ r0 V2 _4 V% _2 Z/ r
  111.                 }$ h7 G3 V# j4 f/ w8 t& c
  112.         }+ x9 e" L* ]8 [* q7 ~
  113.         if (writeparam(mac, stbid) == 0) + i' h9 t5 C9 a
  114.                 printf("Parameters changed.\n");0 w# \- j- d  I$ C7 ]+ h5 h3 T

  115. : J( y! g, ~  U  e* x& K
  116.         return 0;  K8 U4 n! t3 M. |. i9 v; j/ s
  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 9 j7 M, x$ g( t$ B. ^# m8 k
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
& F) L3 e) W3 ^
你用的编译命令行格式是什么?
7 J1 q/ Q3 h6 ]2 u
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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