查看: 16932|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    8 v  x4 n1 {3 H; s4 y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - |) v) r& G: f5 `  _  {; k6 i/ n
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
: D9 {1 v2 Z1 p) |4 Uusage: himr <address> <value>. sample: himr 0x80040000 0x05 p" |0 u: o) d0 C" J

2 c$ ~; ~, ^. r1 w
' B) D6 Q4 m. z4 s9 d! X" [  t不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?. W8 C) v; G! d! P) @
6 _- T; Z2 T4 J+ B
补充内容 (2012-3-8 09:42):2 @+ _  f7 L' S+ \9 z0 _+ D
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
3 G  z% \9 v- B& h这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。, Q4 N3 G8 V+ R( ^8 T* F7 s

; k1 b5 n$ \. E( B* Z5 T4 a7 a( ^himr <address> <value>. sample: himr 0x80040000 0x02 Y( ?0 A5 |2 B' P+ k" z6 }$ B% F. ^6 u
- \1 V/ c" X3 E+ m8 R8 e
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
" X! @! z. j$ p0 H+ R; e; ?# Xhimr 0x80040000 0x00% E3 P, H# G, c" P" p5 _
himr 0x80040001 0x11
- s* B" Z; T4 G9 ?; V% \himr 0x80040002 0x22
) {" \, `7 S5 ^7 Ahimr 0x80040003 0x335 ~5 B: J) u$ [; U5 Q
himr 0x80040004 0x443 g- d& |: q1 g, R
himr 0x80040005 0x553 o& S3 F- |3 K7 t" R
) H4 o9 a* J% r( h9 R
SN也是类似。
  c6 o$ R3 p& j' K  }7 u- I2 m" W
  q" l9 v3 E# C, j: |! P7 |现在主要是,谁告诉我们MAC和SN的地址?
/ F/ l4 M% E* G( ~
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
) ?+ N7 K* T5 R* p- Y一直想找到运程修改MAC和SN的办法,苦于无解啊

, I9 w3 [8 A1 I0 H: {4 u. t源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
0 c, }# _6 j- V" y0 d4 Z# v/ R1 M& Z
修改的代码早有了。到今天不会编译。
, z" h9 K) @/ x/ q$ t6 C& y  l1 Z4 K需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>2 G: ~) Y- l1 }, E. |8 Z
  2. #include <malloc.h>
    ) p$ U' g1 D- B& B# n- F
  3. #include <sys/types.h>& I; I2 `6 f% E' T5 {# p5 b( }. m: R
  4. #include <sys/stat.h>
    ( S: I6 t$ l3 L" I! S! G+ X
  5. #include <sys/ioctl.h>
    # V. `  k+ |/ n; a* _
  6. #include <stdio.h>, T' o2 x( z; g0 f0 }  n
  7. #include <string.h>& q* `; G& z7 Z# z8 _+ J
  8. 9 o4 y4 O' P- G- p4 d- K
  9. typedef struct {4 _, j* ~7 I& w5 g
  10.         unsigned int        e2prom_cmd_sub_addr;
    0 O7 u% X& A1 U$ N- h1 n1 K! e  E' z
  11.         unsigned int        sub_addr_count;
    % X# l: |$ i* w* y/ l0 ]
  12.         unsigned char*        e2prom_cmd_data;
    & y! E8 |' @0 G7 q9 U2 Z1 Q
  13.         unsigned int        data_count;) v: x0 ^% @. t; W* t: f# [& G
  14. } e2prom_s_cmd;8 `! ]8 J1 O; G" i
  15. $ k8 y6 T- C8 h  M
  16. #define E2PROM_CMD_READ 1
    8 T. C0 N7 K* _2 e% ^  H! r3 Q7 S
  17. #define E2PROM_CMD_WRITE 2
    0 v; B  l6 ]+ V$ |8 p
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"3 o! I- ?1 @$ c. s8 Z; [
  19. & s6 s( }% ?: ?4 p- a! D
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    # J* ]* K. c2 c9 i
  21. {
    5 z# ~# {% F9 X7 }
  22.         int fd, ret;
    % @4 b! `7 v- Y" t, B! n/ Q) [
  23.         e2prom_s_cmd arg;
    ; A2 H0 j7 D4 ]8 W" p! ^& c4 G
  24.         unsigned char buf[0x18];
    8 K" [/ S' u5 V8 u8 N/ d

  25. % d8 h* t" L( Z8 H/ P
  26.         fd = open(E2PROM_DEVICE, O_RDWR);: A3 I* n9 l4 s3 K7 l
  27.         if (fd  < 0) {
    % p8 h/ Y& y$ r8 j" ~$ S( @" k* v- T* _
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 G9 I" p2 [5 N% k6 U% ?) C% O4 x7 p
  29.                 return -1;
      O+ I. `, B1 h% B: i
  30.         }6 }5 x* D1 w- U7 ?1 g
  31.         arg.sub_addr_count      = 2;
    ; J4 E* R' ]4 i) }5 n* c/ \$ G! D8 t
  32.         arg.data_count          = 0x18;1 P) o% m5 z! U7 t
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    : k1 f# }9 F- [" t' ?
  34.         arg.e2prom_cmd_data     = buf;
    $ B2 H- L: c: p1 o/ {
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ) h: ]5 w+ L: X! n8 a: U! X
  36.         if (ret != 0) {7 F7 s3 ^7 u  e4 a( \; _
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);5 u) u3 H6 Z0 a
  38.                 return -1;% Q2 s' y9 d0 @) r' u, t. b+ `
  39.         }; \: C0 g2 N0 r' _( S
  40.         memcpy(mac, buf, 6);
    / h/ C# F! ^1 ~9 `
  41.         memcpy(stbid, &buf[6], 18);( }, T& |& g) c$ L, e) O! q
  42.         stbid[18] = '\0';! J+ ^' P6 K+ c8 B9 N3 x

  43. ! b' D: V! C- `4 d
  44.         return 0;; \4 ~, x7 Q+ v! j8 ?" b5 T
  45. }
    ) A+ ^+ A( u% r' N: M# r0 Z( U3 ~0 |
  46. / o. A1 v/ l2 {/ |2 G
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - L0 W; x1 ]- b9 \6 d6 N
  48. {
    - s" U5 y+ Z) I2 R) r* o1 N# N
  49.         int fd, ret;" s6 ]2 p' x! _
  50.         e2prom_s_cmd arg;
    8 i3 E& U, {, C1 D
  51.         unsigned char buf[0x18];  q: n: z' b" ?  Y& p
  52. : w0 r* ?- e* c, ?* N
  53.         memcpy(buf, mac, 6);
    1 p5 C% J+ y. m
  54.         memcpy(&buf[6], stbid, 18);( V) {& _# {# V: f; M
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    & R+ j# p2 b3 Z% F- |
  56.         if (fd  < 0) {9 n6 P& y( j, o" l6 C0 O
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 \! ]8 K' `1 U# x  G
  58.                 return -1;
    8 z' X4 H9 c( G$ b" q/ w
  59.         }0 O( d7 t& p  V7 e: W" L/ S" W0 `: c  P
  60.         arg.sub_addr_count      = 2;+ ?" k% F/ w: z6 G0 `
  61.         arg.data_count          = 0x18;
    + a' v0 |  R( _. H/ u  i* T
  62.         arg.e2prom_cmd_sub_addr = 0x290;/ J) q& I, F& Z( ?
  63.         arg.e2prom_cmd_data     = buf;
    1 |, ]( W/ {6 f% r5 }
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    " e; ]0 g3 @0 f  g
  65.         if (ret != 0) {
    ' ]' B9 v& ]) Z& o8 d: H6 l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);; ^. N7 X, p  \1 N
  67.                 return -1;9 E( g8 H' ?+ `
  68.         }: {9 X( Z+ E( N& }/ P! C

  69. 5 I/ y$ V3 u! Z$ y& s
  70.         return 0;- Q+ x& B* F$ u0 s# a0 K) n
  71. }
    , o# a1 ~- y) P% d+ O2 g5 q
  72. , p8 W+ N' T# L) q3 d) P$ M4 m
  73. int main()
    - X0 r, p% s' J) F7 C3 x
  74. {, b! H2 D, O4 u, G
  75.         char c;
    & x: p8 I. d& c. {, U! p; z
  76.         int i, macs[6];. `+ O/ B4 v; `2 O) U" E
  77.         unsigned char mac[6];6 }' v5 m% Z  w
  78.         unsigned char stbid[256];$ E! u. c/ R$ z# O+ z& p
  79. ) ]- h. ]# Y9 Z2 w2 ?+ b
  80.         if (readparam(mac, stbid) < 0)( V, a% ?3 G, K  n0 G- w
  81.                 return 1;9 \: h' }: m  j" p# E" v$ e/ Z! _
  82. 0 ~! {) u' O) P3 K& t% y
  83.         printf("Current parameters: \n");" k5 R/ X- d, |, v
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);1 Z" o9 F4 C0 Z+ s5 b; E
  85.         printf("  STBID: %s\n", stbid);
    & m5 l+ t; L* }3 f, W. m1 }
  86.        
    " }' E* j5 T& _% x
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");! P$ ~8 v% ]- l8 P0 B6 ~8 U8 D
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    7 F9 ?* r* d4 @
  89.                 printf("Input MAC error\n");1 I; }+ n" Q: C: M9 U5 _
  90.                 return 1;
    : m* Z- ~. @* R6 [  W1 R
  91.         }
    ( H7 g$ r1 `/ ]* g: B
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    " p& l. ~6 X7 {
  93.         printf("\nPlease input new STBID: ");; [+ S- O0 _' u( b: p
  94.         scanf("%s", stbid);
    , f6 S1 z! P0 v! y! X% o
  95.         if (strlen(stbid) != 18) {
    : l0 O: g  v/ _& C" V+ o/ ]
  96.                 printf("Invalid stbid\n");
    ) Z! |/ H. t' V1 E0 i3 K
  97.                 return 1;
    # U. J4 u( @+ s& l- r
  98.         }
    ( D8 X) h& j" H" b0 V4 w
  99.         printf("\nNew parameters: \n");5 u+ a* u/ j0 E8 X  x' h% K0 }
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : d2 u% _$ m6 k
  101.         printf("  STBID: %s\n", stbid);
    / @( q/ \0 x# ]  n

  102.   {; [% W6 x6 ]
  103.         printf("\nDo you want to change paramemters? (y/N) ");) v1 E& |) i' ?$ Q- `  }7 H
  104.         for (;;) {
    - g/ q6 z; M# {9 O/ L+ c. u9 o
  105.                 c = getchar();9 ?2 q6 K& X) I% q# a
  106.                 if (c == 'y' || c == 'Y')  z' ]$ x8 l- \4 G/ s
  107.                         break;. e  H4 O1 [2 r  T1 r/ ~, s( T. T
  108.                 if (c == 'n' || c == 'N') {  w9 ]4 x7 C; z4 P
  109.                         printf("\nAborted.\n");
    & I& h& q! V$ D& J$ k5 x0 D
  110.                         return 1;8 H" k3 P* e5 l/ Z6 j
  111.                 }
    ) T  |" W5 u& ?+ e, X4 U
  112.         }
    . c3 C! j! M  u; G1 V% }7 `4 [8 ?
  113.         if (writeparam(mac, stbid) == 0)
    5 h; V" |: r7 `; i! Q  }; i
  114.                 printf("Parameters changed.\n");# n5 p! R4 _. w. A
  115. . E. m- h( X, f0 a
  116.         return 0;9 ^0 M! |# t4 i$ M# b
  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 O9 F3 g+ r1 ^2 B+ I, f) }0 O7 L" r在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
  h2 l" {) _) ?8 O# n& Y
你用的编译命令行格式是什么?
, }! j3 s9 Q6 t  |/ |6 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客服返回顶部