找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14981|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ) R9 v# v8 n. b+ Z$ s
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    $ Y& u1 l( U$ C( R) D
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:0 B. ~' l( ~5 b" Q6 d  d
usage: himr <address> <value>. sample: himr 0x80040000 0x0! Z  v: [  I6 I4 Y2 f1 D
9 W! Z3 _7 h2 @
. i; w4 N: [* h7 p6 c4 U
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
& s6 u, I7 ^& r' r; ?) u9 M7 l/ t# i4 z9 r) e0 L- I1 C6 X
补充内容 (2012-3-8 09:42):
( o1 ^$ X0 |* C# |1 Y+ Ohttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数: p- F  U1 L/ o. h
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
# H4 o( m7 l: e" |
9 @1 Y7 I% z+ i2 U+ Thimr <address> <value>. sample: himr 0x80040000 0x0
" `1 C; I0 P; F- {( G# L3 ~  O# t# m; d0 K1 N$ ~: r
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。7 V: W# }+ T0 u8 X5 v
himr 0x80040000 0x00
, O: {9 M4 e& t/ z: M, vhimr 0x80040001 0x11
% a; E# O$ A1 S" [+ Ghimr 0x80040002 0x220 d3 I8 Q+ e/ z# q* F. L( h0 {
himr 0x80040003 0x33* p& p6 x+ ^$ c
himr 0x80040004 0x44& c: U8 Q: V6 |0 N2 w) s$ r
himr 0x80040005 0x55/ i9 j7 a, u- I4 y, P2 E8 K

. Z/ ~8 H9 q$ F0 e! ]0 l; U  p6 _SN也是类似。
6 p* N% z3 K: I  S  K9 ]
- m1 w+ T6 t7 H9 E现在主要是,谁告诉我们MAC和SN的地址?- P5 c& _( a  m% Q
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 : ], S! @/ l1 k
一直想找到运程修改MAC和SN的办法,苦于无解啊

3 ]% P& q  p4 s" ]2 o1 B' h/ ]源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
; [! j6 s+ \: r- b/ E& v& f& {7 T* h6 X% b( u7 p! ~0 z+ \
修改的代码早有了。到今天不会编译。  x5 J' D: Y6 Q7 Y/ C/ q# e9 C: @
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    8 a2 b* I" F; I
  2. #include <malloc.h>
      K; r: X" l& @
  3. #include <sys/types.h>
    9 g3 A- _, R3 O: ~$ U( i
  4. #include <sys/stat.h>
    : b8 Q; L2 H( L" {' |% G3 D+ d
  5. #include <sys/ioctl.h>+ `: V( f& B/ R% P
  6. #include <stdio.h>; Y8 \9 K  Z) w8 s+ s6 Y' r
  7. #include <string.h>, y7 b  A4 r9 M  [

  8. / @  p* r( p% z  I+ K
  9. typedef struct {0 {' P- A6 f  N- Y' c
  10.         unsigned int        e2prom_cmd_sub_addr;$ J6 s+ t1 J+ r2 B* M
  11.         unsigned int        sub_addr_count;/ ^" F. d! s# F! h
  12.         unsigned char*        e2prom_cmd_data;
    ; g1 R0 f+ m5 t( h7 G' l3 D
  13.         unsigned int        data_count;
      F! B! }6 n; M6 r
  14. } e2prom_s_cmd;8 P6 J+ T, ~9 A/ v& q
  15. - P: T# P5 |9 {4 W3 L8 t
  16. #define E2PROM_CMD_READ 1/ L; ~/ S6 G' _& F9 X
  17. #define E2PROM_CMD_WRITE 2* |6 x2 g% i0 x3 o& F
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16") b) F' M3 z9 c1 p6 G; {5 K* `
  19.   W* f' b4 P  E- b
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    + H* t& [8 g* g6 a3 m- C6 \( I
  21. {4 p: J; ^9 \  `( O; z
  22.         int fd, ret;
    6 U' S" B" m+ J/ Z9 l" m& X
  23.         e2prom_s_cmd arg;
    3 x& [. @! ]. b" d! D) _
  24.         unsigned char buf[0x18];
    $ W3 W+ o2 ^. p$ J8 `  Z
  25. 0 U- b- w7 B5 r( T
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 s9 o6 e- t! e3 [; ^4 Y% ?
  27.         if (fd  < 0) {
    ; I1 p% d$ B% s! L8 R* w8 Z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);# B* R  X* w2 p
  29.                 return -1;
    # q4 \0 g; k) I9 `) H& p5 c
  30.         }3 w! z: T# N! t0 `# i5 K
  31.         arg.sub_addr_count      = 2;
    ( O3 _/ Q5 n9 h/ _. v- S: B
  32.         arg.data_count          = 0x18;
    " V& M$ T" h5 T% h$ @3 y' J- `
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    " t  q' [7 m. {
  34.         arg.e2prom_cmd_data     = buf;% B9 ?8 V% J- ]2 E/ M# v& e
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);# t: r! }( Z& H9 f# i: ^
  36.         if (ret != 0) {
    ( }7 K4 _* `8 m3 v
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);& ]' M+ e6 U/ l( w
  38.                 return -1;
    $ ]& ]3 w& m  ?. e! P% r! \1 m
  39.         }
    + q: Q1 Z3 A: a$ ?' |; L6 Z. W
  40.         memcpy(mac, buf, 6);- V* A' f- b7 K
  41.         memcpy(stbid, &buf[6], 18);
    2 E! Y5 B1 }1 d
  42.         stbid[18] = '\0';
    . ^4 A! C/ |9 B6 \, u; d

  43. 1 d& L2 c" v' B  z. V3 l+ q
  44.         return 0;
    $ N) f0 d% a; J- S
  45. }
    % d1 j; y; }2 f8 E& V
  46. 9 O. ?" w! U2 P
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)( A' P' Y$ G: A  V
  48. {* u: Z; Y& z$ O6 z
  49.         int fd, ret;
    - v1 r& N$ y6 j3 y9 C4 ?4 J! y$ I, }
  50.         e2prom_s_cmd arg;
    : I; _' L- O% Q6 X2 V- A
  51.         unsigned char buf[0x18];
    " f3 h' x" Z1 y5 b
  52. / X- p9 J2 T5 z5 X( H
  53.         memcpy(buf, mac, 6);. A( }! z/ ]: R' Z
  54.         memcpy(&buf[6], stbid, 18);
    ; j4 \( H# L% W* G- J$ a
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 Q* `) ?2 u- d. f
  56.         if (fd  < 0) {5 J. Q+ F$ _* O. a" x; R
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 j' }) [4 |: K4 X! f6 `4 M/ g: U, h
  58.                 return -1;
    9 E( C6 D0 F7 T
  59.         }3 W  p; A* `& A9 z; D
  60.         arg.sub_addr_count      = 2;7 h( {' O( H0 N+ e$ s. b. }
  61.         arg.data_count          = 0x18;
    1 @" Q4 P* y9 c$ z
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ! G2 E" J1 Q/ N8 }5 Z5 q. b
  63.         arg.e2prom_cmd_data     = buf;
    $ G6 _  k9 B' Z0 e! k; S
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);' b9 M" r  l8 z( N* s8 u
  65.         if (ret != 0) {5 r6 j- \/ p( M$ [. B, y, ?+ Q/ s
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    1 b/ `" l/ O& X! c
  67.                 return -1;
    , b7 D- ~* _3 Z
  68.         }
    * j" `  r! Z+ }8 C' v
  69. 9 c/ a5 w' a( j9 z
  70.         return 0;* y* J# l. w" Q6 I1 s$ A% t
  71. }
    0 F4 U5 S% h8 M; C

  72. 0 P2 `* s" f% J9 f% K! w: j
  73. int main()5 {. W* V* R* A- @' x
  74. {  C8 Z. w* ^: Y& o; y  c: j8 h
  75.         char c;/ ~4 Z% L" j3 V" }4 X( r& o# s/ A1 Y" W
  76.         int i, macs[6];
    # v6 i  e: ]: h
  77.         unsigned char mac[6];2 }: G1 ^  I3 d( e$ D( ?9 ~& y! u
  78.         unsigned char stbid[256];8 U% v: G  I8 n8 Q% g* v" [

  79. , [# E3 E$ }+ B$ ?. j
  80.         if (readparam(mac, stbid) < 0)
    " z: h6 u! M, h% l+ m8 [6 \
  81.                 return 1;
    6 S8 t- n1 r1 F5 w( U+ K/ @6 u

  82. * j% O* A1 Z; j  ?6 D$ K/ N4 {  _
  83.         printf("Current parameters: \n");
    / M* Z& V, O8 g0 r0 Q/ P2 G/ Q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 M% o% o) j9 ]0 d  [6 @
  85.         printf("  STBID: %s\n", stbid);
      d2 z* ]# Y3 U
  86.        
    & U; I5 N( I4 _' ~; o
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");# z$ \$ `/ C' c( y! x3 u" N
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    7 E8 U- D* ~5 S( Y; J8 q
  89.                 printf("Input MAC error\n");4 B+ |# j% |; Y4 r- p
  90.                 return 1;
    5 @) D: y9 H" R1 u: S
  91.         }
    3 L. x3 N7 {3 J6 z; ^$ q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];; k4 J, ^7 i' v2 r! a* ~
  93.         printf("\nPlease input new STBID: ");, _% h, z: W" z# s) Q
  94.         scanf("%s", stbid);! ^. N  X( s7 q
  95.         if (strlen(stbid) != 18) {
    * b! U0 \, A/ _4 u# D( a
  96.                 printf("Invalid stbid\n");
    1 ~; M6 _) G* K) ~' q
  97.                 return 1;
    " M: V% ?. w* w  K
  98.         }. O4 q9 f' o7 N! k" X8 c0 ]
  99.         printf("\nNew parameters: \n");
    & g4 l5 K) q' q. j
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 m6 a7 ^$ s$ }& [3 X9 D6 G
  101.         printf("  STBID: %s\n", stbid);
    ' ?8 E. t7 v( Q. n+ X* n

  102. # X& S1 ?: N  d& n8 a) J4 h
  103.         printf("\nDo you want to change paramemters? (y/N) ");
      k  h! T) s( U  S! W, u, m1 {4 B2 M
  104.         for (;;) {
    ' C% N& v$ i0 }: G' r; _0 X+ D
  105.                 c = getchar();; T/ {  E0 E' Q
  106.                 if (c == 'y' || c == 'Y'); W+ c5 ~( U+ {' ]3 m
  107.                         break;
    . ]8 y$ i, P' O# w
  108.                 if (c == 'n' || c == 'N') {
    ( |- w3 N. |* W2 W8 m* K3 Y" R
  109.                         printf("\nAborted.\n");
    & V4 p0 c: P2 ]9 |
  110.                         return 1;! H2 E* W3 e1 K, a* j
  111.                 }
    2 Q' a* n4 K; y" o4 J
  112.         }! U" w+ p6 a8 M/ ~! ^! n
  113.         if (writeparam(mac, stbid) == 0)
    % J0 s( d0 ^" z* B; S3 ]& e
  114.                 printf("Parameters changed.\n");
    & @1 L8 A/ p% \) }+ W

  115. : u1 P/ a) x. r& d( h
  116.         return 0;) k9 O0 c' `) t1 A# j! M
  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
! P9 ~, C  V' d) @* r+ x6 o0 _在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
, A  p2 |' S* n
你用的编译命令行格式是什么?
, Q: Q! y3 j) ~5 m/ k9 U) ?4 u
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-6 19:45 , Processed in 0.025774 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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