找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15141|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    # i" g) T' k2 C
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    5 D& c1 r+ e# p
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:( I* Z4 g* v& V, N" P0 ?& L
usage: himr <address> <value>. sample: himr 0x80040000 0x0# A$ a5 B. h: @2 \. K& ^
/ q4 ^2 N& q% m. |) D, s

; k: n2 A) G2 h3 `' m0 j不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?5 i1 s7 j% x: \. M. X

+ u1 o5 Y$ h; u补充内容 (2012-3-8 09:42):! a' E2 f- K: W% D7 }2 ?& S; |/ L
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数, H1 l( |( j4 q: j  ]  V! b2 R' ^
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
4 Y: i0 d5 B1 H
+ R+ J* g  o$ M- mhimr <address> <value>. sample: himr 0x80040000 0x0
, X4 }  }: {; x$ |7 z2 S$ |
* ^0 D6 \+ f4 z# V2 S3 B8 F" H例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。5 z! }  O4 I! I! y8 B9 @0 Y/ O4 K
himr 0x80040000 0x00
' L! w  W* }& g0 M8 qhimr 0x80040001 0x11
; q& n3 m. D( W. u; H+ p! o8 {himr 0x80040002 0x22
) V6 I* D' C1 [9 C  t$ zhimr 0x80040003 0x33
; P- X" h$ b3 shimr 0x80040004 0x44) q" W, i. v" E: i8 E
himr 0x80040005 0x55# g* h/ t% [0 K) Y$ h2 n
+ X1 w1 Y0 b9 a0 h. J6 }& P
SN也是类似。
8 e: I/ ]) o+ T' m3 N" x6 B9 d$ v$ k6 r: }; n, ?" m* [1 @6 c
现在主要是,谁告诉我们MAC和SN的地址?- f# U5 s1 }) Z( R6 @( a2 D8 w; S
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
9 K+ u) \  l: I, c8 @, w一直想找到运程修改MAC和SN的办法,苦于无解啊

. C" V: N% K% t) y/ j2 }- B5 G源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑   _. }! Z3 W4 N" N7 Q
, r7 s- w- C, k: X1 D
修改的代码早有了。到今天不会编译。6 D' J4 g' \4 m+ p, Y2 a3 c; f6 p
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ( M! Y% f5 o) w. u( ^
  2. #include <malloc.h>
    : E6 j; }  D8 J8 Q- ^) X; m
  3. #include <sys/types.h>
    % R: n9 n" X8 O& ?- ?
  4. #include <sys/stat.h>& W, w5 q) A5 h/ L; d2 l
  5. #include <sys/ioctl.h>
    1 x6 k1 z0 V' C# K
  6. #include <stdio.h>
    9 A, b# p4 P( F6 q3 O. G& ?+ i
  7. #include <string.h>% c; a" w! X: g% V! u$ B

  8. 8 u+ s' F5 y  U4 [7 @0 q
  9. typedef struct {0 _& A& k& \" b: \1 u
  10.         unsigned int        e2prom_cmd_sub_addr;8 L. @. t  J7 F, I1 i( t  O* T
  11.         unsigned int        sub_addr_count;
    / \  u% n+ r6 V# o/ y1 ^2 H% I
  12.         unsigned char*        e2prom_cmd_data;6 ~/ R/ q/ z. P
  13.         unsigned int        data_count;7 K9 i8 @9 Z; L2 X
  14. } e2prom_s_cmd;
    0 b0 E: N* y1 j4 @1 Q: n; O8 T
  15. 3 u6 p9 ?" t. u( c) U
  16. #define E2PROM_CMD_READ 1" @4 C3 y! B0 k$ L' ^
  17. #define E2PROM_CMD_WRITE 27 d1 I4 e* m8 T5 c( Z1 p( J2 z
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    : }- U* a9 Q7 Z  V' R% b

  19. ( h: b2 ~% G* T8 t7 i7 Y
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ! E; n( Q/ [/ H5 L  o' w: b
  21. {# |) M5 I4 N5 O2 X) q0 K/ a1 D6 l
  22.         int fd, ret;9 U! R: n, K0 A( W% _$ h4 e
  23.         e2prom_s_cmd arg;9 @* X0 g" o. G& c& _- D1 n" S5 ]
  24.         unsigned char buf[0x18];: y% }* ]) z1 Q0 V+ M& K! G% V: l
  25. ( m8 r; Y' @7 p. F8 `& t
  26.         fd = open(E2PROM_DEVICE, O_RDWR);7 J: a* e0 U0 z; }4 c6 x$ t. q
  27.         if (fd  < 0) {
    1 R* a" @" m( m1 M8 n% J* w) I
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 l' b) Q+ ]! ?! t
  29.                 return -1;& Y. ?' X9 J+ V9 K2 N
  30.         }( x+ W: u4 W+ [
  31.         arg.sub_addr_count      = 2;9 R) H2 I6 H% X; j
  32.         arg.data_count          = 0x18;
    1 O; Y4 i8 y( R, Q: W6 o
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    * O; T6 j5 B; U( Z% C, p, K7 p7 T" W
  34.         arg.e2prom_cmd_data     = buf;+ L# F& X# d6 r) N
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    5 z; u' t/ T  k- f
  36.         if (ret != 0) {
    9 l; z0 S+ s# [- z* f8 T
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; Y+ L; a4 @. c# f: e3 D
  38.                 return -1;
    6 X, q3 @7 P: p* ^* a$ R: u4 Y' Q
  39.         }+ B0 F5 b! a8 U7 s3 L
  40.         memcpy(mac, buf, 6);
    ( |2 U' f- w0 z5 `) p
  41.         memcpy(stbid, &buf[6], 18);
    1 P7 J( {5 Q6 `# C3 p
  42.         stbid[18] = '\0';
    ' M4 t+ d% ~- I# w( d
  43.   s$ @" b3 Z0 x  P) F- k
  44.         return 0;; L: a. s5 R7 j8 b0 K
  45. }
    1 O2 e4 M3 h) s! j4 b7 V0 M

  46. 7 [  Y% e! M4 k( \
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)! |8 q3 l8 |, u. Z. w  [8 d0 o
  48. {
    2 T" e5 o0 S/ d/ H! `6 Y/ t1 F
  49.         int fd, ret;; [# i8 P' H4 }9 x/ F  J
  50.         e2prom_s_cmd arg;
    4 D' t* J  g3 B
  51.         unsigned char buf[0x18];' G, i: V4 k$ _6 ?  b  |- P
  52. * {& q, l( {8 L9 m0 K* c
  53.         memcpy(buf, mac, 6);" p& R8 g5 c3 E) |4 m- r& @1 I% O. X
  54.         memcpy(&buf[6], stbid, 18);
    2 B) f! m" J' n5 }0 B( C
  55.         fd = open(E2PROM_DEVICE, O_RDWR);, u8 |; f# \  c! G
  56.         if (fd  < 0) {, s/ z, H4 M/ S8 d; J! D' y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' V  _4 |: ?  ^7 h
  58.                 return -1;
    $ p; T3 J, T, _* _1 W( n0 Y% G- V
  59.         }# R" D; ~; w7 S3 @0 `
  60.         arg.sub_addr_count      = 2;
    ) v: I: I( E3 C3 ~% `
  61.         arg.data_count          = 0x18;) i7 }' r: U' K5 d
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    5 G" h9 |* F! D: N( y
  63.         arg.e2prom_cmd_data     = buf;. U- @5 s; J5 P1 a
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
      \% M1 a8 U: A* U( t. W# P; V
  65.         if (ret != 0) {8 x' `5 k6 N+ e  A
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ! v3 ^0 K' ~4 i0 ^, @: O
  67.                 return -1;
    / n+ ^, u0 S; J5 P7 A0 w
  68.         }# e/ o" E" v( I0 u0 h/ P% w
  69. # v% l! N2 x2 l
  70.         return 0;
    0 q$ X8 ^% T# L* r
  71. }
    . N3 {% g9 a" E, w0 `2 h) j
  72. 5 ]7 n$ u' i' w! w7 j. ~7 U
  73. int main()( B9 k+ r* T- K" J& q; H
  74. {
    / ]9 a. h. e+ S2 y6 d
  75.         char c;
    % b3 B% K! D$ T. t5 `" K
  76.         int i, macs[6];2 f* |$ }" R; q; H1 G& h
  77.         unsigned char mac[6];
    . }- d* M7 t) l9 u; b
  78.         unsigned char stbid[256];
    * @* y7 L$ d4 D( O9 D; @) t; ]

  79. % O6 Q* t6 }! j: G, z
  80.         if (readparam(mac, stbid) < 0)
    + V6 a- p* q! L6 t5 o- f
  81.                 return 1;
      E9 ~( a* t6 F. M

  82. + r7 m4 {# r* _. ^- [, u
  83.         printf("Current parameters: \n");+ b( N2 D3 H" P! \) J9 d
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ [8 H" R# Y6 C0 u
  85.         printf("  STBID: %s\n", stbid);0 }  v" S' ^. J0 P& X- T& {
  86.        
    4 Z# p$ d2 a% c3 }
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");& N# W/ S$ O4 p- X6 z; j$ {
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 h: J  A& f8 A
  89.                 printf("Input MAC error\n");2 P7 X6 q7 z7 y, K
  90.                 return 1;, H" M  x/ ]+ y+ g1 m
  91.         }7 V, m8 c: o8 |2 D
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    2 S- }% P9 z; A. e; L
  93.         printf("\nPlease input new STBID: ");$ d5 E( s; d* \- C0 \" C0 e5 e
  94.         scanf("%s", stbid);
    8 a" K5 z' Q: p7 U% t1 _
  95.         if (strlen(stbid) != 18) {  d4 [) f( A+ F# D# {' h% X
  96.                 printf("Invalid stbid\n");3 M9 b  r. r/ ^/ s' o) ?' n
  97.                 return 1;$ t7 p6 u! {1 |0 k
  98.         }
    ' L2 K& T7 @3 w" O* i; e- S
  99.         printf("\nNew parameters: \n");6 v5 c/ n8 k9 b5 m
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - |$ M( C! c! ]8 [
  101.         printf("  STBID: %s\n", stbid);
    4 G& u0 }. [8 L

  102. # E5 I4 U0 S8 |+ a, a0 X# Q* O
  103.         printf("\nDo you want to change paramemters? (y/N) ");$ ?7 r0 _' u, h2 r$ b  e$ k! u3 T
  104.         for (;;) {
    % M& U* O8 l$ k$ d8 D
  105.                 c = getchar();/ G2 X. I- X6 N
  106.                 if (c == 'y' || c == 'Y')
    8 ~; B1 X  H" ]: V# k
  107.                         break;
    + w5 f+ \8 A8 m( v- s5 t6 x1 b
  108.                 if (c == 'n' || c == 'N') {
    9 Y, d* z% I0 ]0 s( f( v/ Y8 `
  109.                         printf("\nAborted.\n");
    + O5 m; W4 q2 _3 z. y# C
  110.                         return 1;
    , }8 o6 K; D2 a$ z
  111.                 }
    & X! g% [1 |% m4 u8 y
  112.         }
    6 d0 |: p  z; J9 [7 I' g) x6 \
  113.         if (writeparam(mac, stbid) == 0)
    / ]8 C+ x+ P3 N2 c+ C
  114.                 printf("Parameters changed.\n");
    . g! K" {) T8 f
  115. ; m; w3 Q5 @8 h* g: t. D0 z
  116.         return 0;1 s0 n7 M0 I# s' ^% x2 }
  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 5 ]4 Z4 ?/ K8 `& P: G
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

8 ~' s$ r0 r6 E) l1 Y$ c) Q+ d你用的编译命令行格式是什么?# v' P" F' O9 C; ]& Z4 y
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-27 14:44 , Processed in 0.026618 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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