查看: 17691|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ Y) L6 P, k# r) }5 q/ @  ?6 r
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig  }3 |: P5 l+ I+ z0 N
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:0 ?* T" g3 Y, I; G6 u0 k/ E
usage: himr <address> <value>. sample: himr 0x80040000 0x0# b0 u5 ?- e5 @4 }2 d

/ }" U% X5 G  V: z2 F: x! c& X2 X+ W$ @6 W1 ]
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
, @) L' K0 H4 f6 e- O; Q& T6 e
4 F* L( }/ v. i. ~补充内容 (2012-3-8 09:42):, |) l( g$ d! S# U: H5 M
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数  ]- [% _7 A: L
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
4 j8 v3 T2 ~6 H: J* X  b: H7 g: d/ i# z/ |* i- Q) w- ]5 [( S/ Q
himr <address> <value>. sample: himr 0x80040000 0x0
+ h. i# {- ~# Q* f# i$ v  g9 _7 k# N  s/ C2 T* [3 T8 f2 ^% u7 M
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
, r( T5 f: l) Mhimr 0x80040000 0x00. @* L9 F+ R+ d( j8 z
himr 0x80040001 0x11
& O, Y4 g8 Z% Lhimr 0x80040002 0x228 V9 a( y. i; S
himr 0x80040003 0x33
8 V; t7 d: x# S5 S& c* o+ u6 [himr 0x80040004 0x44
% {+ @7 ]2 x0 G* Rhimr 0x80040005 0x55
  D, }5 B) w$ o; L* i: ^: T% i8 V2 [/ T" D" V) G
SN也是类似。
9 [6 W, X7 A0 ]$ }0 s3 M* _; Z8 E  o( C4 D: g2 V
现在主要是,谁告诉我们MAC和SN的地址?& k3 Y5 o& D# U% i6 {! O% T3 L1 [
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
+ R; e4 N+ C9 j- S! L4 U6 I  t/ G一直想找到运程修改MAC和SN的办法,苦于无解啊

* a4 S& l; I8 ^0 p: [, E- B. F# J. P! e7 |源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 1 d3 Q; f+ V. v' x3 C

8 Q/ L) s: o  _8 }6 R4 I! [" ^& R修改的代码早有了。到今天不会编译。3 B% ]+ K: D9 |0 G8 L, p/ Y
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>( E3 x$ c( O  z! E
  2. #include <malloc.h>- M1 X3 z/ q# q) ]* {7 ?: Y5 [
  3. #include <sys/types.h>  K! r2 |+ Y: W9 Y/ w
  4. #include <sys/stat.h>
    : b# D4 E4 {" i2 R, E
  5. #include <sys/ioctl.h>4 |! s' s* d+ j% t: }
  6. #include <stdio.h>  R( ?# M% |+ H) A1 D' R8 z: G
  7. #include <string.h>
    ( N1 K1 |# R4 ?! z! q, r

  8. $ s( ?9 U; F' e4 g3 M3 M" N: C
  9. typedef struct {
    9 o( ~8 x( V# ]" p5 |
  10.         unsigned int        e2prom_cmd_sub_addr;- B# O$ ?" ?' ]8 D5 N) }
  11.         unsigned int        sub_addr_count;1 a9 M7 {3 @5 I7 E8 U
  12.         unsigned char*        e2prom_cmd_data;& ]3 o. i) E! m3 ]3 n/ E% i5 |
  13.         unsigned int        data_count;. Q! z1 |% O1 {$ I
  14. } e2prom_s_cmd;
    : k, L% ]9 h6 d

  15. & O  s: t$ m" y% p) @
  16. #define E2PROM_CMD_READ 1& c% V/ L6 ?0 X, S
  17. #define E2PROM_CMD_WRITE 2
    " `( O# @6 S, l5 p0 p6 }; A: W* W
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    , }# |& x  _8 B9 s1 j" |
  19. 1 Q0 Y# S% Q8 m5 }
  20. static int readparam(unsigned char *mac, unsigned char *stbid)" ]4 u4 Y) ?7 H) s" g
  21. {7 K! ~7 n8 n+ {2 a0 }7 W
  22.         int fd, ret;
    , W1 S- U. Q8 d2 F  c) R: O
  23.         e2prom_s_cmd arg;
    . ^6 Q% N& u* N# V; H4 z1 ^' E+ g
  24.         unsigned char buf[0x18];
    9 [0 T, `% Y- Y" g3 U; ?
  25. 3 h7 z5 |; C9 H" m% h
  26.         fd = open(E2PROM_DEVICE, O_RDWR);6 Q. A6 z! d$ h) n8 y! _* G1 B- S
  27.         if (fd  < 0) {
    2 v/ y! i5 y# L  c: g
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 _0 T$ Y$ S; `' h2 \
  29.                 return -1;
    5 ^4 U7 [- t* m  Z, H
  30.         }3 Z6 c) ^( [) j! M2 {$ _: a
  31.         arg.sub_addr_count      = 2;
    $ `9 p1 u' u, t- e( Q
  32.         arg.data_count          = 0x18;% Y3 T: F% i/ U
  33.         arg.e2prom_cmd_sub_addr = 0x290;, Q2 N2 |8 }6 ^9 c6 N. O+ V
  34.         arg.e2prom_cmd_data     = buf;
    4 U% ?3 P$ d/ M
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);+ d7 ?) n4 O/ K; D4 B2 y* h
  36.         if (ret != 0) {) V" Y) U8 D* C' {) ^; J0 G' M& r
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);- w3 X1 D  l# f/ B2 y" H0 A
  38.                 return -1;! w% L0 l( S1 s, q! U  _. t
  39.         }. }% u- }' w' o) I7 x% d
  40.         memcpy(mac, buf, 6);3 n$ I. Y) s: i/ Y+ N% ]
  41.         memcpy(stbid, &buf[6], 18);3 U) @4 j# Y8 _4 t1 A7 d
  42.         stbid[18] = '\0';9 c* J. ~+ U, C& Y3 W8 T

  43. ' `% Y9 X1 e6 N
  44.         return 0;! U: o. p  r' z" g. R; q/ E) H# q, x, q
  45. }$ g9 d) M4 v! L

  46. 8 B+ v" g; w3 E" ]0 `. j  M3 @
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    5 [# [, [0 _  ]( r" J8 E5 q- c; N4 _
  48. {( X; u' ^9 _* U
  49.         int fd, ret;
    % s+ {* ^2 B0 D: {4 p8 b
  50.         e2prom_s_cmd arg;% T% x; n9 \7 W1 l- W
  51.         unsigned char buf[0x18];
    0 v# v4 Z  @, \' K$ p

  52. 6 k. F* v  s; ^
  53.         memcpy(buf, mac, 6);
    6 K3 c0 s) i9 ^1 D
  54.         memcpy(&buf[6], stbid, 18);  p) B  ]7 a+ H( r
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 C- v- j! q$ b+ s! P' A
  56.         if (fd  < 0) {2 Q3 Z" u6 R- X( E, \
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + L# ^3 V8 J" s4 B0 _' k3 ^
  58.                 return -1;
    - O& t8 ?* u1 _
  59.         }
    & ?2 J  ]3 l3 R8 I7 K, `
  60.         arg.sub_addr_count      = 2;: z: m  a1 e% e! L" C$ N4 l  |
  61.         arg.data_count          = 0x18;
    2 C6 }  l: \+ h( P3 E; m
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    9 A6 B, F  P& h% [, C) E; z
  63.         arg.e2prom_cmd_data     = buf;+ W6 q2 ^" I+ e8 P$ k
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    / m& v! @+ h+ g7 h
  65.         if (ret != 0) {
    ) [* o/ r8 W2 @) y. ]6 m
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);4 r1 S. d7 \6 u% @3 n# E  ^+ ~+ @5 [
  67.                 return -1;2 a0 ~: X9 w: a! N, {" F
  68.         }
    . T4 J* {6 n- Q: Z* b* ?' y
  69. 0 A* n. Y2 T- c2 k' g1 Q/ M
  70.         return 0;
    3 [4 T) m# B$ N% _; W/ i, X6 S9 ?
  71. }
    & Y3 \. W5 T! ^% N1 Z
  72. 0 ]6 {( G9 O3 f5 Z
  73. int main()
    2 u# W% S/ A4 d4 T& X- o
  74. {
    : ^- Y! F( g. T, [' I2 B, x: I
  75.         char c;
    9 m2 g1 W+ M5 f" G. B3 W
  76.         int i, macs[6];$ y, u6 U& o- q
  77.         unsigned char mac[6];' b# T' P' K. G, z: |# j
  78.         unsigned char stbid[256];
    ( v! n& G# n9 F: y8 h4 |3 n1 S8 s

  79. , m5 C5 b1 ~+ o* k
  80.         if (readparam(mac, stbid) < 0)
    ' \% Z& R/ E- u# Q" W
  81.                 return 1;
    2 ^5 ^0 {/ C- ?0 p! x
  82. & n$ T  m4 \9 H2 @. i# Q
  83.         printf("Current parameters: \n");5 S1 o/ v2 J& ?) u: h  p
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - p& S# A' H8 i. Q+ t0 f' F
  85.         printf("  STBID: %s\n", stbid);8 v9 e  J2 m6 a* i: E
  86.         2 ?$ V: E% H8 `2 ~
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      u4 T9 N. U' }8 E
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    1 D. Z4 o  Y0 R* N
  89.                 printf("Input MAC error\n");
    : l0 K; L- y9 ]. J9 w. }6 k, @! q
  90.                 return 1;3 D/ h$ f$ i6 ~- }( ?
  91.         }
    4 X1 t" D5 Z$ q% u+ \+ K! C1 y1 S8 g
  92.         for (i=0; i<6; i++)mac[i] = macs[i];" h9 t  u& H* B8 f' R$ _( [
  93.         printf("\nPlease input new STBID: ");
    . Q3 J" {2 x  h) V! t. j, u5 @
  94.         scanf("%s", stbid);8 e' j/ T' Y- v& g7 J, K
  95.         if (strlen(stbid) != 18) {
    : e# x3 F8 N% c9 h
  96.                 printf("Invalid stbid\n");
    2 K, f2 g$ K9 a( q* J* m1 g
  97.                 return 1;% Z1 }+ o6 E1 g) S" Y9 h
  98.         }
    5 w  x7 G! d, q' l$ L0 C* O
  99.         printf("\nNew parameters: \n");1 i4 c6 X4 @0 x5 X6 W
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - L+ d2 v# N7 f" g0 F
  101.         printf("  STBID: %s\n", stbid);6 ~( w9 _; h3 U: p9 b

  102. / ?- f7 A( l; Z
  103.         printf("\nDo you want to change paramemters? (y/N) ");, d0 ^+ y1 }7 a4 r8 h+ ~
  104.         for (;;) {
    " i( |" {0 ]$ n+ d+ B8 ~$ Y( G- C
  105.                 c = getchar();
    , \2 P$ L  S; O0 p9 O
  106.                 if (c == 'y' || c == 'Y')3 M. G( S% t! k. y+ g6 M- I
  107.                         break;
    ; |1 |$ T6 Z  R3 x6 W* @
  108.                 if (c == 'n' || c == 'N') {
    6 v: ?: L$ E4 A% b" J$ Y9 S# b
  109.                         printf("\nAborted.\n");, h7 |# J+ H( b  T2 n3 z# y
  110.                         return 1;) f# Y8 U3 b2 u0 V* \& V
  111.                 }6 Q; j- c" E) n
  112.         }; m7 A4 D' b3 k- F6 [- @, N+ t
  113.         if (writeparam(mac, stbid) == 0) % B3 o% J" ]. r! b4 W
  114.                 printf("Parameters changed.\n");
    3 j- e- X5 z; A9 f7 A; c9 [) Z
  115. % b5 a9 C4 }% D5 i
  116.         return 0;
    9 D4 M5 [  B1 P+ z' L9 q; b' X
  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 " c2 @4 O! d3 u( n7 B
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

. C6 s& r# v/ _7 s0 n2 Z3 C你用的编译命令行格式是什么?
1 Q3 X8 f! u9 e1 c4 b$ y
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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