找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15852|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr* Q+ F' P+ L3 V5 E. P
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    # b( }: L# J. x( g3 [
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:4 b" [! Z- w2 y; Y* ~( X, M
usage: himr <address> <value>. sample: himr 0x80040000 0x0! \+ d9 w; x; f- [& {7 y, I  q
+ }3 e2 P5 f  i# g
; F$ H% ^9 g+ I
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?4 X: o5 H5 C9 s! R# P
; D. H: c4 y& C
补充内容 (2012-3-8 09:42):
% Q9 n8 L+ s, W* I4 N( whttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
/ f7 Y: R( `- |$ P! J这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。+ ]9 d8 ^) @+ ~) r' E2 a- ~
, r( u) K$ V" Y: f: [4 _5 p
himr <address> <value>. sample: himr 0x80040000 0x0! ~. B  u$ t- w& ^2 D
& T! q* @; P9 O* ~" Y
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
) F. r/ b) ?- O! P; Y5 thimr 0x80040000 0x00+ M$ E$ F( W: a
himr 0x80040001 0x110 W$ v, ]1 \! [8 G
himr 0x80040002 0x22
# ^9 ^9 S' U" z) Q& N& t5 f9 _himr 0x80040003 0x33  K# R' |* J& N
himr 0x80040004 0x44
. F9 Y! x, A1 lhimr 0x80040005 0x558 {5 |) [  a, n" M2 u
5 w; c8 Y, D  T+ V) V
SN也是类似。
  R  E# r: d8 F% u; ?( y8 ^+ m5 S1 N9 G
现在主要是,谁告诉我们MAC和SN的地址?
+ O( K+ f* y: Q$ b$ y; H
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
, E# U8 U5 q! b* s一直想找到运程修改MAC和SN的办法,苦于无解啊
4 h7 h0 v/ F7 s; z5 p! ?
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
& |  I/ _6 l& l  \4 ]/ P$ P$ \8 y; B! ?/ I* E
修改的代码早有了。到今天不会编译。
8 _% U- z' L" m7 U8 [4 ?需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>& B; G. Q2 a$ Y
  2. #include <malloc.h>
    9 ~# M6 q, x9 r
  3. #include <sys/types.h>/ f, s; C! R8 ~" E0 L# D$ n0 d
  4. #include <sys/stat.h>1 S( P1 e! Q. S# C  n0 f2 T. z! a; F
  5. #include <sys/ioctl.h>' \% e  l* O5 _  t4 s; W
  6. #include <stdio.h>% \8 j  d9 h" }+ D) K
  7. #include <string.h>: j, m2 p: j6 i$ _2 y! L
  8. 4 @6 d* a% w- _
  9. typedef struct {
    8 y1 h4 D" \. i. D0 ~
  10.         unsigned int        e2prom_cmd_sub_addr;- H9 P9 f% _0 {. r9 {
  11.         unsigned int        sub_addr_count;- r8 r6 I+ I/ y7 c
  12.         unsigned char*        e2prom_cmd_data;
    + t# _8 {0 u+ z# X; y5 s7 C
  13.         unsigned int        data_count;# V0 V3 B$ U% J% D4 P8 _
  14. } e2prom_s_cmd;! s! y) l$ k  W

  15. ( G; J1 d) M$ ]. u- g4 F
  16. #define E2PROM_CMD_READ 1: u: r. Y: u, Y# i, k
  17. #define E2PROM_CMD_WRITE 24 e6 o6 d, _; m& @* g  K+ M
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    % K- c- \, q" f% g
  19. * x6 q' I% d- U8 F8 N1 K1 D  r
  20. static int readparam(unsigned char *mac, unsigned char *stbid)$ X6 C% N* t) A* G8 x& d
  21. {' ]3 j3 {8 |  L& B
  22.         int fd, ret;4 w3 O; j2 R& a* ?
  23.         e2prom_s_cmd arg;- q5 n- R) a- p- f) m9 G5 C
  24.         unsigned char buf[0x18];
    * d( B" L' T( d
  25. 1 \& `+ S5 X# F; w& R5 `0 e, Z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    % t! g8 ?, X; l3 b- B9 f! }
  27.         if (fd  < 0) {) |) s& j* @. J; w) I
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 C* @: v- K; F: A/ U* O, R+ u3 K! o
  29.                 return -1;+ @! o! ~' ]& X5 `4 k- D' V+ W7 ]8 w
  30.         }
    - T4 |* i! L. Y+ y( v. |7 G
  31.         arg.sub_addr_count      = 2;: J+ y) y) W4 [2 `; K! {
  32.         arg.data_count          = 0x18;
    5 G) {" r  X+ u% b
  33.         arg.e2prom_cmd_sub_addr = 0x290;6 [8 X2 h' W# j5 e" Z. Z
  34.         arg.e2prom_cmd_data     = buf;, N9 \" h6 q6 y2 @
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    : i$ w% F7 P, ?  p3 G: B
  36.         if (ret != 0) {, m, {6 C& ~& h/ i2 p
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);* a5 Q! d8 M  K: U$ D* C, ~# u
  38.                 return -1;! V2 _* K& v2 J0 w
  39.         }3 |6 o. W! m3 I# d9 r, e' F
  40.         memcpy(mac, buf, 6);0 v% h2 F) t, q
  41.         memcpy(stbid, &buf[6], 18);- I( P! ~( d' {* q3 D+ g
  42.         stbid[18] = '\0';9 p8 x. Z: L, E0 c; q. }
  43. : Y5 _# C% R9 C5 Z- S, i5 M
  44.         return 0;
    " C7 v& a% b% ^$ r6 g! t4 F
  45. }
    - f' c% i1 z. E4 |
  46. # z/ |9 I7 Q. a. ^4 ~/ Q( }' X/ C( |7 S
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    % D2 B8 ^9 u: i) e- s
  48. {6 O6 K- W/ U7 A4 P4 T# y
  49.         int fd, ret;; H4 ^4 }, V- }1 G* `
  50.         e2prom_s_cmd arg;
    ! z# _: C6 p+ z! B; ]- m
  51.         unsigned char buf[0x18];
    6 r& e# Y2 l- F

  52. % s$ }# I% u* A; x; \- p! W9 N2 X
  53.         memcpy(buf, mac, 6);+ k( ?+ }5 f! h) w
  54.         memcpy(&buf[6], stbid, 18);
    9 ?7 h6 A* U. C$ b% u2 Y& E
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    % N& ]: ~# ]# q9 ?0 E7 U+ ^/ t
  56.         if (fd  < 0) {% I0 U5 |+ D2 s- w% m) p
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & `' f% ~3 `5 ~* z) q8 z
  58.                 return -1;$ s8 v, w: \2 M6 u$ P, y% M2 _9 q9 r
  59.         }
    2 j  o( w" @9 N% x1 n7 g$ n
  60.         arg.sub_addr_count      = 2;* D1 C3 x" Y# _4 l! V' L0 u1 `. G
  61.         arg.data_count          = 0x18;- v% G/ ]6 C( z: J& e5 g
  62.         arg.e2prom_cmd_sub_addr = 0x290;% a: J3 n: q* S, q$ o5 U
  63.         arg.e2prom_cmd_data     = buf;$ d& R6 l  O* t1 J! ~6 c% j3 P
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);1 H- F* ?9 J- n( q  t; l4 N+ H
  65.         if (ret != 0) {  o+ U1 J1 t3 B! h
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);3 o. V" E% L! |! N7 _
  67.                 return -1;
    , t% z# h  {( g
  68.         }
      F, B+ m% K  z/ `
  69. ! ?# q5 R% K3 m# J% e
  70.         return 0;
    / T  Y) \0 {* J: l
  71. }' x( n( q- L2 l

  72. 0 @( r) g  C! P
  73. int main()
    3 I0 L- @; S8 b8 G4 v* ?* x/ r* |0 S
  74. {
    : R7 y) ^; _# K4 b& o& t2 @
  75.         char c;/ C; i: X9 u7 [
  76.         int i, macs[6];7 ]7 i9 S/ `( z  D5 q
  77.         unsigned char mac[6];
    1 A' ^5 z+ X( m
  78.         unsigned char stbid[256];
    6 x/ e9 ~+ E0 g3 q
  79. - k0 X+ Z* |$ N2 ]; s7 f
  80.         if (readparam(mac, stbid) < 0)
    : X  Q. P( s, N+ }8 n& L1 _  @
  81.                 return 1;
    * w1 `* K& R3 q3 C* [& q4 v- x7 E
  82. 0 i1 m3 G& h2 b. ~* L
  83.         printf("Current parameters: \n");
    " R' D. V) \1 ]$ i* y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " D0 M1 |4 j4 m/ Y
  85.         printf("  STBID: %s\n", stbid);2 ~6 d8 L+ O( g
  86.         % V5 O( F1 c2 B/ o
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");2 ?9 x" }2 X2 {' W& O
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    : |' _# q% N6 L* }8 Q( _
  89.                 printf("Input MAC error\n");
    ! d: u# t( Z% W- x; }) P
  90.                 return 1;3 q6 m* b2 e' ]3 z% k
  91.         }  _- n* J8 V9 k! H  M% K, b
  92.         for (i=0; i<6; i++)mac[i] = macs[i];/ k3 P8 H/ y, \. x: d9 z
  93.         printf("\nPlease input new STBID: ");& j8 G# k9 K! T
  94.         scanf("%s", stbid);
    ' W( T- l0 c  s: i" u
  95.         if (strlen(stbid) != 18) {. s+ p; x: i6 ?5 T' e! R+ h
  96.                 printf("Invalid stbid\n");+ b2 I) a9 r  U7 h4 k$ V" T
  97.                 return 1;
    $ V0 t0 Q0 N+ |, h( h2 G' X" D
  98.         }
    & {$ f/ b( v8 c5 \: }5 k; n
  99.         printf("\nNew parameters: \n");3 [  V- ?/ u6 Q4 L
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * l& c' @  U2 p7 a7 ^& Y: S
  101.         printf("  STBID: %s\n", stbid);
    - C7 p" N& E( c# \0 o. V( i& ^

  102. . p0 D, U# ]7 i8 D; L
  103.         printf("\nDo you want to change paramemters? (y/N) ");
      r0 u2 W9 h# o0 C% k7 t1 ~
  104.         for (;;) {& d" [0 i# H& w- A
  105.                 c = getchar();
    % W6 B0 B: c! B5 r" S/ v4 l& u% O
  106.                 if (c == 'y' || c == 'Y')
    : w" f" G" W3 r1 w5 H
  107.                         break;# o3 ]$ p+ l0 _+ ^& k' |
  108.                 if (c == 'n' || c == 'N') {
    # U) O; m+ E; U# ^- S2 u( Q
  109.                         printf("\nAborted.\n");
    # v; K4 u# c2 H" M9 w
  110.                         return 1;% X, l8 C$ l* C! L+ U6 ~3 M) L
  111.                 }
    $ y( Q% k: ^) W3 |
  112.         }
    7 j. _' G5 ~0 e4 u  h4 y: D
  113.         if (writeparam(mac, stbid) == 0) $ T. ^; R# a( Y
  114.                 printf("Parameters changed.\n");4 z. Z. l: r0 p

  115. " u. e6 ~8 M# T: a" b: {4 m8 n6 _4 w+ p
  116.         return 0;" ^; P. F5 d& f  O# `4 ?
  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! M* N! `5 s! _+ R- {) a9 c0 G
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

: M6 ^9 }5 z' y1 o" `( r2 U你用的编译命令行格式是什么?
% e4 L% [6 w- p3 h' K
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-23 09:23 , Processed in 0.090141 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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