找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14917|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    5 w- ~: i# c, ~! x  l
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ' X% \, w$ ?% K. m
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:& i% j3 i6 n. m  ]% J  @8 K
usage: himr <address> <value>. sample: himr 0x80040000 0x0
7 `; _3 Q! W/ A: Q3 r4 x* |1 \& G7 c" _; j

- C3 z% ?3 U; G4 J& H. s/ V不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
$ {+ a& [' S# G8 k3 U) a# L8 B. _  ~3 F0 Q% @# B
补充内容 (2012-3-8 09:42):/ q' N7 p5 N3 s7 ^$ ~8 h) p1 U
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数2 E( F* c  R; A* p) X. \: R/ H* U
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
: u+ \9 M1 w  b/ `; y" W+ f: Z5 e& z
himr <address> <value>. sample: himr 0x80040000 0x03 }7 h0 j* o3 b, I
5 E( s: {; j: U* y7 l
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。7 t! l! I$ M+ K0 \2 y
himr 0x80040000 0x00
* E+ T  Y, K+ [himr 0x80040001 0x11) E0 j- C: C* a3 c; |
himr 0x80040002 0x222 }( L" v. E0 K+ ]8 Y' W
himr 0x80040003 0x333 Y' L( b' X8 [' l, Q: E
himr 0x80040004 0x44' W! G, Y# c0 q7 W1 ^
himr 0x80040005 0x55/ A. E7 X7 N+ c1 H0 X. e( K: E

4 S3 y+ l* f6 f, c1 u1 aSN也是类似。0 \5 M8 }# T: g6 H
, i' r0 W! h$ y! W
现在主要是,谁告诉我们MAC和SN的地址?
1 p/ o: \4 Y# e# p! b  O
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
5 b1 q6 a% g( Y/ c! W一直想找到运程修改MAC和SN的办法,苦于无解啊

$ s! ^3 V1 A6 z8 l9 y! F) {源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 + m8 U9 L  P8 K) [, g

4 k3 X& _, Y' V- F修改的代码早有了。到今天不会编译。* }7 o2 i+ \+ p2 _$ m( c1 o
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; f. s: M( w. K/ t: Z& H+ `4 @2 g
  2. #include <malloc.h>* u5 `2 [- {5 g$ v* r+ n
  3. #include <sys/types.h>
    , N1 P  N/ ]8 A
  4. #include <sys/stat.h>- ~6 T2 d! }; d  r. A& e# `
  5. #include <sys/ioctl.h>
    4 Y0 Y! E( W  V. ]
  6. #include <stdio.h>
    % l6 @' K& a7 |6 x
  7. #include <string.h>" Q$ P0 ?. D' N

  8. $ L+ d/ \2 {; G8 V$ M: `4 Z
  9. typedef struct {
    1 L/ u# T8 p% k8 f
  10.         unsigned int        e2prom_cmd_sub_addr;
    # w: g. k  f# }" \8 Q& x$ L% }
  11.         unsigned int        sub_addr_count;
    : G9 f  k- W) C
  12.         unsigned char*        e2prom_cmd_data;
    1 H8 i( @1 ]; s3 d
  13.         unsigned int        data_count;
    8 x9 v0 ]2 v% y( B* s9 a: ~
  14. } e2prom_s_cmd;9 c  a  h, t0 u9 P8 I0 S0 ]

  15. 4 D+ g* Y# i- W4 y/ Y
  16. #define E2PROM_CMD_READ 1
    / w  D. A) }/ _
  17. #define E2PROM_CMD_WRITE 25 Q2 s' Q' L* W7 v6 c
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"2 T/ G$ @  @* c9 A

  19. ' x. B9 e$ f) |  G( E8 q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)2 W; y! r# S& X( v2 d
  21. {/ ~( g& N* [# z
  22.         int fd, ret;5 T' V6 e( I' k( X6 }
  23.         e2prom_s_cmd arg;
    3 j" I  Y: d9 D
  24.         unsigned char buf[0x18];2 N6 q; R0 I1 S0 H  B
  25. - `* K; ^; y4 y& i$ {. Z( x
  26.         fd = open(E2PROM_DEVICE, O_RDWR);3 g. t; @0 I7 H6 L8 u
  27.         if (fd  < 0) {
    & C: r0 g! B' B' Q# P! n( d
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + M, C, _* o& p: i$ e
  29.                 return -1;1 E" [: q8 B) n1 ]. [2 S, D: N
  30.         }
    0 `% h5 K) k, F, o
  31.         arg.sub_addr_count      = 2;4 b5 X. M8 ]1 J1 @
  32.         arg.data_count          = 0x18;+ w$ Z. ~' G" \6 n1 _' c8 E9 V
  33.         arg.e2prom_cmd_sub_addr = 0x290;0 Y: \! j3 l: h! F8 L* }+ ~
  34.         arg.e2prom_cmd_data     = buf;& D: j% }3 P0 u% p. }( C, s2 `
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
      O9 j. v' [6 O! @2 d2 n
  36.         if (ret != 0) {4 ^, P/ P1 C8 }
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);7 g. f. L! j/ o3 F* z, O" O. g
  38.                 return -1;! b- T1 C: r; G% l3 g' J- f9 _4 J, y; _/ [
  39.         }" K3 D# i" y0 n. f" T% r
  40.         memcpy(mac, buf, 6);3 r/ p; i3 Q, B6 K
  41.         memcpy(stbid, &buf[6], 18);
    # }6 Y, e% S& B* a& }9 m* [
  42.         stbid[18] = '\0';
    1 k4 O2 |6 C! P- a; z: S
  43. * t5 Z4 f* d( S$ x
  44.         return 0;! o7 P  z' a( p9 m
  45. }& p, }* V7 P9 d

  46. . `0 l; `' a6 V4 u8 N
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)2 b# S) ~1 C8 Y# {; y$ R
  48. {' @- x0 O. z# D. ~) \% f/ ?
  49.         int fd, ret;- l7 w+ |% I! z& M1 G
  50.         e2prom_s_cmd arg;6 i/ N; W; P# A0 Y) p& v0 b
  51.         unsigned char buf[0x18];
    2 _  E6 U  {) |  H6 X4 |4 K

  52. ' a! {  N2 n: ^/ D; L( n) W" W
  53.         memcpy(buf, mac, 6);
    6 h( L& Q' j3 T" C2 f
  54.         memcpy(&buf[6], stbid, 18);
    / r; O7 Q. K2 s8 x
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 q  O! W. }6 Y: t7 s) g- R
  56.         if (fd  < 0) {
    : G* q: ~0 \" E, C5 e
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);  q2 G& H# h9 V1 P* e# R
  58.                 return -1;
    3 \6 E, z/ i+ ?3 G+ d* ?% d  j
  59.         }. l) y5 G- h" d. e8 e: Y
  60.         arg.sub_addr_count      = 2;, l( ?! V/ D  U# c3 V2 b
  61.         arg.data_count          = 0x18;
    5 ^; A/ a# `3 Q
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    . d" `2 y* \6 e$ \/ U8 {
  63.         arg.e2prom_cmd_data     = buf;$ y: [) s* {/ k$ v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    . k& J, q  @6 B" L' ~* A
  65.         if (ret != 0) {- `1 I0 u* p4 F, z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    4 f' g* [4 k( U& K
  67.                 return -1;  y9 o$ B: V9 M' H
  68.         }
      N/ l1 @; h9 V7 a! r- R3 [/ z# p

  69. . G1 X+ ~0 I/ d
  70.         return 0;
    * g, F5 i3 a# \! b/ e, O3 C
  71. }
    . _2 }4 M9 r# V

  72. 1 ]! [! \; L' _0 f2 u) `; S
  73. int main()
    - s5 H" X  t+ E/ }" ?3 n7 d1 x
  74. {
    6 {& ^& a& q% x  r- b
  75.         char c;, H6 D8 O+ {0 L7 `/ a3 t
  76.         int i, macs[6];
    / [+ b# {; t6 o" z
  77.         unsigned char mac[6];
      \$ Y* t" U( N6 I3 J5 M
  78.         unsigned char stbid[256];
    ( f9 q5 y0 {# x; \" c' H( u, ?
  79. . h: {/ I  c4 c+ C
  80.         if (readparam(mac, stbid) < 0). ?( \/ U# l* s1 ]9 B4 l
  81.                 return 1;
    / x+ Q& K& O! K* U) f0 R
  82. 1 Q0 ~" `6 \2 n8 f# Y/ \5 Q  h; n
  83.         printf("Current parameters: \n");0 b+ v' m, F& B: ?0 _9 B; A
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! ]3 @* N% _1 a+ Y) q. s
  85.         printf("  STBID: %s\n", stbid);
    & @* Z8 j0 u) y$ o; @% e  O: P" A
  86.        
      G( W; z- w( ]4 \# t* d
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");; |) m& J) h* W% Y0 D) T/ x
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {) B% {8 R* `6 |' A
  89.                 printf("Input MAC error\n");! p2 k. {' E3 B+ T
  90.                 return 1;* C! Y! l* a+ x( |' H/ N: {
  91.         }
    / T% R$ I# ~- U
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    % k6 k% X0 {! ~6 ^/ ?$ y$ z+ {
  93.         printf("\nPlease input new STBID: ");; x8 t; z! z% @8 ~- r$ G$ v, [
  94.         scanf("%s", stbid);
    8 |$ P9 w) j, E8 p1 [  V" \$ y0 B
  95.         if (strlen(stbid) != 18) {
    + Y1 l- P0 D' `9 {# `, m
  96.                 printf("Invalid stbid\n");
    / V3 }& @# l' w  I
  97.                 return 1;
    , x# C- u7 S) m% w
  98.         }
    3 y& X* h' f( b. T; P
  99.         printf("\nNew parameters: \n");2 x; Y8 {: i' f) |$ l- |
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 b! {. n, h, q! S0 c: g
  101.         printf("  STBID: %s\n", stbid);
    : J% W3 B" w* M7 y, J

  102. ' {" n! H' y: A' L
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    / p$ G4 T- P( Z% b" \& j; {0 h
  104.         for (;;) {2 W, \1 l4 L* A  U3 o0 g
  105.                 c = getchar();
    # m- q2 ?! b0 W, d
  106.                 if (c == 'y' || c == 'Y')3 {: Y& m. I3 j7 ^' c
  107.                         break;
    8 M& O" ?, l2 ~* ~3 \+ N( [# H& q
  108.                 if (c == 'n' || c == 'N') {  D7 L; u  _* J
  109.                         printf("\nAborted.\n");- u6 T9 Q3 K* J% m& W3 _
  110.                         return 1;# L' H4 F* z7 Q) m' t
  111.                 }
    , A  C0 K+ V6 `2 g
  112.         }2 P6 ]* d- F) A& o
  113.         if (writeparam(mac, stbid) == 0)
    5 k, u( K' b4 }
  114.                 printf("Parameters changed.\n");
      h* Q8 B+ j, I' o. W# G

  115. * o( B( r+ n; @4 p  i6 p5 |
  116.         return 0;, C1 k: l- k8 o: S3 c7 L2 @
  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
/ p7 W+ t0 }/ d. A4 M+ G在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
# l% n( l: a7 T  T
你用的编译命令行格式是什么?
. Y* ]) k5 A5 o) {
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-11-28 22:32 , Processed in 0.032470 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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