查看: 16863|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    2 w' I( ~2 r7 g
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig- i! }; X+ R1 v  p, |( M5 ^
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:( H3 _7 {* k- d7 i  c0 D
usage: himr <address> <value>. sample: himr 0x80040000 0x0
& X& d6 @; ?; @. L, ]* x
% D" X1 J+ U1 ?  J# a) K0 l  d+ z' k9 ]. P! [# Y! H" _
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
  I% d( e# c  Z' l% d3 \# N2 K  l" @, y  o$ i: Z% ]" [
补充内容 (2012-3-8 09:42):
) ~+ e" R5 t( hhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数& U5 \  k/ H6 z4 }) c* A
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
# a' {) Q- r' m* a3 j+ J6 M7 b) B1 R. }, T; |# z, |/ Q
himr <address> <value>. sample: himr 0x80040000 0x0
: y/ K1 Z. y. P' [3 H6 Q
8 j- k* j% t; z9 r' ?; c例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。1 T3 {+ K+ X# L5 l. {
himr 0x80040000 0x00
9 V- t) h4 p0 k  Ehimr 0x80040001 0x11) U( L/ S/ t- d% j4 u' A
himr 0x80040002 0x22
2 u5 }, G! D0 w* g4 w$ e- V$ Ghimr 0x80040003 0x33
. |# Q1 z4 T. k) @/ ehimr 0x80040004 0x44
! s% g' w% v: ~- C7 _% ihimr 0x80040005 0x55' b! d* w: ^, J5 B4 R% @
" e2 V' p/ s, |' \& [
SN也是类似。
8 W$ Y6 {/ }7 W% \+ u: n3 D3 |9 e' |+ E( u
现在主要是,谁告诉我们MAC和SN的地址?
! w6 P3 K+ r; Y7 n3 W( c( Q( ?
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ! @' T) K" c0 z
一直想找到运程修改MAC和SN的办法,苦于无解啊
4 ~2 c5 {1 Y% L0 ?9 u- m. i
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
4 h9 }3 {. Q$ C# u
/ ?. ^" j- O% \" h; N修改的代码早有了。到今天不会编译。
: f$ c0 H* t7 k5 P' f9 `需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>* w. D6 x# X1 _0 \/ L
  2. #include <malloc.h>  [  s/ `2 G/ g- S+ t" Z
  3. #include <sys/types.h>  O2 V( o  t! j* s! y$ D  p
  4. #include <sys/stat.h>, w5 ~  b9 O2 O0 J
  5. #include <sys/ioctl.h>, @- w8 E8 F3 I( E) @2 J
  6. #include <stdio.h>) b/ j7 x; k: I
  7. #include <string.h>
    " n) r1 `5 |; }  B
  8. 3 {7 n, u8 f# q. C) p
  9. typedef struct {
    2 f- i8 N; V) K4 n
  10.         unsigned int        e2prom_cmd_sub_addr;# I' }$ \7 D1 j2 Z3 I1 D! ^' B8 p
  11.         unsigned int        sub_addr_count;
    : b3 g% ?9 `0 a! W' }% q
  12.         unsigned char*        e2prom_cmd_data;
    . L2 w' n, v3 |; m# X
  13.         unsigned int        data_count;: m, {$ t0 j' X) \* g7 U
  14. } e2prom_s_cmd;
    ' f- ?$ `% ^: k; C8 X! V! f
  15.   E7 n+ @. s* t* I7 U
  16. #define E2PROM_CMD_READ 1
    ' {3 R  U$ [; E( Q% _
  17. #define E2PROM_CMD_WRITE 2
    1 E7 c8 M+ M* _& N) A
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    9 g/ O/ Y1 W' g  T' K& A% `

  19. ; K* h) j. u) w( z) n- g- Z0 ~
  20. static int readparam(unsigned char *mac, unsigned char *stbid)2 ~- L+ f6 f8 b
  21. {
      e) a7 F( j$ q# ?
  22.         int fd, ret;
      b3 P- _: ]2 U
  23.         e2prom_s_cmd arg;3 j, L& V* s/ W1 Z
  24.         unsigned char buf[0x18];6 S% e) _3 m  c  J
  25. ' c! l' Y: I! ^! A5 @) q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);9 G& }# x8 R5 {
  27.         if (fd  < 0) {# d+ `9 k9 W3 w( t# R. ~6 w
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      O' m" W8 u8 i) ~: [, T( L
  29.                 return -1;
    * |, N( T) x1 {8 P* e  u7 E
  30.         }
    6 q  m6 |/ p* I; d: M$ C: |
  31.         arg.sub_addr_count      = 2;
    5 e, D8 W" k' B+ |9 l5 Y7 v- w) X
  32.         arg.data_count          = 0x18;
    9 ~/ X9 C4 q! R3 k# Y( D; T- Y
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    0 x+ m1 ^; [. _+ m
  34.         arg.e2prom_cmd_data     = buf;
      i' D& A3 ^% f' T9 ]7 K
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ' ^* G/ X4 d2 M+ F: x1 Z8 O5 J
  36.         if (ret != 0) {( I9 R/ P# P2 N2 l/ x: h& L  `
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);* H! f; w( E& f9 P
  38.                 return -1;5 D/ i$ e( s5 v4 R; q
  39.         }9 g: ]- p7 [& Z' g2 f$ c
  40.         memcpy(mac, buf, 6);
    8 k5 _; P0 S. Q, G
  41.         memcpy(stbid, &buf[6], 18);
    . Y7 W. d& s* m
  42.         stbid[18] = '\0';# d3 }* @0 m" z0 x

  43. - v6 [  c  {9 Z( @
  44.         return 0;/ o. G: j; u5 }7 k& C3 R
  45. }; r/ a. ~' d4 v" q0 C# g! A
  46. : b+ g" u! f0 Y$ f% G7 S0 M6 }
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    & e2 K1 W$ I. f
  48. {
    2 _7 [: F7 X! B$ ^
  49.         int fd, ret;. T% _1 p3 L) _; G: U$ E
  50.         e2prom_s_cmd arg;
    / m5 M0 y$ @7 Y6 M7 H, @
  51.         unsigned char buf[0x18];: c! I! @: n  w6 W
  52. % j6 @! z8 O+ M2 u
  53.         memcpy(buf, mac, 6);
    6 g5 g$ k' L; d' }' [
  54.         memcpy(&buf[6], stbid, 18);/ [5 _4 X0 @' _* j) |3 g# D* P
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
      M; |. R- ]. [: J$ ?( D3 Z" G- r9 G
  56.         if (fd  < 0) {/ Z, v& w1 j" z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);% Y% a  ^8 A. V4 _, ^9 h
  58.                 return -1;% S5 z4 l  R4 C% n
  59.         }
    % |; `& f, S9 S% }
  60.         arg.sub_addr_count      = 2;
    " v/ C( }: s6 \% E
  61.         arg.data_count          = 0x18;
    ; }; y# A- `; w6 `7 [8 x# Y* @
  62.         arg.e2prom_cmd_sub_addr = 0x290;- e" O+ @9 W: o- H
  63.         arg.e2prom_cmd_data     = buf;8 n% y! G: x$ T* U: t4 G
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    $ t% A, [; I2 d- ?% y2 P
  65.         if (ret != 0) {: x# b6 s5 i& W# M# @5 `/ x" x
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);2 x* t# ]# N+ |# K8 H
  67.                 return -1;
      h) G" P+ c9 e, j  M5 g4 ~. v
  68.         }* k/ h. r' H! ^' t
  69. 3 L3 E; J$ {( s) [& [1 q; P
  70.         return 0;& W$ @, F% O7 L6 d
  71. }8 `8 ^2 T8 ~$ O4 {3 o- h7 }+ b
  72. 2 E. x' Y  A, @3 n" C
  73. int main()" N0 d& F  H* I9 i) l, v% M- v
  74. {, K/ g4 C7 i  I
  75.         char c;
    . U1 p1 j  I1 W
  76.         int i, macs[6];
    8 ~  I8 m6 D4 J  k( n
  77.         unsigned char mac[6];/ @& \. J  F6 @  n7 k
  78.         unsigned char stbid[256];
    4 ]; |4 |! H6 I- {) o

  79. ' r  e0 i% c- @* j& F
  80.         if (readparam(mac, stbid) < 0)$ Y4 S( B' W8 z8 l$ G1 D' A+ R
  81.                 return 1;
    ( E  K0 V9 \9 h
  82. 1 i3 a* h8 k$ b) j& k+ t5 |# y- J
  83.         printf("Current parameters: \n");% H: `/ Q" a; e7 R, z( v
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ ]" X/ _( |- G! M* t  T7 {
  85.         printf("  STBID: %s\n", stbid);
    9 X8 p* M' A8 \) |: b% l' m$ ~
  86.        
    5 H; [" C; Y% k5 G
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");; V/ m( Y8 [6 x. S; ^; J
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    7 C! ^) G* ^3 n) E% p
  89.                 printf("Input MAC error\n");
    - v7 n3 A5 Z) R8 A) {5 d
  90.                 return 1;; b% M1 h0 e7 ^; |; ~) T+ a0 R3 N9 \
  91.         }5 e+ U* ]" A' k9 Q) X
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( O. T' Q4 l) ]" Z& |7 D, s
  93.         printf("\nPlease input new STBID: ");, ^! m/ J; f) A
  94.         scanf("%s", stbid);* A5 j6 c/ P+ {* d% U# V
  95.         if (strlen(stbid) != 18) {
    ; S% D8 ^) t7 ~* _2 p" M
  96.                 printf("Invalid stbid\n");1 |0 M; I; g, r
  97.                 return 1;
    " Z) b- }2 b1 r. d0 z6 Z
  98.         }, y: k* L! |5 A8 S
  99.         printf("\nNew parameters: \n");/ B4 }) ]; A$ l4 m, U
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: U# r7 }( M4 |& Y6 n# f
  101.         printf("  STBID: %s\n", stbid);1 G: W9 R/ p2 s  u

  102. 7 }! J  n$ X$ p
  103.         printf("\nDo you want to change paramemters? (y/N) ");- T  x) f  u5 D6 C* R% `8 }
  104.         for (;;) {2 d% \0 G7 q) n# k# l% T9 q
  105.                 c = getchar();; K) W+ N6 K0 b
  106.                 if (c == 'y' || c == 'Y')
    $ X6 K( d& C1 @: _9 }! D! Y
  107.                         break;( o9 P% k3 x; I2 w( `) l$ ?2 r% W: |
  108.                 if (c == 'n' || c == 'N') {
    ; f) W) v8 ]% W" e! w' U
  109.                         printf("\nAborted.\n");
    ; f' r; `- v2 c% u
  110.                         return 1;! e/ F/ K$ [& n( N
  111.                 }% k9 e& x$ b& c
  112.         }; g, A- Y9 C5 Z1 x; {
  113.         if (writeparam(mac, stbid) == 0) . t" z1 L4 ?3 e$ _
  114.                 printf("Parameters changed.\n");8 t  N8 t/ |& }2 u
  115. 2 q- e. H* l) z7 B% V* E5 n
  116.         return 0;
    1 ~. i  }4 _; H. |1 J7 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 / _, k7 E  ]  b3 p  i
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

) [8 [- ^# y7 U你用的编译命令行格式是什么?3 E* m/ \% _$ Q* B- s2 a' Y+ Q
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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