找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15335|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    2 X" A9 L& @: N- u) C
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig6 V+ a4 Z) m  P# \2 ?- v/ ?% Y- t
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:% N/ u1 Y, z5 B5 G% z' t, V: `1 z+ P
usage: himr <address> <value>. sample: himr 0x80040000 0x0* C" w: C1 y. B# q8 ?3 p% {
  }4 o( O7 w" @: i) z/ O
3 ~. o2 L+ X, r' w' O
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
* p& B6 [; w- Z- P, W; ?) g
6 X( w# N" b9 R补充内容 (2012-3-8 09:42):* `8 p5 L4 j, ]* h7 @3 G3 H
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
- _  @& {" A  M+ `这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。& \# B0 f; s2 F. w

6 O. U- c4 \1 B& M/ q) Phimr <address> <value>. sample: himr 0x80040000 0x0
( K  j& k3 v' G- G- v3 l* \, T& L" k1 c% ~5 {5 k7 p0 H' G
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
9 j9 |2 i# U0 fhimr 0x80040000 0x00. [' {  U- |1 N+ @# y- b" O& o$ c
himr 0x80040001 0x11
% r4 A5 ^9 ^; h- W5 O( I0 N8 rhimr 0x80040002 0x226 k0 ^4 m% _* j* V; n
himr 0x80040003 0x33& l% H- J: [0 R+ T0 ^, k5 \
himr 0x80040004 0x440 K* y8 |3 Q# ?" v
himr 0x80040005 0x55
( S2 D# t) k' _$ c; Y
2 h; Q' J) @" s8 G" d' cSN也是类似。: N0 ^4 n8 y5 U1 |! z2 T/ ?

* F8 I+ g% j6 X: k# D$ h7 G( O现在主要是,谁告诉我们MAC和SN的地址?
) i. }9 }- z9 ~3 g
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
" e5 J- W6 ]& h) O' I1 ]一直想找到运程修改MAC和SN的办法,苦于无解啊

4 ^+ u* z. _3 R( f; q+ Q& l. k源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
0 K: d  ^9 E5 k6 N) g# W* U
6 x. V9 S8 w3 h" t1 K) ?! `修改的代码早有了。到今天不会编译。$ [6 e& v! w: ]2 ^% ^' i6 ~
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>9 d' v) a# S- ]' ?* Y
  2. #include <malloc.h>
    7 [4 o% I, B5 g8 V
  3. #include <sys/types.h>  `& e( T( [, b
  4. #include <sys/stat.h>
    8 j. ]1 C7 N  I4 u
  5. #include <sys/ioctl.h>$ V1 N! x! C) u" [
  6. #include <stdio.h>
    0 W1 G- F1 K/ P
  7. #include <string.h>7 a) M! j) K  G2 x& V
  8. - W& _1 a) e/ w, R
  9. typedef struct {
    2 ^( M, F1 q* b) f( L% _4 ]9 S4 z
  10.         unsigned int        e2prom_cmd_sub_addr;
    , b' r; H6 y0 K5 W" q, x
  11.         unsigned int        sub_addr_count;7 E+ L4 E. A" M% f7 @* p
  12.         unsigned char*        e2prom_cmd_data;+ L4 z( T5 V  F( w: Y  Q) \
  13.         unsigned int        data_count;
    8 L( _! @, X4 i7 g0 V' A) n
  14. } e2prom_s_cmd;' x8 P6 F* z& c/ j+ R2 L+ i5 T
  15. 0 d  [: \3 Y* f2 y$ |( d) J
  16. #define E2PROM_CMD_READ 1% y: ]# ^4 {& M2 r
  17. #define E2PROM_CMD_WRITE 29 H3 C, O( L3 P: l- |2 W) n
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    " N$ b, U2 ~& G. E% {
  19. ! v1 B2 {, i% C7 C
  20. static int readparam(unsigned char *mac, unsigned char *stbid)+ @6 v) r5 F) x# w7 B1 m
  21. {# D1 ~$ o( K1 L: @
  22.         int fd, ret;8 |4 ~+ ]) _% l0 v
  23.         e2prom_s_cmd arg;5 t) Q9 u3 f) u" U5 y" P( ]
  24.         unsigned char buf[0x18];
      f% p3 t7 @  s) q
  25. 7 b9 A( G! z! R8 ^) `
  26.         fd = open(E2PROM_DEVICE, O_RDWR);! W6 Q* G4 [1 F; @( N6 M
  27.         if (fd  < 0) {
    5 f+ [- @! A7 h1 v6 [3 g% f9 V
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    " Z- D0 [6 i: G! ]7 s
  29.                 return -1;
    7 F$ {3 x$ L. Z6 f$ p) I- ^
  30.         }
    , j4 J9 l) c. ]% n1 I
  31.         arg.sub_addr_count      = 2;
    + j9 T  w1 r' [8 s8 ~
  32.         arg.data_count          = 0x18;7 M# X4 A' l. h' b4 S: k7 J
  33.         arg.e2prom_cmd_sub_addr = 0x290;6 m% g& ]4 Q7 U5 ~
  34.         arg.e2prom_cmd_data     = buf;
    6 H0 P3 q$ ?- y2 W' V- D/ D
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    + d: x: _9 k1 o, C
  36.         if (ret != 0) {
    2 r$ H/ I8 I% H% w
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);- L' k% H% v' m7 Y7 p
  38.                 return -1;
    ) B/ n/ c7 F( v9 a
  39.         }9 u; m- U) I2 j( f0 v9 ?3 E; \' {
  40.         memcpy(mac, buf, 6);
    7 r7 @( s: ?1 R, H. _' S
  41.         memcpy(stbid, &buf[6], 18);
    3 K( x( s, g% Q" q( \8 L8 B9 C
  42.         stbid[18] = '\0';
      h/ P) }6 C8 h- k3 b0 g

  43. + K+ Z  \; {2 ]3 `: T4 m! @4 Z* m
  44.         return 0;% d8 M( X6 j: F
  45. }
    9 _4 `" N+ o; }* t! F

  46. ) d! E7 Y$ A9 f. p% }
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ! M/ o) w" l5 a. B
  48. {" @5 M1 ~" L$ t8 s% a6 ~
  49.         int fd, ret;+ c) i1 M7 N+ D) k$ ^0 t9 B
  50.         e2prom_s_cmd arg;
    ) o9 u9 f; ]1 ~! [$ r, f
  51.         unsigned char buf[0x18];4 `- b5 F) G% j2 j: f' D, M1 e: `

  52. 5 D  i4 D7 Z; \7 j3 }' E1 P
  53.         memcpy(buf, mac, 6);
    $ }$ U$ ?2 D7 C
  54.         memcpy(&buf[6], stbid, 18);
      i7 [' i+ W! A) q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    + U  R7 M' @8 W8 w, e7 v6 E' h
  56.         if (fd  < 0) {, ]( ]7 M* D6 r) A. Z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , z* P6 ~  k; t1 F) M6 ?
  58.                 return -1;* W& A3 |/ `! _+ X2 l, L
  59.         }
    0 H$ o2 d" C' Z7 R
  60.         arg.sub_addr_count      = 2;, _! Z9 v0 I/ Y* o! D9 K; ~
  61.         arg.data_count          = 0x18;6 J; j& Y9 ?8 k2 u' b, a) e0 }
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ; t* Y& U5 G/ P& \+ Y
  63.         arg.e2prom_cmd_data     = buf;
    1 P& ?5 G7 M. N. h2 l3 N
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);$ P: F9 J; O% Y  o$ T! C
  65.         if (ret != 0) {3 q" Y( V  x  Z1 p
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);8 ?- c+ p2 E' D6 u; b
  67.                 return -1;
    2 I4 I; W* y! t4 n8 |
  68.         }0 J. M4 [2 z% s

  69. 2 y% v; Z( J1 A+ O8 c+ Z$ X1 ?
  70.         return 0;
    # N: ~  \& Y0 _5 a5 r
  71. }
    9 P% j  B" j* ^/ w% e1 {: b: [
  72. 9 B# L5 j4 ?2 w- r8 |
  73. int main()
    % M/ \. n- F  I
  74. {% N' F/ W( w+ D: f
  75.         char c;
    ! I4 d- e& O9 d$ x/ U
  76.         int i, macs[6];
    ) @# q# k8 K, e* R& s7 p- [& B7 L% r8 c
  77.         unsigned char mac[6];5 d, [; e, D! q( b! ~/ I
  78.         unsigned char stbid[256];
    * d% @) Z/ h/ B( T+ d
  79. : d" J& z! Q1 w2 J8 F: ?# Y- U
  80.         if (readparam(mac, stbid) < 0)
    # N* f6 v4 R  `9 T& c
  81.                 return 1;! G9 E8 P* T9 [0 b' o: r

  82. 1 V, q9 \% _0 [; N
  83.         printf("Current parameters: \n");! g1 s4 e+ v4 F# v( z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 a. Z1 O, d4 Q: S
  85.         printf("  STBID: %s\n", stbid);
      k3 s5 z0 G. u  o
  86.        
    8 r5 @- D9 O6 k" F2 p" b
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    * q3 m; C/ l3 e- T5 [( l; T
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {) K: m' f% |5 F7 B( G
  89.                 printf("Input MAC error\n");$ z5 o4 C+ U0 V9 z2 O4 }8 u0 s
  90.                 return 1;
    - j/ U5 r: V) ]0 R9 M2 w
  91.         }
    / x* d- s) _; ?; C5 o
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    " P# v$ n5 }& a3 h7 d' W
  93.         printf("\nPlease input new STBID: ");8 \- G# ]: n( w2 E/ r7 o  ~- W
  94.         scanf("%s", stbid);
    3 v1 A2 k) D: G/ _! Q/ b" o8 t8 a# n
  95.         if (strlen(stbid) != 18) {
      t8 o  ~' a7 [+ n. e1 T
  96.                 printf("Invalid stbid\n");5 E# s: J, |2 g8 ^
  97.                 return 1;6 A$ V2 z0 c' v' K5 T
  98.         }
    . t* `: K3 K' b3 J! I3 a
  99.         printf("\nNew parameters: \n");
    % ]! {. r: j; t% D. I6 u
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / n; N2 U6 w; m) O* [9 |
  101.         printf("  STBID: %s\n", stbid);8 v; B. I; b% {2 j# {: w

  102. ( [% S& X6 u" d6 C3 A4 J# L
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    4 m8 c) b' {! \  H% q% \' C) L" K
  104.         for (;;) {' w2 T9 N8 @- `+ V0 e# s8 n
  105.                 c = getchar();: A& m0 F7 O$ [9 U/ E
  106.                 if (c == 'y' || c == 'Y')! s0 L9 J* X5 h- T" o7 @
  107.                         break;  x6 e$ F6 z! X3 y9 S
  108.                 if (c == 'n' || c == 'N') {0 T! m2 j) _7 E- F; T2 v
  109.                         printf("\nAborted.\n");- K- S" E+ l. f% P0 k
  110.                         return 1;/ X7 M4 }/ `6 u0 D
  111.                 }
    9 W8 y. ]2 K  z' X
  112.         }0 R  H$ s/ ]' R& N' M
  113.         if (writeparam(mac, stbid) == 0)
    ' i' z0 g8 J+ A
  114.                 printf("Parameters changed.\n");; B9 s* p/ A( w6 e+ @9 S

  115. , i- i6 s: g7 ?4 M
  116.         return 0;6 z5 n& v4 R! N
  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
% `6 m# ]5 M* q1 f0 K7 q1 J  T. }在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
9 M! n; y5 K; n6 X5 A
你用的编译命令行格式是什么?. Q" Y+ T. S9 a) ?
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-22 23:52 , Processed in 0.041676 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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