找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15768|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    5 O& s. }; a, o+ O* N+ B) G( y, {& N
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig6 a8 ?0 W+ o$ T* D
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:) Q3 Y, @: J$ g
usage: himr <address> <value>. sample: himr 0x80040000 0x0* _* _6 U% C* {1 c; u+ q# ~2 z2 O
' I7 O2 Y7 R; T

5 Q- x3 v% D( s; `$ Y' N$ M不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& x' X7 c& f2 ]/ o" F* O

# ^4 F3 u3 y2 e) v8 a补充内容 (2012-3-8 09:42):5 s; b  [8 t" X# F9 G4 u& r) T" @
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数3 `8 g( d2 N5 Q% `# H
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。/ U% Z  t, y7 E
' A$ s# u+ v7 k/ ^) L
himr <address> <value>. sample: himr 0x80040000 0x0$ }* u4 h2 \3 q" N* u

6 d( m+ P- q; I: ]例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
  R$ z# R4 v8 e1 thimr 0x80040000 0x00
. w" Q4 d- D9 F$ bhimr 0x80040001 0x119 r! V) f0 d! A+ Q9 m
himr 0x80040002 0x22
1 X" S4 b' B3 X  v3 W) H! V! uhimr 0x80040003 0x33
. Y2 Y( @" t, e0 ]1 U, |5 O, Yhimr 0x80040004 0x44
7 @1 p9 @: V! \0 {$ C, Jhimr 0x80040005 0x55
" j7 i* I0 ]  g: z% s( v5 q! k& Z' y1 P5 k3 ^9 i
SN也是类似。
1 x( X- D8 R2 u/ J
3 w7 n! B3 R3 {8 N7 t0 u" |  A现在主要是,谁告诉我们MAC和SN的地址?. v1 F8 u4 ~& D! N5 w# [; I
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 & i1 F# Y" b1 I5 J
一直想找到运程修改MAC和SN的办法,苦于无解啊
# r/ n! B7 Q6 z. L. a% d
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 6 L2 K: D4 `+ i" d7 e# }: M

: A+ r  S% [) X0 {8 p修改的代码早有了。到今天不会编译。
$ a) ^( [" M- D需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: t9 J8 ~6 b, X8 A; S
  2. #include <malloc.h>1 ^5 l! S  J/ p5 v9 U
  3. #include <sys/types.h>8 u3 t* f: O2 W: e1 x3 I
  4. #include <sys/stat.h>
    3 g! c! Y$ X% a& W0 m
  5. #include <sys/ioctl.h>
    / g3 |7 _* }3 J4 D
  6. #include <stdio.h>" B( \2 ^- j: N! Q3 d( C: O
  7. #include <string.h>
    # f% D+ N7 ^/ \

  8. . W' ~9 q% F8 A/ j; F6 _
  9. typedef struct {
    ; E& V9 v2 Q7 ~5 b+ F
  10.         unsigned int        e2prom_cmd_sub_addr;
    & K7 T( X2 n1 Q+ G- A5 m
  11.         unsigned int        sub_addr_count;
    ( f0 J! W# B' _0 a' L
  12.         unsigned char*        e2prom_cmd_data;
    5 @: e- W6 p/ `3 W
  13.         unsigned int        data_count;. h8 E. z: w5 R9 u
  14. } e2prom_s_cmd;
    * o. r0 B- y  u7 N9 y- m* T5 ~

  15. 7 Q& p7 U# G! A, c9 Y
  16. #define E2PROM_CMD_READ 1$ Y1 x! M# |+ M& ^! \
  17. #define E2PROM_CMD_WRITE 2* m2 F8 D- v' G8 @3 ~  [
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 I& U" L) i, r1 O; t( ~

  19. - Y- W$ R* i6 t; B$ E0 Y
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ! L$ @/ r) X" N) R) e. \) V. J
  21. {( j- A' _5 E  E( J+ m) i$ k4 b) `
  22.         int fd, ret;
    / p2 m( |6 O7 J# Y
  23.         e2prom_s_cmd arg;) C# Q! o( s* g. Y/ j' j
  24.         unsigned char buf[0x18];4 n' u4 W- E3 V$ I6 E$ J! }

  25. 4 c8 [* d+ [* a- H0 h
  26.         fd = open(E2PROM_DEVICE, O_RDWR);: O" r5 f+ F( d$ \( h
  27.         if (fd  < 0) {& o7 t) U5 {* x7 b4 j* L$ k2 h. J
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & p! R9 g2 ~' A+ _. U6 R
  29.                 return -1;
    + X! @& f9 f" ~2 v8 w; R9 w
  30.         }
    3 ?* Y' i4 p  w( P, n- ]2 j1 @' q! F
  31.         arg.sub_addr_count      = 2;/ v, i1 r4 N8 s
  32.         arg.data_count          = 0x18;
    / H9 h; X7 e4 l( R* |2 j
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    " L1 t8 [3 L; c4 {! J
  34.         arg.e2prom_cmd_data     = buf;
    + Z/ N# j2 w* }. J
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    7 D4 Y8 F: ~* b+ ^) R4 y
  36.         if (ret != 0) {% z+ G4 g) O/ H8 q9 u5 r+ Z
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    * Y! v, A' @* u) j- s( I+ n
  38.                 return -1;
    4 B7 y8 p5 Y: D" I: ^+ s
  39.         }. C$ B. V( Z' ]8 Q5 n1 k
  40.         memcpy(mac, buf, 6);" J2 a/ ~! h0 E/ l: g- v/ G$ N4 Y- |
  41.         memcpy(stbid, &buf[6], 18);
    3 A/ i: v  M% |- r3 @2 `4 U
  42.         stbid[18] = '\0';! d, O; ?& A6 {. V7 ?
  43. / \0 M2 ^' I9 `' q. Q
  44.         return 0;
    5 f7 M3 a4 O: Q  `) c
  45. }
    4 d$ ^( t4 d$ Q8 T! i7 e( d2 [. I
  46. 4 A$ P+ G- r/ |! Q5 a
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)9 f, f  }3 j" F: f$ {9 ~" |
  48. {. P# l9 J" p. z; ~$ M' C
  49.         int fd, ret;
    9 i) O2 s: \# F) E5 T$ r" z; G
  50.         e2prom_s_cmd arg;$ q9 _* e6 E  |: K! J
  51.         unsigned char buf[0x18];# \, _( l1 e" r

  52. 1 L* [5 P& d" W. N" n  y
  53.         memcpy(buf, mac, 6);
    / S) G! m9 {, o, D1 r' M: m4 _' R
  54.         memcpy(&buf[6], stbid, 18);, c9 b* r% _: o  [) D9 Y' K3 m% F
  55.         fd = open(E2PROM_DEVICE, O_RDWR);1 A  e1 N6 f) c! G4 p( E5 Z! P3 n
  56.         if (fd  < 0) {
    ! S, V# x! r9 B. m: t
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' a; p1 i; D* b9 g
  58.                 return -1;
    ) H6 X% M! N$ L/ z9 H- A7 `
  59.         }
    ) `# J# k" J1 g* l- Q3 ^
  60.         arg.sub_addr_count      = 2;
    9 R9 H4 B! d' F7 s4 c! h
  61.         arg.data_count          = 0x18;
    8 `3 \9 m) c/ N' {# E
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    4 h9 [* t7 u  i8 t3 U. L9 P
  63.         arg.e2prom_cmd_data     = buf;
    7 y* S% N4 ~! h  y" L
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);$ f4 I4 y# ~: F1 e4 K
  65.         if (ret != 0) {
    6 U: q, l/ T9 l5 S9 f* D
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    % ?! p. Q4 q' n1 U0 i# g& H  q: a
  67.                 return -1;4 f; O! U0 F7 r- U; [: E: Y1 o
  68.         }
    + f$ S, F5 b2 @4 @+ M

  69. " R& T# R+ _6 G# w6 f
  70.         return 0;! }. J1 d$ a4 y% d
  71. }2 L) J; n* C7 F# X. @  ~: V! e# k1 A4 b
  72. 4 Y' E# Y! |" V1 p0 P6 ~7 M$ C
  73. int main()3 \/ }: k6 e9 I
  74. {3 m' `6 S9 d5 b6 R$ N8 q
  75.         char c;" f5 V% d3 w$ i" S
  76.         int i, macs[6];" W* Q0 R- ?% g% a9 e+ u
  77.         unsigned char mac[6];1 `5 e) S# G& ?) j7 B, q
  78.         unsigned char stbid[256];
    : l: ^6 Q: n2 _( Y) e% ]$ @; L% x
  79. # S  }1 T4 Q- U; O  o( a
  80.         if (readparam(mac, stbid) < 0)
    + }* j( ~8 G0 T/ f) S1 t# Y7 _; h
  81.                 return 1;0 m! u& [  x9 y
  82. 9 q' y$ L! \; J
  83.         printf("Current parameters: \n");
    ; ?; m( v$ d: _/ l- O) e
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - \  Q3 T5 S- k0 m) j- x
  85.         printf("  STBID: %s\n", stbid);. S2 v9 d8 M& R3 I# u9 u
  86.         " t8 J6 t# T4 X' r. M( c& y
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    3 }! r' k. x9 K* }, G* d( r$ E! H
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {; u: [4 _/ d7 B+ R6 @& {0 G
  89.                 printf("Input MAC error\n");
    0 P/ j# ]' r! o% s/ f5 ~% U* E
  90.                 return 1;1 D" Y* O; S# w) q# F8 H  m
  91.         }
    9 o; _5 u0 ]' n
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
      R- E8 \* k: l- k, W
  93.         printf("\nPlease input new STBID: ");: U( H7 ?9 s1 ?: b
  94.         scanf("%s", stbid);
    8 P' p# y6 J% q( z/ ]: q3 p" e7 r
  95.         if (strlen(stbid) != 18) {- F4 f4 T0 j) F! N
  96.                 printf("Invalid stbid\n");
    1 v1 R; u: |6 e; _
  97.                 return 1;/ L* Z* g  P) Q, @8 }
  98.         }* V% y' U9 ]5 {
  99.         printf("\nNew parameters: \n");9 I9 K8 Q, W. G# f* g- D
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 M6 {2 E5 h% v' @3 l! D+ z8 ?
  101.         printf("  STBID: %s\n", stbid);
    ( F9 m, A+ H- Y) p. I% f
  102. 3 [0 e5 @# P" _$ p
  103.         printf("\nDo you want to change paramemters? (y/N) ");
      R* K% H: ?! Y3 l8 p, x1 W
  104.         for (;;) {
    " d5 ^" u" Q: L. d3 \
  105.                 c = getchar();
    : `, b: N  n) ^; H0 _2 k
  106.                 if (c == 'y' || c == 'Y')
    7 M3 B* A3 o8 q# \3 {  k) u1 m
  107.                         break;6 V: o- g9 t; }" t; O' h9 k* D
  108.                 if (c == 'n' || c == 'N') {, N5 i1 }+ z' \' y, b  z/ t4 K# `3 [
  109.                         printf("\nAborted.\n");
    & x" S4 v9 G: V* N* X
  110.                         return 1;* S* k5 x1 W$ P+ `% y7 K
  111.                 }7 M3 K8 U# J% I3 N$ g' z7 h* i" D5 B
  112.         }
    $ e' _( r* z- V# X9 R* H8 G. p
  113.         if (writeparam(mac, stbid) == 0)
    ' V+ ?, ]: T3 X; ^
  114.                 printf("Parameters changed.\n");
    ! o' I) ~6 U; }

  115. + ^$ M- t& E# K. `8 c( `$ P
  116.         return 0;
    % E% S3 }! @. v: s2 J# p
  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
) {" V+ M, u9 C* L' x- O. @在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

' ?/ u3 l3 i5 @7 a% v你用的编译命令行格式是什么?
9 N' p. `: v, P  p/ Q, U3 ^4 q
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-15 03:52 , Processed in 0.147026 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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