查看: 17930|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    / ?; }% ^1 [! c* c6 _, P8 _
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    3 U2 J! g* x' n7 x  T' [
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
; g% D3 ]6 a3 F( {5 Ausage: himr <address> <value>. sample: himr 0x80040000 0x0+ N. s; T. d( ]  \
' \( L: U$ K0 L

' }4 K0 Q7 K6 H  s不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?9 G3 I# U% ~. Z9 A; B- M

$ z4 H: @) ?+ ?) X2 p9 e7 O补充内容 (2012-3-8 09:42):
: B  M' B" l3 e6 v4 \7 r) xhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% o1 m( x$ b3 x+ ]# l
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
6 e) [. ?0 s: ?4 S5 I' X4 J/ s, l6 K
himr <address> <value>. sample: himr 0x80040000 0x09 n4 d  t% ]& y- d! ~" I8 m% ~$ r
* _; U2 k& ?, J/ I1 t/ a! s
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。+ ~* E- Q; l8 x0 Z/ N0 X
himr 0x80040000 0x009 Z: J. N# U0 Y- ?# Q1 ^
himr 0x80040001 0x118 U4 ^% E6 u6 l2 T' c9 f% v' q9 g
himr 0x80040002 0x22
9 T4 s* E9 y. I* y7 shimr 0x80040003 0x33# f' Y" J; @: X) f5 l
himr 0x80040004 0x44/ g# o6 @% l8 i
himr 0x80040005 0x55! {& @) D8 a6 U. Y- m5 \3 l
& d. S5 c: s2 x$ p
SN也是类似。
; ^) g% S, Y" e: b' `: @
* F1 z# s5 m, _6 B( w现在主要是,谁告诉我们MAC和SN的地址?' ~5 s) J# X8 S" _
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
9 n: u/ @! K# B! e一直想找到运程修改MAC和SN的办法,苦于无解啊
' h* [4 `$ d$ L- K
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 + C) R) J, k' H% F5 d& P* T
7 V. y$ r7 i. C( B5 d" D3 C
修改的代码早有了。到今天不会编译。0 T) ]  w; T) w3 B8 M
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    1 s+ T$ M: j) x8 V$ b# [
  2. #include <malloc.h>
    ( [( q% T) L! Q. U
  3. #include <sys/types.h>
    5 _/ `$ M7 k* I8 S5 n" ?8 a
  4. #include <sys/stat.h>, t  n; k: q9 b* U' e
  5. #include <sys/ioctl.h>8 K2 n: A2 y9 p3 K+ A5 D
  6. #include <stdio.h>7 f9 r# R9 z( S; @1 b5 k
  7. #include <string.h>
    3 O  P; n- E" l% W5 I

  8. # L7 `6 p) ~/ ~6 [! U0 h
  9. typedef struct {( O1 d, G2 f6 M; ]' t
  10.         unsigned int        e2prom_cmd_sub_addr;
    2 n# |: b( Y' v7 h0 `% E0 L% b
  11.         unsigned int        sub_addr_count;
    # h1 C5 b# J! W
  12.         unsigned char*        e2prom_cmd_data;; p* A9 t+ q4 N; L
  13.         unsigned int        data_count;5 g+ B, F6 s% c9 |1 m+ Q5 Q
  14. } e2prom_s_cmd;
    4 s8 e1 h7 y" Y! n
  15. 3 _; Y1 U0 F5 G
  16. #define E2PROM_CMD_READ 1+ Y% b: I" u7 x$ T
  17. #define E2PROM_CMD_WRITE 2' O5 f* l3 u' _* t' \4 R5 q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    . v- q' R, j; j9 w2 G

  19. 7 O; R1 z' g" J4 [+ F' A, m4 N
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    " W. Z" l8 m: P4 e- L! i+ o
  21. {/ z% y. |, u; k% p
  22.         int fd, ret;
    0 U* R; e  H+ O0 F. |& G& M( N
  23.         e2prom_s_cmd arg;+ n( v) j0 t' M. `1 L2 @3 l
  24.         unsigned char buf[0x18];% @" R# \& H, }( ]. w& c
  25. ! I- K% B$ \' [; q8 i8 f% D9 i- H! [
  26.         fd = open(E2PROM_DEVICE, O_RDWR);/ \9 U0 h) D' e3 s* K; h2 y) S1 z
  27.         if (fd  < 0) {
    * H- n! K- _, r! Q( I
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 H# N) Q! J+ g" V& _
  29.                 return -1;
    ' [$ M' e- T' q) I
  30.         }
      B  T- I- {! m( w& s
  31.         arg.sub_addr_count      = 2;) P3 f& [6 Q! T
  32.         arg.data_count          = 0x18;
    + a1 u& v" t" t& X% A2 z
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    8 `& u( J9 k2 z
  34.         arg.e2prom_cmd_data     = buf;
    9 x2 f& t! L) f8 Z% g6 Y6 }
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);% ?8 H3 i1 S( V
  36.         if (ret != 0) {
    ( d( d  Q! q2 `3 g3 a* ^! _
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    5 l% @/ \# e! H; U
  38.                 return -1;/ n6 W2 [" l' ~
  39.         }
    . k" I# V4 H' y" H( b2 L3 Y
  40.         memcpy(mac, buf, 6);
    9 ]6 F6 r0 U" F7 X
  41.         memcpy(stbid, &buf[6], 18);
    ' s! S8 Q9 f2 ^' }7 m" L9 I
  42.         stbid[18] = '\0';
    3 R" Y% X5 S& r7 N; {0 x" R& r
  43. 5 E: ^( O5 ], l5 c) Y
  44.         return 0;, C/ R- o  y+ \9 v
  45. }) X5 ^, u+ e5 \" r
  46. - H+ T  [5 O& |% J* ^
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    * o; {' Z5 M  V+ K$ R$ {
  48. {
    " E  q. b$ Y- Q1 b) y& p
  49.         int fd, ret;3 e( o9 Y0 q8 j% o- b8 k6 ~6 B
  50.         e2prom_s_cmd arg;
    3 C2 ]7 {% G$ e3 g: n
  51.         unsigned char buf[0x18];1 |9 o; F+ ]( u; o/ J
  52. , s- k4 g$ }0 t* C; ~
  53.         memcpy(buf, mac, 6);& E( i/ Q+ d  l9 @& m% s. x
  54.         memcpy(&buf[6], stbid, 18);# _( I, ~$ l% d7 m: O% R1 W7 [
  55.         fd = open(E2PROM_DEVICE, O_RDWR);4 t1 O, w( f' F5 R3 a6 t4 d' N% r: s
  56.         if (fd  < 0) {; t5 J7 `+ q# }; B" u, Q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);. u$ j% Q# g$ ?$ S8 }8 q8 p$ ]3 s
  58.                 return -1;" v  t6 }- ]) Y* c! A$ ^8 e+ v
  59.         }8 x( ~0 j5 R! A) @! Y# m1 q, X
  60.         arg.sub_addr_count      = 2;, B4 \; ^" |7 e" x. [
  61.         arg.data_count          = 0x18;
    1 Z, ^0 m. p8 ~8 t! S
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    1 I: V& B$ l) z- m
  63.         arg.e2prom_cmd_data     = buf;1 u. p& C* Z# S/ `6 U
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);6 t  H# V. m+ |& j4 o1 P
  65.         if (ret != 0) {
    ) [/ x0 X5 m) y7 v7 e/ D1 @
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    6 j" ^( L% C8 S9 n# Q
  67.                 return -1;9 B& _3 C# Q2 `  |5 g8 e3 O* X# J
  68.         }; m) i6 Z7 U1 }! @1 ]+ M5 H. e2 ]/ j3 k
  69. ' _" P: ^  }6 l1 E! I9 h+ J
  70.         return 0;" a: d; y6 F) Q# f! b! h/ [2 F
  71. }0 L2 ^5 u; B2 y" r7 y- D
  72. 0 C" A" C) N+ H
  73. int main()
    $ l; I6 m! e8 |3 q8 s( v
  74. {  u$ |8 B3 K" R! f& n" I
  75.         char c;3 i3 T+ n; y" a2 J/ K
  76.         int i, macs[6];
    3 Y* ^7 b9 O. J+ r1 i# `
  77.         unsigned char mac[6];
    & s& J( W7 `8 U7 P' Y2 k
  78.         unsigned char stbid[256];, s7 U, b2 t* g2 t# [# m3 y

  79. $ c5 U# {/ d' W; c3 ^" }
  80.         if (readparam(mac, stbid) < 0)
    + N; e* D+ {2 ]
  81.                 return 1;6 Q( B" ?) p: {, D% B: E# w/ M% {  p

  82. 1 ?8 t$ f4 M/ e( l& Y) e
  83.         printf("Current parameters: \n");
    3 y  \7 ^' }$ E5 S
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 i) e& P5 {8 R% c3 ~+ B. h! ~( Q7 n
  85.         printf("  STBID: %s\n", stbid);
    1 j3 \8 t% p1 ^" N7 O
  86.        
    - O3 e& X: u$ Q# P5 o5 y& M9 Y
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");' \" V9 Y' e% ?  z3 |) K3 A0 h
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {* ~8 {, j' ]( t9 ?1 T
  89.                 printf("Input MAC error\n");
    9 v- M# Y$ h' R9 t' a: k
  90.                 return 1;% K2 c' l, P6 B6 ]4 E6 p) x# g6 {
  91.         }
    2 |  P3 X$ e4 Z* L1 q0 e2 h* _! S
  92.         for (i=0; i<6; i++)mac[i] = macs[i];& l9 |- I, z. a1 R
  93.         printf("\nPlease input new STBID: ");
    0 M2 X; D/ G& a" H* Q. w
  94.         scanf("%s", stbid);7 W. I# p) P, g+ o$ o
  95.         if (strlen(stbid) != 18) {
    ! A9 t' r# I4 A. B9 ?  ]& p
  96.                 printf("Invalid stbid\n");
    - g' t3 L9 B$ q+ Z
  97.                 return 1;
    " _) w( {' l2 f% W
  98.         }5 a' R. Q5 R1 U% ^
  99.         printf("\nNew parameters: \n");/ t( m4 J* Z0 [3 P
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 p& ^4 O$ t8 t7 O& m
  101.         printf("  STBID: %s\n", stbid);
    1 m0 g6 ]" f# }! s

  102. % J! G/ T& k# ~  a5 O
  103.         printf("\nDo you want to change paramemters? (y/N) ");0 [; [5 U. n& Z2 H2 d! ^9 @- Z) J, E
  104.         for (;;) {# l! p( ?. C8 N
  105.                 c = getchar();0 p8 o% j8 C, ~* [. c' C: l
  106.                 if (c == 'y' || c == 'Y')0 {& K+ x! G% J' I8 [/ q
  107.                         break;1 H+ ~" x( \7 Q* S6 D
  108.                 if (c == 'n' || c == 'N') {( x2 M. `" g# n' T4 G
  109.                         printf("\nAborted.\n");  C- r7 D; d" C; _% E  Q: u& ?
  110.                         return 1;4 F# Y2 @" V  ]4 P) n
  111.                 }
    , w, n# h6 N) G( x; @- v5 E1 d8 h& q
  112.         }7 L# T& F; P% j' Q! {4 X; f$ b
  113.         if (writeparam(mac, stbid) == 0)
    ( {$ o3 W9 {- _* ~7 h
  114.                 printf("Parameters changed.\n");0 I" j: g8 Z9 ^+ X7 g

  115. 7 a  k5 {! Y& p% T  N# [
  116.         return 0;
    6 r2 p6 W& D9 Z9 R2 v" C8 C
  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
6 D1 O; B9 x# ^& ]0 _在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
' `8 r. Z* M$ H* \2 T
你用的编译命令行格式是什么?
" B  ~+ p6 a$ n0 y7 `+ R
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部