查看: 16155|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr4 F' G! ^' n6 S+ n# H4 W% C0 D
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    6 X) q& g. D( ?- Q: l, {( T
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:. ^9 t. \' j& k; Z+ }
usage: himr <address> <value>. sample: himr 0x80040000 0x0$ y. E5 {* C% ^5 x% O' a
1 Q" ]0 L% n/ e

& A7 o6 E! ~8 {0 H+ {" ]- @不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
  y, `7 ]9 f) S5 g7 l  C& t' l$ P4 p# q/ P" \# N% w( p1 h) }
补充内容 (2012-3-8 09:42):
7 o$ V/ `: H0 a% u% G( W9 [http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数1 F. N# V0 o+ m7 m9 j& N+ s+ A4 K
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
( I# K2 B( D$ z: I7 p/ q1 \- [
3 }- t8 ?8 W8 g' X/ h) b- I3 e! J% Ehimr <address> <value>. sample: himr 0x80040000 0x00 O! u2 M6 l+ g. [# ?$ z. K) s
6 {4 ^( @) D& F. M
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
2 G6 j- r% U: ~  Rhimr 0x80040000 0x000 h# T% S0 G! x+ z* i) j
himr 0x80040001 0x11( C! i; C% E; J; d2 O
himr 0x80040002 0x22
; V4 }9 @/ Y) y, Q% J! nhimr 0x80040003 0x336 k3 D4 M" Y8 J$ W% v6 h- ?
himr 0x80040004 0x44
. d7 i+ j. G, C" A2 Phimr 0x80040005 0x558 t2 L- g/ ~! P' T, [9 Z$ }

; K* ^3 \. D* e6 x7 C+ c# |3 G0 ESN也是类似。
. H; i, Y9 G% X5 ^) G9 I
% n, z: K0 t5 C7 t' s7 ]现在主要是,谁告诉我们MAC和SN的地址?4 T9 w/ c) k# u. B8 I% f& {. r& @% g
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 " a/ @) m  Y9 k# V; v7 T
一直想找到运程修改MAC和SN的办法,苦于无解啊
, |  `) u7 b( |" K
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
( W' m+ R6 C2 s5 B
) Q" p7 U4 W3 ?! A修改的代码早有了。到今天不会编译。! W  T8 S1 L# N4 E" d+ ]
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    8 S3 `% F' k, _0 [* I
  2. #include <malloc.h>6 I2 ~  e8 D/ N
  3. #include <sys/types.h>6 c2 R! O' B: |1 N: r  K
  4. #include <sys/stat.h>
    0 [- b" c! r- T# X
  5. #include <sys/ioctl.h>
    5 n$ ?+ C) k' z) c) D& L+ m* `
  6. #include <stdio.h>
    5 \6 S9 g4 O. q; c3 _+ y
  7. #include <string.h>+ E2 q% A. Q9 Z( ?

  8. 1 j8 m; h, U* N+ K* n* [5 y: c" o
  9. typedef struct {. O- z3 f( ^/ V. m: F
  10.         unsigned int        e2prom_cmd_sub_addr;, k6 f# r+ [7 l4 g" X5 n
  11.         unsigned int        sub_addr_count;
    # s. |& y. ^! n. r$ q
  12.         unsigned char*        e2prom_cmd_data;
    , t- w3 F& X9 d$ o5 K% `
  13.         unsigned int        data_count;
    1 D* b# G% r0 h6 F( d1 p1 _3 u
  14. } e2prom_s_cmd;
    ( [3 z- I2 x: ?
  15. + E8 j! f2 {9 H( }! |2 b
  16. #define E2PROM_CMD_READ 1" D! ]2 {7 g" n. p
  17. #define E2PROM_CMD_WRITE 28 }# G9 A  s2 E
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    , P1 w* q. T$ X% A
  19. 3 I" J8 |5 U5 U5 `  P. d) z
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    6 }% R1 z: p  V  S
  21. {
    % [& B( e1 W% O; T( ]! w9 q
  22.         int fd, ret;& |. {, Z2 J1 ^+ ?
  23.         e2prom_s_cmd arg;
    4 p- u) _& z9 O$ F3 [9 B$ H9 e3 {! P
  24.         unsigned char buf[0x18];. W4 A- o# W$ |! e, V
  25. % k( ?" ^  o& `
  26.         fd = open(E2PROM_DEVICE, O_RDWR);' }1 P& w0 m* O, R
  27.         if (fd  < 0) {: f: O1 I, Z5 I; T5 Z  D6 A' a4 ?  ~
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 Z! I. \  E( p4 s+ t9 g4 p7 W- M5 Y
  29.                 return -1;: Y% A" r3 P5 w* A5 {; F4 D7 Q  y, z
  30.         }
    5 p, {6 K# m+ G, ?
  31.         arg.sub_addr_count      = 2;
    5 \: M% n& Z* C( s
  32.         arg.data_count          = 0x18;, ?9 h. Q, i6 D, X0 p2 [5 n
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ( Y  s( g5 B- e* A6 a- S$ J
  34.         arg.e2prom_cmd_data     = buf;6 J8 }7 B1 e' r2 |* \! N# e2 C
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);: }7 I/ V$ t" Y
  36.         if (ret != 0) {
    ) t! s4 i3 Y. ?1 T9 ?2 Z; Z: R
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);4 R9 X1 p8 c6 g  C4 v
  38.                 return -1;% h! W) ^+ ^* Y/ X* V5 X5 l+ N
  39.         }2 Z& M. v5 t! \4 b9 v2 U7 f7 N* R! |
  40.         memcpy(mac, buf, 6);+ n$ `* s! t3 }6 V6 e7 F" }
  41.         memcpy(stbid, &buf[6], 18);# ]7 V( |5 W9 P3 J! T; B
  42.         stbid[18] = '\0';. V2 x! w6 ~) y; r3 k8 D3 i3 z

  43. 4 g' _7 M' r, n8 Q4 f; B
  44.         return 0;
    9 _3 s3 D! n- J
  45. }, s  D, Z0 h# }7 I  O
  46. ( x/ r: J; ^) }# T9 i8 ?8 Z
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)- t6 W5 E7 F& x" H$ ~% v
  48. {
    8 e+ j3 ?# w" f7 }) }
  49.         int fd, ret;
    , }' l1 Q. e. [6 B
  50.         e2prom_s_cmd arg;! ]1 k2 F' v. H$ |/ W
  51.         unsigned char buf[0x18];
    2 z2 N6 c4 T& }. X  u
  52. " ?" v; F! ]3 Y9 U  n- p/ K
  53.         memcpy(buf, mac, 6);. c. L) a/ B- H
  54.         memcpy(&buf[6], stbid, 18);/ l9 A0 b2 O+ Z# y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);0 ^# y: Z' z7 s9 b" {: r4 M( R  Z  _
  56.         if (fd  < 0) {. \1 D2 c& ]2 q: f
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 o1 d2 [/ h7 c2 e1 p
  58.                 return -1;, B/ ~" m/ P) j! @2 A' A) W( |
  59.         }
    # z2 Y9 I! o. j9 S9 W9 s
  60.         arg.sub_addr_count      = 2;
    ) R5 [: ]. r: H9 y! T' D
  61.         arg.data_count          = 0x18;
    : p8 v* ~0 d) t: Y, n. ?( f
  62.         arg.e2prom_cmd_sub_addr = 0x290;' c" _% R) J& k2 N. g
  63.         arg.e2prom_cmd_data     = buf;
    " \6 N, h8 @" K9 v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);# @' i8 D/ k) d  t: B  X
  65.         if (ret != 0) {% R6 ?- q7 R, \) Z8 r9 m5 o
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    + ^8 k, ]( I7 S1 E/ ]! ~# H' W+ M
  67.                 return -1;. h2 H( U1 z* B5 \$ Q( P
  68.         }4 X5 f1 K" L- c' X+ Y4 u
  69. " Q# k2 ^' e* L& c( Q! i1 G
  70.         return 0;1 L4 q( E9 e, O7 f5 t, E4 s" U, {
  71. }3 h9 `5 r' t# A" p# t: J: E
  72. 8 l& x% W* j) D7 S& \8 s
  73. int main()* B" Y" D) j+ R* O2 t. v
  74. {5 S  d; i6 Z& w6 j% q- `( j
  75.         char c;0 {/ u9 m6 e2 o+ |
  76.         int i, macs[6];3 \8 V2 C: ?, U. q9 S
  77.         unsigned char mac[6];
    : e; R. W* ^: w0 T: n8 @' [
  78.         unsigned char stbid[256];9 L! n& i. E6 o3 C9 o' u& ?: M; Q( }
  79. 6 J5 B$ j! {7 L1 j3 o
  80.         if (readparam(mac, stbid) < 0)
    3 z$ o! ?9 R8 J! D8 v$ M# [
  81.                 return 1;
    / c4 G$ m. _0 H9 i

  82. ( R; L  e! q' u, i5 i( l
  83.         printf("Current parameters: \n");, k9 q" p0 [2 N1 y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! e) G  m; }, m& o/ |' E0 w
  85.         printf("  STBID: %s\n", stbid);
    7 [( w9 L' }% i# Y2 r
  86.        
      L% |% D8 O) i
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    * F; b$ v# z7 G5 O- b0 l
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    & p+ w3 U5 V* g
  89.                 printf("Input MAC error\n");
    $ d1 g; n4 L& G; E/ O
  90.                 return 1;
    : D( B* e2 j  F+ Q4 ~
  91.         }+ G: O2 ^: g6 t* {( E+ `
  92.         for (i=0; i<6; i++)mac[i] = macs[i];1 [' N6 _8 e# Q; l4 e" `
  93.         printf("\nPlease input new STBID: ");
    : o. f* @" W/ r+ w0 X4 K1 c& a, x
  94.         scanf("%s", stbid);
    ! Q4 o( b6 B3 a2 @4 [( W8 S
  95.         if (strlen(stbid) != 18) {
    8 S1 S! _% b; p# _1 j
  96.                 printf("Invalid stbid\n");
    ' f7 e- w$ d0 C! T4 M
  97.                 return 1;/ k8 ~2 Z* N# f: {. T9 X
  98.         }& T( E/ a6 X; Q
  99.         printf("\nNew parameters: \n");, j" m# J" L, e& c
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) n3 t/ B0 l$ B
  101.         printf("  STBID: %s\n", stbid);
    ! B  y) l* v9 ^# j, }6 O

  102. ( K# C9 H7 k* W5 E* p
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ( t. {0 ~. k+ j+ o: b1 Q
  104.         for (;;) {7 w9 H; @5 c5 J; N$ T
  105.                 c = getchar();
    3 C. W: y5 ^! a8 g
  106.                 if (c == 'y' || c == 'Y')$ f3 T3 g. P7 @4 J% Y) E1 `% p
  107.                         break;; w+ p. n# d& Z
  108.                 if (c == 'n' || c == 'N') {2 B* x/ R* y1 v1 O1 S1 L* ~
  109.                         printf("\nAborted.\n");0 f1 o5 L0 l. g: a
  110.                         return 1;
    4 d# Z/ P6 H1 N  \6 f' d& I
  111.                 }# M  @0 G6 f+ v1 Q9 ]
  112.         }& s/ \. _8 X* T/ M: Z
  113.         if (writeparam(mac, stbid) == 0)
    6 \( u/ H4 D( ^3 S- A$ e
  114.                 printf("Parameters changed.\n");
    ! }" R: Q- U; e: A) y- H

  115. ( P# i4 i* n9 }; e- y1 D
  116.         return 0;$ H$ L' u6 f8 {. f7 D
  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 ' v0 e: b, ]; N/ {
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
0 x& i6 G9 ~: b/ n: }. d2 O2 z
你用的编译命令行格式是什么?4 O/ L  m% G4 @3 X5 M8 v7 h
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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