找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15251|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ! |  A! r6 Y# R. M% J
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    , l7 A2 f4 ]! K; H! j& ^
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
- c4 ?$ n. V/ {1 y1 Z! c+ Y/ b! ausage: himr <address> <value>. sample: himr 0x80040000 0x0  i4 P& D) h+ }* d! X4 R, G' _1 D& r

" r* O, t: N; O% V: ~. v& }  q$ b+ P) [+ q+ J1 Z9 {
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?; y8 F1 n* G4 ~3 P5 X0 i

0 @$ l- p# k: ^/ A5 I, l* s补充内容 (2012-3-8 09:42):
4 y' q5 d3 @, i- s/ B3 C" B, |http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数- q7 j0 o1 v5 J3 `
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。! r8 W2 q6 I/ g% b! _
+ U* z/ x1 M& T. d
himr <address> <value>. sample: himr 0x80040000 0x05 F9 V$ C. w+ J/ P

6 d/ M! D4 P% b( t/ Z+ O7 U例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
4 V) i$ Y, x. E! q* O" jhimr 0x80040000 0x00( Q/ x/ f1 z( Z  {4 S  y$ W; a9 q. z
himr 0x80040001 0x11
" M0 l  R/ c9 j. Ihimr 0x80040002 0x22
. i" j$ j5 \5 Q: f- Khimr 0x80040003 0x332 @1 P- N( \# V
himr 0x80040004 0x44
5 ^9 D; r& w: D. r% P9 dhimr 0x80040005 0x553 L7 h8 L) t; n: V% G

$ e  b, R, j8 \' I0 L7 FSN也是类似。: `5 W2 O0 ~0 ]/ n* ?1 `$ }( d

8 W- }/ Y) T/ L: f  D- D; r现在主要是,谁告诉我们MAC和SN的地址?$ E, K5 ?6 f8 L$ K& e+ S
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
% R4 D! l, _% l- g" H9 v9 t+ _一直想找到运程修改MAC和SN的办法,苦于无解啊
& e+ I$ B2 y* _( O& f7 {
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 * B" M' t) S6 S5 n% ?- H

3 \+ p9 T& p/ ]. }/ `6 M4 R) f修改的代码早有了。到今天不会编译。
! G$ J. d9 @9 s8 P需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    2 J& V" O) m0 @
  2. #include <malloc.h>+ u3 q$ e# O% i/ p
  3. #include <sys/types.h>' ~" |( y) }, x( ^- ~
  4. #include <sys/stat.h>- W0 ~; c; t1 B9 B
  5. #include <sys/ioctl.h>4 X3 r/ i: q$ \+ {: H9 I
  6. #include <stdio.h>7 y% Y* R  s  z/ Z+ p# z6 b9 U& J
  7. #include <string.h>. t% I9 l3 P- N) S4 e1 y

  8. $ e" ?5 s+ B4 F3 B+ l
  9. typedef struct {
    ! n! `0 U& U: o) x  b2 B, l
  10.         unsigned int        e2prom_cmd_sub_addr;
    & ~* T" p  g5 p9 k/ ?7 ~
  11.         unsigned int        sub_addr_count;
    $ L  K$ n. M" X
  12.         unsigned char*        e2prom_cmd_data;
    . m* z+ j% U8 f
  13.         unsigned int        data_count;1 S  Q4 c) n1 X! s
  14. } e2prom_s_cmd;
    " p0 q! v/ P, B6 F; ~
  15. + D- f' t) P) p$ X8 v3 ?
  16. #define E2PROM_CMD_READ 1: j9 x' Q7 a+ I5 f3 U* z4 R/ T
  17. #define E2PROM_CMD_WRITE 2
    4 _0 e% m9 P- n: ^# A/ v; V" v
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    2 ^' y9 d4 J) @- ]$ u9 r  s4 J: P
  19. , q$ ?5 u6 p: x: Q7 j
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ( N! s( H7 l& [0 o9 I# Z
  21. {
    2 @" d. g- G( g3 H1 f' u; ^. z8 B$ f
  22.         int fd, ret;* K: k: t( t2 u; ~
  23.         e2prom_s_cmd arg;4 R. `) W7 ?3 `/ u# B6 h
  24.         unsigned char buf[0x18];
    9 E. }' |7 s3 P  p$ p5 e& G

  25. * W) T, t! {5 `" `' r
  26.         fd = open(E2PROM_DEVICE, O_RDWR);  ?$ u# R5 Y7 y- G6 A4 G4 k& p
  27.         if (fd  < 0) {; p0 V+ e4 s) H
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 g# W) C( a$ H6 g$ C' M4 |" V
  29.                 return -1;8 d0 `3 n5 I3 {3 k
  30.         }6 X& a1 y/ u. m, N& Z$ ?
  31.         arg.sub_addr_count      = 2;4 R% }+ j8 |1 N3 o0 C- T6 ?- _8 S7 Z
  32.         arg.data_count          = 0x18;- B0 t+ @0 y+ s
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    4 X# F3 P8 }- S; g9 ~9 u
  34.         arg.e2prom_cmd_data     = buf;2 s8 m+ M5 I. K9 ]# |* {3 x
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    + L) b  u* b) l% r: `
  36.         if (ret != 0) {2 J3 V, M5 n6 p# g- b
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    , w  x1 W4 \# [  H& `/ @
  38.                 return -1;7 I* l1 g5 c- N0 M
  39.         }
    , \# ?- S  A" n% Y
  40.         memcpy(mac, buf, 6);$ _, N( k  i( K( n2 Q4 q* c
  41.         memcpy(stbid, &buf[6], 18);
    5 m" _% f8 v# U' {
  42.         stbid[18] = '\0';* e' Z% v, k! I- {

  43. 5 E% v( A; ~5 w' N5 o, s: J
  44.         return 0;
    & U4 N* W; q1 h4 @+ D' A
  45. }3 _) N- Y3 j5 P  j0 S8 F
  46. * @1 D9 C: g. U  E% u1 K
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    / v$ C# g& c6 b5 ]3 Y( h& k
  48. {. {% T$ c( c* F8 F9 S
  49.         int fd, ret;/ F0 m  _+ E" S$ h, ]8 g" I; K
  50.         e2prom_s_cmd arg;5 m* X( B$ B2 O* M) \# Z
  51.         unsigned char buf[0x18];
    6 Y( i2 n5 ]! K& v0 D
  52. " D3 q9 V) Y8 t6 v+ f
  53.         memcpy(buf, mac, 6);
    $ u" N; Z- W; F4 u) z; t
  54.         memcpy(&buf[6], stbid, 18);( q% |' V) o* Z6 |' a9 r  _
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' @$ S0 w4 _% {: x. F
  56.         if (fd  < 0) {# j% Y" e& o3 j; ~: I2 D1 m
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) }3 o% t  `- H4 c
  58.                 return -1;6 w* J. \$ {/ D
  59.         }) a9 s3 |5 K* g2 K( F
  60.         arg.sub_addr_count      = 2;
    1 {* F% p6 C, B! c" a; Y% ?$ u& D
  61.         arg.data_count          = 0x18;+ {5 [2 S# w3 S: c% m/ k9 R
  62.         arg.e2prom_cmd_sub_addr = 0x290;$ B* R) \; }% n7 B
  63.         arg.e2prom_cmd_data     = buf;
    / m1 |* T  Y1 e! K
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ! F+ G& }5 E2 J8 B6 q  V1 T& H7 W
  65.         if (ret != 0) {; v& F* L% p; L! f/ d& R3 e3 o
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);4 `. ]5 ]4 W# E! @
  67.                 return -1;. F8 d6 |; T# i. v$ K& r3 s+ Z3 L2 u
  68.         }
    - b: c9 d9 Z! T% w' Z' v

  69. 7 \: d4 K% K* T; @0 F& x+ N0 v
  70.         return 0;4 O2 o( n* g4 _" M6 W, i
  71. }4 @7 P  ^& [$ q" z. n  c

  72. ; Z* D0 f1 Q* F& `; T  Y  n
  73. int main()
    & \0 {1 f+ M/ ?+ Q% r
  74. {
    , K  [+ [, y7 s) _: K
  75.         char c;
    8 o, _8 }8 ?5 x$ R, c
  76.         int i, macs[6];1 o+ [) y: z" Z! m  ^' r
  77.         unsigned char mac[6];
    4 @8 ~4 K4 U0 ]# ?7 Y" s9 n  L. T+ Q
  78.         unsigned char stbid[256];
    ) J$ _: X, |# ^  g+ ^" t
  79. 9 {# m3 h: d% X7 w5 B2 O
  80.         if (readparam(mac, stbid) < 0): e: M% y, v' w$ n
  81.                 return 1;2 |( M8 L4 r* h

  82. 3 I" o! a5 S2 }3 {$ d1 c" x
  83.         printf("Current parameters: \n");
    5 ]8 D4 i; x# R( d" K( ~7 J
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ M( f+ {9 f  g4 W
  85.         printf("  STBID: %s\n", stbid);3 I2 d* O' Q% m3 f& D+ J3 O
  86.        
    % N( S! W+ c) b, q0 b2 c
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    , F8 |2 X/ [$ u+ S5 v9 w' I  `
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    / ?1 E! G' M% L
  89.                 printf("Input MAC error\n");
    8 X6 C7 G0 }2 `; c  m+ G/ v/ w
  90.                 return 1;& Z/ ]3 D, n; \0 A' }8 ?  D( M
  91.         }7 p0 @* c. E2 r
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    9 g; O! ]& ]  z5 t# \
  93.         printf("\nPlease input new STBID: ");8 z& t9 t2 M# A  L. m
  94.         scanf("%s", stbid);! W/ v! p! b" l! {
  95.         if (strlen(stbid) != 18) {
    * y' W( z+ q/ f& Q' `' h1 D- K
  96.                 printf("Invalid stbid\n");+ R/ c9 C/ V% F$ I& W. I4 D9 ?
  97.                 return 1;# H4 ^6 L5 ]- G: P7 K0 G
  98.         }+ Y. y1 `  f( C5 {) p
  99.         printf("\nNew parameters: \n");
    ( W- t! O% t0 y2 T* ]' N- F! i
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 X" A  p, G/ J+ b* x+ _) W1 g
  101.         printf("  STBID: %s\n", stbid);
    % m: V) u9 H+ c& L- a- N
  102. 8 d/ K' Q0 w5 T5 v+ S
  103.         printf("\nDo you want to change paramemters? (y/N) ");7 s/ x% r% O% w# o- E
  104.         for (;;) {
    6 L6 m+ u2 D* L9 ~
  105.                 c = getchar();
    2 {* C5 @9 W' B9 A. H) \
  106.                 if (c == 'y' || c == 'Y')$ p) D8 I$ ]$ e5 o4 j
  107.                         break;, i, B  M) {' h; \
  108.                 if (c == 'n' || c == 'N') {
    $ x: ^# c2 J" o5 U4 S
  109.                         printf("\nAborted.\n");# E& t0 A* O$ P" E3 N
  110.                         return 1;5 d, d/ j1 J4 Z$ h
  111.                 }
    9 s# L  ]* J0 x8 [9 T0 U
  112.         }  q" D$ k1 T0 ^! A' l) c: j1 ^
  113.         if (writeparam(mac, stbid) == 0)
    * J7 m, S% B8 w1 j4 F, @. l
  114.                 printf("Parameters changed.\n");5 j- \3 T0 Y, ?8 X) ?

  115. * L9 l5 Q5 |. ^1 H2 B
  116.         return 0;4 y3 X  m5 o9 e6 r) ^* z5 i
  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 L& L+ ?& K% y3 ]% Y在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

, \$ V) O% G, c1 q你用的编译命令行格式是什么?
( M% K# ]5 T6 u9 Y4 j) [3 u
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-12 21:28 , Processed in 0.027618 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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