查看: 16618|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    4 a& i& `  P4 i( Z! ~( s9 n) ~6 n' J
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig" A: g, s% j( c8 D! B7 h
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:9 ?! v* `% E: `# p, a7 t  e" C
usage: himr <address> <value>. sample: himr 0x80040000 0x0* B( v" R! Y; R- ?. F8 a% K  a' J
: }2 I: U4 T# O, C# X$ g& c: M7 c. [
' H) ?0 |0 b6 D" ~0 q0 @4 Z
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
4 |0 H; S4 o/ Z- d( W* s
, ]! L; s3 ^+ y' O" G补充内容 (2012-3-8 09:42):
. S+ w: z* W# v' a# i; n$ Ihttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; O! e5 I, s/ ]3 L, k这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
; j- x  N& ]; Q) V' f  O4 C8 A
% {& F; g. T4 Y9 V% W: e3 ihimr <address> <value>. sample: himr 0x80040000 0x0
" M+ g$ `$ d" V" Y: Q5 v7 Q4 ^
4 g" W- l8 {! x( h例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。3 n% i( l6 x% ^. _2 `$ i
himr 0x80040000 0x00
% D. \0 q2 s4 N; S$ nhimr 0x80040001 0x11
8 o* V  o, C- a+ n2 @8 Phimr 0x80040002 0x22
% Z) Y/ ~1 _* j% @" chimr 0x80040003 0x338 ^6 h* e4 B* W5 i5 v
himr 0x80040004 0x44$ {( G7 i3 V" d: g& I" \9 b
himr 0x80040005 0x55
  [+ N! R# j: I; D: b# C% t( |2 Y. f  M, b2 o* v
SN也是类似。
7 T9 A, L# G5 c3 f4 w: |6 H3 t: J
现在主要是,谁告诉我们MAC和SN的地址?; r4 L& [! ?3 W+ e
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
! Q6 \5 }* z5 M3 w4 G( H, Y一直想找到运程修改MAC和SN的办法,苦于无解啊
2 M6 t0 f2 a( @# v: C+ n9 K3 G. ?
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
) ?: c0 m) f. V* @+ L( q
9 S* R- \7 ]% j5 L6 k  R- {修改的代码早有了。到今天不会编译。: R! q/ t4 E# m/ l' J
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    9 q; P+ N* n+ o; M  Q) c+ H1 @
  2. #include <malloc.h>
    : L) R5 V( u* C2 {/ m4 j
  3. #include <sys/types.h>* B1 V6 O4 u) v, _& X5 T+ v
  4. #include <sys/stat.h>; O, p- B9 |# d) d3 C
  5. #include <sys/ioctl.h>( j2 m/ x6 T# R
  6. #include <stdio.h>2 n0 a( w( S4 w
  7. #include <string.h>5 @0 j+ i3 D- H

  8. - r/ F; ?8 O7 f9 J5 V/ G
  9. typedef struct {
    + W' e) C+ Q9 O/ D  |
  10.         unsigned int        e2prom_cmd_sub_addr;- E2 {6 Y" N: ?3 g/ ~
  11.         unsigned int        sub_addr_count;% p5 s  D  w& v  C- C7 }" W+ g
  12.         unsigned char*        e2prom_cmd_data;! d2 R0 N+ o* b/ k& V/ R
  13.         unsigned int        data_count;
    6 s2 @3 e" V7 @( p: \5 Z' Y/ ]
  14. } e2prom_s_cmd;
    7 n* b0 s0 q: x1 b

  15. ( x8 j$ i% [1 o
  16. #define E2PROM_CMD_READ 1
    & l- U" ]7 ]8 A2 u- k$ U
  17. #define E2PROM_CMD_WRITE 2  Q$ K: q5 [( @0 a5 A* R( y
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    , F9 T. q+ E" b7 u

  19. 7 a1 Z* k; P3 |7 P$ k
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    3 W, A! i) }* w
  21. {, o+ q! w( \; E% E( ~
  22.         int fd, ret;! V; q# X8 S) X
  23.         e2prom_s_cmd arg;
    & g* c* X6 J  x7 X8 x! x6 w
  24.         unsigned char buf[0x18];% ~' C! T3 _% W% d% q

  25. / S+ a7 {+ ?* p, k& Q7 J+ Y4 Q3 E
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) ]: V) v3 a1 G! G1 w1 z
  27.         if (fd  < 0) {6 X9 w, @+ b! {) K0 h: ^
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ! Z" C  t5 N! M1 W) X: y7 F! {
  29.                 return -1;
    5 `( A; M$ j9 \) D
  30.         }
    % Y  W) B; b6 F
  31.         arg.sub_addr_count      = 2;
    - N  N  o. l1 d7 C2 ?! f
  32.         arg.data_count          = 0x18;
    # B7 N, L# N' A4 M: N
  33.         arg.e2prom_cmd_sub_addr = 0x290;; s6 S! b& _. b! b3 n
  34.         arg.e2prom_cmd_data     = buf;
    ; o* E# y9 L4 V3 e  @9 ~
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    6 z6 ~6 S* e- Z& W2 ?& h: q9 p
  36.         if (ret != 0) {9 c3 j% _. N; |9 T( m  ~
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    3 r$ f1 m0 `# A5 y
  38.                 return -1;
    * L% a; `: H  S& g% p
  39.         }
    * i; Q) T. T1 ~/ P/ q2 {8 s
  40.         memcpy(mac, buf, 6);0 N% b' ~( r8 K5 j  r6 k
  41.         memcpy(stbid, &buf[6], 18);0 D; O% n/ x& l
  42.         stbid[18] = '\0';5 x! l- F) T8 U! n
  43. & ~5 u4 q' ?# I( H7 N4 b
  44.         return 0;
    5 I1 ]* {" G! _9 Z+ a0 d+ o: c
  45. }
    ! a+ u6 X9 U+ F" T5 h

  46. 7 z/ W( ^2 w8 v/ j
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)/ u9 e$ F- j8 t3 N8 K$ H) B. ^
  48. {
    2 }) s& D6 F" B) i! n# C$ v& s
  49.         int fd, ret;
    - U( u/ i3 e) X
  50.         e2prom_s_cmd arg;
    * r& R, c# t+ f
  51.         unsigned char buf[0x18];4 O# K; H! \2 L) z$ V" |+ T

  52. ' q$ O" \; h. \8 ]' ^5 J! b4 Q% D
  53.         memcpy(buf, mac, 6);+ b, H$ M1 \! i5 _8 G
  54.         memcpy(&buf[6], stbid, 18);
    3 y. B9 E% S( G
  55.         fd = open(E2PROM_DEVICE, O_RDWR);% A8 T% ?# i. U8 j
  56.         if (fd  < 0) {0 g5 G1 {7 ~' r8 `4 H
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ; }$ e5 T8 @" \7 Y8 _: f  D8 B
  58.                 return -1;# b+ b/ K9 f2 a- c! n4 S) z
  59.         }
    8 L/ c/ X. ^- r) Z, I
  60.         arg.sub_addr_count      = 2;/ @' X7 p, r, p6 p1 ]1 O: q. z: [
  61.         arg.data_count          = 0x18;4 e* V4 h+ J" h6 @  s; w# y. T
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    4 B  z) M3 W. p+ D6 K
  63.         arg.e2prom_cmd_data     = buf;1 r- m/ \- W. w0 m8 |  T5 b
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);: h( n  ]; v1 o5 i9 U
  65.         if (ret != 0) {
    $ x% X; y* H4 a0 ?/ E
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);% g0 U+ J; i5 @' X2 n
  67.                 return -1;
    - H3 n5 ~+ W( U9 D, G* U
  68.         }0 w( ]9 _& C1 j$ E7 L; K, c
  69. 1 i$ k, Z; `2 K% t( a0 ?
  70.         return 0;( t+ k. C! D7 e5 A
  71. }: [, _, \, @2 c# W7 ^+ o: j& R
  72. ; z+ E1 \3 i9 l" P/ k' e) V9 M
  73. int main()5 y* ~% k: w5 i' u+ o- n
  74. {
    ' N' w& W/ y  P: x# o$ F
  75.         char c;& D2 h1 U) S6 b+ |6 C7 _- ]+ \* P
  76.         int i, macs[6];$ T6 l1 U6 ^0 v7 h* [/ R3 ^
  77.         unsigned char mac[6];) K0 _( |7 B, X+ W' j# D. p& P
  78.         unsigned char stbid[256];. B7 ~" k2 Y( k4 r$ Z$ Q

  79. + I: H% v) d6 K2 m
  80.         if (readparam(mac, stbid) < 0)
    0 w, I: [) x  k4 E7 n; c
  81.                 return 1;! l( h  C  f: r  v* f5 N  C1 d" X$ G
  82. 1 o/ @8 o4 Q5 x% i5 l- h/ |5 X
  83.         printf("Current parameters: \n");
    ! W8 p, ]  i6 _+ h: {4 {
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% y6 n0 x( z; Z, W7 I
  85.         printf("  STBID: %s\n", stbid);
    ( v: Z/ j, ^, j+ D' M% g* \
  86.         . h, H" Q* W, {0 i8 F# P( j
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");: q9 ?2 A9 b2 o
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    0 y7 z0 f  d) M. _! ]% U7 o0 W
  89.                 printf("Input MAC error\n");
    2 N) X1 u$ V* x2 w! N
  90.                 return 1;
    0 D$ D3 z" v" F6 t" v8 j7 V8 z/ |2 ~
  91.         }
    $ \2 l1 z8 }) B6 t& [& j0 c% h  ?' L
  92.         for (i=0; i<6; i++)mac[i] = macs[i];- |! P$ U& m! n" o6 R
  93.         printf("\nPlease input new STBID: ");, S( C# z7 I4 [( g
  94.         scanf("%s", stbid);
    + R% P, P0 ?4 N9 \) Q; g+ T' g/ u
  95.         if (strlen(stbid) != 18) {
    $ O5 y8 e; I8 d* i( [
  96.                 printf("Invalid stbid\n");
    . X& ?* ]6 `2 L7 A/ |
  97.                 return 1;( f& u" i$ n( R
  98.         }
    9 U# i5 A9 A* u7 Z& R, F4 w, ^
  99.         printf("\nNew parameters: \n");1 I2 b4 W6 a& P' p3 c7 N
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 w  t4 i$ x7 \" M/ ]: B' v
  101.         printf("  STBID: %s\n", stbid);" H: T- `$ \) _
  102. ) |& H4 L, @% h( X* Z2 v: w
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    0 k- J+ S5 q$ J* Q
  104.         for (;;) {
    , ?$ a, v. T' u5 @$ K6 H
  105.                 c = getchar();
    + _% E. g: Q& z6 g/ ^
  106.                 if (c == 'y' || c == 'Y'): [7 m4 e( p; C5 v& ?% u+ H+ f
  107.                         break;
      ]1 |  L) y* S& @% b' Z4 a
  108.                 if (c == 'n' || c == 'N') {! Z8 m3 @2 j& g" }% A! A
  109.                         printf("\nAborted.\n");( I+ B$ ~1 C# Q3 ~) R, g0 ^
  110.                         return 1;
    6 q6 s1 L; m0 Q$ U" M( d; I# g' S
  111.                 }
    ) |- \* N2 P1 o* @
  112.         }
    / |: ~( M9 e  n
  113.         if (writeparam(mac, stbid) == 0) 1 M$ Z* @) W2 n: n& r8 Z$ ~
  114.                 printf("Parameters changed.\n");
      W# k8 y8 c1 E9 a6 a* \

  115. ; a4 B( e8 ?. m6 U7 f
  116.         return 0;" b$ o. @$ n3 V' x5 R
  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 / S$ P6 D( \* X& b1 A- K1 h# \6 T
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
+ Y6 P) l" B' k* J
你用的编译命令行格式是什么?* |/ y2 v; [3 \! |# M( @" s' V& [
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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