查看: 16754|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    9 U3 `  t( e1 \$ n) }, m! g
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    . Y0 ]( x3 ^7 J
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
& J' r' P1 X  V# N0 W0 |usage: himr <address> <value>. sample: himr 0x80040000 0x08 x- r% {. S0 N* o# ?$ Q( z
/ {! v/ \  {5 {6 t$ Q
! }( ^3 n7 G* H
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
) }" D' e, t+ n1 T0 G) n- B* u- I; O) q% w: r
补充内容 (2012-3-8 09:42):( C) g& V& G' ]
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数$ t: m9 R: o/ V! m- |
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。9 k0 @- Y( W9 |2 ^% ]  x

$ X! {: Q) w5 o: d/ Y& Xhimr <address> <value>. sample: himr 0x80040000 0x0
4 l3 }# V3 i" u7 x( q# v2 s# `' U& Q$ x/ X$ y/ i. K
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。% ]7 S* ~1 X3 ?8 W( v
himr 0x80040000 0x00
( ~3 X' g5 I) k+ @himr 0x80040001 0x115 E. l8 N) h9 C
himr 0x80040002 0x22! u) z8 ^. H1 Q# b5 y. t3 c2 b* R
himr 0x80040003 0x33/ @6 T5 K# M: X# }1 F7 W
himr 0x80040004 0x44
) p) F8 Y0 b3 O% ~5 Mhimr 0x80040005 0x55* Q- Z4 r- b+ ^( @' a8 ]

- ^2 [3 a* a3 ^+ l) xSN也是类似。
/ c1 J3 \: k9 p& ^6 N  ~) F
  U0 J7 g0 o0 _( W现在主要是,谁告诉我们MAC和SN的地址?
* z$ h3 ?) ^" e* `
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
3 |$ |2 E$ r/ G  v6 d7 D一直想找到运程修改MAC和SN的办法,苦于无解啊

% K; \  w* V5 Y! p% r源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
, l) c- t: F8 s& w( \1 F
) S* `2 p7 {. \* t1 O修改的代码早有了。到今天不会编译。
" I+ b9 }3 c0 I& t. j# U需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    8 `- J' e' i3 F, m# k
  2. #include <malloc.h>
    " m" N' ?! C1 @2 B( s
  3. #include <sys/types.h>" N' x7 _9 g! G% J
  4. #include <sys/stat.h>: M& z4 Q) [+ Z8 i3 Z6 B
  5. #include <sys/ioctl.h>
    * b. `- E0 S/ @- H: z  D; S
  6. #include <stdio.h>
    ( h  [$ X" q$ F7 g& w
  7. #include <string.h>
    ( P; `* d5 q, ~  i  M0 B: x

  8. 5 O# }# i8 R$ I. q7 |
  9. typedef struct {
    ( `2 Z) c' i. M) ~8 b
  10.         unsigned int        e2prom_cmd_sub_addr;9 q9 h" o, p6 ^& E- v+ n3 O, p& C
  11.         unsigned int        sub_addr_count;2 \# U* X* Z2 k2 I# z
  12.         unsigned char*        e2prom_cmd_data;
    3 ]8 m% F0 H$ b; n5 @8 |
  13.         unsigned int        data_count;
    & m% y9 N/ T) f5 W4 j0 @1 V
  14. } e2prom_s_cmd;% H, t" u4 g4 y' e
  15. 3 p" l1 H( U) Q
  16. #define E2PROM_CMD_READ 1
    3 G- v! g/ \: E8 ?9 i( D* c
  17. #define E2PROM_CMD_WRITE 2" r) K2 `0 A! A+ w; ~# _. p
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"  p: v! y% i& X3 u' r4 _
  19. 9 ]7 n& L* f9 s7 U; o$ E# C/ ]
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    0 V8 O5 x7 N6 S; E( Z
  21. {
    ; B4 \8 C) l' a3 k
  22.         int fd, ret;
    5 h* [# Q; [! T. I2 \# z5 d
  23.         e2prom_s_cmd arg;
    7 a& t* d" k& x0 [% P; ~( @
  24.         unsigned char buf[0x18];" G6 o- ~( R2 x6 v& E9 ~
  25. * h0 r7 P( _5 j% W' e9 \) R: A/ u# D
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    " ?8 g; |9 |/ k# `4 g
  27.         if (fd  < 0) {5 t# G+ B( N0 V* D( W
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , \' _5 I; C" O6 Y
  29.                 return -1;
    & Q' q" @$ ^$ [
  30.         }6 }0 r3 }; A1 \
  31.         arg.sub_addr_count      = 2;  A# n* d: k/ E& [0 F* v
  32.         arg.data_count          = 0x18;
    & N! U4 m. Y- a6 T; e& \" d
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ' }5 @9 j. U" B
  34.         arg.e2prom_cmd_data     = buf;4 M0 W3 L0 \/ Q/ e
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);6 s# b5 V. e9 [7 k! [4 Z' |1 |2 H
  36.         if (ret != 0) {/ _, J; K8 Z6 E2 J3 T! Y* X
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    - t) k* \! ~2 ?. u
  38.                 return -1;9 g+ k  }: h- K$ N2 ?& n( A
  39.         }
    5 |& U# V: O; e; i+ p/ y
  40.         memcpy(mac, buf, 6);
    - _! B+ Z, a! ^( K
  41.         memcpy(stbid, &buf[6], 18);
    2 H5 J6 R4 Y9 _' W- q/ }
  42.         stbid[18] = '\0';8 D  c4 f9 g' X, h1 H6 R
  43. / r# h8 T% |% ]5 h' G% s( M1 U- G
  44.         return 0;
    2 \3 j+ h9 Y$ u& T
  45. }/ P5 _- t+ p9 `0 s' |" h8 C% f

  46. 8 s4 o4 Q: D& O" E' O) p) Z2 t
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    $ R* h6 |6 r  @2 ?2 ^' o
  48. {) C& L4 Y; }# [* J2 @( b. |0 R
  49.         int fd, ret;0 l1 R1 W$ e  X* N
  50.         e2prom_s_cmd arg;
    - w% H2 ^; |$ u, w. T6 B. z
  51.         unsigned char buf[0x18];
    # g! C) o3 t5 g  v

  52. $ a) \0 ]  Y  j; S! d* N
  53.         memcpy(buf, mac, 6);0 F4 C3 L" X* w3 X0 Y+ m  }5 {
  54.         memcpy(&buf[6], stbid, 18);
    $ V2 s' t+ R, V* l5 |
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! N( }: f( u: A: C0 _
  56.         if (fd  < 0) {9 j6 C. W8 g4 X( V8 C
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' y" o/ Q: x* r: s. }3 e$ @# Q% a
  58.                 return -1;
    3 w' i, d; t( _% }* E: B4 R9 c$ B
  59.         }
    / j8 V  K1 O6 F; ?7 @2 q
  60.         arg.sub_addr_count      = 2;
    / Z- J7 {1 d) B: `3 s% g
  61.         arg.data_count          = 0x18;
    7 Z& T; C! p) F" b/ L
  62.         arg.e2prom_cmd_sub_addr = 0x290;* @' z# h- w5 P( w, c
  63.         arg.e2prom_cmd_data     = buf;2 g0 }5 O+ F7 p1 j+ A
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);" j4 A: a  t8 ]& E
  65.         if (ret != 0) {- _1 d* l; @: s$ g
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    8 s$ t( Z* \! c; r
  67.                 return -1;# O9 j) b$ S4 a6 J5 a4 k2 v" r
  68.         }9 R9 {6 y' ~3 t) _' y+ C8 Q: |
  69.   O$ f9 B4 f( e% S7 c, N4 b$ q
  70.         return 0;& _0 U1 E) ~& E4 B, W
  71. }$ V0 w# E$ V* w+ z$ q

  72. - X6 U0 Z$ R& j
  73. int main()
    $ _4 V" o3 X; B/ D
  74. {- J8 Q9 P# h& n# x! `( h
  75.         char c;
    # j7 [7 S8 Q4 j$ n1 W% D
  76.         int i, macs[6];+ h  p# ?7 ^5 E+ S9 S; ]
  77.         unsigned char mac[6];
    - ]$ ?) V; n% w0 t' R
  78.         unsigned char stbid[256];* q  N) J+ ?6 Z) p6 I# n! k3 Z8 @

  79. - w9 T+ g' F5 R1 X( [
  80.         if (readparam(mac, stbid) < 0)
    1 A3 b# f2 C6 }6 |8 ?7 T
  81.                 return 1;2 Y* C" h1 z3 W+ L: r( I( z
  82. 1 i5 Q; L' y3 C9 @  e
  83.         printf("Current parameters: \n");% J% y9 {9 J! E' t
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. g; i  Q9 S, y' f
  85.         printf("  STBID: %s\n", stbid);4 w1 B  G) }( A5 l5 _3 [
  86.        
    # c3 |' v) w+ k8 B5 x
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    $ _; S: q/ w' ~2 G7 N7 [/ d
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
      Z9 R' _# y: w* g- l* g! y+ l
  89.                 printf("Input MAC error\n");
    0 W% s2 |2 `  D; |- j! m2 G9 z
  90.                 return 1;
    , N7 p$ Z2 j) K! `, o' t* c" O
  91.         }
    ; l9 P" v1 W  P! r9 K* d* n
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ; V+ w* r# e- {' x# X
  93.         printf("\nPlease input new STBID: ");
    9 z: U) j3 g2 T3 ^8 M, G/ B2 r5 H
  94.         scanf("%s", stbid);
    4 w* R3 W2 i+ j7 B# D" r: U3 J& @+ O
  95.         if (strlen(stbid) != 18) {
    ' t2 |  i$ x1 s) C
  96.                 printf("Invalid stbid\n");
    6 o/ w- X3 }! Z/ Z9 d3 z* y/ Z
  97.                 return 1;
    ( T4 b: B  ?) \# _0 F% X- ^  d
  98.         }9 t) Q. O1 w- q' K! t
  99.         printf("\nNew parameters: \n");# D* g% N- a. V: `- K. i, ~
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * k8 R0 Y/ F  {
  101.         printf("  STBID: %s\n", stbid);: ]1 n, r8 R7 C6 u# e7 E4 L! l
  102. 6 H1 n' o0 t7 P% t% l# ]
  103.         printf("\nDo you want to change paramemters? (y/N) ");# y2 M0 Q$ b* l6 ?
  104.         for (;;) {
    1 |8 k4 [( f8 W/ G
  105.                 c = getchar();
    $ x- J9 u# Y1 _. w6 N9 m1 T1 c
  106.                 if (c == 'y' || c == 'Y')% Z! S0 q: J7 A$ o
  107.                         break;- G* \  w3 a7 ?
  108.                 if (c == 'n' || c == 'N') {; o* Q& x: C6 i0 H
  109.                         printf("\nAborted.\n");3 H) Z; O( s* d3 q/ E
  110.                         return 1;: ~% v0 G) R& c) G1 K$ @6 O/ J8 [
  111.                 }* \/ I& z' O6 T3 N' A7 q
  112.         }
    + n+ D) g$ ]: Y9 m3 Z# F" P# ]$ m9 |
  113.         if (writeparam(mac, stbid) == 0) + @4 C9 B! \) l2 `$ N
  114.                 printf("Parameters changed.\n");. x; l: h% l4 l* N" h% a* e5 Z2 F

  115. " g1 V; k0 H$ y8 A% C. K" H
  116.         return 0;
      q) z- [8 U6 s) a
  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 ) ~/ K4 P! E. H% Q% Z3 r
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
1 m( N5 w$ c# x. }  M
你用的编译命令行格式是什么?: Y3 n/ N1 g! W: b- I2 I
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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