找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15188|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr2 [6 q8 k; S6 i4 n
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    3 p- ^( O$ z0 H% h$ p: A+ C$ H4 Q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
, X! z" F( `) y5 Pusage: himr <address> <value>. sample: himr 0x80040000 0x00 x0 j* t8 \( m/ n# s; @5 m
5 k) W. ^7 H3 C9 q! f) i/ F; @0 v
+ t7 t- s. l. \, q9 s3 D
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
' P3 U" |4 }# B
$ k, _* d4 t# e; Q7 }: b补充内容 (2012-3-8 09:42):
" o' \4 X. D! T3 v. B# e) j! [http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
( ?8 B$ \% B! m# O4 Y这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
' w5 `- \8 k. r# I# f: J; P, j6 Z
, `; r% h; @1 W! Thimr <address> <value>. sample: himr 0x80040000 0x0
2 X. M  P* b5 j- [7 u* z+ i" }4 p. c
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
" `3 x' x  ]$ F. N8 J( [himr 0x80040000 0x00' J, y2 Y5 i( ^& P  F$ C! c0 u2 W8 v! j
himr 0x80040001 0x11; g0 n9 \/ ]' n+ d: `  O
himr 0x80040002 0x22
. H( h1 s  N+ B* r( j! k6 H- B6 xhimr 0x80040003 0x336 D1 g5 A4 A  @/ z
himr 0x80040004 0x44
6 I: i( e) O* E) r& g% nhimr 0x80040005 0x558 u! z# }1 `# @6 K2 u1 A
2 @3 l: G5 ~1 r% m& y
SN也是类似。
8 G1 J( Q' V) x% x( o  y  X* X+ Y
( ^+ \% Q. k9 W6 ]0 x; r7 H现在主要是,谁告诉我们MAC和SN的地址?0 D. Q3 e1 w3 @/ C6 H
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 % V. s& h* v2 p5 R, a$ T) m
一直想找到运程修改MAC和SN的办法,苦于无解啊

$ n8 F6 k3 ^9 `7 o% V1 p& B源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 9 [/ b( d6 r6 r- c. s8 e9 h+ }
& W) I, X4 H# X
修改的代码早有了。到今天不会编译。0 \& z$ A# B) e$ Y  g5 a
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>6 k4 c! K" }  f% [' l3 Z$ s
  2. #include <malloc.h>
    5 C& O$ ]. c3 o) s* r1 R
  3. #include <sys/types.h>- }7 M) K7 @' i; }
  4. #include <sys/stat.h>5 B5 Z( \0 J% w( ]3 @
  5. #include <sys/ioctl.h>
    3 Q% |! i7 p2 [: r$ p
  6. #include <stdio.h>0 ^" v5 g( a$ p4 q. ?' s- T- ]
  7. #include <string.h>
    - v3 c' z. w: ?  P1 r; c) @

  8. : G+ v& p: U4 i) u7 s* ^
  9. typedef struct {) w& {' X# D. K0 {3 w6 ]0 C3 k
  10.         unsigned int        e2prom_cmd_sub_addr;- K; g7 i7 c% f' K
  11.         unsigned int        sub_addr_count;: ~: V/ i/ s: U
  12.         unsigned char*        e2prom_cmd_data;% Y' W) v! I" v0 u6 R. H5 W
  13.         unsigned int        data_count;
    ; l2 s" P: a2 }8 E- l
  14. } e2prom_s_cmd;; @" |* C4 ?# T/ w3 J; q+ y  P

  15. ; R+ g0 n3 Y5 I. l( o
  16. #define E2PROM_CMD_READ 1/ E; E# \" q* P( g1 p, y
  17. #define E2PROM_CMD_WRITE 29 ~9 v; \+ O; n$ p7 I1 B
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    8 o7 v+ I' y- w4 Z

  19. / v% A7 T9 X2 o
  20. static int readparam(unsigned char *mac, unsigned char *stbid)& r+ b' v" ^2 k5 I5 r# H" O
  21. {
    / C, |* [$ z/ _: `
  22.         int fd, ret;4 E$ K& k" d1 u0 R4 L" h
  23.         e2prom_s_cmd arg;; d  J; v- s; e' N* j5 ?- U" J4 V) u
  24.         unsigned char buf[0x18];
    3 }8 P4 H, b2 L
  25. 6 }  v: _. v- L& ~% t8 Z; T
  26.         fd = open(E2PROM_DEVICE, O_RDWR);5 I4 N# m- O% J: h
  27.         if (fd  < 0) {# l; M4 O1 R* b# y1 `, c
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 K, t0 Y; k+ N: V% d/ X4 f- z% L
  29.                 return -1;
    ' f2 j# C) S2 g" U
  30.         }
    & W. G5 E/ H( \+ J/ v# Q$ T# O1 M
  31.         arg.sub_addr_count      = 2;- W0 d! [1 q" W
  32.         arg.data_count          = 0x18;& n( D% U1 F) ]$ Q6 W- C/ ]9 ]
  33.         arg.e2prom_cmd_sub_addr = 0x290;& d& s1 b/ T1 q$ r
  34.         arg.e2prom_cmd_data     = buf;
    - [% T+ n! ~7 p$ ~& Y+ m1 D$ t
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ; o' Z. t2 A6 }) m) B
  36.         if (ret != 0) {/ J: f9 Y, k3 y: U. T' L
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; v- J, ~5 M# o- [/ f: K' ]
  38.                 return -1;
    3 T0 w$ s# b7 U6 [$ B
  39.         }5 e. b/ h* N; U2 g" Y
  40.         memcpy(mac, buf, 6);7 a2 }" @5 R* H! s) o$ g. ?
  41.         memcpy(stbid, &buf[6], 18);( x0 [5 E4 i5 a, |# m
  42.         stbid[18] = '\0';5 R( o- n+ \+ }# D# v0 z. X% v

  43. 2 h8 n, g9 n! t0 o/ I
  44.         return 0;1 U9 s; P6 a8 h+ N
  45. }
    # u: v% s' T& i8 D  f
  46. % N7 y/ W) }$ m, e& D8 f
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    , h0 n5 y  ~- s5 k
  48. {. {" w9 L% V; }2 Y
  49.         int fd, ret;9 }0 [0 Y1 o; O+ T' a
  50.         e2prom_s_cmd arg;7 E. P; L- P* F9 S% L4 }0 U
  51.         unsigned char buf[0x18];  q+ R) ~1 ^  l

  52. ; `1 |! R, q$ j, i
  53.         memcpy(buf, mac, 6);+ V7 j# j% s% J0 ^0 E
  54.         memcpy(&buf[6], stbid, 18);+ R1 S+ v  @" b" j4 C
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    * ~& U% m( t* l3 q
  56.         if (fd  < 0) {
    4 w# Q, }/ S- E
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # p( U% o8 b+ m. L' j1 H7 O5 V' L
  58.                 return -1;
    . n. D3 n$ _% x, J7 K
  59.         }
    / D; ]6 Q2 K) n- e
  60.         arg.sub_addr_count      = 2;
    * c; [+ V0 m/ U  ?4 C& Y2 J* x% L! l
  61.         arg.data_count          = 0x18;
    ; f  C! t) G% B4 @
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ) ?* T1 l# X' I+ _# [7 c' \! _
  63.         arg.e2prom_cmd_data     = buf;
    6 F6 I5 h6 S/ \: ]" Z% {
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);) s2 t3 q- L, O) U, u
  65.         if (ret != 0) {
    2 f+ k2 N7 c( S; f' ?# E1 h
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);$ q4 e. x2 X$ Q" ~1 i8 o$ C
  67.                 return -1;
    , `% K6 w1 f7 N
  68.         }2 V* U. ]6 ?7 V6 ?2 H

  69. $ G# i5 s1 z% Y, P) [3 z
  70.         return 0;
    ( U1 m  ?: y/ N+ [/ U$ F, s8 ^
  71. }
    9 d* }: S; g& a( L5 F1 s6 D: k7 F
  72. ( \) ~% I, r( i" P7 `# d
  73. int main()$ S0 `4 `' F4 E
  74. {
    9 F9 X3 B* |: ?, b* Z2 N6 {. b
  75.         char c;4 ?- W3 F* I! b5 w' G
  76.         int i, macs[6];2 ~8 m7 {" o/ N5 E& R( k2 `
  77.         unsigned char mac[6];
    6 C/ d- ^- c+ R& C
  78.         unsigned char stbid[256];: K6 {5 K. O/ S) |

  79. 5 j" ]: a. l6 e0 A
  80.         if (readparam(mac, stbid) < 0)1 X4 P1 [7 }: R5 V& g- P2 M
  81.                 return 1;# S) M8 m* S0 |) g, S! y

  82. ; @8 ?' l' k2 d4 _$ J
  83.         printf("Current parameters: \n");7 Z! \' m% D& o6 N# ^
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & D0 x8 l: \& N5 i+ W$ L# }, e. e
  85.         printf("  STBID: %s\n", stbid);
    2 ^# b  C, b+ J
  86.        
    8 B3 G3 |$ k4 X4 X" b9 x
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    9 @  ~9 m: G9 y9 ?  t% v
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    / `$ ?9 ^( x7 s, F3 v! ^$ B7 R; f
  89.                 printf("Input MAC error\n");+ b9 @8 t4 A# {, }* k$ ?  a
  90.                 return 1;
    7 g- s  z1 f5 o2 L% c* B% I
  91.         }. s* d: q  U! _: ~% }
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    6 g' w) S: k' @7 d' h
  93.         printf("\nPlease input new STBID: ");
    9 p' E0 ?) u) t
  94.         scanf("%s", stbid);
    8 ?! e" o( {1 s& H% o
  95.         if (strlen(stbid) != 18) {" L" H) C! g0 r; D
  96.                 printf("Invalid stbid\n");' L! |5 i4 D8 m# D6 C1 A6 o! m: F
  97.                 return 1;9 z4 k2 q; _7 i5 F/ S
  98.         }
    ( c( E+ x: t# O, E! Q* M" E
  99.         printf("\nNew parameters: \n");& O7 X0 L, u  F6 P& _/ O
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 G  I/ ~; T; X7 y
  101.         printf("  STBID: %s\n", stbid);9 r- b: f6 x* E. l9 |" g
  102. 2 L  R. N  ~: K$ u2 N
  103.         printf("\nDo you want to change paramemters? (y/N) ");* p$ `/ q1 r/ D- X
  104.         for (;;) {
    9 k5 }: z3 I1 M: C" c
  105.                 c = getchar();  P0 G, m5 ]8 ?: |" i
  106.                 if (c == 'y' || c == 'Y')
    + a2 S/ a4 }8 g0 Z: _
  107.                         break;$ s% t5 T- m; O+ o
  108.                 if (c == 'n' || c == 'N') {
      U. m; c' X7 ?# [$ X4 i9 ^- x
  109.                         printf("\nAborted.\n");
    + @+ e+ d. ^: B3 k& w- o* d
  110.                         return 1;
    % ^* G" s, r) G+ z! c! ]6 K; w
  111.                 }
    1 _: J* x" \2 a3 ]" v, j9 ^
  112.         }' Y5 o' D, \% C' b! _7 `# v! J4 v
  113.         if (writeparam(mac, stbid) == 0) 4 g: V: `2 {6 V# i0 w0 R0 N1 k
  114.                 printf("Parameters changed.\n");! U# K% g4 b# K+ l; S9 F3 C
  115. 1 m8 A/ [1 g+ k$ o( r
  116.         return 0;3 ^& ^& v% \0 E
  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 - m  w% @% f! j) h* V! T
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
: N+ e. Y; Z' {. `
你用的编译命令行格式是什么?
' |; a1 j  c5 A* X' T5 F& \: D
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-2 20:58 , Processed in 0.027427 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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