找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15041|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr- U, x9 k/ m2 s
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig( S' M/ ^# Y$ @, ^
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
- J" A5 g( w, ]usage: himr <address> <value>. sample: himr 0x80040000 0x0& I) q9 c' P0 t2 m

, V2 }: i0 x/ D3 G' P
$ G, R6 \1 P7 o" {不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
* D! v0 m; T( ]# S/ h7 S  |% A3 n, b
补充内容 (2012-3-8 09:42):
, h, N& ?6 A+ z; E( [1 bhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
2 B% I( n, a% r- r: T8 ~0 ~这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
$ s; V+ b1 d1 b% C* E' _3 z4 m9 ]0 i6 e( n6 Q
himr <address> <value>. sample: himr 0x80040000 0x0
7 ~9 t, ]; S9 J4 \  N) v9 N* a! }* x) W( i/ O7 B- r1 t
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
2 I# A! n: @9 u" Q' B! Uhimr 0x80040000 0x00
6 ?& m5 m! Y$ ]- vhimr 0x80040001 0x11
. ]4 Y/ |0 e1 G4 Mhimr 0x80040002 0x22
$ c, k; Q: W3 s' m  n6 A; D* fhimr 0x80040003 0x33
. m. B: S0 k! D6 Ihimr 0x80040004 0x44
3 n( o7 g3 ]# b4 dhimr 0x80040005 0x55: g3 c: i- L6 v3 Z: L
) Z, J* u: V( x9 s% \
SN也是类似。) \+ D( ], ~, j( p
5 }/ x- C8 r) v5 Y* c
现在主要是,谁告诉我们MAC和SN的地址?
( E& ^: s  _9 n* M3 a
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
! S6 t5 e, d% |8 h一直想找到运程修改MAC和SN的办法,苦于无解啊
/ A- p: u3 j# f$ d# q
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
6 H4 X6 R5 l8 _1 w1 K: `4 `
5 q9 G! f+ e  d7 `2 Q- }% j1 S修改的代码早有了。到今天不会编译。2 D& M/ _3 N' x1 [8 O1 ?& I
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    / T5 {3 U; Y: t; x6 G7 i
  2. #include <malloc.h>
    2 T5 a9 a9 w+ j! v8 k
  3. #include <sys/types.h>9 ]4 G2 C  [6 a3 w
  4. #include <sys/stat.h>
    9 V2 A2 |3 C/ H6 k% p' c
  5. #include <sys/ioctl.h>( h0 n" ^; T* \3 U& G( \
  6. #include <stdio.h>. T+ }9 w( E' L# h
  7. #include <string.h>
    + w+ K, `# O$ \) W+ U6 s
  8. 0 D% T6 Z; i/ w1 `' y7 ^; O( L
  9. typedef struct {
    ) a9 A" p, z! @: q' E1 ]2 x
  10.         unsigned int        e2prom_cmd_sub_addr;# `. ^! J& X3 \) `* T# [1 r! W
  11.         unsigned int        sub_addr_count;0 H, i9 h: _7 D6 p+ G
  12.         unsigned char*        e2prom_cmd_data;
    6 p3 x$ A% b* E. Y1 ?' h' D
  13.         unsigned int        data_count;  \  p/ M8 N! E4 j; E. P! l$ i% M" ~
  14. } e2prom_s_cmd;* V$ |- t( s9 W/ ~# g

  15. 3 U/ E3 z  M! d0 g3 Y" \" e/ T
  16. #define E2PROM_CMD_READ 1' b9 O; e9 N: W" S+ M
  17. #define E2PROM_CMD_WRITE 2
    * Q* _% v1 K1 t9 B
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"# S- g( E7 u, O

  19.   R  i: N5 Z8 c7 \
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    2 O% _% R3 v1 A) i5 |8 U* I% v4 v
  21. {
    " v& T) n5 _$ V; Q, [
  22.         int fd, ret;" `5 L. R. d4 ^  M3 D, d' ~
  23.         e2prom_s_cmd arg;% A5 j& @- q; [: `2 @8 q6 t. C
  24.         unsigned char buf[0x18];* [! |0 Q" j4 j; N9 i4 h. x
  25. - \* L# @& `, V4 @2 V
  26.         fd = open(E2PROM_DEVICE, O_RDWR);2 k7 v' s7 B, q0 y+ ?$ I* H
  27.         if (fd  < 0) {
    % g: ~/ H% ~1 g, i2 b# A- ~
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # s$ ?! u) }3 x
  29.                 return -1;3 a* T! @: E) y7 X8 k
  30.         }1 h  Q, h; v! q3 A8 s
  31.         arg.sub_addr_count      = 2;
    % t; V( p+ F3 J& Q
  32.         arg.data_count          = 0x18;# K5 e+ c( e/ g( k4 ^  x1 r- s
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    * J0 e( b! m" k' }: i
  34.         arg.e2prom_cmd_data     = buf;7 `  ^' B1 Y4 }3 Z8 s
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);2 \, ?. M1 @8 T) j" |6 v
  36.         if (ret != 0) {
    7 H( G# [+ a4 L1 o- f" D4 g8 s& @
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);( J4 e# Z  q! B
  38.                 return -1;) s& F9 l: I1 J5 a4 `" X1 ~
  39.         }% O& `' k& y& h6 I! j3 H
  40.         memcpy(mac, buf, 6);
    . P! {- x) H6 l
  41.         memcpy(stbid, &buf[6], 18);
    " e) B3 y3 R# G1 }- R, m/ ?* S3 A
  42.         stbid[18] = '\0';
    4 x$ Z4 M6 n. q# K

  43. * E: B' c* A' a9 H" B8 s& d, J
  44.         return 0;
    ; p/ F, s; X. B/ o2 u7 H
  45. }  }# i& F+ b( d$ j; @9 D

  46. 3 e# U3 y/ S, Q0 P1 j6 `
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)) G, ^- u- ]8 M$ E2 p
  48. {
      _5 a6 j4 I: [
  49.         int fd, ret;
    5 E" ^9 B3 I: `7 U# i1 `2 |
  50.         e2prom_s_cmd arg;8 Q8 n# G8 `) J3 h+ {+ u
  51.         unsigned char buf[0x18];4 J; Y$ G: f, u" V, j, `/ `  T

  52. 7 s! x4 j/ V6 W' K
  53.         memcpy(buf, mac, 6);) U. p" e' p% H" u! Z# {& S
  54.         memcpy(&buf[6], stbid, 18);* `7 Z- G1 S, r. [
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    . y: x& T+ {" u# m2 V
  56.         if (fd  < 0) {8 g9 ^0 a/ r, Q2 {4 d9 O
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 e# G4 o7 y9 @+ q
  58.                 return -1;9 G; V. p5 n. ?8 x6 s* I1 H( s5 {
  59.         }  n8 P- R( K6 x
  60.         arg.sub_addr_count      = 2;
    9 A: ~" p) F; ^, Z7 p5 C6 t/ e
  61.         arg.data_count          = 0x18;" S+ t* h1 X& ?8 c% O
  62.         arg.e2prom_cmd_sub_addr = 0x290;0 r: @7 N* `' x, O, r7 j
  63.         arg.e2prom_cmd_data     = buf;
    1 W. ?& \1 M: w! B& j2 B
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ) C4 U3 f" @1 g9 @& h
  65.         if (ret != 0) {# c( d/ p* a' ~2 I
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);) Y  d3 g  F- V
  67.                 return -1;- @! |2 F1 Y0 Q9 u5 c) K. S
  68.         }* x( C1 U% n# N
  69. ' m0 ~) d" @6 N5 i
  70.         return 0;
    ( S* x. n' m5 k8 f$ N# ?4 i1 q
  71. }0 z+ x0 y* H7 S" z8 q( m# g
  72. 8 k+ v! s% t8 Y6 s- W
  73. int main()
    - d% B0 z/ _& Y7 K1 m
  74. {  m6 p1 I, ~4 E, Q4 B. r
  75.         char c;( g0 F; W- c9 S9 R  z
  76.         int i, macs[6];
    + E1 ?, ]* \$ c; s1 o* Q6 z
  77.         unsigned char mac[6];) k6 d/ w  @$ U" @; f
  78.         unsigned char stbid[256];" a" k2 K4 v5 n4 {

  79. & ~9 I& u) {, d3 B0 u# O
  80.         if (readparam(mac, stbid) < 0)
    8 A  r6 x) }9 k6 b% T  }
  81.                 return 1;1 {2 O3 h, ]# x) C' m9 q

  82. ) b; L. G& |6 v% |! B7 p: r
  83.         printf("Current parameters: \n");  V+ G7 X4 e/ M5 L
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, v2 A+ S% @/ d" @1 R* g
  85.         printf("  STBID: %s\n", stbid);
    6 c' l' @" R( I5 K7 b  S2 g
  86.        
    - W( d! r3 t3 k; _
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ; E0 E2 N' o0 N5 B* ?  d( E; \
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {, Y' |4 u+ {% F- w; v. h
  89.                 printf("Input MAC error\n");
    ; \- ?8 U' R8 _+ ]6 n; v
  90.                 return 1;
      S2 N+ \: a6 S2 u: x- F
  91.         }
    ) s0 ^3 r3 U' m
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ! W& B3 P' W* v# R; ~$ V
  93.         printf("\nPlease input new STBID: ");
    8 Q3 a- i9 }* B
  94.         scanf("%s", stbid);
    " I% b% I$ i; t2 `7 |6 L2 F+ s2 ~: v! Z
  95.         if (strlen(stbid) != 18) {: ]* t' F; [9 i
  96.                 printf("Invalid stbid\n");
    & Y: t0 x# W0 _& x. G7 \
  97.                 return 1;
    % Q2 x9 x5 N* |" b: w( x
  98.         }/ H. d- ?: b3 H* Y( p
  99.         printf("\nNew parameters: \n");
    5 n5 Y! k' w2 e7 u; o& ?
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 i& ~1 A: t, l" Q0 s; L& T
  101.         printf("  STBID: %s\n", stbid);
    ! \1 l$ T8 i8 o! E) V

  102. : ]7 Z0 x! _1 x6 n+ R. R; q9 D( ]
  103.         printf("\nDo you want to change paramemters? (y/N) ");8 K% G2 ?6 h2 f5 n: |
  104.         for (;;) {( i/ G- h; I- x6 D- L
  105.                 c = getchar();
    ! z3 T; K+ |$ W  t. P
  106.                 if (c == 'y' || c == 'Y')
    + ]( N. w. c% k
  107.                         break;
    ; y( q+ n& q8 k2 \/ X1 B3 P
  108.                 if (c == 'n' || c == 'N') {: q% P4 G( H; n/ D+ r
  109.                         printf("\nAborted.\n");
    % V$ i: ]* `# B2 ^$ a
  110.                         return 1;
    : O5 O1 y" ^( C2 I# U5 \# G
  111.                 }& P  a. R# m5 J: Z& G
  112.         }% Q0 O( C, I/ p) A+ m8 y8 }1 N& n
  113.         if (writeparam(mac, stbid) == 0)
    + N" P& e  S% u+ R, l& r  q
  114.                 printf("Parameters changed.\n");. k. T6 ~  a  d8 W8 @
  115. * n+ J  {0 {; o8 r4 o" w
  116.         return 0;
    8 M; \% F- b0 K
  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 ' T. M1 C/ U- v7 m7 g
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

7 z  t* J6 H0 ]0 h+ M2 H你用的编译命令行格式是什么?
0 L; m% R; R" j1 _, e" N
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-12 17:46 , Processed in 0.022985 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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