查看: 16545|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr4 d8 X9 Z$ B2 w+ k/ ?0 f
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ( B6 c0 E: \; T9 h' z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:2 e/ O" Q$ J% u. v4 V  G
usage: himr <address> <value>. sample: himr 0x80040000 0x0
( M# U2 \) W6 j# k1 q) U( o2 l# S0 H4 K. v9 O
% ?: o; I5 @3 r' j" W- j
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?! r% Y3 `$ A% w  n
; |8 u) G4 H  k- y; ]
补充内容 (2012-3-8 09:42):
. r0 j: r$ l. P4 rhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数$ g) }+ E: Z1 |& a* L; s; ^, ]
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。& @/ o" h. b6 h' b- `" E

* R4 T' v2 ^* U0 C" P9 E, a: Jhimr <address> <value>. sample: himr 0x80040000 0x0) G& R2 _$ ~, b) V: Z5 y  n
/ P+ y- L" S0 d' q3 W+ d" I/ M
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。8 w7 c& T9 w2 V8 O
himr 0x80040000 0x00
! Y) y  w  B9 Ehimr 0x80040001 0x11
. u' Y# D" u! a8 Whimr 0x80040002 0x22
6 {9 M/ m" O, {1 G' |% Z2 \9 f2 ohimr 0x80040003 0x33# m9 O0 r, f5 R/ O- ~7 `) `
himr 0x80040004 0x44  Z, v* k5 C- e! n. k1 M
himr 0x80040005 0x55
; U9 H& H1 {+ P+ l  y
# R6 J. F6 Y- l& dSN也是类似。
: u: u! ?; A" U4 ^  D! w, F# U9 B6 j% @
现在主要是,谁告诉我们MAC和SN的地址?6 X0 m. K) f. @( u% }
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 # v: ]9 u5 o5 K/ f* K$ L
一直想找到运程修改MAC和SN的办法,苦于无解啊

+ _* @/ {/ Z* ~# F  |+ O$ D( C. r源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
" m$ c/ z9 U0 H7 Q$ E* `: O& \- A6 k+ f/ I6 q# t
修改的代码早有了。到今天不会编译。) w5 z  k% _# \0 Z# \) p/ B2 W3 l
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>$ K) A+ J/ X: `
  2. #include <malloc.h># ^8 d" \) t5 c: m9 J1 o: O& \
  3. #include <sys/types.h>% Z1 j8 X; w" g. v) M% X
  4. #include <sys/stat.h>, F9 W. T% k5 H3 R/ L1 {' D3 f
  5. #include <sys/ioctl.h>: w' h1 l' ]' t2 o7 @5 v: [
  6. #include <stdio.h># g8 G# e8 b5 R! c0 N: H4 x2 H3 J7 q
  7. #include <string.h>
    4 a1 f; p6 K+ }& ]% `* T
  8. . X9 w, T# T7 _. y( m
  9. typedef struct {$ y7 Q/ P  I6 ~2 n- ^4 a9 l" O% V
  10.         unsigned int        e2prom_cmd_sub_addr;
    1 l! }& Z8 T% q( I! a7 F3 d: J
  11.         unsigned int        sub_addr_count;' K: o- A9 J7 ~& L( [5 P1 m$ _
  12.         unsigned char*        e2prom_cmd_data;
    9 |) B$ h2 G. {$ _: p
  13.         unsigned int        data_count;+ C! I. \9 j" R# I9 l
  14. } e2prom_s_cmd;! H0 W4 o; L; ]5 m* [6 f) `9 u
  15. 4 |6 K3 z8 q0 f5 D: c* o2 {0 {
  16. #define E2PROM_CMD_READ 1
    ! z6 z$ V2 j4 O5 d/ A# \: o
  17. #define E2PROM_CMD_WRITE 2
    " R9 a* o0 M4 d1 @! C1 d5 E
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"4 ?, g5 z" t2 Z4 |: u4 l( K' m

  19. ' n# r' V; j7 u, a* U5 Z+ O
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    " B$ L: ]) r: K' G
  21. {
    ! d1 I9 D1 H8 t: M7 o7 G; P: M9 e
  22.         int fd, ret;
    4 N7 T, X% ^% Y! `6 W/ }
  23.         e2prom_s_cmd arg;8 Y7 L6 \" E0 `* H3 g% U
  24.         unsigned char buf[0x18];% A6 G  l# W. m. {) ?4 l

  25. / m( z& D5 X4 e$ x" l6 C
  26.         fd = open(E2PROM_DEVICE, O_RDWR);/ Q7 ?2 f3 `9 T. c0 ^
  27.         if (fd  < 0) {1 A5 b0 ~0 }: m
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , X4 r' c/ j. z9 u$ B
  29.                 return -1;
    ; r4 d1 t4 |5 B' G. C
  30.         }6 {1 w2 m& M) v/ W' t4 g% q/ w
  31.         arg.sub_addr_count      = 2;
    8 q0 W4 x, E# b% Y9 L
  32.         arg.data_count          = 0x18;! x& Z$ S& R/ I
  33.         arg.e2prom_cmd_sub_addr = 0x290;& g: J; R$ U! F1 e
  34.         arg.e2prom_cmd_data     = buf;6 t, N/ F$ j: D# b' I$ Z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    , K4 \% ?4 X/ P# D7 i
  36.         if (ret != 0) {
    0 t: B" o2 V' Y1 s9 N% b- X
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    2 M: n/ c8 Y) ^- n+ W
  38.                 return -1;, x  F. p2 x9 ~. u5 B" ~
  39.         }/ y+ x+ V- T# C0 `" i4 p4 X1 D
  40.         memcpy(mac, buf, 6);/ p; R* m  J9 D3 k/ ?  H$ r! L% H
  41.         memcpy(stbid, &buf[6], 18);
    $ o. E9 q, E; A2 O% x
  42.         stbid[18] = '\0';
    : k  M5 N( j; _
  43. , Z# u, y% e  B# }: j; ^! K3 @
  44.         return 0;! _: Y" Q$ |2 [
  45. }
    ) H) F$ a/ }: ?

  46. - r: F4 v( \  r9 ?
  47. static int writeparam(unsigned char *mac, unsigned char *stbid); X0 E- @. }4 D3 Z& L0 W# @; N$ E, D
  48. {7 {. [# {4 j5 e" J, a
  49.         int fd, ret;) k* H' r: s# w# l
  50.         e2prom_s_cmd arg;- _* X* }# h3 {0 K9 t
  51.         unsigned char buf[0x18];: |) ]* g/ Y% u) Z

  52. 0 [7 ]+ h  h1 |: z% }# L
  53.         memcpy(buf, mac, 6);
    - D) w( E' K5 R
  54.         memcpy(&buf[6], stbid, 18);
    0 r$ N. ~2 V  b5 h4 B
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    / Y7 E- S6 ~. w5 E# i% K
  56.         if (fd  < 0) {
    6 {0 j% O) k8 k8 R9 M5 U
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 G- q5 j5 l! k, s
  58.                 return -1;8 [# _% A7 \, }7 p% u
  59.         }
    & g- a& P  U" B$ N# b7 S
  60.         arg.sub_addr_count      = 2;9 t, U3 r+ m% f4 N: U
  61.         arg.data_count          = 0x18;
      S4 d* k+ ]+ `
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    " P! n1 ~0 d9 I
  63.         arg.e2prom_cmd_data     = buf;+ G. p3 e& V! r/ Q
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);) d  K6 v4 ?" R  B  W
  65.         if (ret != 0) {
      ~, ^0 u$ ~0 j; J" V. O+ @: w
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);; a, p* _. }: r4 S* u" d
  67.                 return -1;
    ! B$ K2 G, w. b% G! [
  68.         }
    ) B$ R$ B, a: k/ s* h) _
  69. 2 |) z+ L# s9 f+ K
  70.         return 0;1 v3 j0 Z4 ~: B7 i; m# |
  71. }7 c! ?* E7 Z* C, z1 L* }
  72. 0 U% `& Y# B7 j6 d' q( e+ P9 N# _$ E
  73. int main(), \9 d$ V/ F' d# }
  74. {
    / L) s8 q  V4 ~7 a% P4 h' }; p: B
  75.         char c;* i! k6 C1 d6 V. B
  76.         int i, macs[6];9 t1 m9 j' f$ v5 b
  77.         unsigned char mac[6];
    6 R/ a9 O1 L( t2 o6 Q+ r: d5 ~# e
  78.         unsigned char stbid[256];
    % S. i: @& `0 H
  79. ! ~0 p1 ^' f) ^, Q
  80.         if (readparam(mac, stbid) < 0)
    7 @( A0 ]0 N* t, x3 ]
  81.                 return 1;3 ^7 m; _: ?" p- ?8 N. {3 Y" W

  82. ( E. F, }" L( r! X2 {2 J5 b7 b5 R
  83.         printf("Current parameters: \n");
    & P8 L0 V! B1 R. r- a& T3 K( k
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- i. H! T& A) I8 o7 M' ?4 Z
  85.         printf("  STBID: %s\n", stbid);6 ]  o; n; `) Y3 ]+ \$ Y9 R
  86.         : Y1 I8 ^% ^# M2 }( {
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");) c# j3 w9 r2 m. w' k$ }
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {8 j7 C* F  a3 I& b
  89.                 printf("Input MAC error\n");
    3 ^# |9 H9 q, i! d% O' h
  90.                 return 1;
    * S3 _, D  s: H
  91.         }
    # K7 Q2 U9 b4 P* P
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    8 e* P# C9 p9 O
  93.         printf("\nPlease input new STBID: ");1 m; f" v3 {( C6 j
  94.         scanf("%s", stbid);- k3 p0 y, A$ r4 G' o; g
  95.         if (strlen(stbid) != 18) {/ S6 H- C/ T/ S
  96.                 printf("Invalid stbid\n");4 |$ D- j0 s  f% S* h
  97.                 return 1;4 }# z3 X; N* g# p4 a) |9 f4 F
  98.         }5 [2 a' |/ H$ h! Y( h! b
  99.         printf("\nNew parameters: \n");/ _! j, x* c; `9 J* v' n( d9 t/ ?" S! N
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & S, a9 X0 U8 Z8 F0 n% U4 G# ]
  101.         printf("  STBID: %s\n", stbid);
      L, ?  m( k% z! |- Y& O  W' _

  102. ( X  w. \- y5 `, f1 J9 t  @
  103.         printf("\nDo you want to change paramemters? (y/N) ");, K: R1 Y! ~5 C  |
  104.         for (;;) {
    # q1 m2 N! e5 T9 T4 |/ v# Y
  105.                 c = getchar();8 R! v. M  U& H
  106.                 if (c == 'y' || c == 'Y'). p7 f$ k! R6 m7 x7 d; V
  107.                         break;
    , Y, r, J9 g: m6 E
  108.                 if (c == 'n' || c == 'N') {3 y+ O! Q* f( N' Y
  109.                         printf("\nAborted.\n");+ |% x( `4 q% r' u; j
  110.                         return 1;
    9 n% u* R; A) Z) K
  111.                 }  @2 Q# N. t  @$ Y
  112.         }
    7 q0 Q& F8 X( R0 f! r
  113.         if (writeparam(mac, stbid) == 0)
    " c4 [. c' a; i6 `- V; }
  114.                 printf("Parameters changed.\n");
    ; F# Y1 ?  n3 B/ e' U! |

  115. ( b7 L# b5 d9 d3 g% g# M* {
  116.         return 0;
    : t" Q# I$ O* K  S- i3 q
  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
$ K, c) |, R% {) p# H7 ]0 A在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

5 a$ ^/ G8 Z8 [6 D你用的编译命令行格式是什么?) U" s0 ]6 S) B: g4 k+ Y4 u
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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