查看: 16797|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
      o% Y2 V3 P5 M# G
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    7 V4 r+ V8 Z; W# t% Y' w# D
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
! q  P  Y; w& p) n# V) I! ~usage: himr <address> <value>. sample: himr 0x80040000 0x0
5 f# Z5 r0 |9 R% v/ s$ h9 x+ z/ v% i) k) T  \, T
1 T$ n. l7 o4 v; Q9 F
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?5 I3 u+ i7 {' s$ B6 c/ Y0 m
# q  M+ ^: q1 ]5 W
补充内容 (2012-3-8 09:42):! K, m! v$ x6 H4 j
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
4 S' |- Q8 w# N! ^' j9 v这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。# w! V* Y& j3 z+ O8 B0 _
+ u7 c% b1 x0 X& Y! R  }& {
himr <address> <value>. sample: himr 0x80040000 0x0
$ \% `- n2 h% d5 o7 n4 r1 I: _! Y8 M. R' C# L, ]  x2 }/ F2 A
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。% j# R( A5 K/ q+ [  V$ @! X
himr 0x80040000 0x00
) t4 y  O1 g4 @  |0 rhimr 0x80040001 0x11) i% ~4 q; m" A* ~- ^
himr 0x80040002 0x22
) L- k: Z) ^4 Z2 qhimr 0x80040003 0x33
8 R0 S' l' R, h; Phimr 0x80040004 0x44
4 T9 `: j) S4 r, X) G) u/ Bhimr 0x80040005 0x55
* i: [, Q  ]: M5 a/ o
, B* G7 O6 ~+ n8 YSN也是类似。7 o( O; t4 s; P- y6 q
: o$ x: b; Y: H( e
现在主要是,谁告诉我们MAC和SN的地址?
' l" T# C7 s, n
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
$ C, G5 x1 E9 {: _一直想找到运程修改MAC和SN的办法,苦于无解啊

" B. E3 D2 T8 z/ z0 l* A源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
  ]5 g+ b: u" X7 _! z& c5 i7 {* }# t1 C
修改的代码早有了。到今天不会编译。4 Y+ P; s+ \- e( V3 T
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>* L; g2 Q/ t/ f( t5 T. [! d
  2. #include <malloc.h>
    # m2 ^5 W4 X2 o- e7 v/ `. H
  3. #include <sys/types.h>9 [8 r8 g- D" J5 ~& f" Z4 t$ M+ D8 k
  4. #include <sys/stat.h>
    2 ?1 b3 e5 \; d) D' i5 i
  5. #include <sys/ioctl.h>
    , v+ G# U  ^* S+ J$ T. s% U
  6. #include <stdio.h>
    8 h% e! E8 H) p6 w
  7. #include <string.h>( M) ]( D: s7 D; s0 F

  8. 8 e0 y) W# b) E7 E1 t( _4 B2 L! z- }& a
  9. typedef struct {
    # C) l# \2 c. s1 |
  10.         unsigned int        e2prom_cmd_sub_addr;
    & `$ s  v5 s0 U4 N& ]/ \% N
  11.         unsigned int        sub_addr_count;, T) c0 O5 t( X7 }3 E4 q% l5 U- N
  12.         unsigned char*        e2prom_cmd_data;1 c8 G% i, @4 c5 D, C
  13.         unsigned int        data_count;
    ) W& [) z, Q, `8 D) @
  14. } e2prom_s_cmd;' _& ]! i$ i* n1 \

  15. % Q8 ~' g% Q+ |( R. q5 n2 t4 @/ d
  16. #define E2PROM_CMD_READ 13 F1 W: q. [& y! N; v: \+ S
  17. #define E2PROM_CMD_WRITE 2
    ' d! [! k0 F6 J  Y9 n, z* c
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    , m2 Z  b/ W0 v, J. I5 d

  19. 5 i" d: v" z, \' ]* ^  e. W
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    $ r* j3 f1 x" x$ \; O
  21. {
    # c0 G! v) w: Q1 Y
  22.         int fd, ret;
    ( E$ U/ \* b7 G/ @+ C- @6 ^, W4 u
  23.         e2prom_s_cmd arg;
    3 i; J0 k' c; J/ m: f* R
  24.         unsigned char buf[0x18];
    0 \* B5 T/ b; A5 s) j3 }" o& J. b

  25.   m% p: m' u0 W* G
  26.         fd = open(E2PROM_DEVICE, O_RDWR);& K1 {) o! s9 ^, m+ ~& F& K
  27.         if (fd  < 0) {
    , w) y' Z- l% h& _2 p! i. H
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : h( \0 A7 l4 e8 j: E
  29.                 return -1;) X6 n; @: @7 i& X1 @! T4 v: x% s+ ~9 K
  30.         }
      o0 \2 g( }5 Z
  31.         arg.sub_addr_count      = 2;7 J9 s; S3 b5 m; C/ u  \
  32.         arg.data_count          = 0x18;5 g2 }0 s2 M% g. D
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    - e7 L( B2 [) K; r1 \& U; m  Y4 P
  34.         arg.e2prom_cmd_data     = buf;
    $ D, y; i$ s! `, K1 V5 j- S
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);; @2 a4 x7 t4 U+ t+ C+ n! E! j, g7 S
  36.         if (ret != 0) {, B# C0 c# N8 `  [$ `$ E
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    7 d. j+ O$ L7 J
  38.                 return -1;
    # q) ]% C6 W* a% N
  39.         }) i' }+ O4 ~( H" f6 D$ y
  40.         memcpy(mac, buf, 6);
    ) L* i! b- h, \8 p% ~: L
  41.         memcpy(stbid, &buf[6], 18);' ]. J& v7 V7 H
  42.         stbid[18] = '\0';5 S2 \# B4 J+ ~- `' `4 e

  43. / _" ^1 Z% n) |' Y8 ^$ h
  44.         return 0;; s- C+ @( y9 r; v% x) T9 ]/ c( `
  45. }
    : N  b5 Z. q$ ~% |/ b, n- }4 W
  46. # J5 i1 `; g5 p) S* m2 l
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    6 C9 _/ o4 `0 m3 b  K( U
  48. {8 f1 C: u* U% o* P  T
  49.         int fd, ret;! w# _& p- F) D, P" X
  50.         e2prom_s_cmd arg;
    0 u* ?+ K4 q6 b# V
  51.         unsigned char buf[0x18];0 x: A0 z8 a! T; ?. Y2 o6 @

  52. 6 |: b$ C7 P( Y: A/ q
  53.         memcpy(buf, mac, 6);/ [- u8 b* _$ Z- p, c
  54.         memcpy(&buf[6], stbid, 18);
    " z: k5 Q2 w4 s" X  P9 h, A
  55.         fd = open(E2PROM_DEVICE, O_RDWR);5 D& x5 T8 B$ M& G: F3 V
  56.         if (fd  < 0) {
    ! E1 D! c! T/ B  N
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);( n5 h) D6 O7 o% y
  58.                 return -1;
    8 e2 Y3 I! R: \0 k; K: O
  59.         }
    ! Z- z+ E- ~' b7 q  V7 q
  60.         arg.sub_addr_count      = 2;
    7 [( L( q6 _2 }* k7 i2 e1 l" G
  61.         arg.data_count          = 0x18;
    2 E, ~8 A$ m0 W$ C* F
  62.         arg.e2prom_cmd_sub_addr = 0x290;) ~7 Q' s, i7 v+ d/ T, n2 J  U% c
  63.         arg.e2prom_cmd_data     = buf;1 T' X) _0 `" M8 t0 T% D
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);" `! q6 B, }: G- J0 z
  65.         if (ret != 0) {- |$ k" F# G* y6 o) K: B5 l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);! K6 z6 t( N! E, r' Z# j# g: H/ |
  67.                 return -1;
    5 B3 T0 N: S# H( u9 E9 c- E
  68.         }4 q  X( e: g( R! L7 {, X3 Q% C

  69. ) w6 n! V) e9 Q  P
  70.         return 0;9 }! K0 y5 X: J
  71. }
    8 k. c) ~* Q. C3 y1 h! Z" \+ j
  72. $ e4 b& _) O; v
  73. int main()1 B$ Q% i$ e5 }( A0 c
  74. {: Z$ L; T4 o! T" G
  75.         char c;& o) \6 }9 c; @
  76.         int i, macs[6];7 V) s/ p* [  i& d" s3 Z) u% A
  77.         unsigned char mac[6];
    * `! u2 F4 p/ V$ I2 \6 |
  78.         unsigned char stbid[256];
      P4 `, S- _0 G+ u  f

  79.   T% P( M. `: L3 r
  80.         if (readparam(mac, stbid) < 0)9 i/ [' G- x) ^- o* ?2 T8 w  Y
  81.                 return 1;  Z/ c; i, U* t% Q2 H4 E7 H  G1 b

  82. 5 c0 G4 _' U0 m/ p3 J
  83.         printf("Current parameters: \n");
    # \6 S$ }+ a7 f2 _- A3 g  `6 }+ [
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 T+ a6 E; O' Z# [/ L* w
  85.         printf("  STBID: %s\n", stbid);8 X  Z5 V. W) Z! x6 q7 x  ?# K6 B
  86.        
      o! q. y, t* F: ?' }
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");% R: e, K9 O) O
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {0 x; Z: a6 ~" q2 `" j8 i
  89.                 printf("Input MAC error\n");
    . T. m0 j) h8 r! G: {. g5 @+ Y
  90.                 return 1;8 S4 ^# `9 }; j* J. K# R2 A
  91.         }9 W: ?* T) c+ ?( o
  92.         for (i=0; i<6; i++)mac[i] = macs[i];2 @) v0 Z) w9 L$ e+ k# Q
  93.         printf("\nPlease input new STBID: ");
    # d8 j6 r# {4 o7 F) T# T$ C
  94.         scanf("%s", stbid);
    ( n" H. D, s3 H
  95.         if (strlen(stbid) != 18) {3 y1 v3 Z6 X1 L9 u+ u1 c
  96.                 printf("Invalid stbid\n");2 O9 @% {3 X6 V
  97.                 return 1;- O) g- u+ p4 T/ W
  98.         }
    5 Q3 D. V7 j) C* w  s
  99.         printf("\nNew parameters: \n");
    ! H5 k. s2 j" D7 l
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);$ a! }# a$ d5 Z' }0 R9 h
  101.         printf("  STBID: %s\n", stbid);: W& ^! n& B0 c, e

  102. ' g9 k! e2 @' K; a2 h
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    & m9 F0 @3 z9 A3 |
  104.         for (;;) {
    / ?3 j. w8 S7 G  D. a
  105.                 c = getchar();$ X! l5 q2 @% t; C
  106.                 if (c == 'y' || c == 'Y')% Q8 z& _  D6 U* y
  107.                         break;
    ; w4 A9 V6 a  m( U% {/ t
  108.                 if (c == 'n' || c == 'N') {5 D, v6 F, B' O# j  F
  109.                         printf("\nAborted.\n");
    2 Q; Q& [( ]8 |' X
  110.                         return 1;$ d' N* K3 v: u7 d5 c% }
  111.                 }
    8 G1 C4 \2 w/ [# Y9 j
  112.         }
    - V! t# j8 ?7 B/ K: B7 M3 d' c7 J
  113.         if (writeparam(mac, stbid) == 0)
    3 \; r+ J/ k; S  b+ h6 y# c
  114.                 printf("Parameters changed.\n");
    - L- _6 @  _0 h' e, L
  115. " `- ^6 ~  q6 L7 Q
  116.         return 0;! ]" _; o  M: {, W6 }
  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 / ^3 I0 {/ |7 c! ^5 V: y& j" Q
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

( e8 m" o& p# P你用的编译命令行格式是什么?% T& R, g* |" |7 G6 y$ T0 ]
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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