找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15481|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr0 T" k- j" ?6 v0 i- Q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig6 e# \1 a/ A, S* ?
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; v6 B3 L5 @8 `. F) k1 o
usage: himr <address> <value>. sample: himr 0x80040000 0x0
# b6 g4 Z! V7 n; G4 d3 e, o; m0 N& `% a# f7 ^, g. T4 `, I7 V: J
$ R8 V# T7 x1 h8 H# h! F* B
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?: b- V- x3 d% ~

! V! J. s, E6 [; p' R补充内容 (2012-3-8 09:42):
+ e' W" Z( ?/ A, Z; j' Xhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数& n' ~; ^4 E1 m+ m  M4 o
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。/ s, a, ]8 o; N& \# ?, r" I% z

5 a0 _4 Q5 q% U% u* _0 vhimr <address> <value>. sample: himr 0x80040000 0x0
# x% I& [+ A; f7 z1 B5 S! b
2 q6 ^$ w+ a$ t5 d1 s! R' G6 |例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
/ |0 g& t4 R0 `himr 0x80040000 0x00
7 o; F& c3 t# Ahimr 0x80040001 0x11
# \, M. X! _( D2 p( p$ r" W' J1 r5 w2 Thimr 0x80040002 0x224 G3 I3 \, M+ G9 S  t; K
himr 0x80040003 0x33, h7 K# q( z9 O; H* |
himr 0x80040004 0x44
6 e- A* x1 f5 p: P& T( P7 b  bhimr 0x80040005 0x55: y& [' m/ _: C! A1 e" T

2 y& L8 g7 g; a0 s& m5 _& M9 ^SN也是类似。
: S& X/ p9 r* S6 y2 f5 c, X3 z; T5 E. L& h* C* V, B7 v
现在主要是,谁告诉我们MAC和SN的地址?
8 j' n, z7 s" u
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
, ~8 @2 U5 A' C3 q$ e% g- H一直想找到运程修改MAC和SN的办法,苦于无解啊
! V% q; R7 h2 `, H  J
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ) f1 w1 Z% f: u; A. |2 h
. [0 }6 b8 O( x" I, n
修改的代码早有了。到今天不会编译。- |! X1 @9 a) F- A" `
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>! [* L( K1 x/ _& q$ z2 X8 D
  2. #include <malloc.h>4 Q0 C5 h: z1 F1 F) F2 ?
  3. #include <sys/types.h>
    + Z! v, Y6 {: Y; `9 J
  4. #include <sys/stat.h>
    6 [- C0 \2 P$ I- ~  Q0 Z
  5. #include <sys/ioctl.h>
    1 H7 H0 d( G5 h
  6. #include <stdio.h>
    0 V" ~4 o* Y2 P$ y" J1 v7 g  o
  7. #include <string.h>5 j# S  h8 |7 X: o9 u! ~
  8. 0 e9 ~. C, Y$ {* N1 x
  9. typedef struct {
    , }" S! S( |# [- Q; i
  10.         unsigned int        e2prom_cmd_sub_addr;
    " X, j! Z* A& D. f0 k, }( {$ L
  11.         unsigned int        sub_addr_count;
    - m* S- f: a# L! ^" f
  12.         unsigned char*        e2prom_cmd_data;
    2 e! Q9 D! K0 T- v- r
  13.         unsigned int        data_count;
      p0 p) _( U, m; O) [
  14. } e2prom_s_cmd;/ [2 c1 u& F7 h6 d' Y+ \! T

  15. * `. W1 g3 R* _( j* b$ o
  16. #define E2PROM_CMD_READ 1
    * [+ A% r, @, T7 s# Y# A. c4 l+ s
  17. #define E2PROM_CMD_WRITE 2$ }" V. {# ^) r; O* e! P9 P* P
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"' S. g9 t  D6 v3 X( B
  19. 0 f% J2 C8 K3 r- X  O+ y
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    . _, O8 \1 o8 P  {; L
  21. {
    + n( K3 T  e8 r: I4 H
  22.         int fd, ret;
    & j% G5 X- a# G" M! }- Q3 x1 n# |
  23.         e2prom_s_cmd arg;" @4 ?/ o3 t  x2 U) }( ?7 c- z$ u
  24.         unsigned char buf[0x18];5 v  Q, x% M8 q
  25. * U) @# x/ ]# S$ P' z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);6 O" a4 }7 ?1 U6 L' p$ N5 e
  27.         if (fd  < 0) {& _* g3 ~$ _. e8 f+ V
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 y  b0 s: ~; D/ E) _+ [) C9 V
  29.                 return -1;
    7 ?5 a' |6 T/ B# l6 \3 v% {" ]
  30.         }
    % U/ L1 L: d* _- K/ N
  31.         arg.sub_addr_count      = 2;1 h+ \( X! n+ |8 l5 c; C* `
  32.         arg.data_count          = 0x18;9 n, n5 P  Z/ q3 ^# ~! F3 Y
  33.         arg.e2prom_cmd_sub_addr = 0x290;& S/ V/ E6 W$ s' Z  e( |# E& k3 J
  34.         arg.e2prom_cmd_data     = buf;6 Z$ Q! L  L9 y. |9 p5 k7 I' q
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);. G+ u; `! o, y$ k, K
  36.         if (ret != 0) {) g- M: F0 u% k0 `$ i) ]. v) I; ?
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);* ~" c4 R1 m- ?
  38.                 return -1;- |  \' z5 P& j4 s
  39.         }
    ) a$ n) {1 a) V4 Y. H
  40.         memcpy(mac, buf, 6);$ c1 R! k+ f9 d* l. j1 l! ^6 R
  41.         memcpy(stbid, &buf[6], 18);
    8 H* u+ `7 r7 P3 j' r* T+ J1 Y  m
  42.         stbid[18] = '\0';
    ; q& x# B1 G* |6 {

  43. & R1 W' N. G$ W; c+ p' g- [
  44.         return 0;* Z+ f, D- f# G6 s1 T/ Y; @
  45. }
    / Z3 k  L+ I) N* `8 A0 j, O5 T1 e( G, u4 m
  46. ) N* a9 i$ T) W4 O* R
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    6 C. \2 ^& {8 P; p2 _
  48. {; T' T: x. v6 n, f3 j5 _  A
  49.         int fd, ret;  N3 {. C+ {- A# c  E& ]  z2 L
  50.         e2prom_s_cmd arg;: y- Q1 W6 D# M/ R" u
  51.         unsigned char buf[0x18];
    ' Y2 o  R2 q& l3 J
  52. 7 P5 t6 l5 r" a$ c  y9 ~8 o- n
  53.         memcpy(buf, mac, 6);$ Z: p5 J$ Q( n! e
  54.         memcpy(&buf[6], stbid, 18);
    ! @( e. M. r/ c0 T: P
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 }# t. y, b9 s. I% ?. Y
  56.         if (fd  < 0) {
    * \( {4 t- r& a: C
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ i' p- X+ l" i4 A0 w
  58.                 return -1;$ z5 l4 N9 ~9 V, b( F# l
  59.         }
    . G! E' }0 S$ b8 ^& S
  60.         arg.sub_addr_count      = 2;
    . ]# c+ G. A2 ?; ~
  61.         arg.data_count          = 0x18;& e6 l. |" h/ {( i  ?
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ( {! Y* u- Q1 o4 g- D7 j; y4 Y
  63.         arg.e2prom_cmd_data     = buf;
    2 Q( g6 ]/ J! j2 @7 k
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    : D, g: y9 a* r  [" S
  65.         if (ret != 0) {: L* \5 M( ^6 D5 y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    7 D& U* s+ i5 ^' d& n. X- j0 K9 m
  67.                 return -1;
    ( [. D/ y: G9 X! w$ v* B9 m' F
  68.         }# _3 j0 u1 q/ O! Q

  69. $ [& v5 X( T: ]% P4 H5 i( O
  70.         return 0;
    : t' O: _- e, N; b  |1 F: E
  71. }" ?4 ?: q* o" x3 ]
  72. - l! R/ V8 t! v
  73. int main()
    $ [, ~) U, \4 f, G: j2 i
  74. {
    6 r; s3 N6 K+ e% @' h" Z
  75.         char c;
    . D* Y- d, W' m/ u
  76.         int i, macs[6];
    ' K. E+ c; L( b$ {
  77.         unsigned char mac[6];1 Z3 x3 l/ h" Z: P9 d
  78.         unsigned char stbid[256];8 Y' g$ x) }1 h% p; n. K& d% |- C* f

  79. $ v: o' K3 T, C- M. e) P
  80.         if (readparam(mac, stbid) < 0)
    : i, h: d: B, v  B* u9 K( B" S" ^& G
  81.                 return 1;
    , B% J7 S( W  o8 _
  82. / C# L0 V. p+ O" R
  83.         printf("Current parameters: \n");
    9 f! A  \: S' ?7 i3 z0 c
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! J; _/ {5 M. \' ~. J) X( W
  85.         printf("  STBID: %s\n", stbid);
    4 ], o  {1 o( S8 }- M% v
  86.         + V: C1 ]$ S. H' t
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    2 t0 H- Z% y- @7 T, s- m
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    + H% B3 v" U: E* u
  89.                 printf("Input MAC error\n");
    : q( J% @1 N9 n# A1 A  S% a
  90.                 return 1;# C0 M$ J  X, \* j$ \
  91.         }
    / y. i' Z; w8 U& n
  92.         for (i=0; i<6; i++)mac[i] = macs[i];: E9 A$ N3 g" D* R
  93.         printf("\nPlease input new STBID: ");3 R" O$ w+ ^1 D6 _7 {  @+ P6 V- U
  94.         scanf("%s", stbid);0 p: N) L  h$ p0 I  ]8 o7 \3 x
  95.         if (strlen(stbid) != 18) {
    5 H; q- D! S) w! \7 D3 }& A% j
  96.                 printf("Invalid stbid\n");
    0 j, |, _8 q7 L8 D. O) h8 n
  97.                 return 1;; \1 A: O% A6 @% P7 n
  98.         }
      u: s" M) X( x0 Z$ Q% I% l
  99.         printf("\nNew parameters: \n");- E% }, ]# c' V! y- i
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& t& [( \8 r" U
  101.         printf("  STBID: %s\n", stbid);' \4 D; [! Q# T! P& i; ]

  102. ' h! O/ @. ^1 A9 `. S
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ' m. I( g  G4 C5 J% J, K
  104.         for (;;) {% d2 K7 C1 x$ @& Y6 G% S. ]
  105.                 c = getchar();% ~" O- v- U1 R2 M9 w+ z: s
  106.                 if (c == 'y' || c == 'Y')) q# }: v# }& c) X' K
  107.                         break;& [# \; F9 q- ]8 Q1 l
  108.                 if (c == 'n' || c == 'N') {
    ( R; Y+ q* ]% t
  109.                         printf("\nAborted.\n");
    , R% X3 o3 H) b: S# M
  110.                         return 1;! H8 {1 }* G/ g# I0 a
  111.                 }; \. U% z" k6 c5 W
  112.         }
    4 O4 F: A% n  Q( Q7 b/ s( J* S  q
  113.         if (writeparam(mac, stbid) == 0) . c7 W" \8 u9 V5 Z7 X/ I+ j
  114.                 printf("Parameters changed.\n");
    $ j3 J: M7 c. L
  115. 3 P9 q, e$ R0 j: i5 S' ^& q
  116.         return 0;
    6 m2 t$ T: K: k4 n( e4 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 . \# ]( K3 r' ?+ @0 v
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

7 ?3 X2 z8 D! v! }1 m6 L( @" [* L0 C9 K, J你用的编译命令行格式是什么?% d9 F! h) g9 @/ j. z: C
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-2-10 03:51 , Processed in 0.029053 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表