查看: 17198|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr! M! ^8 G# a0 J* v: V8 Z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig# W; X. a: W4 r
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
# h. l9 h# `9 B; \7 C% zusage: himr <address> <value>. sample: himr 0x80040000 0x0$ F, a" R* q: G  q; b# t
& ?. }9 E3 \9 S7 m/ c$ G
# L1 H2 g9 u+ |! J$ m
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?4 m+ _9 b% C2 e. v  q, R" Y

# s% Y( q  V% S1 K1 s, ~6 O+ K补充内容 (2012-3-8 09:42):
' W% Y. r  B* D# g3 thttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数3 e5 e/ h7 m6 c7 {" H
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。, s. U& P- B7 B% N. d4 ?

7 z  a1 ?1 z( v  Z# e. f+ Whimr <address> <value>. sample: himr 0x80040000 0x0
# A* i6 }' l1 c( e& I2 w( U  _1 T; B6 {7 A$ V, U+ }/ f+ r
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
+ v8 _9 O6 H) R% }0 O; Y% [& Yhimr 0x80040000 0x00/ _; _: r4 u# B6 Y8 g% I" P: t
himr 0x80040001 0x11
% O& D1 k3 @  Y! l3 N: v) hhimr 0x80040002 0x22) H5 F9 i. I. f1 ?( h
himr 0x80040003 0x33
+ E/ `" }( z9 t/ E) |himr 0x80040004 0x44
" T( g) J! d# R$ khimr 0x80040005 0x55  z2 O. J! J# o; t9 k& i
" O2 p- u$ m) n  v! X6 D
SN也是类似。- G+ i4 I; I  R6 s% x

9 a$ z% i0 C1 I7 k* J& k现在主要是,谁告诉我们MAC和SN的地址?
5 Z! V- c5 t: X3 e/ Q7 m" _! H/ V
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
7 {1 q# e; ?6 _' C一直想找到运程修改MAC和SN的办法,苦于无解啊

% t0 g' W: z2 s源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
: H4 x6 S6 v6 p$ l0 r1 ~% O
. q) N# }9 Y& |& Z修改的代码早有了。到今天不会编译。' y( w9 U. D/ Z
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ( T# G) C* r$ g. F! w% O& k' M
  2. #include <malloc.h>
    : H$ H- x9 C9 u% u# v  w& ~
  3. #include <sys/types.h>4 n& R- V+ R8 S
  4. #include <sys/stat.h>
    2 V$ K8 Q' X5 H; e
  5. #include <sys/ioctl.h>/ y; x# e" o' E: g
  6. #include <stdio.h>
    9 B1 K' u% A' {  T, ^6 ], b& k
  7. #include <string.h>
    / J4 p5 C. q) P+ Y: V: K# z
  8. , X6 w8 q7 S8 Q( E
  9. typedef struct {6 a6 i6 [2 F4 i$ e3 d5 \& U
  10.         unsigned int        e2prom_cmd_sub_addr;
    ; R$ r+ [7 q0 E, S) {$ p
  11.         unsigned int        sub_addr_count;. t& Z8 |/ Y9 S* L1 k4 m- Z
  12.         unsigned char*        e2prom_cmd_data;2 K  H# |( ~0 O. j+ h8 ?
  13.         unsigned int        data_count;: c+ n, m) |7 u+ x% r
  14. } e2prom_s_cmd;+ u, a+ D8 N) h# h1 u
  15. + R7 w/ m3 i& j+ s0 I
  16. #define E2PROM_CMD_READ 1. u3 R  @0 b, H, q9 l
  17. #define E2PROM_CMD_WRITE 2
    3 i# Q) Y1 f: O( [  l( h: }
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    1 k8 O9 s$ d$ _* {. _2 s% [
  19. 1 ]* ?, k& C" i# e  B4 `
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    / x# R' |1 d6 y1 q
  21. {
    + W3 f  X2 b3 M5 h2 G8 X% `. D
  22.         int fd, ret;
    . c% f3 ?& L  q+ S  E2 g& X" ^: L
  23.         e2prom_s_cmd arg;
    ; J: ?8 ^2 p; V& l+ f
  24.         unsigned char buf[0x18];$ K7 I  n1 J; V# f

  25. ; U5 d( y; W1 L' Z! x
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    + k  H0 X+ Q! S/ g" y
  27.         if (fd  < 0) {& ^+ R* t* T5 |0 Y# i5 ]3 i5 A
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , A; U+ |# k! x9 `: c) o" W1 @" S* b
  29.                 return -1;1 w9 ]; a$ Z" H! E7 q
  30.         }
    : [& o* f) @9 Q2 c& L2 H
  31.         arg.sub_addr_count      = 2;
    4 f- t6 ?- f+ f# b( _$ S
  32.         arg.data_count          = 0x18;
    / ]  R. _0 k. I- u3 M* j! r$ U2 p
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ! T' y, c+ T, m1 h# d
  34.         arg.e2prom_cmd_data     = buf;
    1 j3 G( H0 Y( ?6 |
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    / H. V5 d% V# U" _6 O- s
  36.         if (ret != 0) {- C/ D! K2 O0 ?$ ]$ s$ _# F+ \
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);" ^0 C* k5 n' |4 f% ?3 O6 s
  38.                 return -1;: E9 C7 U( v' s! U# b5 Y' v
  39.         }# s8 W6 O8 {7 _# i1 E0 }& E) m
  40.         memcpy(mac, buf, 6);  c" p2 P5 G) i( Z" J/ L& T% ?
  41.         memcpy(stbid, &buf[6], 18);
      K# r0 y2 T+ E1 A
  42.         stbid[18] = '\0';
    / ^  }0 M1 N: E
  43. # F4 G4 U; S, M' h& J
  44.         return 0;" p) K4 j7 x3 h) Q8 v+ c4 f' j9 O
  45. }
    + V1 N. a- f" _4 G* }' Z
  46. 2 S, `0 |5 @: s
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    3 P$ _8 I: R) I$ m7 E/ X
  48. {
    9 d: ~5 f& }  f# X  n+ j9 }
  49.         int fd, ret;7 i* j; y; z: I- l
  50.         e2prom_s_cmd arg;/ R! o0 `# c6 y6 B, w8 I1 G: v
  51.         unsigned char buf[0x18];
    ' U8 q' u3 A! c7 G& g5 }

  52. 2 u- k6 _* N6 h; _
  53.         memcpy(buf, mac, 6);
    7 g. _; |' k1 p9 ?1 ]
  54.         memcpy(&buf[6], stbid, 18);
    5 K) z% b6 J& m4 z
  55.         fd = open(E2PROM_DEVICE, O_RDWR);4 s+ Q, ^8 O0 G' h
  56.         if (fd  < 0) {
    " F/ o+ B6 c- N' F; v
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);! B7 n6 W$ _2 N4 O* [
  58.                 return -1;% L' q/ e* R9 ]$ p+ H- P4 F
  59.         }
    - D4 Y/ ^$ Y' F8 i; x. b
  60.         arg.sub_addr_count      = 2;9 _' Z' N) Y& ?2 c; i
  61.         arg.data_count          = 0x18;: y. ^2 ~# I8 m; O# K# f
  62.         arg.e2prom_cmd_sub_addr = 0x290;0 C3 w4 \5 S$ F: e& }9 Z
  63.         arg.e2prom_cmd_data     = buf;
    ' F8 m4 f3 V+ S) w. q3 S3 H+ ?
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);+ E$ W& Q, A: Z% e9 u9 `
  65.         if (ret != 0) {# I1 x  W9 G% H  S. F8 P: ~$ H, b% Q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);3 h' r9 \- G. @7 A7 t
  67.                 return -1;# C7 o: m4 J2 `7 c
  68.         }) Q; ?/ b9 _' r, X2 I7 N. g
  69. 8 p; a7 C; |. d
  70.         return 0;+ @1 w* l! s4 L) q0 e/ M9 F" u9 T. g
  71. }
    ! Y) o& x0 A- t  Z

  72. " O: S2 ^/ {( ]7 O9 t
  73. int main()
    ) m2 V0 E! h4 E$ Z' |9 d6 X
  74. {4 _4 @3 Z9 \8 \* u3 w# B% |9 A
  75.         char c;
    1 W; o) A& z" g
  76.         int i, macs[6];
    % g& w( _8 L* w$ ^; {  H. `0 U
  77.         unsigned char mac[6];. r4 ^& Z' D9 |2 q, @
  78.         unsigned char stbid[256];
    ! B) Q$ l# t) `. w, J6 L$ T; X& j

  79. ) E! h" s( @! z. Q  X; T! u1 g
  80.         if (readparam(mac, stbid) < 0)- a: I/ l! N% h) z
  81.                 return 1;4 J9 `. ?( C" f; V6 s

  82. 8 z, P& H" X# \+ f, ]
  83.         printf("Current parameters: \n");
    " L- l, l- E- C
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ i& }+ {. l' K) ~" t7 Z+ b0 s
  85.         printf("  STBID: %s\n", stbid);
    % y% \) N& ~9 V, Z$ Y6 c" h
  86.         ' p  X$ p, E, w* L
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    / `1 W, E) ]* _! ^& e% M1 j
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    2 O; |7 F  R8 t. {4 J6 V/ ~  @$ H
  89.                 printf("Input MAC error\n");9 i5 `5 e. S: |' Y
  90.                 return 1;
    8 H/ r2 c0 R0 T- N/ V# M8 G" I, @
  91.         }
    4 r: l; C! `0 s
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    - O! ~: N) O) p. ?$ X4 k! W' X% t
  93.         printf("\nPlease input new STBID: ");
    * U2 e2 r! \+ d2 T/ n9 d$ G
  94.         scanf("%s", stbid);& r; B" T5 t5 ?3 r! W/ s! r
  95.         if (strlen(stbid) != 18) {
    & Z# A' r6 s! \1 [/ X
  96.                 printf("Invalid stbid\n");
    . h+ z# P, R" P% E8 |  k6 ?
  97.                 return 1;- d9 w: F7 f3 k) Z3 c! r( w' P$ u
  98.         }* L0 ^0 U' n3 a" Q
  99.         printf("\nNew parameters: \n");9 v7 {  C: G0 c) M
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' y! Y# S, P+ e* B* u( E3 I
  101.         printf("  STBID: %s\n", stbid);& q3 I  `6 [1 k! {
  102. . a+ W+ B. H; I2 o
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    0 H: R0 t3 L, ~: z
  104.         for (;;) {* g2 J4 X& _3 `: d( c- K' |
  105.                 c = getchar();
    0 g+ f9 T- \7 |  N
  106.                 if (c == 'y' || c == 'Y')
    0 Q, H8 x. u3 O% K
  107.                         break;
    , U8 ]- [7 t/ r4 G* }: Z
  108.                 if (c == 'n' || c == 'N') {$ N- T2 F9 W: \8 d# ?# v, ~
  109.                         printf("\nAborted.\n");
    $ N! X. V$ b6 t. Q. J
  110.                         return 1;
    # `  w% o5 O: @
  111.                 }
    $ x) ^" M! P- ^9 P( R* s
  112.         }
    / R0 e2 `2 S$ U0 |* V
  113.         if (writeparam(mac, stbid) == 0) , m- G+ `0 c# ?: q
  114.                 printf("Parameters changed.\n");) j/ h$ q- A- Q; [! E% p

  115. " ]2 `: J6 x7 M4 X5 r
  116.         return 0;- s  m0 Y8 ^* s& v# @
  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
# L3 }# ^/ a/ |% s& F4 q5 T/ F在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

6 n7 i2 f9 R+ X' m. s; K. `你用的编译命令行格式是什么?
: \- h# d8 z6 I6 Y; Y9 n0 W4 [- ]
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部