找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15755|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr, v: E- j( Q' q( m
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    * w& r0 h( f5 H$ O3 K* }8 g; P9 h
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
. C# S4 x) w' F1 [. lusage: himr <address> <value>. sample: himr 0x80040000 0x0
& p7 n5 g- x  J; J2 k
; Y, ~; e5 _  |( D, l0 p1 p( t
0 q# ~- U3 s+ A+ E: k- `% `不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
+ b! o: \' V, g. l3 z/ i: m$ D) M; L# {3 P+ m/ i/ R6 e
补充内容 (2012-3-8 09:42):
* Q; n% g* _& u  X4 H9 ^* p; Bhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数4 ^2 i9 M" q2 Q3 s1 m
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
  _- b  [7 R. c1 O2 M& N& z! g1 i4 L: f) f7 e
himr <address> <value>. sample: himr 0x80040000 0x0
& f2 d( z, i( j8 Z. c  N. ?
; }# h) y+ p9 q* j- U& y2 _8 \例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
2 s' }! r! U8 hhimr 0x80040000 0x00' v5 C) L2 x+ Q. k) m, {  Z
himr 0x80040001 0x11
& l( p$ e% @" N9 ^: |himr 0x80040002 0x22
, I  e6 G; P: E. x. ohimr 0x80040003 0x33) q# ]- m; H9 f: R: J' u* H
himr 0x80040004 0x44- b4 ~, e; v% y' j1 U0 I
himr 0x80040005 0x55
1 ~6 _! Q  {: S: |9 R# x7 j! `* U2 Q. X6 S: {" Y( H
SN也是类似。0 q. k* l5 O/ z3 V3 B
! q. G* V' _  ^& Q
现在主要是,谁告诉我们MAC和SN的地址?$ t/ ^2 B3 R% y' m2 W" Q
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
* B* P" v0 u8 r. R0 L- ]" J一直想找到运程修改MAC和SN的办法,苦于无解啊

3 ?7 @7 o7 m# \源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑   A& K. T+ o' N$ d/ k! x
8 u& F7 S; ^+ x% |: p: e6 y
修改的代码早有了。到今天不会编译。
* \* W2 ~2 N) l0 h4 M' a; H需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    . J0 L' R& k8 `; m0 @0 j  {9 o7 @+ A$ J
  2. #include <malloc.h>* s/ g6 y* A- p& P
  3. #include <sys/types.h>
    7 z( h, A, Q! L5 d* v
  4. #include <sys/stat.h>8 b7 ]' ]3 d( a* R
  5. #include <sys/ioctl.h>. K5 f8 N: Y4 J: s
  6. #include <stdio.h>3 {, i, f; r# I* i/ l' A
  7. #include <string.h>
    # o/ h' S) a) f) o

  8. % k" {! @3 W/ ~+ k( O
  9. typedef struct {$ u' ?3 S% H5 B5 t
  10.         unsigned int        e2prom_cmd_sub_addr;0 t! l9 {% j2 W% l. B& T
  11.         unsigned int        sub_addr_count;. j& E' [  @; u$ A3 k
  12.         unsigned char*        e2prom_cmd_data;
    / s! x! N. m% r7 _5 i8 U
  13.         unsigned int        data_count;
    " D- T5 A2 b8 K
  14. } e2prom_s_cmd;$ y+ ~3 h' [! C$ Z3 j

  15. + K, z, A+ E( R. P
  16. #define E2PROM_CMD_READ 1
    3 I; {& X1 ?( @
  17. #define E2PROM_CMD_WRITE 2, Q! `  {1 u: W+ D% ?! X) F
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16", o6 E- x1 k# u3 a! ~+ ^7 l& E
  19. * A& Y9 a+ c0 A9 x% H
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
      w2 t. O8 g& V  T0 r( Z, e
  21. {0 E1 M5 }! U# M6 W/ J
  22.         int fd, ret;5 p. Q7 g$ h! k+ R
  23.         e2prom_s_cmd arg;7 O0 E# P3 n& ]- u( j8 W3 `/ p" {
  24.         unsigned char buf[0x18];+ G+ W' Z5 F* D0 @

  25. 6 |3 H0 |1 Q: W  p3 `
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    " n! x- _7 X. [6 r) h
  27.         if (fd  < 0) {, N, h; a6 F9 h# O
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ L/ v7 |/ F9 C4 x) \- P
  29.                 return -1;, s! f( f) k. z0 [# i
  30.         }
    ; \9 d% w3 X. Q3 L5 s* w: q1 H
  31.         arg.sub_addr_count      = 2;/ z, A# H0 I& t0 s9 D
  32.         arg.data_count          = 0x18;
    : ?" `1 Y$ A& g4 V% \5 z% L7 F. n
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    . {: E$ K& X/ p, C! r
  34.         arg.e2prom_cmd_data     = buf;6 f$ H( p# o- s( t, z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);$ r( f2 G% J3 k0 k) h
  36.         if (ret != 0) {
    * x* @8 Z+ a- g
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    4 r. e  X0 [2 \$ _, d4 Y
  38.                 return -1;
    . \3 B, i+ F6 l, \5 Q5 ^  Y
  39.         }7 ^! d" P& y( L5 ?; E7 s; d4 x
  40.         memcpy(mac, buf, 6);& n0 f$ S- ~6 G) ]# O+ _3 B) V* W
  41.         memcpy(stbid, &buf[6], 18);% |; ]$ m3 j( I: _6 n! b# f) {
  42.         stbid[18] = '\0';: _* C1 F' h  [: o  a1 ~

  43. & Q1 z) ^  }% G5 |0 ?( W
  44.         return 0;) p! A( x8 V5 [% f8 w0 r  P' @
  45. }% l5 k- n1 N" k& A4 }# Z( ]

  46. 9 I+ v! t, Y: Q, k5 A
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    # W$ k( I* f0 L2 e7 p/ O9 E
  48. {
    9 {" @: ~0 f% E- a1 D8 \  c2 A+ h
  49.         int fd, ret;
    / X& s' |5 f* N; i) e5 I- z
  50.         e2prom_s_cmd arg;) V% w& [& D7 s- t' b* c5 B
  51.         unsigned char buf[0x18];
    2 a& M% M/ l. U, F/ N, s3 b

  52. 7 l8 e1 h5 u( u: _/ X
  53.         memcpy(buf, mac, 6);, t* @6 v, {5 I; K! o9 i
  54.         memcpy(&buf[6], stbid, 18);$ Q( T) g  {+ g& T) C
  55.         fd = open(E2PROM_DEVICE, O_RDWR);3 X; p' X6 |. S6 k
  56.         if (fd  < 0) {
    % g+ m( K! o8 L2 D
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 K. o8 B1 `8 t
  58.                 return -1;
    ) x4 T4 V: e. k1 O
  59.         }
    . E: y& \2 H+ W1 w& W
  60.         arg.sub_addr_count      = 2;
    : ]) n- ~% v& I7 m
  61.         arg.data_count          = 0x18;' T& a( F& W$ q3 D: K
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    4 X, `) Q7 @" _( v5 n2 G7 ~
  63.         arg.e2prom_cmd_data     = buf;. e* R. e4 w- Q9 ?6 _/ C& [
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);7 s5 T. y" j2 ?
  65.         if (ret != 0) {) N0 k; {0 c6 e1 @
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    % r% n2 Z: e. P" j* d$ t  m. x7 Y
  67.                 return -1;, Z3 {) c+ V$ c: d7 W5 W  m
  68.         }; c$ r* i0 ]0 l6 n5 I
  69. ( v) ~3 Q7 R3 A( e7 k7 u
  70.         return 0;2 ]# s* u0 d1 Y8 H# E" S; |
  71. }
    4 p% y2 q. D- C. |  F- m9 \
  72. 2 @  E1 e0 f6 P- J: w' S
  73. int main(), r% J* P  `$ P
  74. {6 R8 j4 o7 a2 }6 P
  75.         char c;
    * M2 a8 k3 I. r6 u9 ^
  76.         int i, macs[6];  S1 G2 k3 T/ ?. I
  77.         unsigned char mac[6];& V8 h1 Y3 M7 C3 H* x# s$ V
  78.         unsigned char stbid[256];' ?0 D! [. A( l- e" H2 ~2 g

  79. - E6 f1 g/ }  x9 T# Z+ z; l
  80.         if (readparam(mac, stbid) < 0)
    / `8 u6 v! z4 `0 y/ j
  81.                 return 1;
    ! Q' \2 ?  K" `9 ?

  82. ! n% X6 D8 v" z$ M, s0 q
  83.         printf("Current parameters: \n");
    2 [# f6 R5 ~- v
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 h3 P6 |& j- C" L/ L! p4 X1 u
  85.         printf("  STBID: %s\n", stbid);0 s4 ~4 v2 Q0 w  {( x, _
  86.         : t$ B. U( L4 ?1 V) D
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");/ [' q: R2 K6 Y- i+ k$ u5 L) R8 W
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {0 Y* k! U& S3 {" _0 o; g  o' C
  89.                 printf("Input MAC error\n");
    2 ^4 {$ ^+ [7 x8 \
  90.                 return 1;$ d/ T+ ?( G. c+ |
  91.         }
    6 ^5 f$ D0 h9 R* F/ u
  92.         for (i=0; i<6; i++)mac[i] = macs[i];# d$ t+ F6 P& G& l& G
  93.         printf("\nPlease input new STBID: ");
    ' H! ?$ T! A9 {8 x5 P6 t$ Y0 B, c
  94.         scanf("%s", stbid);
    0 D1 S2 G$ t! I' C: g, c/ u
  95.         if (strlen(stbid) != 18) {
    % e9 J0 x7 q* S1 b
  96.                 printf("Invalid stbid\n");+ b* h+ v/ t" h2 ^/ ^3 g* a  K
  97.                 return 1;2 S; |/ U( M- z0 I
  98.         }
    " `" }4 o$ G" b. J1 p% z1 {
  99.         printf("\nNew parameters: \n");! _* ]4 F0 M3 J* m* K
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & J6 \2 I7 q7 Y1 C+ J2 b
  101.         printf("  STBID: %s\n", stbid);
    5 L/ }) p, X( y  z

  102. 7 E% t: C; m" g/ S. S
  103.         printf("\nDo you want to change paramemters? (y/N) ");. M. ]# `; B2 {$ J- U8 s- C
  104.         for (;;) {! A8 \" j) n. W4 b1 ]  T
  105.                 c = getchar();
    ' f, @( A# s0 \* ]7 z: ~0 n
  106.                 if (c == 'y' || c == 'Y')9 i! O  O+ K9 o
  107.                         break;
    4 ?' d* c. G( v  N
  108.                 if (c == 'n' || c == 'N') {1 Z5 c# m  L4 \4 p2 f: Q/ |4 Y! U
  109.                         printf("\nAborted.\n");
    1 L! z# ~& y4 V
  110.                         return 1;
      W  f8 H' R4 @4 D$ ?
  111.                 }7 g# [, R/ z! b- Q' m" v
  112.         }4 K1 `0 z% Y8 ~9 s: K. n; A4 {- H
  113.         if (writeparam(mac, stbid) == 0)
    ) q- v" q. p$ E& t( X2 [( Y
  114.                 printf("Parameters changed.\n");) f: t$ ?9 H9 r1 V
  115. , U  l) S' Z( K4 Q' f( I
  116.         return 0;
    7 Y2 N. k! G$ O7 M- W; Y& T" O4 r7 M2 U
  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 4 S1 ?# h9 S& f
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
+ j$ L6 r; Z; o0 g. ]! d* |4 u
你用的编译命令行格式是什么?9 v3 D  y- Q+ T& l6 t4 N/ F
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-10 05:56 , Processed in 0.029954 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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